Skip to content

Instantly share code, notes, and snippets.

@kucukkanat
Created March 6, 2025 19:28
Show Gist options
  • Save kucukkanat/d6a20744f4c7bf03aa5032f70c8ce41c to your computer and use it in GitHub Desktop.
Save kucukkanat/d6a20744f4c7bf03aa5032f70c8ce41c to your computer and use it in GitHub Desktop.
succefy-cv-button.js
var Fv = Object.defineProperty;
var ig = (n) => {
throw TypeError(n);
};
var $v = (n, t, e) => t in n ? Fv(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e;
var G = (n, t, e) => $v(n, typeof t != "symbol" ? t + "" : t, e), Td = (n, t, e) => t.has(n) || ig("Cannot " + e);
var o = (n, t, e) => (Td(n, t, "read from private field"), e ? e.call(n) : t.get(n)), b = (n, t, e) => t.has(n) ? ig("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(n) : t.set(n, e), p = (n, t, e, s) => (Td(n, t, "write to private field"), s ? s.call(n, e) : t.set(n, e), e), v = (n, t, e) => (Td(n, t, "access private method"), e);
var xe = (n, t, e, s) => ({
set _(i) {
p(n, t, i, e);
},
get _() {
return o(n, t, s);
}
});
/**
* @license
* Copyright 2019 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
const zh = globalThis, Ep = zh.ShadowRoot && (zh.ShadyCSS === void 0 || zh.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, xp = Symbol(), ng = /* @__PURE__ */ new WeakMap();
let sm = class {
constructor(t, e, s) {
if (this._$cssResult$ = !0, s !== xp) throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
this.cssText = t, this.t = e;
}
get styleSheet() {
let t = this.o;
const e = this.t;
if (Ep && t === void 0) {
const s = e !== void 0 && e.length === 1;
s && (t = ng.get(e)), t === void 0 && ((this.o = t = new CSSStyleSheet()).replaceSync(this.cssText), s && ng.set(e, t));
}
return t;
}
toString() {
return this.cssText;
}
};
const jv = (n) => new sm(typeof n == "string" ? n : n + "", void 0, xp), Bv = (n, ...t) => {
const e = n.length === 1 ? n[0] : t.reduce((s, i, r) => s + ((a) => {
if (a._$cssResult$ === !0) return a.cssText;
if (typeof a == "number") return a;
throw Error("Value passed to 'css' function must be a 'css' function result: " + a + ". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.");
})(i) + n[r + 1], n[0]);
return new sm(e, n, xp);
}, Hv = (n, t) => {
if (Ep) n.adoptedStyleSheets = t.map((e) => e instanceof CSSStyleSheet ? e : e.styleSheet);
else for (const e of t) {
const s = document.createElement("style"), i = zh.litNonce;
i !== void 0 && s.setAttribute("nonce", i), s.textContent = e.cssText, n.appendChild(s);
}
}, rg = Ep ? (n) => n : (n) => n instanceof CSSStyleSheet ? ((t) => {
let e = "";
for (const s of t.cssRules) e += s.cssText;
return jv(e);
})(n) : n;
/**
* @license
* Copyright 2017 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
const { is: Uv, defineProperty: zv, getOwnPropertyDescriptor: Vv, getOwnPropertyNames: Gv, getOwnPropertySymbols: qv, getPrototypeOf: Wv } = Object, On = globalThis, ag = On.trustedTypes, Xv = ag ? ag.emptyScript : "", Cd = On.reactiveElementPolyfillSupport, Tl = (n, t) => n, Au = { toAttribute(n, t) {
switch (t) {
case Boolean:
n = n ? Xv : null;
break;
case Object:
case Array:
n = n == null ? n : JSON.stringify(n);
}
return n;
}, fromAttribute(n, t) {
let e = n;
switch (t) {
case Boolean:
e = n !== null;
break;
case Number:
e = n === null ? null : Number(n);
break;
case Object:
case Array:
try {
e = JSON.parse(n);
} catch {
e = null;
}
}
return e;
} }, Tp = (n, t) => !Uv(n, t), og = { attribute: !0, type: String, converter: Au, reflect: !1, hasChanged: Tp };
Symbol.metadata ?? (Symbol.metadata = Symbol("metadata")), On.litPropertyMetadata ?? (On.litPropertyMetadata = /* @__PURE__ */ new WeakMap());
class Aa extends HTMLElement {
static addInitializer(t) {
this._$Ei(), (this.l ?? (this.l = [])).push(t);
}
static get observedAttributes() {
return this.finalize(), this._$Eh && [...this._$Eh.keys()];
}
static createProperty(t, e = og) {
if (e.state && (e.attribute = !1), this._$Ei(), this.elementProperties.set(t, e), !e.noAccessor) {
const s = Symbol(), i = this.getPropertyDescriptor(t, s, e);
i !== void 0 && zv(this.prototype, t, i);
}
}
static getPropertyDescriptor(t, e, s) {
const { get: i, set: r } = Vv(this.prototype, t) ?? { get() {
return this[e];
}, set(a) {
this[e] = a;
} };
return { get() {
return i == null ? void 0 : i.call(this);
}, set(a) {
const l = i == null ? void 0 : i.call(this);
r.call(this, a), this.requestUpdate(t, l, s);
}, configurable: !0, enumerable: !0 };
}
static getPropertyOptions(t) {
return this.elementProperties.get(t) ?? og;
}
static _$Ei() {
if (this.hasOwnProperty(Tl("elementProperties"))) return;
const t = Wv(this);
t.finalize(), t.l !== void 0 && (this.l = [...t.l]), this.elementProperties = new Map(t.elementProperties);
}
static finalize() {
if (this.hasOwnProperty(Tl("finalized"))) return;
if (this.finalized = !0, this._$Ei(), this.hasOwnProperty(Tl("properties"))) {
const e = this.properties, s = [...Gv(e), ...qv(e)];
for (const i of s) this.createProperty(i, e[i]);
}
const t = this[Symbol.metadata];
if (t !== null) {
const e = litPropertyMetadata.get(t);
if (e !== void 0) for (const [s, i] of e) this.elementProperties.set(s, i);
}
this._$Eh = /* @__PURE__ */ new Map();
for (const [e, s] of this.elementProperties) {
const i = this._$Eu(e, s);
i !== void 0 && this._$Eh.set(i, e);
}
this.elementStyles = this.finalizeStyles(this.styles);
}
static finalizeStyles(t) {
const e = [];
if (Array.isArray(t)) {
const s = new Set(t.flat(1 / 0).reverse());
for (const i of s) e.unshift(rg(i));
} else t !== void 0 && e.push(rg(t));
return e;
}
static _$Eu(t, e) {
const s = e.attribute;
return s === !1 ? void 0 : typeof s == "string" ? s : typeof t == "string" ? t.toLowerCase() : void 0;
}
constructor() {
super(), this._$Ep = void 0, this.isUpdatePending = !1, this.hasUpdated = !1, this._$Em = null, this._$Ev();
}
_$Ev() {
var t;
this._$ES = new Promise((e) => this.enableUpdating = e), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), (t = this.constructor.l) == null || t.forEach((e) => e(this));
}
addController(t) {
var e;
(this._$EO ?? (this._$EO = /* @__PURE__ */ new Set())).add(t), this.renderRoot !== void 0 && this.isConnected && ((e = t.hostConnected) == null || e.call(t));
}
removeController(t) {
var e;
(e = this._$EO) == null || e.delete(t);
}
_$E_() {
const t = /* @__PURE__ */ new Map(), e = this.constructor.elementProperties;
for (const s of e.keys()) this.hasOwnProperty(s) && (t.set(s, this[s]), delete this[s]);
t.size > 0 && (this._$Ep = t);
}
createRenderRoot() {
const t = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);
return Hv(t, this.constructor.elementStyles), t;
}
connectedCallback() {
var t;
this.renderRoot ?? (this.renderRoot = this.createRenderRoot()), this.enableUpdating(!0), (t = this._$EO) == null || t.forEach((e) => {
var s;
return (s = e.hostConnected) == null ? void 0 : s.call(e);
});
}
enableUpdating(t) {
}
disconnectedCallback() {
var t;
(t = this._$EO) == null || t.forEach((e) => {
var s;
return (s = e.hostDisconnected) == null ? void 0 : s.call(e);
});
}
attributeChangedCallback(t, e, s) {
this._$AK(t, s);
}
_$EC(t, e) {
var r;
const s = this.constructor.elementProperties.get(t), i = this.constructor._$Eu(t, s);
if (i !== void 0 && s.reflect === !0) {
const a = (((r = s.converter) == null ? void 0 : r.toAttribute) !== void 0 ? s.converter : Au).toAttribute(e, s.type);
this._$Em = t, a == null ? this.removeAttribute(i) : this.setAttribute(i, a), this._$Em = null;
}
}
_$AK(t, e) {
var r;
const s = this.constructor, i = s._$Eh.get(t);
if (i !== void 0 && this._$Em !== i) {
const a = s.getPropertyOptions(i), l = typeof a.converter == "function" ? { fromAttribute: a.converter } : ((r = a.converter) == null ? void 0 : r.fromAttribute) !== void 0 ? a.converter : Au;
this._$Em = i, this[i] = l.fromAttribute(e, a.type), this._$Em = null;
}
}
requestUpdate(t, e, s) {
if (t !== void 0) {
if (s ?? (s = this.constructor.getPropertyOptions(t)), !(s.hasChanged ?? Tp)(this[t], e)) return;
this.P(t, e, s);
}
this.isUpdatePending === !1 && (this._$ES = this._$ET());
}
P(t, e, s) {
this._$AL.has(t) || this._$AL.set(t, e), s.reflect === !0 && this._$Em !== t && (this._$Ej ?? (this._$Ej = /* @__PURE__ */ new Set())).add(t);
}
async _$ET() {
this.isUpdatePending = !0;
try {
await this._$ES;
} catch (e) {
Promise.reject(e);
}
const t = this.scheduleUpdate();
return t != null && await t, !this.isUpdatePending;
}
scheduleUpdate() {
return this.performUpdate();
}
performUpdate() {
var s;
if (!this.isUpdatePending) return;
if (!this.hasUpdated) {
if (this.renderRoot ?? (this.renderRoot = this.createRenderRoot()), this._$Ep) {
for (const [r, a] of this._$Ep) this[r] = a;
this._$Ep = void 0;
}
const i = this.constructor.elementProperties;
if (i.size > 0) for (const [r, a] of i) a.wrapped !== !0 || this._$AL.has(r) || this[r] === void 0 || this.P(r, this[r], a);
}
let t = !1;
const e = this._$AL;
try {
t = this.shouldUpdate(e), t ? (this.willUpdate(e), (s = this._$EO) == null || s.forEach((i) => {
var r;
return (r = i.hostUpdate) == null ? void 0 : r.call(i);
}), this.update(e)) : this._$EU();
} catch (i) {
throw t = !1, this._$EU(), i;
}
t && this._$AE(e);
}
willUpdate(t) {
}
_$AE(t) {
var e;
(e = this._$EO) == null || e.forEach((s) => {
var i;
return (i = s.hostUpdated) == null ? void 0 : i.call(s);
}), this.hasUpdated || (this.hasUpdated = !0, this.firstUpdated(t)), this.updated(t);
}
_$EU() {
this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = !1;
}
get updateComplete() {
return this.getUpdateComplete();
}
getUpdateComplete() {
return this._$ES;
}
shouldUpdate(t) {
return !0;
}
update(t) {
this._$Ej && (this._$Ej = this._$Ej.forEach((e) => this._$EC(e, this[e]))), this._$EU();
}
updated(t) {
}
firstUpdated(t) {
}
}
Aa.elementStyles = [], Aa.shadowRootOptions = { mode: "open" }, Aa[Tl("elementProperties")] = /* @__PURE__ */ new Map(), Aa[Tl("finalized")] = /* @__PURE__ */ new Map(), Cd == null || Cd({ ReactiveElement: Aa }), (On.reactiveElementVersions ?? (On.reactiveElementVersions = [])).push("2.0.4");
/**
* @license
* Copyright 2017 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
const Cl = globalThis, wu = Cl.trustedTypes, lg = wu ? wu.createPolicy("lit-html", { createHTML: (n) => n }) : void 0, im = "$lit$", tn = `lit$${Math.random().toFixed(9).slice(2)}$`, nm = "?" + tn, Zv = `<${nm}>`, la = document, Ml = () => la.createComment(""), Nl = (n) => n === null || typeof n != "object" && typeof n != "function", Cp = Array.isArray, Yv = (n) => Cp(n) || typeof (n == null ? void 0 : n[Symbol.iterator]) == "function", kd = `[
\f\r]`, el = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, cg = /-->/g, hg = />/g, Wn = RegExp(`>|${kd}(?:([^\\s"'>=/]+)(${kd}*=${kd}*(?:[^
\f\r"'\`<>=]|("|')|))|$)`, "g"), ug = /'/g, dg = /"/g, rm = /^(?:script|style|textarea|title)$/i, Kv = (n) => (t, ...e) => ({ _$litType$: n, strings: t, values: e }), Jv = Kv(1), Uo = Symbol.for("lit-noChange"), ae = Symbol.for("lit-nothing"), fg = /* @__PURE__ */ new WeakMap(), er = la.createTreeWalker(la, 129);
function am(n, t) {
if (!Cp(n) || !n.hasOwnProperty("raw")) throw Error("invalid template strings array");
return lg !== void 0 ? lg.createHTML(t) : t;
}
const Qv = (n, t) => {
const e = n.length - 1, s = [];
let i, r = t === 2 ? "<svg>" : t === 3 ? "<math>" : "", a = el;
for (let l = 0; l < e; l++) {
const c = n[l];
let h, u, d = -1, f = 0;
for (; f < c.length && (a.lastIndex = f, u = a.exec(c), u !== null); ) f = a.lastIndex, a === el ? u[1] === "!--" ? a = cg : u[1] !== void 0 ? a = hg : u[2] !== void 0 ? (rm.test(u[2]) && (i = RegExp("</" + u[2], "g")), a = Wn) : u[3] !== void 0 && (a = Wn) : a === Wn ? u[0] === ">" ? (a = i ?? el, d = -1) : u[1] === void 0 ? d = -2 : (d = a.lastIndex - u[2].length, h = u[1], a = u[3] === void 0 ? Wn : u[3] === '"' ? dg : ug) : a === dg || a === ug ? a = Wn : a === cg || a === hg ? a = el : (a = Wn, i = void 0);
const g = a === Wn && n[l + 1].startsWith("/>") ? " " : "";
r += a === el ? c + Zv : d >= 0 ? (s.push(h), c.slice(0, d) + im + c.slice(d) + tn + g) : c + tn + (d === -2 ? l : g);
}
return [am(n, r + (n[e] || "<?>") + (t === 2 ? "</svg>" : t === 3 ? "</math>" : "")), s];
};
class Ol {
constructor({ strings: t, _$litType$: e }, s) {
let i;
this.parts = [];
let r = 0, a = 0;
const l = t.length - 1, c = this.parts, [h, u] = Qv(t, e);
if (this.el = Ol.createElement(h, s), er.currentNode = this.el.content, e === 2 || e === 3) {
const d = this.el.content.firstChild;
d.replaceWith(...d.childNodes);
}
for (; (i = er.nextNode()) !== null && c.length < l; ) {
if (i.nodeType === 1) {
if (i.hasAttributes()) for (const d of i.getAttributeNames()) if (d.endsWith(im)) {
const f = u[a++], g = i.getAttribute(d).split(tn), m = /([.?@])?(.*)/.exec(f);
c.push({ type: 1, index: r, name: m[2], strings: g, ctor: m[1] === "." ? e_ : m[1] === "?" ? s_ : m[1] === "@" ? i_ : dd }), i.removeAttribute(d);
} else d.startsWith(tn) && (c.push({ type: 6, index: r }), i.removeAttribute(d));
if (rm.test(i.tagName)) {
const d = i.textContent.split(tn), f = d.length - 1;
if (f > 0) {
i.textContent = wu ? wu.emptyScript : "";
for (let g = 0; g < f; g++) i.append(d[g], Ml()), er.nextNode(), c.push({ type: 2, index: ++r });
i.append(d[f], Ml());
}
}
} else if (i.nodeType === 8) if (i.data === nm) c.push({ type: 2, index: r });
else {
let d = -1;
for (; (d = i.data.indexOf(tn, d + 1)) !== -1; ) c.push({ type: 7, index: r }), d += tn.length - 1;
}
r++;
}
}
static createElement(t, e) {
const s = la.createElement("template");
return s.innerHTML = t, s;
}
}
function zo(n, t, e = n, s) {
var a, l;
if (t === Uo) return t;
let i = s !== void 0 ? (a = e._$Co) == null ? void 0 : a[s] : e._$Cl;
const r = Nl(t) ? void 0 : t._$litDirective$;
return (i == null ? void 0 : i.constructor) !== r && ((l = i == null ? void 0 : i._$AO) == null || l.call(i, !1), r === void 0 ? i = void 0 : (i = new r(n), i._$AT(n, e, s)), s !== void 0 ? (e._$Co ?? (e._$Co = []))[s] = i : e._$Cl = i), i !== void 0 && (t = zo(n, i._$AS(n, t.values), i, s)), t;
}
class t_ {
constructor(t, e) {
this._$AV = [], this._$AN = void 0, this._$AD = t, this._$AM = e;
}
get parentNode() {
return this._$AM.parentNode;
}
get _$AU() {
return this._$AM._$AU;
}
u(t) {
const { el: { content: e }, parts: s } = this._$AD, i = ((t == null ? void 0 : t.creationScope) ?? la).importNode(e, !0);
er.currentNode = i;
let r = er.nextNode(), a = 0, l = 0, c = s[0];
for (; c !== void 0; ) {
if (a === c.index) {
let h;
c.type === 2 ? h = new Ph(r, r.nextSibling, this, t) : c.type === 1 ? h = new c.ctor(r, c.name, c.strings, this, t) : c.type === 6 && (h = new n_(r, this, t)), this._$AV.push(h), c = s[++l];
}
a !== (c == null ? void 0 : c.index) && (r = er.nextNode(), a++);
}
return er.currentNode = la, i;
}
p(t) {
let e = 0;
for (const s of this._$AV) s !== void 0 && (s.strings !== void 0 ? (s._$AI(t, s, e), e += s.strings.length - 2) : s._$AI(t[e])), e++;
}
}
class Ph {
get _$AU() {
var t;
return ((t = this._$AM) == null ? void 0 : t._$AU) ?? this._$Cv;
}
constructor(t, e, s, i) {
this.type = 2, this._$AH = ae, this._$AN = void 0, this._$AA = t, this._$AB = e, this._$AM = s, this.options = i, this._$Cv = (i == null ? void 0 : i.isConnected) ?? !0;
}
get parentNode() {
let t = this._$AA.parentNode;
const e = this._$AM;
return e !== void 0 && (t == null ? void 0 : t.nodeType) === 11 && (t = e.parentNode), t;
}
get startNode() {
return this._$AA;
}
get endNode() {
return this._$AB;
}
_$AI(t, e = this) {
t = zo(this, t, e), Nl(t) ? t === ae || t == null || t === "" ? (this._$AH !== ae && this._$AR(), this._$AH = ae) : t !== this._$AH && t !== Uo && this._(t) : t._$litType$ !== void 0 ? this.$(t) : t.nodeType !== void 0 ? this.T(t) : Yv(t) ? this.k(t) : this._(t);
}
O(t) {
return this._$AA.parentNode.insertBefore(t, this._$AB);
}
T(t) {
this._$AH !== t && (this._$AR(), this._$AH = this.O(t));
}
_(t) {
this._$AH !== ae && Nl(this._$AH) ? this._$AA.nextSibling.data = t : this.T(la.createTextNode(t)), this._$AH = t;
}
$(t) {
var r;
const { values: e, _$litType$: s } = t, i = typeof s == "number" ? this._$AC(t) : (s.el === void 0 && (s.el = Ol.createElement(am(s.h, s.h[0]), this.options)), s);
if (((r = this._$AH) == null ? void 0 : r._$AD) === i) this._$AH.p(e);
else {
const a = new t_(i, this), l = a.u(this.options);
a.p(e), this.T(l), this._$AH = a;
}
}
_$AC(t) {
let e = fg.get(t.strings);
return e === void 0 && fg.set(t.strings, e = new Ol(t)), e;
}
k(t) {
Cp(this._$AH) || (this._$AH = [], this._$AR());
const e = this._$AH;
let s, i = 0;
for (const r of t) i === e.length ? e.push(s = new Ph(this.O(Ml()), this.O(Ml()), this, this.options)) : s = e[i], s._$AI(r), i++;
i < e.length && (this._$AR(s && s._$AB.nextSibling, i), e.length = i);
}
_$AR(t = this._$AA.nextSibling, e) {
var s;
for ((s = this._$AP) == null ? void 0 : s.call(this, !1, !0, e); t && t !== this._$AB; ) {
const i = t.nextSibling;
t.remove(), t = i;
}
}
setConnected(t) {
var e;
this._$AM === void 0 && (this._$Cv = t, (e = this._$AP) == null || e.call(this, t));
}
}
class dd {
get tagName() {
return this.element.tagName;
}
get _$AU() {
return this._$AM._$AU;
}
constructor(t, e, s, i, r) {
this.type = 1, this._$AH = ae, this._$AN = void 0, this.element = t, this.name = e, this._$AM = i, this.options = r, s.length > 2 || s[0] !== "" || s[1] !== "" ? (this._$AH = Array(s.length - 1).fill(new String()), this.strings = s) : this._$AH = ae;
}
_$AI(t, e = this, s, i) {
const r = this.strings;
let a = !1;
if (r === void 0) t = zo(this, t, e, 0), a = !Nl(t) || t !== this._$AH && t !== Uo, a && (this._$AH = t);
else {
const l = t;
let c, h;
for (t = r[0], c = 0; c < r.length - 1; c++) h = zo(this, l[s + c], e, c), h === Uo && (h = this._$AH[c]), a || (a = !Nl(h) || h !== this._$AH[c]), h === ae ? t = ae : t !== ae && (t += (h ?? "") + r[c + 1]), this._$AH[c] = h;
}
a && !i && this.j(t);
}
j(t) {
t === ae ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t ?? "");
}
}
class e_ extends dd {
constructor() {
super(...arguments), this.type = 3;
}
j(t) {
this.element[this.name] = t === ae ? void 0 : t;
}
}
class s_ extends dd {
constructor() {
super(...arguments), this.type = 4;
}
j(t) {
this.element.toggleAttribute(this.name, !!t && t !== ae);
}
}
class i_ extends dd {
constructor(t, e, s, i, r) {
super(t, e, s, i, r), this.type = 5;
}
_$AI(t, e = this) {
if ((t = zo(this, t, e, 0) ?? ae) === Uo) return;
const s = this._$AH, i = t === ae && s !== ae || t.capture !== s.capture || t.once !== s.once || t.passive !== s.passive, r = t !== ae && (s === ae || i);
i && this.element.removeEventListener(this.name, this, s), r && this.element.addEventListener(this.name, this, t), this._$AH = t;
}
handleEvent(t) {
var e;
typeof this._$AH == "function" ? this._$AH.call(((e = this.options) == null ? void 0 : e.host) ?? this.element, t) : this._$AH.handleEvent(t);
}
}
let n_ = class {
constructor(t, e, s) {
this.element = t, this.type = 6, this._$AN = void 0, this._$AM = e, this.options = s;
}
get _$AU() {
return this._$AM._$AU;
}
_$AI(t) {
zo(this, t);
}
};
const Id = Cl.litHtmlPolyfillSupport;
Id == null || Id(Ol, Ph), (Cl.litHtmlVersions ?? (Cl.litHtmlVersions = [])).push("3.2.1");
const r_ = (n, t, e) => {
const s = (e == null ? void 0 : e.renderBefore) ?? t;
let i = s._$litPart$;
if (i === void 0) {
const r = (e == null ? void 0 : e.renderBefore) ?? null;
s._$litPart$ = i = new Ph(t.insertBefore(Ml(), r), r, void 0, e ?? {});
}
return i._$AI(n), i;
};
/**
* @license
* Copyright 2017 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
let kl = class extends Aa {
constructor() {
super(...arguments), this.renderOptions = { host: this }, this._$Do = void 0;
}
createRenderRoot() {
var e;
const t = super.createRenderRoot();
return (e = this.renderOptions).renderBefore ?? (e.renderBefore = t.firstChild), t;
}
update(t) {
const e = this.render();
this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t), this._$Do = r_(e, this.renderRoot, this.renderOptions);
}
connectedCallback() {
var t;
super.connectedCallback(), (t = this._$Do) == null || t.setConnected(!0);
}
disconnectedCallback() {
var t;
super.disconnectedCallback(), (t = this._$Do) == null || t.setConnected(!1);
}
render() {
return Uo;
}
};
var tm;
kl._$litElement$ = !0, kl.finalized = !0, (tm = globalThis.litElementHydrateSupport) == null || tm.call(globalThis, { LitElement: kl });
const Rd = globalThis.litElementPolyfillSupport;
Rd == null || Rd({ LitElement: kl });
(globalThis.litElementVersions ?? (globalThis.litElementVersions = [])).push("4.1.1");
/**
* @license
* Copyright 2017 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
const a_ = (n) => (t, e) => {
e !== void 0 ? e.addInitializer(() => {
customElements.define(n, t);
}) : customElements.define(n, t);
};
/**
* @license
* Copyright 2017 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
const o_ = { attribute: !0, type: String, converter: Au, reflect: !1, hasChanged: Tp }, l_ = (n = o_, t, e) => {
const { kind: s, metadata: i } = e;
let r = globalThis.litPropertyMetadata.get(i);
if (r === void 0 && globalThis.litPropertyMetadata.set(i, r = /* @__PURE__ */ new Map()), r.set(e.name, n), s === "accessor") {
const { name: a } = e;
return { set(l) {
const c = t.get.call(this);
t.set.call(this, l), this.requestUpdate(a, c, n);
}, init(l) {
return l !== void 0 && this.P(a, void 0, n), l;
} };
}
if (s === "setter") {
const { name: a } = e;
return function(l) {
const c = this[a];
t.call(this, l), this.requestUpdate(a, c, n);
};
}
throw Error("Unsupported decorator location: " + s);
};
function c_(n) {
return (t, e) => typeof e == "object" ? l_(n, t, e) : ((s, i, r) => {
const a = i.hasOwnProperty(r);
return i.constructor.createProperty(r, a ? { ...s, wrapped: !0 } : s), a ? Object.getOwnPropertyDescriptor(i, r) : void 0;
})(n, t, e);
}
var om = "vercel.ai.error", h_ = Symbol.for(om), lm, u_ = class cm extends Error {
/**
* Creates an AI SDK Error.
*
* @param {Object} params - The parameters for creating the error.
* @param {string} params.name - The name of the error.
* @param {string} params.message - The error message.
* @param {unknown} [params.cause] - The underlying cause of the error.
*/
constructor({
name: t,
message: e,
cause: s
}) {
super(e), this[lm] = !0, this.name = t, this.cause = s;
}
/**
* Checks if the given error is an AI SDK Error.
* @param {unknown} error - The error to check.
* @returns {boolean} True if the error is an AI SDK Error, false otherwise.
*/
static isInstance(t) {
return cm.hasMarker(t, om);
}
static hasMarker(t, e) {
const s = Symbol.for(e);
return t != null && typeof t == "object" && s in t && typeof t[s] == "boolean" && t[s] === !0;
}
};
lm = h_;
var ht = u_, hm = "AI_APICallError", um = `vercel.ai.error.${hm}`, d_ = Symbol.for(um), dm, hi = class extends ht {
constructor({
message: n,
url: t,
requestBodyValues: e,
statusCode: s,
responseHeaders: i,
responseBody: r,
cause: a,
isRetryable: l = s != null && (s === 408 || // request timeout
s === 409 || // conflict
s === 429 || // too many requests
s >= 500),
// server error
data: c
}) {
super({ name: hm, message: n, cause: a }), this[dm] = !0, this.url = t, this.requestBodyValues = e, this.statusCode = s, this.responseHeaders = i, this.responseBody = r, this.isRetryable = l, this.data = c;
}
static isInstance(n) {
return ht.hasMarker(n, um);
}
};
dm = d_;
var fm = "AI_EmptyResponseBodyError", pm = `vercel.ai.error.${fm}`, f_ = Symbol.for(pm), gm, p_ = class extends ht {
// used in isInstance
constructor({ message: n = "Empty response body" } = {}) {
super({ name: fm, message: n }), this[gm] = !0;
}
static isInstance(n) {
return ht.hasMarker(n, pm);
}
};
gm = f_;
function mm(n) {
return n == null ? "unknown error" : typeof n == "string" ? n : n instanceof Error ? n.message : JSON.stringify(n);
}
var ym = "AI_InvalidArgumentError", bm = `vercel.ai.error.${ym}`, g_ = Symbol.for(bm), vm, m_ = class extends ht {
constructor({
message: t,
cause: e,
argument: s
}) {
super({ name: ym, message: t, cause: e }), this[vm] = !0, this.argument = s;
}
static isInstance(t) {
return ht.hasMarker(t, bm);
}
};
vm = g_;
var _m = "AI_InvalidPromptError", Am = `vercel.ai.error.${_m}`, y_ = Symbol.for(Am), wm, Zn = class extends ht {
constructor({
prompt: n,
message: t,
cause: e
}) {
super({ name: _m, message: `Invalid prompt: ${t}`, cause: e }), this[wm] = !0, this.prompt = n;
}
static isInstance(n) {
return ht.hasMarker(n, Am);
}
};
wm = y_;
var Sm = "AI_InvalidResponseDataError", Em = `vercel.ai.error.${Sm}`, b_ = Symbol.for(Em), xm, Pd = class extends ht {
constructor({
data: n,
message: t = `Invalid response data: ${JSON.stringify(n)}.`
}) {
super({ name: Sm, message: t }), this[xm] = !0, this.data = n;
}
static isInstance(n) {
return ht.hasMarker(n, Em);
}
};
xm = b_;
var Tm = "AI_JSONParseError", Cm = `vercel.ai.error.${Tm}`, v_ = Symbol.for(Cm), km, Ll = class extends ht {
constructor({ text: n, cause: t }) {
super({
name: Tm,
message: `JSON parsing failed: Text: ${n}.
Error message: ${mm(t)}`,
cause: t
}), this[km] = !0, this.text = n;
}
static isInstance(n) {
return ht.hasMarker(n, Cm);
}
};
km = v_;
var Im = "AI_LoadAPIKeyError", Rm = `vercel.ai.error.${Im}`, __ = Symbol.for(Rm), Pm, Dh = class extends ht {
// used in isInstance
constructor({ message: n }) {
super({ name: Im, message: n }), this[Pm] = !0;
}
static isInstance(n) {
return ht.hasMarker(n, Rm);
}
};
Pm = __;
var Mm = "AI_TooManyEmbeddingValuesForCallError", Nm = `vercel.ai.error.${Mm}`, A_ = Symbol.for(Nm), Om, w_ = class extends ht {
constructor(n) {
super({
name: Mm,
message: `Too many values for a single embedding call. The ${n.provider} model "${n.modelId}" can only embed up to ${n.maxEmbeddingsPerCall} values per call, but ${n.values.length} values were provided.`
}), this[Om] = !0, this.provider = n.provider, this.modelId = n.modelId, this.maxEmbeddingsPerCall = n.maxEmbeddingsPerCall, this.values = n.values;
}
static isInstance(n) {
return ht.hasMarker(n, Nm);
}
};
Om = A_;
var Lm = "AI_TypeValidationError", Dm = `vercel.ai.error.${Lm}`, S_ = Symbol.for(Dm), Fm, E_ = class Yd extends ht {
constructor({ value: t, cause: e }) {
super({
name: Lm,
message: `Type validation failed: Value: ${JSON.stringify(t)}.
Error message: ${mm(e)}`,
cause: e
}), this[Fm] = !0, this.value = t;
}
static isInstance(t) {
return ht.hasMarker(t, Dm);
}
/**
* Wraps an error into a TypeValidationError.
* If the cause is already a TypeValidationError with the same value, it returns the cause.
* Otherwise, it creates a new TypeValidationError.
*
* @param {Object} params - The parameters for wrapping the error.
* @param {unknown} params.value - The value that failed validation.
* @param {unknown} params.cause - The original error or cause of the validation failure.
* @returns {TypeValidationError} A TypeValidationError instance.
*/
static wrap({
value: t,
cause: e
}) {
return Yd.isInstance(e) && e.value === t ? e : new Yd({ value: t, cause: e });
}
};
Fm = S_;
var Zi = E_, $m = "AI_UnsupportedFunctionalityError", jm = `vercel.ai.error.${$m}`, x_ = Symbol.for(jm), Bm, oe = class extends ht {
constructor({
functionality: n,
message: t = `'${n}' functionality not supported.`
}) {
super({ name: $m, message: t }), this[Bm] = !0, this.functionality = n;
}
static isInstance(n) {
return ht.hasMarker(n, jm);
}
};
Bm = x_;
function Su(n) {
return n === null || typeof n == "string" || typeof n == "number" || typeof n == "boolean" ? !0 : Array.isArray(n) ? n.every(Su) : typeof n == "object" ? Object.entries(n).every(
([t, e]) => typeof t == "string" && Su(e)
) : !1;
}
function pg(n) {
return Array.isArray(n) && n.every(Su);
}
function Kd(n) {
return n != null && typeof n == "object" && Object.entries(n).every(
([t, e]) => typeof t == "string" && Su(e)
);
}
let T_ = (n, t = 21) => (e = t) => {
let s = "", i = e | 0;
for (; i--; )
s += n[Math.random() * n.length | 0];
return s;
};
function C_(n) {
return n && n.__esModule && Object.prototype.hasOwnProperty.call(n, "default") ? n.default : n;
}
var Xn = { exports: {} }, gg;
function k_() {
if (gg) return Xn.exports;
gg = 1;
const n = typeof Buffer < "u", t = /"(?:_|\\u005[Ff])(?:_|\\u005[Ff])(?:p|\\u0070)(?:r|\\u0072)(?:o|\\u006[Ff])(?:t|\\u0074)(?:o|\\u006[Ff])(?:_|\\u005[Ff])(?:_|\\u005[Ff])"\s*:/, e = /"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/;
function s(l, c, h) {
h == null && c !== null && typeof c == "object" && (h = c, c = void 0), n && Buffer.isBuffer(l) && (l = l.toString()), l && l.charCodeAt(0) === 65279 && (l = l.slice(1));
const u = JSON.parse(l, c);
if (u === null || typeof u != "object")
return u;
const d = h && h.protoAction || "error", f = h && h.constructorAction || "error";
if (d === "ignore" && f === "ignore")
return u;
if (d !== "ignore" && f !== "ignore") {
if (t.test(l) === !1 && e.test(l) === !1)
return u;
} else if (d !== "ignore" && f === "ignore") {
if (t.test(l) === !1)
return u;
} else if (e.test(l) === !1)
return u;
return i(u, { protoAction: d, constructorAction: f, safe: h && h.safe });
}
function i(l, { protoAction: c = "error", constructorAction: h = "error", safe: u } = {}) {
let d = [l];
for (; d.length; ) {
const f = d;
d = [];
for (const g of f) {
if (c !== "ignore" && Object.prototype.hasOwnProperty.call(g, "__proto__")) {
if (u === !0)
return null;
if (c === "error")
throw new SyntaxError("Object contains forbidden prototype property");
delete g.__proto__;
}
if (h !== "ignore" && Object.prototype.hasOwnProperty.call(g, "constructor") && Object.prototype.hasOwnProperty.call(g.constructor, "prototype")) {
if (u === !0)
return null;
if (h === "error")
throw new SyntaxError("Object contains forbidden prototype property");
delete g.constructor;
}
for (const m in g) {
const y = g[m];
y && typeof y == "object" && d.push(y);
}
}
}
return l;
}
function r(l, c, h) {
const u = Error.stackTraceLimit;
Error.stackTraceLimit = 0;
try {
return s(l, c, h);
} finally {
Error.stackTraceLimit = u;
}
}
function a(l, c) {
const h = Error.stackTraceLimit;
Error.stackTraceLimit = 0;
try {
return s(l, c, { safe: !0 });
} catch {
return null;
} finally {
Error.stackTraceLimit = h;
}
}
return Xn.exports = r, Xn.exports.default = r, Xn.exports.parse = r, Xn.exports.safeParse = a, Xn.exports.scan = i, Xn.exports;
}
var I_ = k_();
const kp = /* @__PURE__ */ C_(I_);
var R_ = Object.defineProperty, P_ = (n, t, e) => t in n ? R_(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e, Fh = (n, t, e) => P_(n, typeof t != "symbol" ? t + "" : t, e);
class mg extends Error {
constructor(t, e) {
super(t), Fh(this, "type"), Fh(this, "field"), Fh(this, "value"), Fh(this, "line"), this.name = "ParseError", this.type = e.type, this.field = e.field, this.value = e.value, this.line = e.line;
}
}
function Md(n) {
}
function M_(n) {
const { onEvent: t = Md, onError: e = Md, onRetry: s = Md, onComment: i } = n;
let r = "", a = !0, l, c = "", h = "";
function u(y) {
const _ = a ? y.replace(/^\xEF\xBB\xBF/, "") : y, [A, S] = N_(`${r}${_}`);
for (const E of A)
d(E);
r = S, a = !1;
}
function d(y) {
if (y === "") {
g();
return;
}
if (y.startsWith(":")) {
i && i(y.slice(y.startsWith(": ") ? 2 : 1));
return;
}
const _ = y.indexOf(":");
if (_ !== -1) {
const A = y.slice(0, _), S = y[_ + 1] === " " ? 2 : 1, E = y.slice(_ + S);
f(A, E, y);
return;
}
f(y, "", y);
}
function f(y, _, A) {
switch (y) {
case "event":
h = _;
break;
case "data":
c = `${c}${_}
`;
break;
case "id":
l = _.includes("\0") ? void 0 : _;
break;
case "retry":
/^\d+$/.test(_) ? s(parseInt(_, 10)) : e(
new mg(`Invalid \`retry\` value: "${_}"`, {
type: "invalid-retry",
value: _,
line: A
})
);
break;
default:
e(
new mg(
`Unknown field "${y.length > 20 ? `${y.slice(0, 20)}…` : y}"`,
{ type: "unknown-field", field: y, value: _, line: A }
)
);
break;
}
}
function g() {
c.length > 0 && t({
id: l,
event: h || void 0,
// If the data buffer's last character is a U+000A LINE FEED (LF) character,
// then remove the last character from the data buffer.
data: c.endsWith(`
`) ? c.slice(0, -1) : c
}), l = void 0, c = "", h = "";
}
function m(y = {}) {
r && y.consume && d(r), l = void 0, c = "", h = "", r = "";
}
return { feed: u, reset: m };
}
function N_(n) {
const t = [];
let e = "";
const s = n.length;
for (let i = 0; i < s; i++) {
const r = n[i];
r === "\r" && n[i + 1] === `
` ? (t.push(e), e = "", i++) : r === "\r" || r === `
` ? (t.push(e), e = "") : e += r;
}
return [t, e];
}
class O_ extends TransformStream {
constructor({ onError: t, onRetry: e, onComment: s } = {}) {
let i;
super({
start(r) {
i = M_({
onEvent: (a) => {
r.enqueue(a);
},
onError(a) {
t === "terminate" ? r.error(a) : typeof t == "function" && t(a);
},
onRetry: e,
onComment: s
});
},
transform(r) {
i.feed(r);
}
});
}
}
function Vo(...n) {
return n.reduce(
(t, e) => ({
...t,
...e ?? {}
}),
{}
);
}
function L_(n) {
return new ReadableStream({
/**
* Called when the consumer wants to pull more data from the stream.
*
* @param {ReadableStreamDefaultController<T>} controller - The controller to enqueue data into the stream.
* @returns {Promise<void>}
*/
async pull(t) {
try {
const { value: e, done: s } = await n.next();
s ? t.close() : t.enqueue(e);
} catch (e) {
t.error(e);
}
},
/**
* Called when the consumer cancels the stream.
*/
cancel() {
}
});
}
async function D_(n) {
return n == null ? Promise.resolve() : new Promise((t) => setTimeout(t, n));
}
function fd(n) {
const t = {};
return n.headers.forEach((e, s) => {
t[s] = e;
}), t;
}
var ya = ({
prefix: n,
size: t = 16,
alphabet: e = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
separator: s = "-"
} = {}) => {
const i = T_(e, t);
if (n == null)
return i;
if (e.includes(s))
throw new m_({
argument: "separator",
message: `The separator "${s}" must not be part of the alphabet "${e}".`
});
return (r) => `${n}${s}${i(r)}`;
}, sl = ya();
function F_(n) {
return n == null ? "unknown error" : typeof n == "string" ? n : n instanceof Error ? n.message : JSON.stringify(n);
}
function $_(n) {
return Object.fromEntries(
Object.entries(n).filter(([t, e]) => e != null)
);
}
function Vh(n) {
return n instanceof Error && (n.name === "AbortError" || n.name === "TimeoutError");
}
function j_({
apiKey: n,
environmentVariableName: t,
apiKeyParameterName: e = "apiKey",
description: s
}) {
if (typeof n == "string")
return n;
if (n != null)
throw new Dh({
message: `${s} API key must be a string.`
});
if (typeof process > "u")
throw new Dh({
message: `${s} API key is missing. Pass it using the '${e}' parameter. Environment variables is not supported in this environment.`
});
if (n = process.env[t], n == null)
throw new Dh({
message: `${s} API key is missing. Pass it using the '${e}' parameter or the ${t} environment variable.`
});
if (typeof n != "string")
throw new Dh({
message: `${s} API key must be a string. The value of the ${t} environment variable is not a string.`
});
return n;
}
var Eu = Symbol.for("vercel.ai.validator");
function B_(n) {
return { [Eu]: !0, validate: n };
}
function H_(n) {
return typeof n == "object" && n !== null && Eu in n && n[Eu] === !0 && "validate" in n;
}
function U_(n) {
return H_(n) ? n : z_(n);
}
function z_(n) {
return B_((t) => {
const e = n.safeParse(t);
return e.success ? { success: !0, value: e.data } : { success: !1, error: e.error };
});
}
function V_({
value: n,
schema: t
}) {
const e = ca({ value: n, schema: t });
if (!e.success)
throw Zi.wrap({ value: n, cause: e.error });
return e.value;
}
function ca({
value: n,
schema: t
}) {
const e = U_(t);
try {
if (e.validate == null)
return { success: !0, value: n };
const s = e.validate(n);
return s.success ? s : {
success: !1,
error: Zi.wrap({ value: n, cause: s.error })
};
} catch (s) {
return {
success: !1,
error: Zi.wrap({ value: n, cause: s })
};
}
}
function G_({
text: n,
schema: t
}) {
try {
const e = kp.parse(n);
return t == null ? e : V_({ value: e, schema: t });
} catch (e) {
throw Ll.isInstance(e) || Zi.isInstance(e) ? e : new Ll({ text: n, cause: e });
}
}
function Go({
text: n,
schema: t
}) {
try {
const e = kp.parse(n);
if (t == null)
return { success: !0, value: e, rawValue: e };
const s = ca({ value: e, schema: t });
return s.success ? { ...s, rawValue: e } : s;
} catch (e) {
return {
success: !1,
error: Ll.isInstance(e) ? e : new Ll({ text: n, cause: e })
};
}
}
function yg(n) {
try {
return kp.parse(n), !0;
} catch {
return !1;
}
}
var q_ = () => globalThis.fetch, qo = async ({
url: n,
headers: t,
body: e,
failedResponseHandler: s,
successfulResponseHandler: i,
abortSignal: r,
fetch: a
}) => W_({
url: n,
headers: {
"Content-Type": "application/json",
...t
},
body: {
content: JSON.stringify(e),
values: e
},
failedResponseHandler: s,
successfulResponseHandler: i,
abortSignal: r,
fetch: a
}), W_ = async ({
url: n,
headers: t = {},
body: e,
successfulResponseHandler: s,
failedResponseHandler: i,
abortSignal: r,
fetch: a = q_()
}) => {
try {
const l = await a(n, {
method: "POST",
headers: $_(t),
body: e.content,
signal: r
}), c = fd(l);
if (!l.ok) {
let h;
try {
h = await i({
response: l,
url: n,
requestBodyValues: e.values
});
} catch (u) {
throw Vh(u) || hi.isInstance(u) ? u : new hi({
message: "Failed to process error response",
cause: u,
statusCode: l.status,
url: n,
responseHeaders: c,
requestBodyValues: e.values
});
}
throw h.value;
}
try {
return await s({
response: l,
url: n,
requestBodyValues: e.values
});
} catch (h) {
throw h instanceof Error && (Vh(h) || hi.isInstance(h)) ? h : new hi({
message: "Failed to process successful response",
cause: h,
statusCode: l.status,
url: n,
responseHeaders: c,
requestBodyValues: e.values
});
}
} catch (l) {
if (Vh(l))
throw l;
if (l instanceof TypeError && l.message === "fetch failed") {
const c = l.cause;
if (c != null)
throw new hi({
message: `Cannot connect to API: ${c.message}`,
cause: c,
url: n,
requestBodyValues: e.values,
isRetryable: !0
// retry when network error
});
}
throw l;
}
}, X_ = ({
errorSchema: n,
errorToMessage: t,
isRetryable: e
}) => async ({ response: s, url: i, requestBodyValues: r }) => {
const a = await s.text(), l = fd(s);
if (a.trim() === "")
return {
responseHeaders: l,
value: new hi({
message: s.statusText,
url: i,
requestBodyValues: r,
statusCode: s.status,
responseHeaders: l,
responseBody: a,
isRetryable: e == null ? void 0 : e(s)
})
};
try {
const c = G_({
text: a,
schema: n
});
return {
responseHeaders: l,
value: new hi({
message: t(c),
url: i,
requestBodyValues: r,
statusCode: s.status,
responseHeaders: l,
responseBody: a,
data: c,
isRetryable: e == null ? void 0 : e(s, c)
})
};
} catch {
return {
responseHeaders: l,
value: new hi({
message: s.statusText,
url: i,
requestBodyValues: r,
statusCode: s.status,
responseHeaders: l,
responseBody: a,
isRetryable: e == null ? void 0 : e(s)
})
};
}
}, Hm = (n) => async ({ response: t }) => {
const e = fd(t);
if (t.body == null)
throw new p_({});
return {
responseHeaders: e,
value: t.body.pipeThrough(new TextDecoderStream()).pipeThrough(new O_()).pipeThrough(
new TransformStream({
transform({ data: s }, i) {
s !== "[DONE]" && i.enqueue(
Go({
text: s,
schema: n
})
);
}
})
)
};
}, pd = (n) => async ({ response: t, url: e, requestBodyValues: s }) => {
const i = await t.text(), r = Go({
text: i,
schema: n
}), a = fd(t);
if (!r.success)
throw new hi({
message: "Invalid JSON response",
cause: r.error,
statusCode: t.status,
responseHeaders: a,
responseBody: i,
url: e,
requestBodyValues: s
});
return {
responseHeaders: a,
value: r.value,
rawValue: r.rawValue
};
}, { btoa: Z_, atob: Y_ } = globalThis;
function K_(n) {
const t = n.replace(/-/g, "+").replace(/_/g, "/"), e = Y_(t);
return Uint8Array.from(e, (s) => s.codePointAt(0));
}
function Jd(n) {
let t = "";
for (let e = 0; e < n.length; e++)
t += String.fromCodePoint(n[e]);
return Z_(t);
}
function J_(n) {
return n == null ? void 0 : n.replace(/\/$/, "");
}
const Q_ = Symbol("Let zodToJsonSchema decide on which parser to use"), bg = {
name: void 0,
$refStrategy: "root",
basePath: ["#"],
effectStrategy: "input",
pipeStrategy: "all",
dateStrategy: "format:date-time",
mapStrategy: "entries",
removeAdditionalStrategy: "passthrough",
definitionPath: "definitions",
target: "jsonSchema7",
strictUnions: !1,
definitions: {},
errorMessages: !1,
markdownDescription: !1,
patternStrategy: "escape",
applyRegexFlags: !1,
emailStrategy: "format:email",
base64Strategy: "contentEncoding:base64",
nameStrategy: "ref"
}, tA = (n) => typeof n == "string" ? {
...bg,
name: n
} : {
...bg,
...n
}, eA = (n) => {
const t = tA(n), e = t.name !== void 0 ? [...t.basePath, t.definitionPath, t.name] : t.basePath;
return {
...t,
currentPath: e,
propertyPath: void 0,
seen: new Map(Object.entries(t.definitions).map(([s, i]) => [
i._def,
{
def: i._def,
path: [...t.basePath, t.definitionPath, s],
// Resolution of references will be forced even though seen, so it's ok that the schema is undefined here for now.
jsonSchema: void 0
}
]))
};
};
function Um(n, t, e, s) {
s != null && s.errorMessages && e && (n.errorMessage = {
...n.errorMessage,
[t]: e
});
}
function _t(n, t, e, s, i) {
n[t] = e, Um(n, t, s, i);
}
var ct;
(function(n) {
n.assertEqual = (i) => i;
function t(i) {
}
n.assertIs = t;
function e(i) {
throw new Error();
}
n.assertNever = e, n.arrayToEnum = (i) => {
const r = {};
for (const a of i)
r[a] = a;
return r;
}, n.getValidEnumValues = (i) => {
const r = n.objectKeys(i).filter((l) => typeof i[i[l]] != "number"), a = {};
for (const l of r)
a[l] = i[l];
return n.objectValues(a);
}, n.objectValues = (i) => n.objectKeys(i).map(function(r) {
return i[r];
}), n.objectKeys = typeof Object.keys == "function" ? (i) => Object.keys(i) : (i) => {
const r = [];
for (const a in i)
Object.prototype.hasOwnProperty.call(i, a) && r.push(a);
return r;
}, n.find = (i, r) => {
for (const a of i)
if (r(a))
return a;
}, n.isInteger = typeof Number.isInteger == "function" ? (i) => Number.isInteger(i) : (i) => typeof i == "number" && isFinite(i) && Math.floor(i) === i;
function s(i, r = " | ") {
return i.map((a) => typeof a == "string" ? `'${a}'` : a).join(r);
}
n.joinValues = s, n.jsonStringifyReplacer = (i, r) => typeof r == "bigint" ? r.toString() : r;
})(ct || (ct = {}));
var Qd;
(function(n) {
n.mergeShapes = (t, e) => ({
...t,
...e
// second overwrites first
});
})(Qd || (Qd = {}));
const L = ct.arrayToEnum([
"string",
"nan",
"number",
"integer",
"float",
"boolean",
"date",
"bigint",
"symbol",
"function",
"undefined",
"null",
"array",
"object",
"unknown",
"promise",
"void",
"never",
"map",
"set"
]), _i = (n) => {
switch (typeof n) {
case "undefined":
return L.undefined;
case "string":
return L.string;
case "number":
return isNaN(n) ? L.nan : L.number;
case "boolean":
return L.boolean;
case "function":
return L.function;
case "bigint":
return L.bigint;
case "symbol":
return L.symbol;
case "object":
return Array.isArray(n) ? L.array : n === null ? L.null : n.then && typeof n.then == "function" && n.catch && typeof n.catch == "function" ? L.promise : typeof Map < "u" && n instanceof Map ? L.map : typeof Set < "u" && n instanceof Set ? L.set : typeof Date < "u" && n instanceof Date ? L.date : L.object;
default:
return L.unknown;
}
}, I = ct.arrayToEnum([
"invalid_type",
"invalid_literal",
"custom",
"invalid_union",
"invalid_union_discriminator",
"invalid_enum_value",
"unrecognized_keys",
"invalid_arguments",
"invalid_return_type",
"invalid_date",
"invalid_string",
"too_small",
"too_big",
"invalid_intersection_types",
"not_multiple_of",
"not_finite"
]), sA = (n) => JSON.stringify(n, null, 2).replace(/"([^"]+)":/g, "$1:");
class rs extends Error {
get errors() {
return this.issues;
}
constructor(t) {
super(), this.issues = [], this.addIssue = (s) => {
this.issues = [...this.issues, s];
}, this.addIssues = (s = []) => {
this.issues = [...this.issues, ...s];
};
const e = new.target.prototype;
Object.setPrototypeOf ? Object.setPrototypeOf(this, e) : this.__proto__ = e, this.name = "ZodError", this.issues = t;
}
format(t) {
const e = t || function(r) {
return r.message;
}, s = { _errors: [] }, i = (r) => {
for (const a of r.issues)
if (a.code === "invalid_union")
a.unionErrors.map(i);
else if (a.code === "invalid_return_type")
i(a.returnTypeError);
else if (a.code === "invalid_arguments")
i(a.argumentsError);
else if (a.path.length === 0)
s._errors.push(e(a));
else {
let l = s, c = 0;
for (; c < a.path.length; ) {
const h = a.path[c];
c === a.path.length - 1 ? (l[h] = l[h] || { _errors: [] }, l[h]._errors.push(e(a))) : l[h] = l[h] || { _errors: [] }, l = l[h], c++;
}
}
};
return i(this), s;
}
static assert(t) {
if (!(t instanceof rs))
throw new Error(`Not a ZodError: ${t}`);
}
toString() {
return this.message;
}
get message() {
return JSON.stringify(this.issues, ct.jsonStringifyReplacer, 2);
}
get isEmpty() {
return this.issues.length === 0;
}
flatten(t = (e) => e.message) {
const e = {}, s = [];
for (const i of this.issues)
i.path.length > 0 ? (e[i.path[0]] = e[i.path[0]] || [], e[i.path[0]].push(t(i))) : s.push(t(i));
return { formErrors: s, fieldErrors: e };
}
get formErrors() {
return this.flatten();
}
}
rs.create = (n) => new rs(n);
const Wo = (n, t) => {
let e;
switch (n.code) {
case I.invalid_type:
n.received === L.undefined ? e = "Required" : e = `Expected ${n.expected}, received ${n.received}`;
break;
case I.invalid_literal:
e = `Invalid literal value, expected ${JSON.stringify(n.expected, ct.jsonStringifyReplacer)}`;
break;
case I.unrecognized_keys:
e = `Unrecognized key(s) in object: ${ct.joinValues(n.keys, ", ")}`;
break;
case I.invalid_union:
e = "Invalid input";
break;
case I.invalid_union_discriminator:
e = `Invalid discriminator value. Expected ${ct.joinValues(n.options)}`;
break;
case I.invalid_enum_value:
e = `Invalid enum value. Expected ${ct.joinValues(n.options)}, received '${n.received}'`;
break;
case I.invalid_arguments:
e = "Invalid function arguments";
break;
case I.invalid_return_type:
e = "Invalid function return type";
break;
case I.invalid_date:
e = "Invalid date";
break;
case I.invalid_string:
typeof n.validation == "object" ? "includes" in n.validation ? (e = `Invalid input: must include "${n.validation.includes}"`, typeof n.validation.position == "number" && (e = `${e} at one or more positions greater than or equal to ${n.validation.position}`)) : "startsWith" in n.validation ? e = `Invalid input: must start with "${n.validation.startsWith}"` : "endsWith" in n.validation ? e = `Invalid input: must end with "${n.validation.endsWith}"` : ct.assertNever(n.validation) : n.validation !== "regex" ? e = `Invalid ${n.validation}` : e = "Invalid";
break;
case I.too_small:
n.type === "array" ? e = `Array must contain ${n.exact ? "exactly" : n.inclusive ? "at least" : "more than"} ${n.minimum} element(s)` : n.type === "string" ? e = `String must contain ${n.exact ? "exactly" : n.inclusive ? "at least" : "over"} ${n.minimum} character(s)` : n.type === "number" ? e = `Number must be ${n.exact ? "exactly equal to " : n.inclusive ? "greater than or equal to " : "greater than "}${n.minimum}` : n.type === "date" ? e = `Date must be ${n.exact ? "exactly equal to " : n.inclusive ? "greater than or equal to " : "greater than "}${new Date(Number(n.minimum))}` : e = "Invalid input";
break;
case I.too_big:
n.type === "array" ? e = `Array must contain ${n.exact ? "exactly" : n.inclusive ? "at most" : "less than"} ${n.maximum} element(s)` : n.type === "string" ? e = `String must contain ${n.exact ? "exactly" : n.inclusive ? "at most" : "under"} ${n.maximum} character(s)` : n.type === "number" ? e = `Number must be ${n.exact ? "exactly" : n.inclusive ? "less than or equal to" : "less than"} ${n.maximum}` : n.type === "bigint" ? e = `BigInt must be ${n.exact ? "exactly" : n.inclusive ? "less than or equal to" : "less than"} ${n.maximum}` : n.type === "date" ? e = `Date must be ${n.exact ? "exactly" : n.inclusive ? "smaller than or equal to" : "smaller than"} ${new Date(Number(n.maximum))}` : e = "Invalid input";
break;
case I.custom:
e = "Invalid input";
break;
case I.invalid_intersection_types:
e = "Intersection results could not be merged";
break;
case I.not_multiple_of:
e = `Number must be a multiple of ${n.multipleOf}`;
break;
case I.not_finite:
e = "Number must be finite";
break;
default:
e = t.defaultError, ct.assertNever(n);
}
return { message: e };
};
let zm = Wo;
function iA(n) {
zm = n;
}
function xu() {
return zm;
}
const Tu = (n) => {
const { data: t, path: e, errorMaps: s, issueData: i } = n, r = [...e, ...i.path || []], a = {
...i,
path: r
};
if (i.message !== void 0)
return {
...i,
path: r,
message: i.message
};
let l = "";
const c = s.filter((h) => !!h).slice().reverse();
for (const h of c)
l = h(a, { data: t, defaultError: l }).message;
return {
...i,
path: r,
message: l
};
}, nA = [];
function O(n, t) {
const e = xu(), s = Tu({
issueData: t,
data: n.data,
path: n.path,
errorMaps: [
n.common.contextualErrorMap,
// contextual error map is first priority
n.schemaErrorMap,
// then schema-bound map if available
e,
// then global override map
e === Wo ? void 0 : Wo
// then global default map
].filter((i) => !!i)
});
n.common.issues.push(s);
}
class Ee {
constructor() {
this.value = "valid";
}
dirty() {
this.value === "valid" && (this.value = "dirty");
}
abort() {
this.value !== "aborted" && (this.value = "aborted");
}
static mergeArray(t, e) {
const s = [];
for (const i of e) {
if (i.status === "aborted")
return W;
i.status === "dirty" && t.dirty(), s.push(i.value);
}
return { status: t.value, value: s };
}
static async mergeObjectAsync(t, e) {
const s = [];
for (const i of e) {
const r = await i.key, a = await i.value;
s.push({
key: r,
value: a
});
}
return Ee.mergeObjectSync(t, s);
}
static mergeObjectSync(t, e) {
const s = {};
for (const i of e) {
const { key: r, value: a } = i;
if (r.status === "aborted" || a.status === "aborted")
return W;
r.status === "dirty" && t.dirty(), a.status === "dirty" && t.dirty(), r.value !== "__proto__" && (typeof a.value < "u" || i.alwaysSet) && (s[r.value] = a.value);
}
return { status: t.value, value: s };
}
}
const W = Object.freeze({
status: "aborted"
}), Ra = (n) => ({ status: "dirty", value: n }), Le = (n) => ({ status: "valid", value: n }), tf = (n) => n.status === "aborted", ef = (n) => n.status === "dirty", ha = (n) => n.status === "valid", Dl = (n) => typeof Promise < "u" && n instanceof Promise;
function Cu(n, t, e, s) {
if (typeof t == "function" ? n !== t || !0 : !t.has(n)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return t.get(n);
}
function Vm(n, t, e, s, i) {
if (typeof t == "function" ? n !== t || !0 : !t.has(n)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
return t.set(n, e), e;
}
var B;
(function(n) {
n.errToObj = (t) => typeof t == "string" ? { message: t } : t || {}, n.toString = (t) => typeof t == "string" ? t : t == null ? void 0 : t.message;
})(B || (B = {}));
var ll, cl;
class ui {
constructor(t, e, s, i) {
this._cachedPath = [], this.parent = t, this.data = e, this._path = s, this._key = i;
}
get path() {
return this._cachedPath.length || (this._key instanceof Array ? this._cachedPath.push(...this._path, ...this._key) : this._cachedPath.push(...this._path, this._key)), this._cachedPath;
}
}
const vg = (n, t) => {
if (ha(t))
return { success: !0, data: t.value };
if (!n.common.issues.length)
throw new Error("Validation failed but no issues detected.");
return {
success: !1,
get error() {
if (this._error)
return this._error;
const e = new rs(n.common.issues);
return this._error = e, this._error;
}
};
};
function J(n) {
if (!n)
return {};
const { errorMap: t, invalid_type_error: e, required_error: s, description: i } = n;
if (t && (e || s))
throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);
return t ? { errorMap: t, description: i } : { errorMap: (a, l) => {
var c, h;
const { message: u } = n;
return a.code === "invalid_enum_value" ? { message: u ?? l.defaultError } : typeof l.data > "u" ? { message: (c = u ?? s) !== null && c !== void 0 ? c : l.defaultError } : a.code !== "invalid_type" ? { message: l.defaultError } : { message: (h = u ?? e) !== null && h !== void 0 ? h : l.defaultError };
}, description: i };
}
class nt {
get description() {
return this._def.description;
}
_getType(t) {
return _i(t.data);
}
_getOrReturnCtx(t, e) {
return e || {
common: t.parent.common,
data: t.data,
parsedType: _i(t.data),
schemaErrorMap: this._def.errorMap,
path: t.path,
parent: t.parent
};
}
_processInputParams(t) {
return {
status: new Ee(),
ctx: {
common: t.parent.common,
data: t.data,
parsedType: _i(t.data),
schemaErrorMap: this._def.errorMap,
path: t.path,
parent: t.parent
}
};
}
_parseSync(t) {
const e = this._parse(t);
if (Dl(e))
throw new Error("Synchronous parse encountered promise.");
return e;
}
_parseAsync(t) {
const e = this._parse(t);
return Promise.resolve(e);
}
parse(t, e) {
const s = this.safeParse(t, e);
if (s.success)
return s.data;
throw s.error;
}
safeParse(t, e) {
var s;
const i = {
common: {
issues: [],
async: (s = e == null ? void 0 : e.async) !== null && s !== void 0 ? s : !1,
contextualErrorMap: e == null ? void 0 : e.errorMap
},
path: (e == null ? void 0 : e.path) || [],
schemaErrorMap: this._def.errorMap,
parent: null,
data: t,
parsedType: _i(t)
}, r = this._parseSync({ data: t, path: i.path, parent: i });
return vg(i, r);
}
"~validate"(t) {
var e, s;
const i = {
common: {
issues: [],
async: !!this["~standard"].async
},
path: [],
schemaErrorMap: this._def.errorMap,
parent: null,
data: t,
parsedType: _i(t)
};
if (!this["~standard"].async)
try {
const r = this._parseSync({ data: t, path: [], parent: i });
return ha(r) ? {
value: r.value
} : {
issues: i.common.issues
};
} catch (r) {
!((s = (e = r == null ? void 0 : r.message) === null || e === void 0 ? void 0 : e.toLowerCase()) === null || s === void 0) && s.includes("encountered") && (this["~standard"].async = !0), i.common = {
issues: [],
async: !0
};
}
return this._parseAsync({ data: t, path: [], parent: i }).then((r) => ha(r) ? {
value: r.value
} : {
issues: i.common.issues
});
}
async parseAsync(t, e) {
const s = await this.safeParseAsync(t, e);
if (s.success)
return s.data;
throw s.error;
}
async safeParseAsync(t, e) {
const s = {
common: {
issues: [],
contextualErrorMap: e == null ? void 0 : e.errorMap,
async: !0
},
path: (e == null ? void 0 : e.path) || [],
schemaErrorMap: this._def.errorMap,
parent: null,
data: t,
parsedType: _i(t)
}, i = this._parse({ data: t, path: s.path, parent: s }), r = await (Dl(i) ? i : Promise.resolve(i));
return vg(s, r);
}
refine(t, e) {
const s = (i) => typeof e == "string" || typeof e > "u" ? { message: e } : typeof e == "function" ? e(i) : e;
return this._refinement((i, r) => {
const a = t(i), l = () => r.addIssue({
code: I.custom,
...s(i)
});
return typeof Promise < "u" && a instanceof Promise ? a.then((c) => c ? !0 : (l(), !1)) : a ? !0 : (l(), !1);
});
}
refinement(t, e) {
return this._refinement((s, i) => t(s) ? !0 : (i.addIssue(typeof e == "function" ? e(s, i) : e), !1));
}
_refinement(t) {
return new Bs({
schema: this,
typeName: R.ZodEffects,
effect: { type: "refinement", refinement: t }
});
}
superRefine(t) {
return this._refinement(t);
}
constructor(t) {
this.spa = this.safeParseAsync, this._def = t, this.parse = this.parse.bind(this), this.safeParse = this.safeParse.bind(this), this.parseAsync = this.parseAsync.bind(this), this.safeParseAsync = this.safeParseAsync.bind(this), this.spa = this.spa.bind(this), this.refine = this.refine.bind(this), this.refinement = this.refinement.bind(this), this.superRefine = this.superRefine.bind(this), this.optional = this.optional.bind(this), this.nullable = this.nullable.bind(this), this.nullish = this.nullish.bind(this), this.array = this.array.bind(this), this.promise = this.promise.bind(this), this.or = this.or.bind(this), this.and = this.and.bind(this), this.transform = this.transform.bind(this), this.brand = this.brand.bind(this), this.default = this.default.bind(this), this.catch = this.catch.bind(this), this.describe = this.describe.bind(this), this.pipe = this.pipe.bind(this), this.readonly = this.readonly.bind(this), this.isNullable = this.isNullable.bind(this), this.isOptional = this.isOptional.bind(this), this["~standard"] = {
version: 1,
vendor: "zod",
validate: (e) => this["~validate"](e)
};
}
optional() {
return js.create(this, this._def);
}
nullable() {
return jn.create(this, this._def);
}
nullish() {
return this.nullable().optional();
}
array() {
return $s.create(this);
}
promise() {
return Zo.create(this, this._def);
}
or(t) {
return Bl.create([this, t], this._def);
}
and(t) {
return Hl.create(this, t, this._def);
}
transform(t) {
return new Bs({
...J(this._def),
schema: this,
typeName: R.ZodEffects,
effect: { type: "transform", transform: t }
});
}
default(t) {
const e = typeof t == "function" ? t : () => t;
return new ql({
...J(this._def),
innerType: this,
defaultValue: e,
typeName: R.ZodDefault
});
}
brand() {
return new Ip({
typeName: R.ZodBranded,
type: this,
...J(this._def)
});
}
catch(t) {
const e = typeof t == "function" ? t : () => t;
return new Wl({
...J(this._def),
innerType: this,
catchValue: e,
typeName: R.ZodCatch
});
}
describe(t) {
const e = this.constructor;
return new e({
...this._def,
description: t
});
}
pipe(t) {
return Mh.create(this, t);
}
readonly() {
return Xl.create(this);
}
isOptional() {
return this.safeParse(void 0).success;
}
isNullable() {
return this.safeParse(null).success;
}
}
const rA = /^c[^\s-]{8,}$/i, aA = /^[0-9a-z]+$/, oA = /^[0-9A-HJKMNP-TV-Z]{26}$/i, lA = /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i, cA = /^[a-z0-9_-]{21}$/i, hA = /^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/, uA = /^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/, dA = /^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i, fA = "^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";
let Nd;
const pA = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/, gA = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/, mA = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/, yA = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/, bA = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/, vA = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/, Gm = "((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))", _A = new RegExp(`^${Gm}$`);
function qm(n) {
let t = "([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d";
return n.precision ? t = `${t}\\.\\d{${n.precision}}` : n.precision == null && (t = `${t}(\\.\\d+)?`), t;
}
function AA(n) {
return new RegExp(`^${qm(n)}$`);
}
function Wm(n) {
let t = `${Gm}T${qm(n)}`;
const e = [];
return e.push(n.local ? "Z?" : "Z"), n.offset && e.push("([+-]\\d{2}:?\\d{2})"), t = `${t}(${e.join("|")})`, new RegExp(`^${t}$`);
}
function wA(n, t) {
return !!((t === "v4" || !t) && pA.test(n) || (t === "v6" || !t) && mA.test(n));
}
function SA(n, t) {
if (!hA.test(n))
return !1;
try {
const [e] = n.split("."), s = e.replace(/-/g, "+").replace(/_/g, "/").padEnd(e.length + (4 - e.length % 4) % 4, "="), i = JSON.parse(atob(s));
return !(typeof i != "object" || i === null || !i.typ || !i.alg || t && i.alg !== t);
} catch {
return !1;
}
}
function EA(n, t) {
return !!((t === "v4" || !t) && gA.test(n) || (t === "v6" || !t) && yA.test(n));
}
class Ds extends nt {
_parse(t) {
if (this._def.coerce && (t.data = String(t.data)), this._getType(t) !== L.string) {
const r = this._getOrReturnCtx(t);
return O(r, {
code: I.invalid_type,
expected: L.string,
received: r.parsedType
}), W;
}
const s = new Ee();
let i;
for (const r of this._def.checks)
if (r.kind === "min")
t.data.length < r.value && (i = this._getOrReturnCtx(t, i), O(i, {
code: I.too_small,
minimum: r.value,
type: "string",
inclusive: !0,
exact: !1,
message: r.message
}), s.dirty());
else if (r.kind === "max")
t.data.length > r.value && (i = this._getOrReturnCtx(t, i), O(i, {
code: I.too_big,
maximum: r.value,
type: "string",
inclusive: !0,
exact: !1,
message: r.message
}), s.dirty());
else if (r.kind === "length") {
const a = t.data.length > r.value, l = t.data.length < r.value;
(a || l) && (i = this._getOrReturnCtx(t, i), a ? O(i, {
code: I.too_big,
maximum: r.value,
type: "string",
inclusive: !0,
exact: !0,
message: r.message
}) : l && O(i, {
code: I.too_small,
minimum: r.value,
type: "string",
inclusive: !0,
exact: !0,
message: r.message
}), s.dirty());
} else if (r.kind === "email")
dA.test(t.data) || (i = this._getOrReturnCtx(t, i), O(i, {
validation: "email",
code: I.invalid_string,
message: r.message
}), s.dirty());
else if (r.kind === "emoji")
Nd || (Nd = new RegExp(fA, "u")), Nd.test(t.data) || (i = this._getOrReturnCtx(t, i), O(i, {
validation: "emoji",
code: I.invalid_string,
message: r.message
}), s.dirty());
else if (r.kind === "uuid")
lA.test(t.data) || (i = this._getOrReturnCtx(t, i), O(i, {
validation: "uuid",
code: I.invalid_string,
message: r.message
}), s.dirty());
else if (r.kind === "nanoid")
cA.test(t.data) || (i = this._getOrReturnCtx(t, i), O(i, {
validation: "nanoid",
code: I.invalid_string,
message: r.message
}), s.dirty());
else if (r.kind === "cuid")
rA.test(t.data) || (i = this._getOrReturnCtx(t, i), O(i, {
validation: "cuid",
code: I.invalid_string,
message: r.message
}), s.dirty());
else if (r.kind === "cuid2")
aA.test(t.data) || (i = this._getOrReturnCtx(t, i), O(i, {
validation: "cuid2",
code: I.invalid_string,
message: r.message
}), s.dirty());
else if (r.kind === "ulid")
oA.test(t.data) || (i = this._getOrReturnCtx(t, i), O(i, {
validation: "ulid",
code: I.invalid_string,
message: r.message
}), s.dirty());
else if (r.kind === "url")
try {
new URL(t.data);
} catch {
i = this._getOrReturnCtx(t, i), O(i, {
validation: "url",
code: I.invalid_string,
message: r.message
}), s.dirty();
}
else r.kind === "regex" ? (r.regex.lastIndex = 0, r.regex.test(t.data) || (i = this._getOrReturnCtx(t, i), O(i, {
validation: "regex",
code: I.invalid_string,
message: r.message
}), s.dirty())) : r.kind === "trim" ? t.data = t.data.trim() : r.kind === "includes" ? t.data.includes(r.value, r.position) || (i = this._getOrReturnCtx(t, i), O(i, {
code: I.invalid_string,
validation: { includes: r.value, position: r.position },
message: r.message
}), s.dirty()) : r.kind === "toLowerCase" ? t.data = t.data.toLowerCase() : r.kind === "toUpperCase" ? t.data = t.data.toUpperCase() : r.kind === "startsWith" ? t.data.startsWith(r.value) || (i = this._getOrReturnCtx(t, i), O(i, {
code: I.invalid_string,
validation: { startsWith: r.value },
message: r.message
}), s.dirty()) : r.kind === "endsWith" ? t.data.endsWith(r.value) || (i = this._getOrReturnCtx(t, i), O(i, {
code: I.invalid_string,
validation: { endsWith: r.value },
message: r.message
}), s.dirty()) : r.kind === "datetime" ? Wm(r).test(t.data) || (i = this._getOrReturnCtx(t, i), O(i, {
code: I.invalid_string,
validation: "datetime",
message: r.message
}), s.dirty()) : r.kind === "date" ? _A.test(t.data) || (i = this._getOrReturnCtx(t, i), O(i, {
code: I.invalid_string,
validation: "date",
message: r.message
}), s.dirty()) : r.kind === "time" ? AA(r).test(t.data) || (i = this._getOrReturnCtx(t, i), O(i, {
code: I.invalid_string,
validation: "time",
message: r.message
}), s.dirty()) : r.kind === "duration" ? uA.test(t.data) || (i = this._getOrReturnCtx(t, i), O(i, {
validation: "duration",
code: I.invalid_string,
message: r.message
}), s.dirty()) : r.kind === "ip" ? wA(t.data, r.version) || (i = this._getOrReturnCtx(t, i), O(i, {
validation: "ip",
code: I.invalid_string,
message: r.message
}), s.dirty()) : r.kind === "jwt" ? SA(t.data, r.alg) || (i = this._getOrReturnCtx(t, i), O(i, {
validation: "jwt",
code: I.invalid_string,
message: r.message
}), s.dirty()) : r.kind === "cidr" ? EA(t.data, r.version) || (i = this._getOrReturnCtx(t, i), O(i, {
validation: "cidr",
code: I.invalid_string,
message: r.message
}), s.dirty()) : r.kind === "base64" ? bA.test(t.data) || (i = this._getOrReturnCtx(t, i), O(i, {
validation: "base64",
code: I.invalid_string,
message: r.message
}), s.dirty()) : r.kind === "base64url" ? vA.test(t.data) || (i = this._getOrReturnCtx(t, i), O(i, {
validation: "base64url",
code: I.invalid_string,
message: r.message
}), s.dirty()) : ct.assertNever(r);
return { status: s.value, value: t.data };
}
_regex(t, e, s) {
return this.refinement((i) => t.test(i), {
validation: e,
code: I.invalid_string,
...B.errToObj(s)
});
}
_addCheck(t) {
return new Ds({
...this._def,
checks: [...this._def.checks, t]
});
}
email(t) {
return this._addCheck({ kind: "email", ...B.errToObj(t) });
}
url(t) {
return this._addCheck({ kind: "url", ...B.errToObj(t) });
}
emoji(t) {
return this._addCheck({ kind: "emoji", ...B.errToObj(t) });
}
uuid(t) {
return this._addCheck({ kind: "uuid", ...B.errToObj(t) });
}
nanoid(t) {
return this._addCheck({ kind: "nanoid", ...B.errToObj(t) });
}
cuid(t) {
return this._addCheck({ kind: "cuid", ...B.errToObj(t) });
}
cuid2(t) {
return this._addCheck({ kind: "cuid2", ...B.errToObj(t) });
}
ulid(t) {
return this._addCheck({ kind: "ulid", ...B.errToObj(t) });
}
base64(t) {
return this._addCheck({ kind: "base64", ...B.errToObj(t) });
}
base64url(t) {
return this._addCheck({
kind: "base64url",
...B.errToObj(t)
});
}
jwt(t) {
return this._addCheck({ kind: "jwt", ...B.errToObj(t) });
}
ip(t) {
return this._addCheck({ kind: "ip", ...B.errToObj(t) });
}
cidr(t) {
return this._addCheck({ kind: "cidr", ...B.errToObj(t) });
}
datetime(t) {
var e, s;
return typeof t == "string" ? this._addCheck({
kind: "datetime",
precision: null,
offset: !1,
local: !1,
message: t
}) : this._addCheck({
kind: "datetime",
precision: typeof (t == null ? void 0 : t.precision) > "u" ? null : t == null ? void 0 : t.precision,
offset: (e = t == null ? void 0 : t.offset) !== null && e !== void 0 ? e : !1,
local: (s = t == null ? void 0 : t.local) !== null && s !== void 0 ? s : !1,
...B.errToObj(t == null ? void 0 : t.message)
});
}
date(t) {
return this._addCheck({ kind: "date", message: t });
}
time(t) {
return typeof t == "string" ? this._addCheck({
kind: "time",
precision: null,
message: t
}) : this._addCheck({
kind: "time",
precision: typeof (t == null ? void 0 : t.precision) > "u" ? null : t == null ? void 0 : t.precision,
...B.errToObj(t == null ? void 0 : t.message)
});
}
duration(t) {
return this._addCheck({ kind: "duration", ...B.errToObj(t) });
}
regex(t, e) {
return this._addCheck({
kind: "regex",
regex: t,
...B.errToObj(e)
});
}
includes(t, e) {
return this._addCheck({
kind: "includes",
value: t,
position: e == null ? void 0 : e.position,
...B.errToObj(e == null ? void 0 : e.message)
});
}
startsWith(t, e) {
return this._addCheck({
kind: "startsWith",
value: t,
...B.errToObj(e)
});
}
endsWith(t, e) {
return this._addCheck({
kind: "endsWith",
value: t,
...B.errToObj(e)
});
}
min(t, e) {
return this._addCheck({
kind: "min",
value: t,
...B.errToObj(e)
});
}
max(t, e) {
return this._addCheck({
kind: "max",
value: t,
...B.errToObj(e)
});
}
length(t, e) {
return this._addCheck({
kind: "length",
value: t,
...B.errToObj(e)
});
}
/**
* Equivalent to `.min(1)`
*/
nonempty(t) {
return this.min(1, B.errToObj(t));
}
trim() {
return new Ds({
...this._def,
checks: [...this._def.checks, { kind: "trim" }]
});
}
toLowerCase() {
return new Ds({
...this._def,
checks: [...this._def.checks, { kind: "toLowerCase" }]
});
}
toUpperCase() {
return new Ds({
...this._def,
checks: [...this._def.checks, { kind: "toUpperCase" }]
});
}
get isDatetime() {
return !!this._def.checks.find((t) => t.kind === "datetime");
}
get isDate() {
return !!this._def.checks.find((t) => t.kind === "date");
}
get isTime() {
return !!this._def.checks.find((t) => t.kind === "time");
}
get isDuration() {
return !!this._def.checks.find((t) => t.kind === "duration");
}
get isEmail() {
return !!this._def.checks.find((t) => t.kind === "email");
}
get isURL() {
return !!this._def.checks.find((t) => t.kind === "url");
}
get isEmoji() {
return !!this._def.checks.find((t) => t.kind === "emoji");
}
get isUUID() {
return !!this._def.checks.find((t) => t.kind === "uuid");
}
get isNANOID() {
return !!this._def.checks.find((t) => t.kind === "nanoid");
}
get isCUID() {
return !!this._def.checks.find((t) => t.kind === "cuid");
}
get isCUID2() {
return !!this._def.checks.find((t) => t.kind === "cuid2");
}
get isULID() {
return !!this._def.checks.find((t) => t.kind === "ulid");
}
get isIP() {
return !!this._def.checks.find((t) => t.kind === "ip");
}
get isCIDR() {
return !!this._def.checks.find((t) => t.kind === "cidr");
}
get isBase64() {
return !!this._def.checks.find((t) => t.kind === "base64");
}
get isBase64url() {
return !!this._def.checks.find((t) => t.kind === "base64url");
}
get minLength() {
let t = null;
for (const e of this._def.checks)
e.kind === "min" && (t === null || e.value > t) && (t = e.value);
return t;
}
get maxLength() {
let t = null;
for (const e of this._def.checks)
e.kind === "max" && (t === null || e.value < t) && (t = e.value);
return t;
}
}
Ds.create = (n) => {
var t;
return new Ds({
checks: [],
typeName: R.ZodString,
coerce: (t = n == null ? void 0 : n.coerce) !== null && t !== void 0 ? t : !1,
...J(n)
});
};
function xA(n, t) {
const e = (n.toString().split(".")[1] || "").length, s = (t.toString().split(".")[1] || "").length, i = e > s ? e : s, r = parseInt(n.toFixed(i).replace(".", "")), a = parseInt(t.toFixed(i).replace(".", ""));
return r % a / Math.pow(10, i);
}
class Dn extends nt {
constructor() {
super(...arguments), this.min = this.gte, this.max = this.lte, this.step = this.multipleOf;
}
_parse(t) {
if (this._def.coerce && (t.data = Number(t.data)), this._getType(t) !== L.number) {
const r = this._getOrReturnCtx(t);
return O(r, {
code: I.invalid_type,
expected: L.number,
received: r.parsedType
}), W;
}
let s;
const i = new Ee();
for (const r of this._def.checks)
r.kind === "int" ? ct.isInteger(t.data) || (s = this._getOrReturnCtx(t, s), O(s, {
code: I.invalid_type,
expected: "integer",
received: "float",
message: r.message
}), i.dirty()) : r.kind === "min" ? (r.inclusive ? t.data < r.value : t.data <= r.value) && (s = this._getOrReturnCtx(t, s), O(s, {
code: I.too_small,
minimum: r.value,
type: "number",
inclusive: r.inclusive,
exact: !1,
message: r.message
}), i.dirty()) : r.kind === "max" ? (r.inclusive ? t.data > r.value : t.data >= r.value) && (s = this._getOrReturnCtx(t, s), O(s, {
code: I.too_big,
maximum: r.value,
type: "number",
inclusive: r.inclusive,
exact: !1,
message: r.message
}), i.dirty()) : r.kind === "multipleOf" ? xA(t.data, r.value) !== 0 && (s = this._getOrReturnCtx(t, s), O(s, {
code: I.not_multiple_of,
multipleOf: r.value,
message: r.message
}), i.dirty()) : r.kind === "finite" ? Number.isFinite(t.data) || (s = this._getOrReturnCtx(t, s), O(s, {
code: I.not_finite,
message: r.message
}), i.dirty()) : ct.assertNever(r);
return { status: i.value, value: t.data };
}
gte(t, e) {
return this.setLimit("min", t, !0, B.toString(e));
}
gt(t, e) {
return this.setLimit("min", t, !1, B.toString(e));
}
lte(t, e) {
return this.setLimit("max", t, !0, B.toString(e));
}
lt(t, e) {
return this.setLimit("max", t, !1, B.toString(e));
}
setLimit(t, e, s, i) {
return new Dn({
...this._def,
checks: [
...this._def.checks,
{
kind: t,
value: e,
inclusive: s,
message: B.toString(i)
}
]
});
}
_addCheck(t) {
return new Dn({
...this._def,
checks: [...this._def.checks, t]
});
}
int(t) {
return this._addCheck({
kind: "int",
message: B.toString(t)
});
}
positive(t) {
return this._addCheck({
kind: "min",
value: 0,
inclusive: !1,
message: B.toString(t)
});
}
negative(t) {
return this._addCheck({
kind: "max",
value: 0,
inclusive: !1,
message: B.toString(t)
});
}
nonpositive(t) {
return this._addCheck({
kind: "max",
value: 0,
inclusive: !0,
message: B.toString(t)
});
}
nonnegative(t) {
return this._addCheck({
kind: "min",
value: 0,
inclusive: !0,
message: B.toString(t)
});
}
multipleOf(t, e) {
return this._addCheck({
kind: "multipleOf",
value: t,
message: B.toString(e)
});
}
finite(t) {
return this._addCheck({
kind: "finite",
message: B.toString(t)
});
}
safe(t) {
return this._addCheck({
kind: "min",
inclusive: !0,
value: Number.MIN_SAFE_INTEGER,
message: B.toString(t)
})._addCheck({
kind: "max",
inclusive: !0,
value: Number.MAX_SAFE_INTEGER,
message: B.toString(t)
});
}
get minValue() {
let t = null;
for (const e of this._def.checks)
e.kind === "min" && (t === null || e.value > t) && (t = e.value);
return t;
}
get maxValue() {
let t = null;
for (const e of this._def.checks)
e.kind === "max" && (t === null || e.value < t) && (t = e.value);
return t;
}
get isInt() {
return !!this._def.checks.find((t) => t.kind === "int" || t.kind === "multipleOf" && ct.isInteger(t.value));
}
get isFinite() {
let t = null, e = null;
for (const s of this._def.checks) {
if (s.kind === "finite" || s.kind === "int" || s.kind === "multipleOf")
return !0;
s.kind === "min" ? (e === null || s.value > e) && (e = s.value) : s.kind === "max" && (t === null || s.value < t) && (t = s.value);
}
return Number.isFinite(e) && Number.isFinite(t);
}
}
Dn.create = (n) => new Dn({
checks: [],
typeName: R.ZodNumber,
coerce: (n == null ? void 0 : n.coerce) || !1,
...J(n)
});
class Fn extends nt {
constructor() {
super(...arguments), this.min = this.gte, this.max = this.lte;
}
_parse(t) {
if (this._def.coerce)
try {
t.data = BigInt(t.data);
} catch {
return this._getInvalidInput(t);
}
if (this._getType(t) !== L.bigint)
return this._getInvalidInput(t);
let s;
const i = new Ee();
for (const r of this._def.checks)
r.kind === "min" ? (r.inclusive ? t.data < r.value : t.data <= r.value) && (s = this._getOrReturnCtx(t, s), O(s, {
code: I.too_small,
type: "bigint",
minimum: r.value,
inclusive: r.inclusive,
message: r.message
}), i.dirty()) : r.kind === "max" ? (r.inclusive ? t.data > r.value : t.data >= r.value) && (s = this._getOrReturnCtx(t, s), O(s, {
code: I.too_big,
type: "bigint",
maximum: r.value,
inclusive: r.inclusive,
message: r.message
}), i.dirty()) : r.kind === "multipleOf" ? t.data % r.value !== BigInt(0) && (s = this._getOrReturnCtx(t, s), O(s, {
code: I.not_multiple_of,
multipleOf: r.value,
message: r.message
}), i.dirty()) : ct.assertNever(r);
return { status: i.value, value: t.data };
}
_getInvalidInput(t) {
const e = this._getOrReturnCtx(t);
return O(e, {
code: I.invalid_type,
expected: L.bigint,
received: e.parsedType
}), W;
}
gte(t, e) {
return this.setLimit("min", t, !0, B.toString(e));
}
gt(t, e) {
return this.setLimit("min", t, !1, B.toString(e));
}
lte(t, e) {
return this.setLimit("max", t, !0, B.toString(e));
}
lt(t, e) {
return this.setLimit("max", t, !1, B.toString(e));
}
setLimit(t, e, s, i) {
return new Fn({
...this._def,
checks: [
...this._def.checks,
{
kind: t,
value: e,
inclusive: s,
message: B.toString(i)
}
]
});
}
_addCheck(t) {
return new Fn({
...this._def,
checks: [...this._def.checks, t]
});
}
positive(t) {
return this._addCheck({
kind: "min",
value: BigInt(0),
inclusive: !1,
message: B.toString(t)
});
}
negative(t) {
return this._addCheck({
kind: "max",
value: BigInt(0),
inclusive: !1,
message: B.toString(t)
});
}
nonpositive(t) {
return this._addCheck({
kind: "max",
value: BigInt(0),
inclusive: !0,
message: B.toString(t)
});
}
nonnegative(t) {
return this._addCheck({
kind: "min",
value: BigInt(0),
inclusive: !0,
message: B.toString(t)
});
}
multipleOf(t, e) {
return this._addCheck({
kind: "multipleOf",
value: t,
message: B.toString(e)
});
}
get minValue() {
let t = null;
for (const e of this._def.checks)
e.kind === "min" && (t === null || e.value > t) && (t = e.value);
return t;
}
get maxValue() {
let t = null;
for (const e of this._def.checks)
e.kind === "max" && (t === null || e.value < t) && (t = e.value);
return t;
}
}
Fn.create = (n) => {
var t;
return new Fn({
checks: [],
typeName: R.ZodBigInt,
coerce: (t = n == null ? void 0 : n.coerce) !== null && t !== void 0 ? t : !1,
...J(n)
});
};
class Fl extends nt {
_parse(t) {
if (this._def.coerce && (t.data = !!t.data), this._getType(t) !== L.boolean) {
const s = this._getOrReturnCtx(t);
return O(s, {
code: I.invalid_type,
expected: L.boolean,
received: s.parsedType
}), W;
}
return Le(t.data);
}
}
Fl.create = (n) => new Fl({
typeName: R.ZodBoolean,
coerce: (n == null ? void 0 : n.coerce) || !1,
...J(n)
});
class ua extends nt {
_parse(t) {
if (this._def.coerce && (t.data = new Date(t.data)), this._getType(t) !== L.date) {
const r = this._getOrReturnCtx(t);
return O(r, {
code: I.invalid_type,
expected: L.date,
received: r.parsedType
}), W;
}
if (isNaN(t.data.getTime())) {
const r = this._getOrReturnCtx(t);
return O(r, {
code: I.invalid_date
}), W;
}
const s = new Ee();
let i;
for (const r of this._def.checks)
r.kind === "min" ? t.data.getTime() < r.value && (i = this._getOrReturnCtx(t, i), O(i, {
code: I.too_small,
message: r.message,
inclusive: !0,
exact: !1,
minimum: r.value,
type: "date"
}), s.dirty()) : r.kind === "max" ? t.data.getTime() > r.value && (i = this._getOrReturnCtx(t, i), O(i, {
code: I.too_big,
message: r.message,
inclusive: !0,
exact: !1,
maximum: r.value,
type: "date"
}), s.dirty()) : ct.assertNever(r);
return {
status: s.value,
value: new Date(t.data.getTime())
};
}
_addCheck(t) {
return new ua({
...this._def,
checks: [...this._def.checks, t]
});
}
min(t, e) {
return this._addCheck({
kind: "min",
value: t.getTime(),
message: B.toString(e)
});
}
max(t, e) {
return this._addCheck({
kind: "max",
value: t.getTime(),
message: B.toString(e)
});
}
get minDate() {
let t = null;
for (const e of this._def.checks)
e.kind === "min" && (t === null || e.value > t) && (t = e.value);
return t != null ? new Date(t) : null;
}
get maxDate() {
let t = null;
for (const e of this._def.checks)
e.kind === "max" && (t === null || e.value < t) && (t = e.value);
return t != null ? new Date(t) : null;
}
}
ua.create = (n) => new ua({
checks: [],
coerce: (n == null ? void 0 : n.coerce) || !1,
typeName: R.ZodDate,
...J(n)
});
class ku extends nt {
_parse(t) {
if (this._getType(t) !== L.symbol) {
const s = this._getOrReturnCtx(t);
return O(s, {
code: I.invalid_type,
expected: L.symbol,
received: s.parsedType
}), W;
}
return Le(t.data);
}
}
ku.create = (n) => new ku({
typeName: R.ZodSymbol,
...J(n)
});
class $l extends nt {
_parse(t) {
if (this._getType(t) !== L.undefined) {
const s = this._getOrReturnCtx(t);
return O(s, {
code: I.invalid_type,
expected: L.undefined,
received: s.parsedType
}), W;
}
return Le(t.data);
}
}
$l.create = (n) => new $l({
typeName: R.ZodUndefined,
...J(n)
});
class jl extends nt {
_parse(t) {
if (this._getType(t) !== L.null) {
const s = this._getOrReturnCtx(t);
return O(s, {
code: I.invalid_type,
expected: L.null,
received: s.parsedType
}), W;
}
return Le(t.data);
}
}
jl.create = (n) => new jl({
typeName: R.ZodNull,
...J(n)
});
class Xo extends nt {
constructor() {
super(...arguments), this._any = !0;
}
_parse(t) {
return Le(t.data);
}
}
Xo.create = (n) => new Xo({
typeName: R.ZodAny,
...J(n)
});
class oa extends nt {
constructor() {
super(...arguments), this._unknown = !0;
}
_parse(t) {
return Le(t.data);
}
}
oa.create = (n) => new oa({
typeName: R.ZodUnknown,
...J(n)
});
class Yi extends nt {
_parse(t) {
const e = this._getOrReturnCtx(t);
return O(e, {
code: I.invalid_type,
expected: L.never,
received: e.parsedType
}), W;
}
}
Yi.create = (n) => new Yi({
typeName: R.ZodNever,
...J(n)
});
class Iu extends nt {
_parse(t) {
if (this._getType(t) !== L.undefined) {
const s = this._getOrReturnCtx(t);
return O(s, {
code: I.invalid_type,
expected: L.void,
received: s.parsedType
}), W;
}
return Le(t.data);
}
}
Iu.create = (n) => new Iu({
typeName: R.ZodVoid,
...J(n)
});
class $s extends nt {
_parse(t) {
const { ctx: e, status: s } = this._processInputParams(t), i = this._def;
if (e.parsedType !== L.array)
return O(e, {
code: I.invalid_type,
expected: L.array,
received: e.parsedType
}), W;
if (i.exactLength !== null) {
const a = e.data.length > i.exactLength.value, l = e.data.length < i.exactLength.value;
(a || l) && (O(e, {
code: a ? I.too_big : I.too_small,
minimum: l ? i.exactLength.value : void 0,
maximum: a ? i.exactLength.value : void 0,
type: "array",
inclusive: !0,
exact: !0,
message: i.exactLength.message
}), s.dirty());
}
if (i.minLength !== null && e.data.length < i.minLength.value && (O(e, {
code: I.too_small,
minimum: i.minLength.value,
type: "array",
inclusive: !0,
exact: !1,
message: i.minLength.message
}), s.dirty()), i.maxLength !== null && e.data.length > i.maxLength.value && (O(e, {
code: I.too_big,
maximum: i.maxLength.value,
type: "array",
inclusive: !0,
exact: !1,
message: i.maxLength.message
}), s.dirty()), e.common.async)
return Promise.all([...e.data].map((a, l) => i.type._parseAsync(new ui(e, a, e.path, l)))).then((a) => Ee.mergeArray(s, a));
const r = [...e.data].map((a, l) => i.type._parseSync(new ui(e, a, e.path, l)));
return Ee.mergeArray(s, r);
}
get element() {
return this._def.type;
}
min(t, e) {
return new $s({
...this._def,
minLength: { value: t, message: B.toString(e) }
});
}
max(t, e) {
return new $s({
...this._def,
maxLength: { value: t, message: B.toString(e) }
});
}
length(t, e) {
return new $s({
...this._def,
exactLength: { value: t, message: B.toString(e) }
});
}
nonempty(t) {
return this.min(1, t);
}
}
$s.create = (n, t) => new $s({
type: n,
minLength: null,
maxLength: null,
exactLength: null,
typeName: R.ZodArray,
...J(t)
});
function wa(n) {
if (n instanceof Dt) {
const t = {};
for (const e in n.shape) {
const s = n.shape[e];
t[e] = js.create(wa(s));
}
return new Dt({
...n._def,
shape: () => t
});
} else return n instanceof $s ? new $s({
...n._def,
type: wa(n.element)
}) : n instanceof js ? js.create(wa(n.unwrap())) : n instanceof jn ? jn.create(wa(n.unwrap())) : n instanceof di ? di.create(n.items.map((t) => wa(t))) : n;
}
class Dt extends nt {
constructor() {
super(...arguments), this._cached = null, this.nonstrict = this.passthrough, this.augment = this.extend;
}
_getCached() {
if (this._cached !== null)
return this._cached;
const t = this._def.shape(), e = ct.objectKeys(t);
return this._cached = { shape: t, keys: e };
}
_parse(t) {
if (this._getType(t) !== L.object) {
const h = this._getOrReturnCtx(t);
return O(h, {
code: I.invalid_type,
expected: L.object,
received: h.parsedType
}), W;
}
const { status: s, ctx: i } = this._processInputParams(t), { shape: r, keys: a } = this._getCached(), l = [];
if (!(this._def.catchall instanceof Yi && this._def.unknownKeys === "strip"))
for (const h in i.data)
a.includes(h) || l.push(h);
const c = [];
for (const h of a) {
const u = r[h], d = i.data[h];
c.push({
key: { status: "valid", value: h },
value: u._parse(new ui(i, d, i.path, h)),
alwaysSet: h in i.data
});
}
if (this._def.catchall instanceof Yi) {
const h = this._def.unknownKeys;
if (h === "passthrough")
for (const u of l)
c.push({
key: { status: "valid", value: u },
value: { status: "valid", value: i.data[u] }
});
else if (h === "strict")
l.length > 0 && (O(i, {
code: I.unrecognized_keys,
keys: l
}), s.dirty());
else if (h !== "strip") throw new Error("Internal ZodObject error: invalid unknownKeys value.");
} else {
const h = this._def.catchall;
for (const u of l) {
const d = i.data[u];
c.push({
key: { status: "valid", value: u },
value: h._parse(
new ui(i, d, i.path, u)
//, ctx.child(key), value, getParsedType(value)
),
alwaysSet: u in i.data
});
}
}
return i.common.async ? Promise.resolve().then(async () => {
const h = [];
for (const u of c) {
const d = await u.key, f = await u.value;
h.push({
key: d,
value: f,
alwaysSet: u.alwaysSet
});
}
return h;
}).then((h) => Ee.mergeObjectSync(s, h)) : Ee.mergeObjectSync(s, c);
}
get shape() {
return this._def.shape();
}
strict(t) {
return B.errToObj, new Dt({
...this._def,
unknownKeys: "strict",
...t !== void 0 ? {
errorMap: (e, s) => {
var i, r, a, l;
const c = (a = (r = (i = this._def).errorMap) === null || r === void 0 ? void 0 : r.call(i, e, s).message) !== null && a !== void 0 ? a : s.defaultError;
return e.code === "unrecognized_keys" ? {
message: (l = B.errToObj(t).message) !== null && l !== void 0 ? l : c
} : {
message: c
};
}
} : {}
});
}
strip() {
return new Dt({
...this._def,
unknownKeys: "strip"
});
}
passthrough() {
return new Dt({
...this._def,
unknownKeys: "passthrough"
});
}
// const AugmentFactory =
// <Def extends ZodObjectDef>(def: Def) =>
// <Augmentation extends ZodRawShape>(
// augmentation: Augmentation
// ): ZodObject<
// extendShape<ReturnType<Def["shape"]>, Augmentation>,
// Def["unknownKeys"],
// Def["catchall"]
// > => {
// return new ZodObject({
// ...def,
// shape: () => ({
// ...def.shape(),
// ...augmentation,
// }),
// }) as any;
// };
extend(t) {
return new Dt({
...this._def,
shape: () => ({
...this._def.shape(),
...t
})
});
}
/**
* Prior to [email protected] there was a bug in the
* inferred type of merged objects. Please
* upgrade if you are experiencing issues.
*/
merge(t) {
return new Dt({
unknownKeys: t._def.unknownKeys,
catchall: t._def.catchall,
shape: () => ({
...this._def.shape(),
...t._def.shape()
}),
typeName: R.ZodObject
});
}
// merge<
// Incoming extends AnyZodObject,
// Augmentation extends Incoming["shape"],
// NewOutput extends {
// [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation
// ? Augmentation[k]["_output"]
// : k extends keyof Output
// ? Output[k]
// : never;
// },
// NewInput extends {
// [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation
// ? Augmentation[k]["_input"]
// : k extends keyof Input
// ? Input[k]
// : never;
// }
// >(
// merging: Incoming
// ): ZodObject<
// extendShape<T, ReturnType<Incoming["_def"]["shape"]>>,
// Incoming["_def"]["unknownKeys"],
// Incoming["_def"]["catchall"],
// NewOutput,
// NewInput
// > {
// const merged: any = new ZodObject({
// unknownKeys: merging._def.unknownKeys,
// catchall: merging._def.catchall,
// shape: () =>
// objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),
// typeName: ZodFirstPartyTypeKind.ZodObject,
// }) as any;
// return merged;
// }
setKey(t, e) {
return this.augment({ [t]: e });
}
// merge<Incoming extends AnyZodObject>(
// merging: Incoming
// ): //ZodObject<T & Incoming["_shape"], UnknownKeys, Catchall> = (merging) => {
// ZodObject<
// extendShape<T, ReturnType<Incoming["_def"]["shape"]>>,
// Incoming["_def"]["unknownKeys"],
// Incoming["_def"]["catchall"]
// > {
// // const mergedShape = objectUtil.mergeShapes(
// // this._def.shape(),
// // merging._def.shape()
// // );
// const merged: any = new ZodObject({
// unknownKeys: merging._def.unknownKeys,
// catchall: merging._def.catchall,
// shape: () =>
// objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),
// typeName: ZodFirstPartyTypeKind.ZodObject,
// }) as any;
// return merged;
// }
catchall(t) {
return new Dt({
...this._def,
catchall: t
});
}
pick(t) {
const e = {};
return ct.objectKeys(t).forEach((s) => {
t[s] && this.shape[s] && (e[s] = this.shape[s]);
}), new Dt({
...this._def,
shape: () => e
});
}
omit(t) {
const e = {};
return ct.objectKeys(this.shape).forEach((s) => {
t[s] || (e[s] = this.shape[s]);
}), new Dt({
...this._def,
shape: () => e
});
}
/**
* @deprecated
*/
deepPartial() {
return wa(this);
}
partial(t) {
const e = {};
return ct.objectKeys(this.shape).forEach((s) => {
const i = this.shape[s];
t && !t[s] ? e[s] = i : e[s] = i.optional();
}), new Dt({
...this._def,
shape: () => e
});
}
required(t) {
const e = {};
return ct.objectKeys(this.shape).forEach((s) => {
if (t && !t[s])
e[s] = this.shape[s];
else {
let r = this.shape[s];
for (; r instanceof js; )
r = r._def.innerType;
e[s] = r;
}
}), new Dt({
...this._def,
shape: () => e
});
}
keyof() {
return Xm(ct.objectKeys(this.shape));
}
}
Dt.create = (n, t) => new Dt({
shape: () => n,
unknownKeys: "strip",
catchall: Yi.create(),
typeName: R.ZodObject,
...J(t)
});
Dt.strictCreate = (n, t) => new Dt({
shape: () => n,
unknownKeys: "strict",
catchall: Yi.create(),
typeName: R.ZodObject,
...J(t)
});
Dt.lazycreate = (n, t) => new Dt({
shape: n,
unknownKeys: "strip",
catchall: Yi.create(),
typeName: R.ZodObject,
...J(t)
});
class Bl extends nt {
_parse(t) {
const { ctx: e } = this._processInputParams(t), s = this._def.options;
function i(r) {
for (const l of r)
if (l.result.status === "valid")
return l.result;
for (const l of r)
if (l.result.status === "dirty")
return e.common.issues.push(...l.ctx.common.issues), l.result;
const a = r.map((l) => new rs(l.ctx.common.issues));
return O(e, {
code: I.invalid_union,
unionErrors: a
}), W;
}
if (e.common.async)
return Promise.all(s.map(async (r) => {
const a = {
...e,
common: {
...e.common,
issues: []
},
parent: null
};
return {
result: await r._parseAsync({
data: e.data,
path: e.path,
parent: a
}),
ctx: a
};
})).then(i);
{
let r;
const a = [];
for (const c of s) {
const h = {
...e,
common: {
...e.common,
issues: []
},
parent: null
}, u = c._parseSync({
data: e.data,
path: e.path,
parent: h
});
if (u.status === "valid")
return u;
u.status === "dirty" && !r && (r = { result: u, ctx: h }), h.common.issues.length && a.push(h.common.issues);
}
if (r)
return e.common.issues.push(...r.ctx.common.issues), r.result;
const l = a.map((c) => new rs(c));
return O(e, {
code: I.invalid_union,
unionErrors: l
}), W;
}
}
get options() {
return this._def.options;
}
}
Bl.create = (n, t) => new Bl({
options: n,
typeName: R.ZodUnion,
...J(t)
});
const pi = (n) => n instanceof zl ? pi(n.schema) : n instanceof Bs ? pi(n.innerType()) : n instanceof Vl ? [n.value] : n instanceof $n ? n.options : n instanceof Gl ? ct.objectValues(n.enum) : n instanceof ql ? pi(n._def.innerType) : n instanceof $l ? [void 0] : n instanceof jl ? [null] : n instanceof js ? [void 0, ...pi(n.unwrap())] : n instanceof jn ? [null, ...pi(n.unwrap())] : n instanceof Ip || n instanceof Xl ? pi(n.unwrap()) : n instanceof Wl ? pi(n._def.innerType) : [];
class gd extends nt {
_parse(t) {
const { ctx: e } = this._processInputParams(t);
if (e.parsedType !== L.object)
return O(e, {
code: I.invalid_type,
expected: L.object,
received: e.parsedType
}), W;
const s = this.discriminator, i = e.data[s], r = this.optionsMap.get(i);
return r ? e.common.async ? r._parseAsync({
data: e.data,
path: e.path,
parent: e
}) : r._parseSync({
data: e.data,
path: e.path,
parent: e
}) : (O(e, {
code: I.invalid_union_discriminator,
options: Array.from(this.optionsMap.keys()),
path: [s]
}), W);
}
get discriminator() {
return this._def.discriminator;
}
get options() {
return this._def.options;
}
get optionsMap() {
return this._def.optionsMap;
}
/**
* The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.
* However, it only allows a union of objects, all of which need to share a discriminator property. This property must
* have a different value for each object in the union.
* @param discriminator the name of the discriminator property
* @param types an array of object schemas
* @param params
*/
static create(t, e, s) {
const i = /* @__PURE__ */ new Map();
for (const r of e) {
const a = pi(r.shape[t]);
if (!a.length)
throw new Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);
for (const l of a) {
if (i.has(l))
throw new Error(`Discriminator property ${String(t)} has duplicate value ${String(l)}`);
i.set(l, r);
}
}
return new gd({
typeName: R.ZodDiscriminatedUnion,
discriminator: t,
options: e,
optionsMap: i,
...J(s)
});
}
}
function sf(n, t) {
const e = _i(n), s = _i(t);
if (n === t)
return { valid: !0, data: n };
if (e === L.object && s === L.object) {
const i = ct.objectKeys(t), r = ct.objectKeys(n).filter((l) => i.indexOf(l) !== -1), a = { ...n, ...t };
for (const l of r) {
const c = sf(n[l], t[l]);
if (!c.valid)
return { valid: !1 };
a[l] = c.data;
}
return { valid: !0, data: a };
} else if (e === L.array && s === L.array) {
if (n.length !== t.length)
return { valid: !1 };
const i = [];
for (let r = 0; r < n.length; r++) {
const a = n[r], l = t[r], c = sf(a, l);
if (!c.valid)
return { valid: !1 };
i.push(c.data);
}
return { valid: !0, data: i };
} else return e === L.date && s === L.date && +n == +t ? { valid: !0, data: n } : { valid: !1 };
}
class Hl extends nt {
_parse(t) {
const { status: e, ctx: s } = this._processInputParams(t), i = (r, a) => {
if (tf(r) || tf(a))
return W;
const l = sf(r.value, a.value);
return l.valid ? ((ef(r) || ef(a)) && e.dirty(), { status: e.value, value: l.data }) : (O(s, {
code: I.invalid_intersection_types
}), W);
};
return s.common.async ? Promise.all([
this._def.left._parseAsync({
data: s.data,
path: s.path,
parent: s
}),
this._def.right._parseAsync({
data: s.data,
path: s.path,
parent: s
})
]).then(([r, a]) => i(r, a)) : i(this._def.left._parseSync({
data: s.data,
path: s.path,
parent: s
}), this._def.right._parseSync({
data: s.data,
path: s.path,
parent: s
}));
}
}
Hl.create = (n, t, e) => new Hl({
left: n,
right: t,
typeName: R.ZodIntersection,
...J(e)
});
class di extends nt {
_parse(t) {
const { status: e, ctx: s } = this._processInputParams(t);
if (s.parsedType !== L.array)
return O(s, {
code: I.invalid_type,
expected: L.array,
received: s.parsedType
}), W;
if (s.data.length < this._def.items.length)
return O(s, {
code: I.too_small,
minimum: this._def.items.length,
inclusive: !0,
exact: !1,
type: "array"
}), W;
!this._def.rest && s.data.length > this._def.items.length && (O(s, {
code: I.too_big,
maximum: this._def.items.length,
inclusive: !0,
exact: !1,
type: "array"
}), e.dirty());
const r = [...s.data].map((a, l) => {
const c = this._def.items[l] || this._def.rest;
return c ? c._parse(new ui(s, a, s.path, l)) : null;
}).filter((a) => !!a);
return s.common.async ? Promise.all(r).then((a) => Ee.mergeArray(e, a)) : Ee.mergeArray(e, r);
}
get items() {
return this._def.items;
}
rest(t) {
return new di({
...this._def,
rest: t
});
}
}
di.create = (n, t) => {
if (!Array.isArray(n))
throw new Error("You must pass an array of schemas to z.tuple([ ... ])");
return new di({
items: n,
typeName: R.ZodTuple,
rest: null,
...J(t)
});
};
class Ul extends nt {
get keySchema() {
return this._def.keyType;
}
get valueSchema() {
return this._def.valueType;
}
_parse(t) {
const { status: e, ctx: s } = this._processInputParams(t);
if (s.parsedType !== L.object)
return O(s, {
code: I.invalid_type,
expected: L.object,
received: s.parsedType
}), W;
const i = [], r = this._def.keyType, a = this._def.valueType;
for (const l in s.data)
i.push({
key: r._parse(new ui(s, l, s.path, l)),
value: a._parse(new ui(s, s.data[l], s.path, l)),
alwaysSet: l in s.data
});
return s.common.async ? Ee.mergeObjectAsync(e, i) : Ee.mergeObjectSync(e, i);
}
get element() {
return this._def.valueType;
}
static create(t, e, s) {
return e instanceof nt ? new Ul({
keyType: t,
valueType: e,
typeName: R.ZodRecord,
...J(s)
}) : new Ul({
keyType: Ds.create(),
valueType: t,
typeName: R.ZodRecord,
...J(e)
});
}
}
class Ru extends nt {
get keySchema() {
return this._def.keyType;
}
get valueSchema() {
return this._def.valueType;
}
_parse(t) {
const { status: e, ctx: s } = this._processInputParams(t);
if (s.parsedType !== L.map)
return O(s, {
code: I.invalid_type,
expected: L.map,
received: s.parsedType
}), W;
const i = this._def.keyType, r = this._def.valueType, a = [...s.data.entries()].map(([l, c], h) => ({
key: i._parse(new ui(s, l, s.path, [h, "key"])),
value: r._parse(new ui(s, c, s.path, [h, "value"]))
}));
if (s.common.async) {
const l = /* @__PURE__ */ new Map();
return Promise.resolve().then(async () => {
for (const c of a) {
const h = await c.key, u = await c.value;
if (h.status === "aborted" || u.status === "aborted")
return W;
(h.status === "dirty" || u.status === "dirty") && e.dirty(), l.set(h.value, u.value);
}
return { status: e.value, value: l };
});
} else {
const l = /* @__PURE__ */ new Map();
for (const c of a) {
const h = c.key, u = c.value;
if (h.status === "aborted" || u.status === "aborted")
return W;
(h.status === "dirty" || u.status === "dirty") && e.dirty(), l.set(h.value, u.value);
}
return { status: e.value, value: l };
}
}
}
Ru.create = (n, t, e) => new Ru({
valueType: t,
keyType: n,
typeName: R.ZodMap,
...J(e)
});
class da extends nt {
_parse(t) {
const { status: e, ctx: s } = this._processInputParams(t);
if (s.parsedType !== L.set)
return O(s, {
code: I.invalid_type,
expected: L.set,
received: s.parsedType
}), W;
const i = this._def;
i.minSize !== null && s.data.size < i.minSize.value && (O(s, {
code: I.too_small,
minimum: i.minSize.value,
type: "set",
inclusive: !0,
exact: !1,
message: i.minSize.message
}), e.dirty()), i.maxSize !== null && s.data.size > i.maxSize.value && (O(s, {
code: I.too_big,
maximum: i.maxSize.value,
type: "set",
inclusive: !0,
exact: !1,
message: i.maxSize.message
}), e.dirty());
const r = this._def.valueType;
function a(c) {
const h = /* @__PURE__ */ new Set();
for (const u of c) {
if (u.status === "aborted")
return W;
u.status === "dirty" && e.dirty(), h.add(u.value);
}
return { status: e.value, value: h };
}
const l = [...s.data.values()].map((c, h) => r._parse(new ui(s, c, s.path, h)));
return s.common.async ? Promise.all(l).then((c) => a(c)) : a(l);
}
min(t, e) {
return new da({
...this._def,
minSize: { value: t, message: B.toString(e) }
});
}
max(t, e) {
return new da({
...this._def,
maxSize: { value: t, message: B.toString(e) }
});
}
size(t, e) {
return this.min(t, e).max(t, e);
}
nonempty(t) {
return this.min(1, t);
}
}
da.create = (n, t) => new da({
valueType: n,
minSize: null,
maxSize: null,
typeName: R.ZodSet,
...J(t)
});
class Na extends nt {
constructor() {
super(...arguments), this.validate = this.implement;
}
_parse(t) {
const { ctx: e } = this._processInputParams(t);
if (e.parsedType !== L.function)
return O(e, {
code: I.invalid_type,
expected: L.function,
received: e.parsedType
}), W;
function s(l, c) {
return Tu({
data: l,
path: e.path,
errorMaps: [
e.common.contextualErrorMap,
e.schemaErrorMap,
xu(),
Wo
].filter((h) => !!h),
issueData: {
code: I.invalid_arguments,
argumentsError: c
}
});
}
function i(l, c) {
return Tu({
data: l,
path: e.path,
errorMaps: [
e.common.contextualErrorMap,
e.schemaErrorMap,
xu(),
Wo
].filter((h) => !!h),
issueData: {
code: I.invalid_return_type,
returnTypeError: c
}
});
}
const r = { errorMap: e.common.contextualErrorMap }, a = e.data;
if (this._def.returns instanceof Zo) {
const l = this;
return Le(async function(...c) {
const h = new rs([]), u = await l._def.args.parseAsync(c, r).catch((g) => {
throw h.addIssue(s(c, g)), h;
}), d = await Reflect.apply(a, this, u);
return await l._def.returns._def.type.parseAsync(d, r).catch((g) => {
throw h.addIssue(i(d, g)), h;
});
});
} else {
const l = this;
return Le(function(...c) {
const h = l._def.args.safeParse(c, r);
if (!h.success)
throw new rs([s(c, h.error)]);
const u = Reflect.apply(a, this, h.data), d = l._def.returns.safeParse(u, r);
if (!d.success)
throw new rs([i(u, d.error)]);
return d.data;
});
}
}
parameters() {
return this._def.args;
}
returnType() {
return this._def.returns;
}
args(...t) {
return new Na({
...this._def,
args: di.create(t).rest(oa.create())
});
}
returns(t) {
return new Na({
...this._def,
returns: t
});
}
implement(t) {
return this.parse(t);
}
strictImplement(t) {
return this.parse(t);
}
static create(t, e, s) {
return new Na({
args: t || di.create([]).rest(oa.create()),
returns: e || oa.create(),
typeName: R.ZodFunction,
...J(s)
});
}
}
class zl extends nt {
get schema() {
return this._def.getter();
}
_parse(t) {
const { ctx: e } = this._processInputParams(t);
return this._def.getter()._parse({ data: e.data, path: e.path, parent: e });
}
}
zl.create = (n, t) => new zl({
getter: n,
typeName: R.ZodLazy,
...J(t)
});
class Vl extends nt {
_parse(t) {
if (t.data !== this._def.value) {
const e = this._getOrReturnCtx(t);
return O(e, {
received: e.data,
code: I.invalid_literal,
expected: this._def.value
}), W;
}
return { status: "valid", value: t.data };
}
get value() {
return this._def.value;
}
}
Vl.create = (n, t) => new Vl({
value: n,
typeName: R.ZodLiteral,
...J(t)
});
function Xm(n, t) {
return new $n({
values: n,
typeName: R.ZodEnum,
...J(t)
});
}
class $n extends nt {
constructor() {
super(...arguments), ll.set(this, void 0);
}
_parse(t) {
if (typeof t.data != "string") {
const e = this._getOrReturnCtx(t), s = this._def.values;
return O(e, {
expected: ct.joinValues(s),
received: e.parsedType,
code: I.invalid_type
}), W;
}
if (Cu(this, ll) || Vm(this, ll, new Set(this._def.values)), !Cu(this, ll).has(t.data)) {
const e = this._getOrReturnCtx(t), s = this._def.values;
return O(e, {
received: e.data,
code: I.invalid_enum_value,
options: s
}), W;
}
return Le(t.data);
}
get options() {
return this._def.values;
}
get enum() {
const t = {};
for (const e of this._def.values)
t[e] = e;
return t;
}
get Values() {
const t = {};
for (const e of this._def.values)
t[e] = e;
return t;
}
get Enum() {
const t = {};
for (const e of this._def.values)
t[e] = e;
return t;
}
extract(t, e = this._def) {
return $n.create(t, {
...this._def,
...e
});
}
exclude(t, e = this._def) {
return $n.create(this.options.filter((s) => !t.includes(s)), {
...this._def,
...e
});
}
}
ll = /* @__PURE__ */ new WeakMap();
$n.create = Xm;
class Gl extends nt {
constructor() {
super(...arguments), cl.set(this, void 0);
}
_parse(t) {
const e = ct.getValidEnumValues(this._def.values), s = this._getOrReturnCtx(t);
if (s.parsedType !== L.string && s.parsedType !== L.number) {
const i = ct.objectValues(e);
return O(s, {
expected: ct.joinValues(i),
received: s.parsedType,
code: I.invalid_type
}), W;
}
if (Cu(this, cl) || Vm(this, cl, new Set(ct.getValidEnumValues(this._def.values))), !Cu(this, cl).has(t.data)) {
const i = ct.objectValues(e);
return O(s, {
received: s.data,
code: I.invalid_enum_value,
options: i
}), W;
}
return Le(t.data);
}
get enum() {
return this._def.values;
}
}
cl = /* @__PURE__ */ new WeakMap();
Gl.create = (n, t) => new Gl({
values: n,
typeName: R.ZodNativeEnum,
...J(t)
});
class Zo extends nt {
unwrap() {
return this._def.type;
}
_parse(t) {
const { ctx: e } = this._processInputParams(t);
if (e.parsedType !== L.promise && e.common.async === !1)
return O(e, {
code: I.invalid_type,
expected: L.promise,
received: e.parsedType
}), W;
const s = e.parsedType === L.promise ? e.data : Promise.resolve(e.data);
return Le(s.then((i) => this._def.type.parseAsync(i, {
path: e.path,
errorMap: e.common.contextualErrorMap
})));
}
}
Zo.create = (n, t) => new Zo({
type: n,
typeName: R.ZodPromise,
...J(t)
});
class Bs extends nt {
innerType() {
return this._def.schema;
}
sourceType() {
return this._def.schema._def.typeName === R.ZodEffects ? this._def.schema.sourceType() : this._def.schema;
}
_parse(t) {
const { status: e, ctx: s } = this._processInputParams(t), i = this._def.effect || null, r = {
addIssue: (a) => {
O(s, a), a.fatal ? e.abort() : e.dirty();
},
get path() {
return s.path;
}
};
if (r.addIssue = r.addIssue.bind(r), i.type === "preprocess") {
const a = i.transform(s.data, r);
if (s.common.async)
return Promise.resolve(a).then(async (l) => {
if (e.value === "aborted")
return W;
const c = await this._def.schema._parseAsync({
data: l,
path: s.path,
parent: s
});
return c.status === "aborted" ? W : c.status === "dirty" || e.value === "dirty" ? Ra(c.value) : c;
});
{
if (e.value === "aborted")
return W;
const l = this._def.schema._parseSync({
data: a,
path: s.path,
parent: s
});
return l.status === "aborted" ? W : l.status === "dirty" || e.value === "dirty" ? Ra(l.value) : l;
}
}
if (i.type === "refinement") {
const a = (l) => {
const c = i.refinement(l, r);
if (s.common.async)
return Promise.resolve(c);
if (c instanceof Promise)
throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");
return l;
};
if (s.common.async === !1) {
const l = this._def.schema._parseSync({
data: s.data,
path: s.path,
parent: s
});
return l.status === "aborted" ? W : (l.status === "dirty" && e.dirty(), a(l.value), { status: e.value, value: l.value });
} else
return this._def.schema._parseAsync({ data: s.data, path: s.path, parent: s }).then((l) => l.status === "aborted" ? W : (l.status === "dirty" && e.dirty(), a(l.value).then(() => ({ status: e.value, value: l.value }))));
}
if (i.type === "transform")
if (s.common.async === !1) {
const a = this._def.schema._parseSync({
data: s.data,
path: s.path,
parent: s
});
if (!ha(a))
return a;
const l = i.transform(a.value, r);
if (l instanceof Promise)
throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");
return { status: e.value, value: l };
} else
return this._def.schema._parseAsync({ data: s.data, path: s.path, parent: s }).then((a) => ha(a) ? Promise.resolve(i.transform(a.value, r)).then((l) => ({ status: e.value, value: l })) : a);
ct.assertNever(i);
}
}
Bs.create = (n, t, e) => new Bs({
schema: n,
typeName: R.ZodEffects,
effect: t,
...J(e)
});
Bs.createWithPreprocess = (n, t, e) => new Bs({
schema: t,
effect: { type: "preprocess", transform: n },
typeName: R.ZodEffects,
...J(e)
});
class js extends nt {
_parse(t) {
return this._getType(t) === L.undefined ? Le(void 0) : this._def.innerType._parse(t);
}
unwrap() {
return this._def.innerType;
}
}
js.create = (n, t) => new js({
innerType: n,
typeName: R.ZodOptional,
...J(t)
});
class jn extends nt {
_parse(t) {
return this._getType(t) === L.null ? Le(null) : this._def.innerType._parse(t);
}
unwrap() {
return this._def.innerType;
}
}
jn.create = (n, t) => new jn({
innerType: n,
typeName: R.ZodNullable,
...J(t)
});
class ql extends nt {
_parse(t) {
const { ctx: e } = this._processInputParams(t);
let s = e.data;
return e.parsedType === L.undefined && (s = this._def.defaultValue()), this._def.innerType._parse({
data: s,
path: e.path,
parent: e
});
}
removeDefault() {
return this._def.innerType;
}
}
ql.create = (n, t) => new ql({
innerType: n,
typeName: R.ZodDefault,
defaultValue: typeof t.default == "function" ? t.default : () => t.default,
...J(t)
});
class Wl extends nt {
_parse(t) {
const { ctx: e } = this._processInputParams(t), s = {
...e,
common: {
...e.common,
issues: []
}
}, i = this._def.innerType._parse({
data: s.data,
path: s.path,
parent: {
...s
}
});
return Dl(i) ? i.then((r) => ({
status: "valid",
value: r.status === "valid" ? r.value : this._def.catchValue({
get error() {
return new rs(s.common.issues);
},
input: s.data
})
})) : {
status: "valid",
value: i.status === "valid" ? i.value : this._def.catchValue({
get error() {
return new rs(s.common.issues);
},
input: s.data
})
};
}
removeCatch() {
return this._def.innerType;
}
}
Wl.create = (n, t) => new Wl({
innerType: n,
typeName: R.ZodCatch,
catchValue: typeof t.catch == "function" ? t.catch : () => t.catch,
...J(t)
});
class Pu extends nt {
_parse(t) {
if (this._getType(t) !== L.nan) {
const s = this._getOrReturnCtx(t);
return O(s, {
code: I.invalid_type,
expected: L.nan,
received: s.parsedType
}), W;
}
return { status: "valid", value: t.data };
}
}
Pu.create = (n) => new Pu({
typeName: R.ZodNaN,
...J(n)
});
const TA = Symbol("zod_brand");
class Ip extends nt {
_parse(t) {
const { ctx: e } = this._processInputParams(t), s = e.data;
return this._def.type._parse({
data: s,
path: e.path,
parent: e
});
}
unwrap() {
return this._def.type;
}
}
class Mh extends nt {
_parse(t) {
const { status: e, ctx: s } = this._processInputParams(t);
if (s.common.async)
return (async () => {
const r = await this._def.in._parseAsync({
data: s.data,
path: s.path,
parent: s
});
return r.status === "aborted" ? W : r.status === "dirty" ? (e.dirty(), Ra(r.value)) : this._def.out._parseAsync({
data: r.value,
path: s.path,
parent: s
});
})();
{
const i = this._def.in._parseSync({
data: s.data,
path: s.path,
parent: s
});
return i.status === "aborted" ? W : i.status === "dirty" ? (e.dirty(), {
status: "dirty",
value: i.value
}) : this._def.out._parseSync({
data: i.value,
path: s.path,
parent: s
});
}
}
static create(t, e) {
return new Mh({
in: t,
out: e,
typeName: R.ZodPipeline
});
}
}
class Xl extends nt {
_parse(t) {
const e = this._def.innerType._parse(t), s = (i) => (ha(i) && (i.value = Object.freeze(i.value)), i);
return Dl(e) ? e.then((i) => s(i)) : s(e);
}
unwrap() {
return this._def.innerType;
}
}
Xl.create = (n, t) => new Xl({
innerType: n,
typeName: R.ZodReadonly,
...J(t)
});
function _g(n, t) {
const e = typeof n == "function" ? n(t) : typeof n == "string" ? { message: n } : n;
return typeof e == "string" ? { message: e } : e;
}
function Zm(n, t = {}, e) {
return n ? Xo.create().superRefine((s, i) => {
var r, a;
const l = n(s);
if (l instanceof Promise)
return l.then((c) => {
var h, u;
if (!c) {
const d = _g(t, s), f = (u = (h = d.fatal) !== null && h !== void 0 ? h : e) !== null && u !== void 0 ? u : !0;
i.addIssue({ code: "custom", ...d, fatal: f });
}
});
if (!l) {
const c = _g(t, s), h = (a = (r = c.fatal) !== null && r !== void 0 ? r : e) !== null && a !== void 0 ? a : !0;
i.addIssue({ code: "custom", ...c, fatal: h });
}
}) : Xo.create();
}
const CA = {
object: Dt.lazycreate
};
var R;
(function(n) {
n.ZodString = "ZodString", n.ZodNumber = "ZodNumber", n.ZodNaN = "ZodNaN", n.ZodBigInt = "ZodBigInt", n.ZodBoolean = "ZodBoolean", n.ZodDate = "ZodDate", n.ZodSymbol = "ZodSymbol", n.ZodUndefined = "ZodUndefined", n.ZodNull = "ZodNull", n.ZodAny = "ZodAny", n.ZodUnknown = "ZodUnknown", n.ZodNever = "ZodNever", n.ZodVoid = "ZodVoid", n.ZodArray = "ZodArray", n.ZodObject = "ZodObject", n.ZodUnion = "ZodUnion", n.ZodDiscriminatedUnion = "ZodDiscriminatedUnion", n.ZodIntersection = "ZodIntersection", n.ZodTuple = "ZodTuple", n.ZodRecord = "ZodRecord", n.ZodMap = "ZodMap", n.ZodSet = "ZodSet", n.ZodFunction = "ZodFunction", n.ZodLazy = "ZodLazy", n.ZodLiteral = "ZodLiteral", n.ZodEnum = "ZodEnum", n.ZodEffects = "ZodEffects", n.ZodNativeEnum = "ZodNativeEnum", n.ZodOptional = "ZodOptional", n.ZodNullable = "ZodNullable", n.ZodDefault = "ZodDefault", n.ZodCatch = "ZodCatch", n.ZodPromise = "ZodPromise", n.ZodBranded = "ZodBranded", n.ZodPipeline = "ZodPipeline", n.ZodReadonly = "ZodReadonly";
})(R || (R = {}));
const kA = (n, t = {
message: `Input not instance of ${n.name}`
}) => Zm((e) => e instanceof n, t), Ym = Ds.create, Km = Dn.create, IA = Pu.create, RA = Fn.create, Jm = Fl.create, PA = ua.create, MA = ku.create, NA = $l.create, OA = jl.create, LA = Xo.create, DA = oa.create, FA = Yi.create, $A = Iu.create, jA = $s.create, BA = Dt.create, HA = Dt.strictCreate, UA = Bl.create, zA = gd.create, VA = Hl.create, GA = di.create, qA = Ul.create, WA = Ru.create, XA = da.create, ZA = Na.create, YA = zl.create, KA = Vl.create, JA = $n.create, QA = Gl.create, tw = Zo.create, Ag = Bs.create, ew = js.create, sw = jn.create, iw = Bs.createWithPreprocess, nw = Mh.create, rw = () => Ym().optional(), aw = () => Km().optional(), ow = () => Jm().optional(), lw = {
string: (n) => Ds.create({ ...n, coerce: !0 }),
number: (n) => Dn.create({ ...n, coerce: !0 }),
boolean: (n) => Fl.create({
...n,
coerce: !0
}),
bigint: (n) => Fn.create({ ...n, coerce: !0 }),
date: (n) => ua.create({ ...n, coerce: !0 })
}, cw = W;
var w = /* @__PURE__ */ Object.freeze({
__proto__: null,
defaultErrorMap: Wo,
setErrorMap: iA,
getErrorMap: xu,
makeIssue: Tu,
EMPTY_PATH: nA,
addIssueToContext: O,
ParseStatus: Ee,
INVALID: W,
DIRTY: Ra,
OK: Le,
isAborted: tf,
isDirty: ef,
isValid: ha,
isAsync: Dl,
get util() {
return ct;
},
get objectUtil() {
return Qd;
},
ZodParsedType: L,
getParsedType: _i,
ZodType: nt,
datetimeRegex: Wm,
ZodString: Ds,
ZodNumber: Dn,
ZodBigInt: Fn,
ZodBoolean: Fl,
ZodDate: ua,
ZodSymbol: ku,
ZodUndefined: $l,
ZodNull: jl,
ZodAny: Xo,
ZodUnknown: oa,
ZodNever: Yi,
ZodVoid: Iu,
ZodArray: $s,
ZodObject: Dt,
ZodUnion: Bl,
ZodDiscriminatedUnion: gd,
ZodIntersection: Hl,
ZodTuple: di,
ZodRecord: Ul,
ZodMap: Ru,
ZodSet: da,
ZodFunction: Na,
ZodLazy: zl,
ZodLiteral: Vl,
ZodEnum: $n,
ZodNativeEnum: Gl,
ZodPromise: Zo,
ZodEffects: Bs,
ZodTransformer: Bs,
ZodOptional: js,
ZodNullable: jn,
ZodDefault: ql,
ZodCatch: Wl,
ZodNaN: Pu,
BRAND: TA,
ZodBranded: Ip,
ZodPipeline: Mh,
ZodReadonly: Xl,
custom: Zm,
Schema: nt,
ZodSchema: nt,
late: CA,
get ZodFirstPartyTypeKind() {
return R;
},
coerce: lw,
any: LA,
array: jA,
bigint: RA,
boolean: Jm,
date: PA,
discriminatedUnion: zA,
effect: Ag,
enum: JA,
function: ZA,
instanceof: kA,
intersection: VA,
lazy: YA,
literal: KA,
map: WA,
nan: IA,
nativeEnum: QA,
never: FA,
null: OA,
nullable: sw,
number: Km,
object: BA,
oboolean: ow,
onumber: aw,
optional: ew,
ostring: rw,
pipeline: nw,
preprocess: iw,
promise: tw,
record: qA,
set: XA,
strictObject: HA,
string: Ym,
symbol: MA,
transformer: Ag,
tuple: GA,
undefined: NA,
union: UA,
unknown: DA,
void: $A,
NEVER: cw,
ZodIssueCode: I,
quotelessJson: sA,
ZodError: rs
});
function hw() {
return {};
}
function uw(n, t) {
var s, i, r;
const e = {
type: "array"
};
return (s = n.type) != null && s._def && ((r = (i = n.type) == null ? void 0 : i._def) == null ? void 0 : r.typeName) !== R.ZodAny && (e.items = ft(n.type._def, {
...t,
currentPath: [...t.currentPath, "items"]
})), n.minLength && _t(e, "minItems", n.minLength.value, n.minLength.message, t), n.maxLength && _t(e, "maxItems", n.maxLength.value, n.maxLength.message, t), n.exactLength && (_t(e, "minItems", n.exactLength.value, n.exactLength.message, t), _t(e, "maxItems", n.exactLength.value, n.exactLength.message, t)), e;
}
function dw(n, t) {
const e = {
type: "integer",
format: "int64"
};
if (!n.checks)
return e;
for (const s of n.checks)
switch (s.kind) {
case "min":
t.target === "jsonSchema7" ? s.inclusive ? _t(e, "minimum", s.value, s.message, t) : _t(e, "exclusiveMinimum", s.value, s.message, t) : (s.inclusive || (e.exclusiveMinimum = !0), _t(e, "minimum", s.value, s.message, t));
break;
case "max":
t.target === "jsonSchema7" ? s.inclusive ? _t(e, "maximum", s.value, s.message, t) : _t(e, "exclusiveMaximum", s.value, s.message, t) : (s.inclusive || (e.exclusiveMaximum = !0), _t(e, "maximum", s.value, s.message, t));
break;
case "multipleOf":
_t(e, "multipleOf", s.value, s.message, t);
break;
}
return e;
}
function fw() {
return {
type: "boolean"
};
}
function Qm(n, t) {
return ft(n.type._def, t);
}
const pw = (n, t) => ft(n.innerType._def, t);
function ty(n, t, e) {
const s = e ?? t.dateStrategy;
if (Array.isArray(s))
return {
anyOf: s.map((i, r) => ty(n, t, i))
};
switch (s) {
case "string":
case "format:date-time":
return {
type: "string",
format: "date-time"
};
case "format:date":
return {
type: "string",
format: "date"
};
case "integer":
return gw(n, t);
}
}
const gw = (n, t) => {
const e = {
type: "integer",
format: "unix-time"
};
if (t.target === "openApi3")
return e;
for (const s of n.checks)
switch (s.kind) {
case "min":
_t(
e,
"minimum",
s.value,
// This is in milliseconds
s.message,
t
);
break;
case "max":
_t(
e,
"maximum",
s.value,
// This is in milliseconds
s.message,
t
);
break;
}
return e;
};
function mw(n, t) {
return {
...ft(n.innerType._def, t),
default: n.defaultValue()
};
}
function yw(n, t) {
return t.effectStrategy === "input" ? ft(n.schema._def, t) : {};
}
function bw(n) {
return {
type: "string",
enum: Array.from(n.values)
};
}
const vw = (n) => "type" in n && n.type === "string" ? !1 : "allOf" in n;
function _w(n, t) {
const e = [
ft(n.left._def, {
...t,
currentPath: [...t.currentPath, "allOf", "0"]
}),
ft(n.right._def, {
...t,
currentPath: [...t.currentPath, "allOf", "1"]
})
].filter((r) => !!r);
let s = t.target === "jsonSchema2019-09" ? { unevaluatedProperties: !1 } : void 0;
const i = [];
return e.forEach((r) => {
if (vw(r))
i.push(...r.allOf), r.unevaluatedProperties === void 0 && (s = void 0);
else {
let a = r;
if ("additionalProperties" in r && r.additionalProperties === !1) {
const { additionalProperties: l, ...c } = r;
a = c;
} else
s = void 0;
i.push(a);
}
}), i.length ? {
allOf: i,
...s
} : void 0;
}
function Aw(n, t) {
const e = typeof n.value;
return e !== "bigint" && e !== "number" && e !== "boolean" && e !== "string" ? {
type: Array.isArray(n.value) ? "array" : "object"
} : t.target === "openApi3" ? {
type: e === "bigint" ? "integer" : e,
enum: [n.value]
} : {
type: e === "bigint" ? "integer" : e,
const: n.value
};
}
let Od;
const _s = {
/**
* `c` was changed to `[cC]` to replicate /i flag
*/
cuid: /^[cC][^\s-]{8,}$/,
cuid2: /^[0-9a-z]+$/,
ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,
/**
* `a-z` was added to replicate /i flag
*/
email: /^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,
/**
* Constructed a valid Unicode RegExp
*
* Lazily instantiate since this type of regex isn't supported
* in all envs (e.g. React Native).
*
* See:
* https://github.com/colinhacks/zod/issues/2433
* Fix in Zod:
* https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b
*/
emoji: () => (Od === void 0 && (Od = RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$", "u")), Od),
/**
* Unused
*/
uuid: /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/,
/**
* Unused
*/
ipv4: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,
ipv4Cidr: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,
/**
* Unused
*/
ipv6: /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,
ipv6Cidr: /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,
base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,
base64url: /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,
nanoid: /^[a-zA-Z0-9_-]{21}$/,
jwt: /^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/
};
function ey(n, t) {
const e = {
type: "string"
};
if (n.checks)
for (const s of n.checks)
switch (s.kind) {
case "min":
_t(e, "minLength", typeof e.minLength == "number" ? Math.max(e.minLength, s.value) : s.value, s.message, t);
break;
case "max":
_t(e, "maxLength", typeof e.maxLength == "number" ? Math.min(e.maxLength, s.value) : s.value, s.message, t);
break;
case "email":
switch (t.emailStrategy) {
case "format:email":
As(e, "email", s.message, t);
break;
case "format:idn-email":
As(e, "idn-email", s.message, t);
break;
case "pattern:zod":
Te(e, _s.email, s.message, t);
break;
}
break;
case "url":
As(e, "uri", s.message, t);
break;
case "uuid":
As(e, "uuid", s.message, t);
break;
case "regex":
Te(e, s.regex, s.message, t);
break;
case "cuid":
Te(e, _s.cuid, s.message, t);
break;
case "cuid2":
Te(e, _s.cuid2, s.message, t);
break;
case "startsWith":
Te(e, RegExp(`^${Ld(s.value, t)}`), s.message, t);
break;
case "endsWith":
Te(e, RegExp(`${Ld(s.value, t)}$`), s.message, t);
break;
case "datetime":
As(e, "date-time", s.message, t);
break;
case "date":
As(e, "date", s.message, t);
break;
case "time":
As(e, "time", s.message, t);
break;
case "duration":
As(e, "duration", s.message, t);
break;
case "length":
_t(e, "minLength", typeof e.minLength == "number" ? Math.max(e.minLength, s.value) : s.value, s.message, t), _t(e, "maxLength", typeof e.maxLength == "number" ? Math.min(e.maxLength, s.value) : s.value, s.message, t);
break;
case "includes": {
Te(e, RegExp(Ld(s.value, t)), s.message, t);
break;
}
case "ip": {
s.version !== "v6" && As(e, "ipv4", s.message, t), s.version !== "v4" && As(e, "ipv6", s.message, t);
break;
}
case "base64url":
Te(e, _s.base64url, s.message, t);
break;
case "jwt":
Te(e, _s.jwt, s.message, t);
break;
case "cidr": {
s.version !== "v6" && Te(e, _s.ipv4Cidr, s.message, t), s.version !== "v4" && Te(e, _s.ipv6Cidr, s.message, t);
break;
}
case "emoji":
Te(e, _s.emoji(), s.message, t);
break;
case "ulid": {
Te(e, _s.ulid, s.message, t);
break;
}
case "base64": {
switch (t.base64Strategy) {
case "format:binary": {
As(e, "binary", s.message, t);
break;
}
case "contentEncoding:base64": {
_t(e, "contentEncoding", "base64", s.message, t);
break;
}
case "pattern:zod": {
Te(e, _s.base64, s.message, t);
break;
}
}
break;
}
case "nanoid":
Te(e, _s.nanoid, s.message, t);
}
return e;
}
function Ld(n, t) {
return t.patternStrategy === "escape" ? Sw(n) : n;
}
const ww = new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");
function Sw(n) {
let t = "";
for (let e = 0; e < n.length; e++)
ww.has(n[e]) || (t += "\\"), t += n[e];
return t;
}
function As(n, t, e, s) {
var i;
n.format || (i = n.anyOf) != null && i.some((r) => r.format) ? (n.anyOf || (n.anyOf = []), n.format && (n.anyOf.push({
format: n.format,
...n.errorMessage && s.errorMessages && {
errorMessage: { format: n.errorMessage.format }
}
}), delete n.format, n.errorMessage && (delete n.errorMessage.format, Object.keys(n.errorMessage).length === 0 && delete n.errorMessage)), n.anyOf.push({
format: t,
...e && s.errorMessages && { errorMessage: { format: e } }
})) : _t(n, "format", t, e, s);
}
function Te(n, t, e, s) {
var i;
n.pattern || (i = n.allOf) != null && i.some((r) => r.pattern) ? (n.allOf || (n.allOf = []), n.pattern && (n.allOf.push({
pattern: n.pattern,
...n.errorMessage && s.errorMessages && {
errorMessage: { pattern: n.errorMessage.pattern }
}
}), delete n.pattern, n.errorMessage && (delete n.errorMessage.pattern, Object.keys(n.errorMessage).length === 0 && delete n.errorMessage)), n.allOf.push({
pattern: wg(t, s),
...e && s.errorMessages && { errorMessage: { pattern: e } }
})) : _t(n, "pattern", wg(t, s), e, s);
}
function wg(n, t) {
var c;
if (!t.applyRegexFlags || !n.flags)
return n.source;
const e = {
i: n.flags.includes("i"),
m: n.flags.includes("m"),
s: n.flags.includes("s")
// `.` matches newlines
}, s = e.i ? n.source.toLowerCase() : n.source;
let i = "", r = !1, a = !1, l = !1;
for (let h = 0; h < s.length; h++) {
if (r) {
i += s[h], r = !1;
continue;
}
if (e.i) {
if (a) {
if (s[h].match(/[a-z]/)) {
l ? (i += s[h], i += `${s[h - 2]}-${s[h]}`.toUpperCase(), l = !1) : s[h + 1] === "-" && ((c = s[h + 2]) != null && c.match(/[a-z]/)) ? (i += s[h], l = !0) : i += `${s[h]}${s[h].toUpperCase()}`;
continue;
}
} else if (s[h].match(/[a-z]/)) {
i += `[${s[h]}${s[h].toUpperCase()}]`;
continue;
}
}
if (e.m) {
if (s[h] === "^") {
i += `(^|(?<=[\r
]))`;
continue;
} else if (s[h] === "$") {
i += `($|(?=[\r
]))`;
continue;
}
}
if (e.s && s[h] === ".") {
i += a ? `${s[h]}\r
` : `[${s[h]}\r
]`;
continue;
}
i += s[h], s[h] === "\\" ? r = !0 : a && s[h] === "]" ? a = !1 : !a && s[h] === "[" && (a = !0);
}
try {
new RegExp(i);
} catch {
return console.warn(`Could not convert regex pattern at ${t.currentPath.join("/")} to a flag-independent form! Falling back to the flag-ignorant source`), n.source;
}
return i;
}
function sy(n, t) {
var s, i, r, a, l, c;
if (t.target === "openAi" && console.warn("Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead."), t.target === "openApi3" && ((s = n.keyType) == null ? void 0 : s._def.typeName) === R.ZodEnum)
return {
type: "object",
required: n.keyType._def.values,
properties: n.keyType._def.values.reduce((h, u) => ({
...h,
[u]: ft(n.valueType._def, {
...t,
currentPath: [...t.currentPath, "properties", u]
}) ?? {}
}), {}),
additionalProperties: !1
};
const e = {
type: "object",
additionalProperties: ft(n.valueType._def, {
...t,
currentPath: [...t.currentPath, "additionalProperties"]
}) ?? {}
};
if (t.target === "openApi3")
return e;
if (((i = n.keyType) == null ? void 0 : i._def.typeName) === R.ZodString && ((r = n.keyType._def.checks) != null && r.length)) {
const { type: h, ...u } = ey(n.keyType._def, t);
return {
...e,
propertyNames: u
};
} else {
if (((a = n.keyType) == null ? void 0 : a._def.typeName) === R.ZodEnum)
return {
...e,
propertyNames: {
enum: n.keyType._def.values
}
};
if (((l = n.keyType) == null ? void 0 : l._def.typeName) === R.ZodBranded && n.keyType._def.type._def.typeName === R.ZodString && ((c = n.keyType._def.type._def.checks) != null && c.length)) {
const { type: h, ...u } = Qm(n.keyType._def, t);
return {
...e,
propertyNames: u
};
}
}
return e;
}
function Ew(n, t) {
if (t.mapStrategy === "record")
return sy(n, t);
const e = ft(n.keyType._def, {
...t,
currentPath: [...t.currentPath, "items", "items", "0"]
}) || {}, s = ft(n.valueType._def, {
...t,
currentPath: [...t.currentPath, "items", "items", "1"]
}) || {};
return {
type: "array",
maxItems: 125,
items: {
type: "array",
items: [e, s],
minItems: 2,
maxItems: 2
}
};
}
function xw(n) {
const t = n.values, s = Object.keys(n.values).filter((r) => typeof t[t[r]] != "number").map((r) => t[r]), i = Array.from(new Set(s.map((r) => typeof r)));
return {
type: i.length === 1 ? i[0] === "string" ? "string" : "number" : ["string", "number"],
enum: s
};
}
function Tw() {
return {
not: {}
};
}
function Cw(n) {
return n.target === "openApi3" ? {
enum: ["null"],
nullable: !0
} : {
type: "null"
};
}
const Mu = {
ZodString: "string",
ZodNumber: "number",
ZodBigInt: "integer",
ZodBoolean: "boolean",
ZodNull: "null"
};
function kw(n, t) {
if (t.target === "openApi3")
return Sg(n, t);
const e = n.options instanceof Map ? Array.from(n.options.values()) : n.options;
if (e.every((s) => s._def.typeName in Mu && (!s._def.checks || !s._def.checks.length))) {
const s = e.reduce((i, r) => {
const a = Mu[r._def.typeName];
return a && !i.includes(a) ? [...i, a] : i;
}, []);
return {
type: s.length > 1 ? s : s[0]
};
} else if (e.every((s) => s._def.typeName === "ZodLiteral" && !s.description)) {
const s = e.reduce((i, r) => {
const a = typeof r._def.value;
switch (a) {
case "string":
case "number":
case "boolean":
return [...i, a];
case "bigint":
return [...i, "integer"];
case "object":
if (r._def.value === null)
return [...i, "null"];
case "symbol":
case "undefined":
case "function":
default:
return i;
}
}, []);
if (s.length === e.length) {
const i = s.filter((r, a, l) => l.indexOf(r) === a);
return {
type: i.length > 1 ? i : i[0],
enum: e.reduce((r, a) => r.includes(a._def.value) ? r : [...r, a._def.value], [])
};
}
} else if (e.every((s) => s._def.typeName === "ZodEnum"))
return {
type: "string",
enum: e.reduce((s, i) => [
...s,
...i._def.values.filter((r) => !s.includes(r))
], [])
};
return Sg(n, t);
}
const Sg = (n, t) => {
const e = (n.options instanceof Map ? Array.from(n.options.values()) : n.options).map((s, i) => ft(s._def, {
...t,
currentPath: [...t.currentPath, "anyOf", `${i}`]
})).filter((s) => !!s && (!t.strictUnions || typeof s == "object" && Object.keys(s).length > 0));
return e.length ? { anyOf: e } : void 0;
};
function Iw(n, t) {
if (["ZodString", "ZodNumber", "ZodBigInt", "ZodBoolean", "ZodNull"].includes(n.innerType._def.typeName) && (!n.innerType._def.checks || !n.innerType._def.checks.length))
return t.target === "openApi3" ? {
type: Mu[n.innerType._def.typeName],
nullable: !0
} : {
type: [
Mu[n.innerType._def.typeName],
"null"
]
};
if (t.target === "openApi3") {
const s = ft(n.innerType._def, {
...t,
currentPath: [...t.currentPath]
});
return s && "$ref" in s ? { allOf: [s], nullable: !0 } : s && { ...s, nullable: !0 };
}
const e = ft(n.innerType._def, {
...t,
currentPath: [...t.currentPath, "anyOf", "0"]
});
return e && { anyOf: [e, { type: "null" }] };
}
function Rw(n, t) {
const e = {
type: "number"
};
if (!n.checks)
return e;
for (const s of n.checks)
switch (s.kind) {
case "int":
e.type = "integer", Um(e, "type", s.message, t);
break;
case "min":
t.target === "jsonSchema7" ? s.inclusive ? _t(e, "minimum", s.value, s.message, t) : _t(e, "exclusiveMinimum", s.value, s.message, t) : (s.inclusive || (e.exclusiveMinimum = !0), _t(e, "minimum", s.value, s.message, t));
break;
case "max":
t.target === "jsonSchema7" ? s.inclusive ? _t(e, "maximum", s.value, s.message, t) : _t(e, "exclusiveMaximum", s.value, s.message, t) : (s.inclusive || (e.exclusiveMaximum = !0), _t(e, "maximum", s.value, s.message, t));
break;
case "multipleOf":
_t(e, "multipleOf", s.value, s.message, t);
break;
}
return e;
}
function Pw(n, t) {
return t.removeAdditionalStrategy === "strict" ? n.catchall._def.typeName === "ZodNever" ? n.unknownKeys !== "strict" : ft(n.catchall._def, {
...t,
currentPath: [...t.currentPath, "additionalProperties"]
}) ?? !0 : n.catchall._def.typeName === "ZodNever" ? n.unknownKeys === "passthrough" : ft(n.catchall._def, {
...t,
currentPath: [...t.currentPath, "additionalProperties"]
}) ?? !0;
}
function Mw(n, t) {
const e = t.target === "openAi", s = {
type: "object",
...Object.entries(n.shape()).reduce((i, [r, a]) => {
if (a === void 0 || a._def === void 0)
return i;
let l = a.isOptional();
l && e && (a instanceof js && (a = a._def.innerType), a.isNullable() || (a = a.nullable()), l = !1);
const c = ft(a._def, {
...t,
currentPath: [...t.currentPath, "properties", r],
propertyPath: [...t.currentPath, "properties", r]
});
return c === void 0 ? i : {
properties: { ...i.properties, [r]: c },
required: l ? i.required : [...i.required, r]
};
}, { properties: {}, required: [] }),
additionalProperties: Pw(n, t)
};
return s.required.length || delete s.required, s;
}
const Nw = (n, t) => {
var s;
if (t.currentPath.toString() === ((s = t.propertyPath) == null ? void 0 : s.toString()))
return ft(n.innerType._def, t);
const e = ft(n.innerType._def, {
...t,
currentPath: [...t.currentPath, "anyOf", "1"]
});
return e ? {
anyOf: [
{
not: {}
},
e
]
} : {};
}, Ow = (n, t) => {
if (t.pipeStrategy === "input")
return ft(n.in._def, t);
if (t.pipeStrategy === "output")
return ft(n.out._def, t);
const e = ft(n.in._def, {
...t,
currentPath: [...t.currentPath, "allOf", "0"]
}), s = ft(n.out._def, {
...t,
currentPath: [...t.currentPath, "allOf", e ? "1" : "0"]
});
return {
allOf: [e, s].filter((i) => i !== void 0)
};
};
function Lw(n, t) {
return ft(n.type._def, t);
}
function Dw(n, t) {
const s = {
type: "array",
uniqueItems: !0,
items: ft(n.valueType._def, {
...t,
currentPath: [...t.currentPath, "items"]
})
};
return n.minSize && _t(s, "minItems", n.minSize.value, n.minSize.message, t), n.maxSize && _t(s, "maxItems", n.maxSize.value, n.maxSize.message, t), s;
}
function Fw(n, t) {
return n.rest ? {
type: "array",
minItems: n.items.length,
items: n.items.map((e, s) => ft(e._def, {
...t,
currentPath: [...t.currentPath, "items", `${s}`]
})).reduce((e, s) => s === void 0 ? e : [...e, s], []),
additionalItems: ft(n.rest._def, {
...t,
currentPath: [...t.currentPath, "additionalItems"]
})
} : {
type: "array",
minItems: n.items.length,
maxItems: n.items.length,
items: n.items.map((e, s) => ft(e._def, {
...t,
currentPath: [...t.currentPath, "items", `${s}`]
})).reduce((e, s) => s === void 0 ? e : [...e, s], [])
};
}
function $w() {
return {
not: {}
};
}
function jw() {
return {};
}
const Bw = (n, t) => ft(n.innerType._def, t), Hw = (n, t, e) => {
switch (t) {
case R.ZodString:
return ey(n, e);
case R.ZodNumber:
return Rw(n, e);
case R.ZodObject:
return Mw(n, e);
case R.ZodBigInt:
return dw(n, e);
case R.ZodBoolean:
return fw();
case R.ZodDate:
return ty(n, e);
case R.ZodUndefined:
return $w();
case R.ZodNull:
return Cw(e);
case R.ZodArray:
return uw(n, e);
case R.ZodUnion:
case R.ZodDiscriminatedUnion:
return kw(n, e);
case R.ZodIntersection:
return _w(n, e);
case R.ZodTuple:
return Fw(n, e);
case R.ZodRecord:
return sy(n, e);
case R.ZodLiteral:
return Aw(n, e);
case R.ZodEnum:
return bw(n);
case R.ZodNativeEnum:
return xw(n);
case R.ZodNullable:
return Iw(n, e);
case R.ZodOptional:
return Nw(n, e);
case R.ZodMap:
return Ew(n, e);
case R.ZodSet:
return Dw(n, e);
case R.ZodLazy:
return () => n.getter()._def;
case R.ZodPromise:
return Lw(n, e);
case R.ZodNaN:
case R.ZodNever:
return Tw();
case R.ZodEffects:
return yw(n, e);
case R.ZodAny:
return hw();
case R.ZodUnknown:
return jw();
case R.ZodDefault:
return mw(n, e);
case R.ZodBranded:
return Qm(n, e);
case R.ZodReadonly:
return Bw(n, e);
case R.ZodCatch:
return pw(n, e);
case R.ZodPipeline:
return Ow(n, e);
case R.ZodFunction:
case R.ZodVoid:
case R.ZodSymbol:
return;
default:
return /* @__PURE__ */ ((s) => {
})();
}
};
function ft(n, t, e = !1) {
var l;
const s = t.seen.get(n);
if (t.override) {
const c = (l = t.override) == null ? void 0 : l.call(t, n, t, s, e);
if (c !== Q_)
return c;
}
if (s && !e) {
const c = Uw(s, t);
if (c !== void 0)
return c;
}
const i = { def: n, path: t.currentPath, jsonSchema: void 0 };
t.seen.set(n, i);
const r = Hw(n, n.typeName, t), a = typeof r == "function" ? ft(r(), t) : r;
if (a && Vw(n, t, a), t.postProcess) {
const c = t.postProcess(a, n, t);
return i.jsonSchema = a, c;
}
return i.jsonSchema = a, a;
}
const Uw = (n, t) => {
switch (t.$refStrategy) {
case "root":
return { $ref: n.path.join("/") };
case "relative":
return { $ref: zw(t.currentPath, n.path) };
case "none":
case "seen":
return n.path.length < t.currentPath.length && n.path.every((e, s) => t.currentPath[s] === e) ? (console.warn(`Recursive reference detected at ${t.currentPath.join("/")}! Defaulting to any`), {}) : t.$refStrategy === "seen" ? {} : void 0;
}
}, zw = (n, t) => {
let e = 0;
for (; e < n.length && e < t.length && n[e] === t[e]; e++)
;
return [(n.length - e).toString(), ...t.slice(e)].join("/");
}, Vw = (n, t, e) => (n.description && (e.description = n.description, t.markdownDescription && (e.markdownDescription = n.description)), e), Gw = (n, t) => {
const e = eA(t), s = typeof t == "object" && t.definitions ? Object.entries(t.definitions).reduce((c, [h, u]) => ({
...c,
[h]: ft(u._def, {
...e,
currentPath: [...e.basePath, e.definitionPath, h]
}, !0) ?? {}
}), {}) : void 0, i = typeof t == "string" ? t : (t == null ? void 0 : t.nameStrategy) === "title" || t == null ? void 0 : t.name, r = ft(n._def, i === void 0 ? e : {
...e,
currentPath: [...e.basePath, e.definitionPath, i]
}, !1) ?? {}, a = typeof t == "object" && t.name !== void 0 && t.nameStrategy === "title" ? t.name : void 0;
a !== void 0 && (r.title = a);
const l = i === void 0 ? s ? {
...r,
[e.definitionPath]: s
} : r : {
$ref: [
...e.$refStrategy === "relative" ? [] : e.basePath,
e.definitionPath,
i
].join("/"),
[e.definitionPath]: {
...s,
[i]: r
}
};
return e.target === "jsonSchema7" ? l.$schema = "http://json-schema.org/draft-07/schema#" : (e.target === "jsonSchema2019-09" || e.target === "openAi") && (l.$schema = "https://json-schema.org/draft/2019-09/schema#"), e.target === "openAi" && ("anyOf" in l || "oneOf" in l || "allOf" in l || "type" in l && Array.isArray(l.type)) && console.warn("Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property."), l;
};
var Zl = {
code: "0",
name: "text",
parse: (n) => {
if (typeof n != "string")
throw new Error('"text" parts expect a string value.');
return { type: "text", value: n };
}
}, Yl = {
code: "3",
name: "error",
parse: (n) => {
if (typeof n != "string")
throw new Error('"error" parts expect a string value.');
return { type: "error", value: n };
}
}, Kl = {
code: "4",
name: "assistant_message",
parse: (n) => {
if (n == null || typeof n != "object" || !("id" in n) || !("role" in n) || !("content" in n) || typeof n.id != "string" || typeof n.role != "string" || n.role !== "assistant" || !Array.isArray(n.content) || !n.content.every(
(t) => t != null && typeof t == "object" && "type" in t && t.type === "text" && "text" in t && t.text != null && typeof t.text == "object" && "value" in t.text && typeof t.text.value == "string"
))
throw new Error(
'"assistant_message" parts expect an object with an "id", "role", and "content" property.'
);
return {
type: "assistant_message",
value: n
};
}
}, Jl = {
code: "5",
name: "assistant_control_data",
parse: (n) => {
if (n == null || typeof n != "object" || !("threadId" in n) || !("messageId" in n) || typeof n.threadId != "string" || typeof n.messageId != "string")
throw new Error(
'"assistant_control_data" parts expect an object with a "threadId" and "messageId" property.'
);
return {
type: "assistant_control_data",
value: {
threadId: n.threadId,
messageId: n.messageId
}
};
}
}, Ql = {
code: "6",
name: "data_message",
parse: (n) => {
if (n == null || typeof n != "object" || !("role" in n) || !("data" in n) || typeof n.role != "string" || n.role !== "data")
throw new Error(
'"data_message" parts expect an object with a "role" and "data" property.'
);
return {
type: "data_message",
value: n
};
}
}, qw = [
Zl,
Yl,
Kl,
Jl,
Ql
];
Zl.code + "", Yl.code + "", Kl.code + "", Jl.code + "", Ql.code + "";
Zl.name + "", Zl.code, Yl.name + "", Yl.code, Kl.name + "", Kl.code, Jl.name + "", Jl.code, Ql.name + "", Ql.code;
qw.map((n) => n.code);
function Ww(n) {
const t = ["ROOT"];
let e = -1, s = null;
function i(c, h, u) {
switch (c) {
case '"': {
e = h, t.pop(), t.push(u), t.push("INSIDE_STRING");
break;
}
case "f":
case "t":
case "n": {
e = h, s = h, t.pop(), t.push(u), t.push("INSIDE_LITERAL");
break;
}
case "-": {
t.pop(), t.push(u), t.push("INSIDE_NUMBER");
break;
}
case "0":
case "1":
case "2":
case "3":
case "4":
case "5":
case "6":
case "7":
case "8":
case "9": {
e = h, t.pop(), t.push(u), t.push("INSIDE_NUMBER");
break;
}
case "{": {
e = h, t.pop(), t.push(u), t.push("INSIDE_OBJECT_START");
break;
}
case "[": {
e = h, t.pop(), t.push(u), t.push("INSIDE_ARRAY_START");
break;
}
}
}
function r(c, h) {
switch (c) {
case ",": {
t.pop(), t.push("INSIDE_OBJECT_AFTER_COMMA");
break;
}
case "}": {
e = h, t.pop();
break;
}
}
}
function a(c, h) {
switch (c) {
case ",": {
t.pop(), t.push("INSIDE_ARRAY_AFTER_COMMA");
break;
}
case "]": {
e = h, t.pop();
break;
}
}
}
for (let c = 0; c < n.length; c++) {
const h = n[c];
switch (t[t.length - 1]) {
case "ROOT":
i(h, c, "FINISH");
break;
case "INSIDE_OBJECT_START": {
switch (h) {
case '"': {
t.pop(), t.push("INSIDE_OBJECT_KEY");
break;
}
case "}": {
e = c, t.pop();
break;
}
}
break;
}
case "INSIDE_OBJECT_AFTER_COMMA": {
switch (h) {
case '"': {
t.pop(), t.push("INSIDE_OBJECT_KEY");
break;
}
}
break;
}
case "INSIDE_OBJECT_KEY": {
switch (h) {
case '"': {
t.pop(), t.push("INSIDE_OBJECT_AFTER_KEY");
break;
}
}
break;
}
case "INSIDE_OBJECT_AFTER_KEY": {
switch (h) {
case ":": {
t.pop(), t.push("INSIDE_OBJECT_BEFORE_VALUE");
break;
}
}
break;
}
case "INSIDE_OBJECT_BEFORE_VALUE": {
i(h, c, "INSIDE_OBJECT_AFTER_VALUE");
break;
}
case "INSIDE_OBJECT_AFTER_VALUE": {
r(h, c);
break;
}
case "INSIDE_STRING": {
switch (h) {
case '"': {
t.pop(), e = c;
break;
}
case "\\": {
t.push("INSIDE_STRING_ESCAPE");
break;
}
default:
e = c;
}
break;
}
case "INSIDE_ARRAY_START": {
switch (h) {
case "]": {
e = c, t.pop();
break;
}
default: {
e = c, i(h, c, "INSIDE_ARRAY_AFTER_VALUE");
break;
}
}
break;
}
case "INSIDE_ARRAY_AFTER_VALUE": {
switch (h) {
case ",": {
t.pop(), t.push("INSIDE_ARRAY_AFTER_COMMA");
break;
}
case "]": {
e = c, t.pop();
break;
}
default: {
e = c;
break;
}
}
break;
}
case "INSIDE_ARRAY_AFTER_COMMA": {
i(h, c, "INSIDE_ARRAY_AFTER_VALUE");
break;
}
case "INSIDE_STRING_ESCAPE": {
t.pop(), e = c;
break;
}
case "INSIDE_NUMBER": {
switch (h) {
case "0":
case "1":
case "2":
case "3":
case "4":
case "5":
case "6":
case "7":
case "8":
case "9": {
e = c;
break;
}
case "e":
case "E":
case "-":
case ".":
break;
case ",": {
t.pop(), t[t.length - 1] === "INSIDE_ARRAY_AFTER_VALUE" && a(h, c), t[t.length - 1] === "INSIDE_OBJECT_AFTER_VALUE" && r(h, c);
break;
}
case "}": {
t.pop(), t[t.length - 1] === "INSIDE_OBJECT_AFTER_VALUE" && r(h, c);
break;
}
case "]": {
t.pop(), t[t.length - 1] === "INSIDE_ARRAY_AFTER_VALUE" && a(h, c);
break;
}
default: {
t.pop();
break;
}
}
break;
}
case "INSIDE_LITERAL": {
const d = n.substring(s, c + 1);
!"false".startsWith(d) && !"true".startsWith(d) && !"null".startsWith(d) ? (t.pop(), t[t.length - 1] === "INSIDE_OBJECT_AFTER_VALUE" ? r(h, c) : t[t.length - 1] === "INSIDE_ARRAY_AFTER_VALUE" && a(h, c)) : e = c;
break;
}
}
}
let l = n.slice(0, e + 1);
for (let c = t.length - 1; c >= 0; c--)
switch (t[c]) {
case "INSIDE_STRING": {
l += '"';
break;
}
case "INSIDE_OBJECT_KEY":
case "INSIDE_OBJECT_AFTER_KEY":
case "INSIDE_OBJECT_AFTER_COMMA":
case "INSIDE_OBJECT_START":
case "INSIDE_OBJECT_BEFORE_VALUE":
case "INSIDE_OBJECT_AFTER_VALUE": {
l += "}";
break;
}
case "INSIDE_ARRAY_START":
case "INSIDE_ARRAY_AFTER_COMMA":
case "INSIDE_ARRAY_AFTER_VALUE": {
l += "]";
break;
}
case "INSIDE_LITERAL": {
const u = n.substring(s, n.length);
"true".startsWith(u) ? l += "true".slice(u.length) : "false".startsWith(u) ? l += "false".slice(u.length) : "null".startsWith(u) && (l += "null".slice(u.length));
}
}
return l;
}
function Xw(n) {
if (n === void 0)
return { value: void 0, state: "undefined-input" };
let t = Go({ text: n });
return t.success ? { value: t.value, state: "successful-parse" } : (t = Go({ text: Ww(n) }), t.success ? { value: t.value, state: "repaired-parse" } : { value: void 0, state: "failed-parse" });
}
var Zw = {
code: "0",
name: "text",
parse: (n) => {
if (typeof n != "string")
throw new Error('"text" parts expect a string value.');
return { type: "text", value: n };
}
}, Yw = {
code: "2",
name: "data",
parse: (n) => {
if (!Array.isArray(n))
throw new Error('"data" parts expect an array value.');
return { type: "data", value: n };
}
}, Kw = {
code: "3",
name: "error",
parse: (n) => {
if (typeof n != "string")
throw new Error('"error" parts expect a string value.');
return { type: "error", value: n };
}
}, Jw = {
code: "8",
name: "message_annotations",
parse: (n) => {
if (!Array.isArray(n))
throw new Error('"message_annotations" parts expect an array value.');
return { type: "message_annotations", value: n };
}
}, Qw = {
code: "9",
name: "tool_call",
parse: (n) => {
if (n == null || typeof n != "object" || !("toolCallId" in n) || typeof n.toolCallId != "string" || !("toolName" in n) || typeof n.toolName != "string" || !("args" in n) || typeof n.args != "object")
throw new Error(
'"tool_call" parts expect an object with a "toolCallId", "toolName", and "args" property.'
);
return {
type: "tool_call",
value: n
};
}
}, t0 = {
code: "a",
name: "tool_result",
parse: (n) => {
if (n == null || typeof n != "object" || !("toolCallId" in n) || typeof n.toolCallId != "string" || !("result" in n))
throw new Error(
'"tool_result" parts expect an object with a "toolCallId" and a "result" property.'
);
return {
type: "tool_result",
value: n
};
}
}, e0 = {
code: "b",
name: "tool_call_streaming_start",
parse: (n) => {
if (n == null || typeof n != "object" || !("toolCallId" in n) || typeof n.toolCallId != "string" || !("toolName" in n) || typeof n.toolName != "string")
throw new Error(
'"tool_call_streaming_start" parts expect an object with a "toolCallId" and "toolName" property.'
);
return {
type: "tool_call_streaming_start",
value: n
};
}
}, s0 = {
code: "c",
name: "tool_call_delta",
parse: (n) => {
if (n == null || typeof n != "object" || !("toolCallId" in n) || typeof n.toolCallId != "string" || !("argsTextDelta" in n) || typeof n.argsTextDelta != "string")
throw new Error(
'"tool_call_delta" parts expect an object with a "toolCallId" and "argsTextDelta" property.'
);
return {
type: "tool_call_delta",
value: n
};
}
}, i0 = {
code: "d",
name: "finish_message",
parse: (n) => {
if (n == null || typeof n != "object" || !("finishReason" in n) || typeof n.finishReason != "string")
throw new Error(
'"finish_message" parts expect an object with a "finishReason" property.'
);
const t = {
finishReason: n.finishReason
};
return "usage" in n && n.usage != null && typeof n.usage == "object" && "promptTokens" in n.usage && "completionTokens" in n.usage && (t.usage = {
promptTokens: typeof n.usage.promptTokens == "number" ? n.usage.promptTokens : Number.NaN,
completionTokens: typeof n.usage.completionTokens == "number" ? n.usage.completionTokens : Number.NaN
}), {
type: "finish_message",
value: t
};
}
}, n0 = {
code: "e",
name: "finish_step",
parse: (n) => {
if (n == null || typeof n != "object" || !("finishReason" in n) || typeof n.finishReason != "string")
throw new Error(
'"finish_step" parts expect an object with a "finishReason" property.'
);
const t = {
finishReason: n.finishReason,
isContinued: !1
};
return "usage" in n && n.usage != null && typeof n.usage == "object" && "promptTokens" in n.usage && "completionTokens" in n.usage && (t.usage = {
promptTokens: typeof n.usage.promptTokens == "number" ? n.usage.promptTokens : Number.NaN,
completionTokens: typeof n.usage.completionTokens == "number" ? n.usage.completionTokens : Number.NaN
}), "isContinued" in n && typeof n.isContinued == "boolean" && (t.isContinued = n.isContinued), {
type: "finish_step",
value: t
};
}
}, r0 = {
code: "f",
name: "start_step",
parse: (n) => {
if (n == null || typeof n != "object" || !("messageId" in n) || typeof n.messageId != "string")
throw new Error(
'"start_step" parts expect an object with an "id" property.'
);
return {
type: "start_step",
value: {
messageId: n.messageId
}
};
}
}, a0 = {
code: "g",
name: "reasoning",
parse: (n) => {
if (typeof n != "string")
throw new Error('"reasoning" parts expect a string value.');
return { type: "reasoning", value: n };
}
}, o0 = {
code: "h",
name: "source",
parse: (n) => {
if (n == null || typeof n != "object")
throw new Error('"source" parts expect a Source object.');
return {
type: "source",
value: n
};
}
}, l0 = {
code: "i",
name: "redacted_reasoning",
parse: (n) => {
if (n == null || typeof n != "object" || !("data" in n) || typeof n.data != "string")
throw new Error(
'"redacted_reasoning" parts expect an object with a "data" property.'
);
return { type: "redacted_reasoning", value: { data: n.data } };
}
}, c0 = {
code: "j",
name: "reasoning_signature",
parse: (n) => {
if (n == null || typeof n != "object" || !("signature" in n) || typeof n.signature != "string")
throw new Error(
'"reasoning_signature" parts expect an object with a "signature" property.'
);
return {
type: "reasoning_signature",
value: { signature: n.signature }
};
}
}, md = [
Zw,
Yw,
Kw,
Jw,
Qw,
t0,
e0,
s0,
i0,
n0,
r0,
a0,
o0,
l0,
c0
];
Object.fromEntries(
md.map((n) => [n.code, n])
);
Object.fromEntries(
md.map((n) => [n.name, n.code])
);
md.map((n) => n.code);
function iy(n, t) {
const e = md.find((s) => s.name === n);
if (!e)
throw new Error(`Invalid stream part type: ${n}`);
return `${e.code}:${JSON.stringify(t)}
`;
}
function h0(n, t) {
var e;
const s = (e = void 0) != null ? e : !1;
return u0(
Gw(n, {
$refStrategy: s ? "root" : "none",
target: "jsonSchema7"
// note: openai mode breaks various gemini conversions
}),
{
validate: (i) => {
const r = n.safeParse(i);
return r.success ? { success: !0, value: r.data } : { success: !1, error: r.error };
}
}
);
}
var nf = Symbol.for("vercel.ai.schema");
function u0(n, {
validate: t
} = {}) {
return {
[nf]: !0,
_type: void 0,
// should never be used directly
[Eu]: !0,
jsonSchema: n,
validate: t
};
}
function d0(n) {
return typeof n == "object" && n !== null && nf in n && n[nf] === !0 && "jsonSchema" in n && "validate" in n;
}
function rf(n) {
return d0(n) ? n : h0(n);
}
var f0 = typeof globalThis == "object" ? globalThis : typeof self == "object" ? self : typeof window == "object" ? window : typeof global == "object" ? global : {}, sr = "1.9.0", Eg = /^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;
function p0(n) {
var t = /* @__PURE__ */ new Set([n]), e = /* @__PURE__ */ new Set(), s = n.match(Eg);
if (!s)
return function() {
return !1;
};
var i = {
major: +s[1],
minor: +s[2],
patch: +s[3],
prerelease: s[4]
};
if (i.prerelease != null)
return function(c) {
return c === n;
};
function r(l) {
return e.add(l), !1;
}
function a(l) {
return t.add(l), !0;
}
return function(c) {
if (t.has(c))
return !0;
if (e.has(c))
return !1;
var h = c.match(Eg);
if (!h)
return r(c);
var u = {
major: +h[1],
minor: +h[2],
patch: +h[3],
prerelease: h[4]
};
return u.prerelease != null || i.major !== u.major ? r(c) : i.major === 0 ? i.minor === u.minor && i.patch <= u.patch ? a(c) : r(c) : i.minor <= u.minor ? a(c) : r(c);
};
}
var g0 = p0(sr), m0 = sr.split(".")[0], tc = Symbol.for("opentelemetry.js.api." + m0), ec = f0;
function Rp(n, t, e, s) {
var i;
s === void 0 && (s = !1);
var r = ec[tc] = (i = ec[tc]) !== null && i !== void 0 ? i : {
version: sr
};
if (!s && r[n]) {
var a = new Error("@opentelemetry/api: Attempted duplicate registration of API: " + n);
return e.error(a.stack || a.message), !1;
}
if (r.version !== sr) {
var a = new Error("@opentelemetry/api: Registration of version v" + r.version + " for " + n + " does not match previously registered API v" + sr);
return e.error(a.stack || a.message), !1;
}
return r[n] = t, e.debug("@opentelemetry/api: Registered a global for " + n + " v" + sr + "."), !0;
}
function sc(n) {
var t, e, s = (t = ec[tc]) === null || t === void 0 ? void 0 : t.version;
if (!(!s || !g0(s)))
return (e = ec[tc]) === null || e === void 0 ? void 0 : e[n];
}
function Pp(n, t) {
t.debug("@opentelemetry/api: Unregistering a global for " + n + " v" + sr + ".");
var e = ec[tc];
e && delete e[n];
}
var y0 = function(n, t) {
var e = typeof Symbol == "function" && n[Symbol.iterator];
if (!e) return n;
var s = e.call(n), i, r = [], a;
try {
for (; (t === void 0 || t-- > 0) && !(i = s.next()).done; ) r.push(i.value);
} catch (l) {
a = { error: l };
} finally {
try {
i && !i.done && (e = s.return) && e.call(s);
} finally {
if (a) throw a.error;
}
}
return r;
}, b0 = function(n, t, e) {
if (e || arguments.length === 2) for (var s = 0, i = t.length, r; s < i; s++)
(r || !(s in t)) && (r || (r = Array.prototype.slice.call(t, 0, s)), r[s] = t[s]);
return n.concat(r || Array.prototype.slice.call(t));
}, v0 = (
/** @class */
function() {
function n(t) {
this._namespace = t.namespace || "DiagComponentLogger";
}
return n.prototype.debug = function() {
for (var t = [], e = 0; e < arguments.length; e++)
t[e] = arguments[e];
return il("debug", this._namespace, t);
}, n.prototype.error = function() {
for (var t = [], e = 0; e < arguments.length; e++)
t[e] = arguments[e];
return il("error", this._namespace, t);
}, n.prototype.info = function() {
for (var t = [], e = 0; e < arguments.length; e++)
t[e] = arguments[e];
return il("info", this._namespace, t);
}, n.prototype.warn = function() {
for (var t = [], e = 0; e < arguments.length; e++)
t[e] = arguments[e];
return il("warn", this._namespace, t);
}, n.prototype.verbose = function() {
for (var t = [], e = 0; e < arguments.length; e++)
t[e] = arguments[e];
return il("verbose", this._namespace, t);
}, n;
}()
);
function il(n, t, e) {
var s = sc("diag");
if (s)
return e.unshift(t), s[n].apply(s, b0([], y0(e), !1));
}
var es;
(function(n) {
n[n.NONE = 0] = "NONE", n[n.ERROR = 30] = "ERROR", n[n.WARN = 50] = "WARN", n[n.INFO = 60] = "INFO", n[n.DEBUG = 70] = "DEBUG", n[n.VERBOSE = 80] = "VERBOSE", n[n.ALL = 9999] = "ALL";
})(es || (es = {}));
function _0(n, t) {
n < es.NONE ? n = es.NONE : n > es.ALL && (n = es.ALL), t = t || {};
function e(s, i) {
var r = t[s];
return typeof r == "function" && n >= i ? r.bind(t) : function() {
};
}
return {
error: e("error", es.ERROR),
warn: e("warn", es.WARN),
info: e("info", es.INFO),
debug: e("debug", es.DEBUG),
verbose: e("verbose", es.VERBOSE)
};
}
var A0 = function(n, t) {
var e = typeof Symbol == "function" && n[Symbol.iterator];
if (!e) return n;
var s = e.call(n), i, r = [], a;
try {
for (; (t === void 0 || t-- > 0) && !(i = s.next()).done; ) r.push(i.value);
} catch (l) {
a = { error: l };
} finally {
try {
i && !i.done && (e = s.return) && e.call(s);
} finally {
if (a) throw a.error;
}
}
return r;
}, w0 = function(n, t, e) {
if (e || arguments.length === 2) for (var s = 0, i = t.length, r; s < i; s++)
(r || !(s in t)) && (r || (r = Array.prototype.slice.call(t, 0, s)), r[s] = t[s]);
return n.concat(r || Array.prototype.slice.call(t));
}, S0 = "diag", Nu = (
/** @class */
function() {
function n() {
function t(i) {
return function() {
for (var r = [], a = 0; a < arguments.length; a++)
r[a] = arguments[a];
var l = sc("diag");
if (l)
return l[i].apply(l, w0([], A0(r), !1));
};
}
var e = this, s = function(i, r) {
var a, l, c;
if (r === void 0 && (r = { logLevel: es.INFO }), i === e) {
var h = new Error("Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation");
return e.error((a = h.stack) !== null && a !== void 0 ? a : h.message), !1;
}
typeof r == "number" && (r = {
logLevel: r
});
var u = sc("diag"), d = _0((l = r.logLevel) !== null && l !== void 0 ? l : es.INFO, i);
if (u && !r.suppressOverrideMessage) {
var f = (c = new Error().stack) !== null && c !== void 0 ? c : "<failed to generate stacktrace>";
u.warn("Current logger will be overwritten from " + f), d.warn("Current logger will overwrite one already registered from " + f);
}
return Rp("diag", d, e, !0);
};
e.setLogger = s, e.disable = function() {
Pp(S0, e);
}, e.createComponentLogger = function(i) {
return new v0(i);
}, e.verbose = t("verbose"), e.debug = t("debug"), e.info = t("info"), e.warn = t("warn"), e.error = t("error");
}
return n.instance = function() {
return this._instance || (this._instance = new n()), this._instance;
}, n;
}()
);
function E0(n) {
return Symbol.for(n);
}
var x0 = (
/** @class */
/* @__PURE__ */ function() {
function n(t) {
var e = this;
e._currentContext = t ? new Map(t) : /* @__PURE__ */ new Map(), e.getValue = function(s) {
return e._currentContext.get(s);
}, e.setValue = function(s, i) {
var r = new n(e._currentContext);
return r._currentContext.set(s, i), r;
}, e.deleteValue = function(s) {
var i = new n(e._currentContext);
return i._currentContext.delete(s), i;
};
}
return n;
}()
), T0 = new x0(), C0 = function(n, t) {
var e = typeof Symbol == "function" && n[Symbol.iterator];
if (!e) return n;
var s = e.call(n), i, r = [], a;
try {
for (; (t === void 0 || t-- > 0) && !(i = s.next()).done; ) r.push(i.value);
} catch (l) {
a = { error: l };
} finally {
try {
i && !i.done && (e = s.return) && e.call(s);
} finally {
if (a) throw a.error;
}
}
return r;
}, k0 = function(n, t, e) {
if (e || arguments.length === 2) for (var s = 0, i = t.length, r; s < i; s++)
(r || !(s in t)) && (r || (r = Array.prototype.slice.call(t, 0, s)), r[s] = t[s]);
return n.concat(r || Array.prototype.slice.call(t));
}, I0 = (
/** @class */
function() {
function n() {
}
return n.prototype.active = function() {
return T0;
}, n.prototype.with = function(t, e, s) {
for (var i = [], r = 3; r < arguments.length; r++)
i[r - 3] = arguments[r];
return e.call.apply(e, k0([s], C0(i), !1));
}, n.prototype.bind = function(t, e) {
return e;
}, n.prototype.enable = function() {
return this;
}, n.prototype.disable = function() {
return this;
}, n;
}()
), R0 = function(n, t) {
var e = typeof Symbol == "function" && n[Symbol.iterator];
if (!e) return n;
var s = e.call(n), i, r = [], a;
try {
for (; (t === void 0 || t-- > 0) && !(i = s.next()).done; ) r.push(i.value);
} catch (l) {
a = { error: l };
} finally {
try {
i && !i.done && (e = s.return) && e.call(s);
} finally {
if (a) throw a.error;
}
}
return r;
}, P0 = function(n, t, e) {
if (e || arguments.length === 2) for (var s = 0, i = t.length, r; s < i; s++)
(r || !(s in t)) && (r || (r = Array.prototype.slice.call(t, 0, s)), r[s] = t[s]);
return n.concat(r || Array.prototype.slice.call(t));
}, Dd = "context", M0 = new I0(), ny = (
/** @class */
function() {
function n() {
}
return n.getInstance = function() {
return this._instance || (this._instance = new n()), this._instance;
}, n.prototype.setGlobalContextManager = function(t) {
return Rp(Dd, t, Nu.instance());
}, n.prototype.active = function() {
return this._getContextManager().active();
}, n.prototype.with = function(t, e, s) {
for (var i, r = [], a = 3; a < arguments.length; a++)
r[a - 3] = arguments[a];
return (i = this._getContextManager()).with.apply(i, P0([t, e, s], R0(r), !1));
}, n.prototype.bind = function(t, e) {
return this._getContextManager().bind(t, e);
}, n.prototype._getContextManager = function() {
return sc(Dd) || M0;
}, n.prototype.disable = function() {
this._getContextManager().disable(), Pp(Dd, Nu.instance());
}, n;
}()
), af;
(function(n) {
n[n.NONE = 0] = "NONE", n[n.SAMPLED = 1] = "SAMPLED";
})(af || (af = {}));
var ry = "0000000000000000", ay = "00000000000000000000000000000000", N0 = {
traceId: ay,
spanId: ry,
traceFlags: af.NONE
}, Il = (
/** @class */
function() {
function n(t) {
t === void 0 && (t = N0), this._spanContext = t;
}
return n.prototype.spanContext = function() {
return this._spanContext;
}, n.prototype.setAttribute = function(t, e) {
return this;
}, n.prototype.setAttributes = function(t) {
return this;
}, n.prototype.addEvent = function(t, e) {
return this;
}, n.prototype.addLink = function(t) {
return this;
}, n.prototype.addLinks = function(t) {
return this;
}, n.prototype.setStatus = function(t) {
return this;
}, n.prototype.updateName = function(t) {
return this;
}, n.prototype.end = function(t) {
}, n.prototype.isRecording = function() {
return !1;
}, n.prototype.recordException = function(t, e) {
}, n;
}()
), Mp = E0("OpenTelemetry Context Key SPAN");
function Np(n) {
return n.getValue(Mp) || void 0;
}
function O0() {
return Np(ny.getInstance().active());
}
function Op(n, t) {
return n.setValue(Mp, t);
}
function L0(n) {
return n.deleteValue(Mp);
}
function D0(n, t) {
return Op(n, new Il(t));
}
function oy(n) {
var t;
return (t = Np(n)) === null || t === void 0 ? void 0 : t.spanContext();
}
var F0 = /^([0-9a-f]{32})$/i, $0 = /^[0-9a-f]{16}$/i;
function j0(n) {
return F0.test(n) && n !== ay;
}
function B0(n) {
return $0.test(n) && n !== ry;
}
function ly(n) {
return j0(n.traceId) && B0(n.spanId);
}
function H0(n) {
return new Il(n);
}
var Fd = ny.getInstance(), cy = (
/** @class */
function() {
function n() {
}
return n.prototype.startSpan = function(t, e, s) {
s === void 0 && (s = Fd.active());
var i = !!(e != null && e.root);
if (i)
return new Il();
var r = s && oy(s);
return U0(r) && ly(r) ? new Il(r) : new Il();
}, n.prototype.startActiveSpan = function(t, e, s, i) {
var r, a, l;
if (!(arguments.length < 2)) {
arguments.length === 2 ? l = e : arguments.length === 3 ? (r = e, l = s) : (r = e, a = s, l = i);
var c = a ?? Fd.active(), h = this.startSpan(t, r, c), u = Op(c, h);
return Fd.with(u, l, void 0, h);
}
}, n;
}()
);
function U0(n) {
return typeof n == "object" && typeof n.spanId == "string" && typeof n.traceId == "string" && typeof n.traceFlags == "number";
}
var z0 = new cy(), V0 = (
/** @class */
function() {
function n(t, e, s, i) {
this._provider = t, this.name = e, this.version = s, this.options = i;
}
return n.prototype.startSpan = function(t, e, s) {
return this._getTracer().startSpan(t, e, s);
}, n.prototype.startActiveSpan = function(t, e, s, i) {
var r = this._getTracer();
return Reflect.apply(r.startActiveSpan, r, arguments);
}, n.prototype._getTracer = function() {
if (this._delegate)
return this._delegate;
var t = this._provider.getDelegateTracer(this.name, this.version, this.options);
return t ? (this._delegate = t, this._delegate) : z0;
}, n;
}()
), G0 = (
/** @class */
function() {
function n() {
}
return n.prototype.getTracer = function(t, e, s) {
return new cy();
}, n;
}()
), q0 = new G0(), xg = (
/** @class */
function() {
function n() {
}
return n.prototype.getTracer = function(t, e, s) {
var i;
return (i = this.getDelegateTracer(t, e, s)) !== null && i !== void 0 ? i : new V0(this, t, e, s);
}, n.prototype.getDelegate = function() {
var t;
return (t = this._delegate) !== null && t !== void 0 ? t : q0;
}, n.prototype.setDelegate = function(t) {
this._delegate = t;
}, n.prototype.getDelegateTracer = function(t, e, s) {
var i;
return (i = this._delegate) === null || i === void 0 ? void 0 : i.getTracer(t, e, s);
}, n;
}()
), Ou;
(function(n) {
n[n.UNSET = 0] = "UNSET", n[n.OK = 1] = "OK", n[n.ERROR = 2] = "ERROR";
})(Ou || (Ou = {}));
var $d = "trace", W0 = (
/** @class */
function() {
function n() {
this._proxyTracerProvider = new xg(), this.wrapSpanContext = H0, this.isSpanContextValid = ly, this.deleteSpan = L0, this.getSpan = Np, this.getActiveSpan = O0, this.getSpanContext = oy, this.setSpan = Op, this.setSpanContext = D0;
}
return n.getInstance = function() {
return this._instance || (this._instance = new n()), this._instance;
}, n.prototype.setGlobalTracerProvider = function(t) {
var e = Rp($d, this._proxyTracerProvider, Nu.instance());
return e && this._proxyTracerProvider.setDelegate(t), e;
}, n.prototype.getTracerProvider = function() {
return sc($d) || this._proxyTracerProvider;
}, n.prototype.getTracer = function(t, e) {
return this.getTracerProvider().getTracer(t, e);
}, n.prototype.disable = function() {
Pp($d, Nu.instance()), this._proxyTracerProvider = new xg();
}, n;
}()
), X0 = W0.getInstance(), Z0 = Object.defineProperty, Lp = (n, t) => {
for (var e in t)
Z0(n, e, { get: t[e], enumerable: !0 });
};
function Dp(n, {
contentType: t,
dataStreamVersion: e
}) {
const s = new Headers(n ?? {});
return s.has("Content-Type") || s.set("Content-Type", t), e !== void 0 && s.set("X-Vercel-AI-Data-Stream", e), s;
}
var hy = "AI_InvalidArgumentError", uy = `vercel.ai.error.${hy}`, Y0 = Symbol.for(uy), dy, Rt = class extends ht {
constructor({
parameter: n,
value: t,
message: e
}) {
super({
name: hy,
message: `Invalid argument for parameter ${n}: ${e}`
}), this[dy] = !0, this.parameter = n, this.value = t;
}
static isInstance(n) {
return ht.hasMarker(n, uy);
}
};
dy = Y0;
var fy = "AI_RetryError", py = `vercel.ai.error.${fy}`, K0 = Symbol.for(py), gy, Tg = class extends ht {
constructor({
message: n,
reason: t,
errors: e
}) {
super({ name: fy, message: n }), this[gy] = !0, this.reason = t, this.errors = e, this.lastError = e[e.length - 1];
}
static isInstance(n) {
return ht.hasMarker(n, py);
}
};
gy = K0;
var J0 = ({
maxRetries: n = 2,
initialDelayInMs: t = 2e3,
backoffFactor: e = 2
} = {}) => async (s) => my(s, {
maxRetries: n,
delayInMs: t,
backoffFactor: e
});
async function my(n, {
maxRetries: t,
delayInMs: e,
backoffFactor: s
}, i = []) {
try {
return await n();
} catch (r) {
if (Vh(r) || t === 0)
throw r;
const a = F_(r), l = [...i, r], c = l.length;
if (c > t)
throw new Tg({
message: `Failed after ${c} attempts. Last error: ${a}`,
reason: "maxRetriesExceeded",
errors: l
});
if (r instanceof Error && hi.isInstance(r) && r.isRetryable === !0 && c <= t)
return await D_(e), my(
n,
{ maxRetries: t, delayInMs: s * e, backoffFactor: s },
l
);
throw c === 1 ? r : new Tg({
message: `Failed after ${c} attempts with non-retryable error: '${a}'`,
reason: "errorNotRetryable",
errors: l
});
}
}
function Q0({
maxRetries: n
}) {
if (n != null) {
if (!Number.isInteger(n))
throw new Rt({
parameter: "maxRetries",
value: n,
message: "maxRetries must be an integer"
});
if (n < 0)
throw new Rt({
parameter: "maxRetries",
value: n,
message: "maxRetries must be >= 0"
});
}
const t = n ?? 2;
return {
maxRetries: t,
retry: J0({ maxRetries: t })
};
}
function jd({
operationId: n,
telemetry: t
}) {
return {
// standardized operation and resource name:
"operation.name": `${n}${(t == null ? void 0 : t.functionId) != null ? ` ${t.functionId}` : ""}`,
"resource.name": t == null ? void 0 : t.functionId,
// detailed, AI SDK specific data:
"ai.operationId": n,
"ai.telemetry.functionId": t == null ? void 0 : t.functionId
};
}
function tS({
model: n,
settings: t,
telemetry: e,
headers: s
}) {
var i;
return {
"ai.model.provider": n.provider,
"ai.model.id": n.modelId,
// settings:
...Object.entries(t).reduce((r, [a, l]) => (r[`ai.settings.${a}`] = l, r), {}),
// add metadata as attributes:
...Object.entries((i = e == null ? void 0 : e.metadata) != null ? i : {}).reduce(
(r, [a, l]) => (r[`ai.telemetry.metadata.${a}`] = l, r),
{}
),
// request headers
...Object.entries(s ?? {}).reduce((r, [a, l]) => (l !== void 0 && (r[`ai.request.headers.${a}`] = l), r), {})
};
}
var eS = {
startSpan() {
return $h;
},
startActiveSpan(n, t, e, s) {
if (typeof t == "function")
return t($h);
if (typeof e == "function")
return e($h);
if (typeof s == "function")
return s($h);
}
}, $h = {
spanContext() {
return sS;
},
setAttribute() {
return this;
},
setAttributes() {
return this;
},
addEvent() {
return this;
},
addLink() {
return this;
},
addLinks() {
return this;
},
setStatus() {
return this;
},
updateName() {
return this;
},
end() {
return this;
},
isRecording() {
return !1;
},
recordException() {
return this;
}
}, sS = {
traceId: "",
spanId: "",
traceFlags: 0
};
function iS({
isEnabled: n = !1,
tracer: t
} = {}) {
return n ? t || X0.getTracer("ai") : eS;
}
function Bd({
name: n,
tracer: t,
attributes: e,
fn: s,
endWhenDone: i = !0
}) {
return t.startActiveSpan(n, { attributes: e }, async (r) => {
try {
const a = await s(r);
return i && r.end(), a;
} catch (a) {
try {
a instanceof Error ? (r.recordException({
name: a.name,
message: a.message,
stack: a.stack
}), r.setStatus({
code: Ou.ERROR,
message: a.message
})) : r.setStatus({ code: Ou.ERROR });
} finally {
r.end();
}
throw a;
}
});
}
function va({
telemetry: n,
attributes: t
}) {
return (n == null ? void 0 : n.isEnabled) !== !0 ? {} : Object.entries(t).reduce((e, [s, i]) => {
if (i === void 0)
return e;
if (typeof i == "object" && "input" in i && typeof i.input == "function") {
if ((n == null ? void 0 : n.recordInputs) === !1)
return e;
const r = i.input();
return r === void 0 ? e : { ...e, [s]: r };
}
if (typeof i == "object" && "output" in i && typeof i.output == "function") {
if ((n == null ? void 0 : n.recordOutputs) === !1)
return e;
const r = i.output();
return r === void 0 ? e : { ...e, [s]: r };
}
return { ...e, [s]: i };
}, {});
}
var yy = "AI_NoObjectGeneratedError", by = `vercel.ai.error.${yy}`, nS = Symbol.for(by), vy, en = class extends ht {
constructor({
message: n = "No object generated.",
cause: t,
text: e,
response: s,
usage: i
}) {
super({ name: yy, message: n, cause: t }), this[vy] = !0, this.text = e, this.response = s, this.usage = i;
}
static isInstance(n) {
return ht.hasMarker(n, by);
}
};
vy = nS;
var _y = "AI_DownloadError", Ay = `vercel.ai.error.${_y}`, rS = Symbol.for(Ay), wy, Hd = class extends ht {
constructor({
url: n,
statusCode: t,
statusText: e,
cause: s,
message: i = s == null ? `Failed to download ${n}: ${t} ${e}` : `Failed to download ${n}: ${s}`
}) {
super({ name: _y, message: i, cause: s }), this[wy] = !0, this.url = n, this.statusCode = t, this.statusText = e;
}
static isInstance(n) {
return ht.hasMarker(n, Ay);
}
};
wy = rS;
async function aS({
url: n,
fetchImplementation: t = fetch
}) {
var e;
const s = n.toString();
try {
const i = await t(s);
if (!i.ok)
throw new Hd({
url: s,
statusCode: i.status,
statusText: i.statusText
});
return {
data: new Uint8Array(await i.arrayBuffer()),
mimeType: (e = i.headers.get("content-type")) != null ? e : void 0
};
} catch (i) {
throw Hd.isInstance(i) ? i : new Hd({ url: s, cause: i });
}
}
var oS = [
{ mimeType: "image/gif", bytes: [71, 73, 70] },
{ mimeType: "image/png", bytes: [137, 80, 78, 71] },
{ mimeType: "image/jpeg", bytes: [255, 216] },
{ mimeType: "image/webp", bytes: [82, 73, 70, 70] }
];
function lS(n) {
for (const { bytes: t, mimeType: e } of oS)
if (n.length >= t.length && t.every((s, i) => n[i] === s))
return e;
}
var Sy = "AI_InvalidDataContentError", Ey = `vercel.ai.error.${Sy}`, cS = Symbol.for(Ey), xy, Cg = class extends ht {
constructor({
content: n,
cause: t,
message: e = `Invalid data content. Expected a base64 string, Uint8Array, ArrayBuffer, or Buffer, but got ${typeof n}.`
}) {
super({ name: Sy, message: e, cause: t }), this[xy] = !0, this.content = n;
}
static isInstance(n) {
return ht.hasMarker(n, Ey);
}
};
xy = cS;
var Ty = w.union([
w.string(),
w.instanceof(Uint8Array),
w.instanceof(ArrayBuffer),
w.custom(
// Buffer might not be available in some environments such as CloudFlare:
(n) => {
var t, e;
return (e = (t = globalThis.Buffer) == null ? void 0 : t.isBuffer(n)) != null ? e : !1;
},
{ message: "Must be a Buffer" }
)
]);
function hS(n) {
return typeof n == "string" ? n : n instanceof ArrayBuffer ? Jd(new Uint8Array(n)) : Jd(n);
}
function Lu(n) {
if (n instanceof Uint8Array)
return n;
if (typeof n == "string")
try {
return K_(n);
} catch (t) {
throw new Cg({
message: "Invalid data content. Content string is not a base64-encoded media.",
content: n,
cause: t
});
}
if (n instanceof ArrayBuffer)
return new Uint8Array(n);
throw new Cg({ content: n });
}
function uS(n) {
try {
return new TextDecoder().decode(n);
} catch {
throw new Error("Error decoding Uint8Array to text");
}
}
var Cy = "AI_InvalidMessageRoleError", ky = `vercel.ai.error.${Cy}`, dS = Symbol.for(ky), Iy, fS = class extends ht {
constructor({
role: n,
message: t = `Invalid message role: '${n}'. Must be one of: "system", "user", "assistant", "tool".`
}) {
super({ name: Cy, message: t }), this[Iy] = !0, this.role = n;
}
static isInstance(n) {
return ht.hasMarker(n, ky);
}
};
Iy = dS;
function pS(n) {
try {
const [t, e] = n.split(",");
return {
mimeType: t.split(";")[0].split(":")[1],
base64Content: e
};
} catch {
return {
mimeType: void 0,
base64Content: void 0
};
}
}
async function kg({
prompt: n,
modelSupportsImageUrls: t = !0,
modelSupportsUrl: e = () => !1,
downloadImplementation: s = aS
}) {
const i = await mS(
n.messages,
s,
t,
e
);
return [
...n.system != null ? [{ role: "system", content: n.system }] : [],
...n.messages.map(
(r) => gS(r, i)
)
];
}
function gS(n, t) {
var e, s, i, r, a, l;
const c = n.role;
switch (c) {
case "system":
return {
role: "system",
content: n.content,
providerMetadata: (e = n.providerOptions) != null ? e : n.experimental_providerMetadata
};
case "user":
return typeof n.content == "string" ? {
role: "user",
content: [{ type: "text", text: n.content }],
providerMetadata: (s = n.providerOptions) != null ? s : n.experimental_providerMetadata
} : {
role: "user",
content: n.content.map((h) => yS(h, t)).filter((h) => h.type !== "text" || h.text !== ""),
providerMetadata: (i = n.providerOptions) != null ? i : n.experimental_providerMetadata
};
case "assistant":
return typeof n.content == "string" ? {
role: "assistant",
content: [{ type: "text", text: n.content }],
providerMetadata: (r = n.providerOptions) != null ? r : n.experimental_providerMetadata
} : {
role: "assistant",
content: n.content.filter(
// remove empty text parts:
(h) => h.type !== "text" || h.text !== ""
).map((h) => {
const { experimental_providerMetadata: u, providerOptions: d, ...f } = h;
return {
...f,
providerMetadata: d ?? u
};
}),
providerMetadata: (a = n.providerOptions) != null ? a : n.experimental_providerMetadata
};
case "tool":
return {
role: "tool",
content: n.content.map((h) => {
var u;
return {
type: "tool-result",
toolCallId: h.toolCallId,
toolName: h.toolName,
result: h.result,
content: h.experimental_content,
isError: h.isError,
providerMetadata: (u = h.providerOptions) != null ? u : h.experimental_providerMetadata
};
}),
providerMetadata: (l = n.providerOptions) != null ? l : n.experimental_providerMetadata
};
default: {
const h = c;
throw new fS({ role: h });
}
}
}
async function mS(n, t, e, s) {
const i = n.filter((a) => a.role === "user").map((a) => a.content).filter(
(a) => Array.isArray(a)
).flat().filter(
(a) => a.type === "image" || a.type === "file"
).filter(
(a) => !(a.type === "image" && e === !0)
).map((a) => a.type === "image" ? a.image : a.data).map(
(a) => (
// support string urls:
typeof a == "string" && (a.startsWith("http:") || a.startsWith("https:")) ? new URL(a) : a
)
).filter((a) => a instanceof URL).filter((a) => !s(a)), r = await Promise.all(
i.map(async (a) => ({
url: a,
data: await t({ url: a })
}))
);
return Object.fromEntries(
r.map(({ url: a, data: l }) => [a.toString(), l])
);
}
function yS(n, t) {
var e, s, i, r;
if (n.type === "text")
return {
type: "text",
text: n.text,
providerMetadata: (e = n.providerOptions) != null ? e : n.experimental_providerMetadata
};
let a = n.mimeType, l, c, h;
const u = n.type;
switch (u) {
case "image":
l = n.image;
break;
case "file":
l = n.data;
break;
default:
throw new Error(`Unsupported part type: ${u}`);
}
try {
c = typeof l == "string" ? new URL(l) : l;
} catch {
c = l;
}
if (c instanceof URL)
if (c.protocol === "data:") {
const { mimeType: d, base64Content: f } = pS(
c.toString()
);
if (d == null || f == null)
throw new Error(`Invalid data URL format in part ${u}`);
a = d, h = Lu(f);
} else {
const d = t[c.toString()];
d ? (h = d.data, a ?? (a = d.mimeType)) : h = c;
}
else
h = Lu(c);
switch (u) {
case "image":
return h instanceof Uint8Array && (a = (s = lS(h)) != null ? s : a), {
type: "image",
image: h,
mimeType: a,
providerMetadata: (i = n.providerOptions) != null ? i : n.experimental_providerMetadata
};
case "file": {
if (a == null)
throw new Error("Mime type is missing for file part");
return {
type: "file",
data: h instanceof Uint8Array ? hS(h) : h,
mimeType: a,
providerMetadata: (r = n.providerOptions) != null ? r : n.experimental_providerMetadata
};
}
}
}
function Ig({
maxTokens: n,
temperature: t,
topP: e,
topK: s,
presencePenalty: i,
frequencyPenalty: r,
stopSequences: a,
seed: l
}) {
if (n != null) {
if (!Number.isInteger(n))
throw new Rt({
parameter: "maxTokens",
value: n,
message: "maxTokens must be an integer"
});
if (n < 1)
throw new Rt({
parameter: "maxTokens",
value: n,
message: "maxTokens must be >= 1"
});
}
if (t != null && typeof t != "number")
throw new Rt({
parameter: "temperature",
value: t,
message: "temperature must be a number"
});
if (e != null && typeof e != "number")
throw new Rt({
parameter: "topP",
value: e,
message: "topP must be a number"
});
if (s != null && typeof s != "number")
throw new Rt({
parameter: "topK",
value: s,
message: "topK must be a number"
});
if (i != null && typeof i != "number")
throw new Rt({
parameter: "presencePenalty",
value: i,
message: "presencePenalty must be a number"
});
if (r != null && typeof r != "number")
throw new Rt({
parameter: "frequencyPenalty",
value: r,
message: "frequencyPenalty must be a number"
});
if (l != null && !Number.isInteger(l))
throw new Rt({
parameter: "seed",
value: l,
message: "seed must be an integer"
});
return {
maxTokens: n,
temperature: t ?? 0,
topP: e,
topK: s,
presencePenalty: i,
frequencyPenalty: r,
stopSequences: a != null && a.length > 0 ? a : void 0,
seed: l
};
}
function bS(n) {
var t, e, s;
const i = [];
for (const r of n) {
let a;
try {
a = new URL(r.url);
} catch {
throw new Error(`Invalid URL: ${r.url}`);
}
switch (a.protocol) {
case "http:":
case "https:": {
if ((t = r.contentType) != null && t.startsWith("image/"))
i.push({ type: "image", image: a });
else {
if (!r.contentType)
throw new Error(
"If the attachment is not an image, it must specify a content type"
);
i.push({
type: "file",
data: a,
mimeType: r.contentType
});
}
break;
}
case "data:": {
let l, c, h;
try {
[l, c] = r.url.split(","), h = l.split(";")[0].split(":")[1];
} catch {
throw new Error(`Error processing data URL: ${r.url}`);
}
if (h == null || c == null)
throw new Error(`Invalid data URL format: ${r.url}`);
if ((e = r.contentType) != null && e.startsWith("image/"))
i.push({
type: "image",
image: Lu(c)
});
else if ((s = r.contentType) != null && s.startsWith("text/"))
i.push({
type: "text",
text: uS(
Lu(c)
)
});
else {
if (!r.contentType)
throw new Error(
"If the attachment is not an image or text, it must specify a content type"
);
i.push({
type: "file",
data: c,
mimeType: r.contentType
});
}
break;
}
default:
throw new Error(`Unsupported URL protocol: ${a.protocol}`);
}
}
return i;
}
var Ry = "AI_MessageConversionError", Py = `vercel.ai.error.${Ry}`, vS = Symbol.for(Py), My, Ud = class extends ht {
constructor({
originalMessage: n,
message: t
}) {
super({ name: Ry, message: t }), this[My] = !0, this.originalMessage = n;
}
static isInstance(n) {
return ht.hasMarker(n, Py);
}
};
My = vS;
function _S(n, t) {
var e, s;
const i = (e = t == null ? void 0 : t.tools) != null ? e : {}, r = [];
for (let a = 0; a < n.length; a++) {
const l = n[a], c = a === n.length - 1, { role: h, content: u, experimental_attachments: d } = l;
switch (h) {
case "system": {
r.push({
role: "system",
content: u
});
break;
}
case "user": {
r.push({
role: "user",
content: d ? [
{ type: "text", text: u },
...bS(d)
] : u
});
break;
}
case "assistant": {
if (l.parts != null) {
let m = function() {
const S = [];
for (const x of A)
switch (x.type) {
case "text":
S.push({
type: "text",
text: x.text
});
break;
case "reasoning": {
for (const T of x.details)
switch (T.type) {
case "text":
S.push({
type: "reasoning",
text: T.text,
signature: T.signature
});
break;
case "redacted":
S.push({
type: "redacted-reasoning",
data: T.data
});
break;
}
break;
}
case "tool-invocation":
S.push({
type: "tool-call",
toolCallId: x.toolInvocation.toolCallId,
toolName: x.toolInvocation.toolName,
args: x.toolInvocation.args
});
break;
default: {
const T = x;
throw new Error(`Unsupported part: ${T}`);
}
}
r.push({
role: "assistant",
content: S
});
const E = A.filter(
(x) => x.type === "tool-invocation"
).map((x) => x.toolInvocation);
E.length > 0 && r.push({
role: "tool",
content: E.map(
(x) => {
if (!("result" in x))
throw new Ud({
originalMessage: l,
message: "ToolInvocation must have a result: " + JSON.stringify(x)
});
const { toolCallId: T, toolName: k, result: C } = x, P = i[k];
return (P == null ? void 0 : P.experimental_toToolResultContent) != null ? {
type: "tool-result",
toolCallId: T,
toolName: k,
result: P.experimental_toToolResultContent(C),
experimental_content: P.experimental_toToolResultContent(C)
} : {
type: "tool-result",
toolCallId: T,
toolName: k,
result: C
};
}
)
}), A = [], _ = !1, y++;
}, y = 0, _ = !1, A = [];
for (const S of l.parts)
switch (S.type) {
case "reasoning":
A.push(S);
break;
case "text": {
_ && m(), A.push(S);
break;
}
case "tool-invocation": {
((s = S.toolInvocation.step) != null ? s : 0) !== y && m(), A.push(S), _ = !0;
break;
}
}
m();
break;
}
const f = l.toolInvocations;
if (f == null || f.length === 0) {
r.push({ role: "assistant", content: u });
break;
}
const g = f.reduce((m, y) => {
var _;
return Math.max(m, (_ = y.step) != null ? _ : 0);
}, 0);
for (let m = 0; m <= g; m++) {
const y = f.filter(
(_) => {
var A;
return ((A = _.step) != null ? A : 0) === m;
}
);
y.length !== 0 && (r.push({
role: "assistant",
content: [
...c && u && m === 0 ? [{ type: "text", text: u }] : [],
...y.map(
({ toolCallId: _, toolName: A, args: S }) => ({
type: "tool-call",
toolCallId: _,
toolName: A,
args: S
})
)
]
}), r.push({
role: "tool",
content: y.map((_) => {
if (!("result" in _))
throw new Ud({
originalMessage: l,
message: "ToolInvocation must have a result: " + JSON.stringify(_)
});
const { toolCallId: A, toolName: S, result: E } = _, x = i[S];
return (x == null ? void 0 : x.experimental_toToolResultContent) != null ? {
type: "tool-result",
toolCallId: A,
toolName: S,
result: x.experimental_toToolResultContent(E),
experimental_content: x.experimental_toToolResultContent(E)
} : {
type: "tool-result",
toolCallId: A,
toolName: S,
result: E
};
})
}));
}
u && !c && r.push({ role: "assistant", content: u });
break;
}
case "data":
break;
default: {
const f = h;
throw new Ud({
originalMessage: l,
message: `Unsupported role: ${f}`
});
}
}
}
return r;
}
function AS(n) {
if (!Array.isArray(n))
return "other";
if (n.length === 0)
return "messages";
const t = n.map(wS);
return t.some((e) => e === "has-ui-specific-parts") ? "ui-messages" : t.every(
(e) => e === "has-core-specific-parts" || e === "message"
) ? "messages" : "other";
}
function wS(n) {
return typeof n == "object" && n !== null && (n.role === "function" || // UI-only role
n.role === "data" || // UI-only role
"toolInvocations" in n || // UI-specific field
"experimental_attachments" in n) ? "has-ui-specific-parts" : typeof n == "object" && n !== null && "content" in n && (Array.isArray(n.content) || // Core messages can have array content
"experimental_providerMetadata" in n || "providerOptions" in n) ? "has-core-specific-parts" : typeof n == "object" && n !== null && "role" in n && "content" in n && typeof n.content == "string" && ["system", "user", "assistant", "tool"].includes(n.role) ? "message" : "other";
}
var of = w.lazy(
() => w.union([
w.null(),
w.string(),
w.number(),
w.boolean(),
w.record(w.string(), of),
w.array(of)
])
), Bt = w.record(
w.string(),
w.record(w.string(), of)
), SS = w.array(
w.union([
w.object({ type: w.literal("text"), text: w.string() }),
w.object({
type: w.literal("image"),
data: w.string(),
mimeType: w.string().optional()
})
])
), Ny = w.object({
type: w.literal("text"),
text: w.string(),
providerOptions: Bt.optional(),
experimental_providerMetadata: Bt.optional()
}), ES = w.object({
type: w.literal("image"),
image: w.union([Ty, w.instanceof(URL)]),
mimeType: w.string().optional(),
providerOptions: Bt.optional(),
experimental_providerMetadata: Bt.optional()
}), xS = w.object({
type: w.literal("file"),
data: w.union([Ty, w.instanceof(URL)]),
mimeType: w.string(),
providerOptions: Bt.optional(),
experimental_providerMetadata: Bt.optional()
}), TS = w.object({
type: w.literal("reasoning"),
text: w.string(),
providerOptions: Bt.optional(),
experimental_providerMetadata: Bt.optional()
}), CS = w.object({
type: w.literal("redacted-reasoning"),
data: w.string(),
providerOptions: Bt.optional(),
experimental_providerMetadata: Bt.optional()
}), kS = w.object({
type: w.literal("tool-call"),
toolCallId: w.string(),
toolName: w.string(),
args: w.unknown(),
providerOptions: Bt.optional(),
experimental_providerMetadata: Bt.optional()
}), IS = w.object({
type: w.literal("tool-result"),
toolCallId: w.string(),
toolName: w.string(),
result: w.unknown(),
content: SS.optional(),
isError: w.boolean().optional(),
providerOptions: Bt.optional(),
experimental_providerMetadata: Bt.optional()
}), RS = w.object({
role: w.literal("system"),
content: w.string(),
providerOptions: Bt.optional(),
experimental_providerMetadata: Bt.optional()
}), PS = w.object({
role: w.literal("user"),
content: w.union([
w.string(),
w.array(w.union([Ny, ES, xS]))
]),
providerOptions: Bt.optional(),
experimental_providerMetadata: Bt.optional()
}), MS = w.object({
role: w.literal("assistant"),
content: w.union([
w.string(),
w.array(
w.union([
Ny,
TS,
CS,
kS
])
)
]),
providerOptions: Bt.optional(),
experimental_providerMetadata: Bt.optional()
}), NS = w.object({
role: w.literal("tool"),
content: w.array(IS),
providerOptions: Bt.optional(),
experimental_providerMetadata: Bt.optional()
}), OS = w.union([
RS,
PS,
MS,
NS
]);
function Rg({
prompt: n,
tools: t
}) {
if (n.prompt == null && n.messages == null)
throw new Zn({
prompt: n,
message: "prompt or messages must be defined"
});
if (n.prompt != null && n.messages != null)
throw new Zn({
prompt: n,
message: "prompt and messages cannot be defined at the same time"
});
if (n.system != null && typeof n.system != "string")
throw new Zn({
prompt: n,
message: "system must be a string"
});
if (n.prompt != null) {
if (typeof n.prompt != "string")
throw new Zn({
prompt: n,
message: "prompt must be a string"
});
return {
type: "prompt",
system: n.system,
messages: [
{
role: "user",
content: n.prompt
}
]
};
}
if (n.messages != null) {
const e = AS(n.messages);
if (e === "other")
throw new Zn({
prompt: n,
message: "messages must be an array of CoreMessage or UIMessage"
});
const s = e === "ui-messages" ? _S(n.messages, {
tools: t
}) : n.messages, i = ca({
value: s,
schema: w.array(OS)
});
if (!i.success)
throw new Zn({
prompt: n,
message: "messages must be an array of CoreMessage or UIMessage",
cause: i.error
});
return {
type: "messages",
messages: s,
system: n.system
};
}
throw new Error("unreachable");
}
function _a({
promptTokens: n,
completionTokens: t
}) {
return {
promptTokens: n,
completionTokens: t,
totalTokens: n + t
};
}
var LS = "JSON schema:", DS = "You MUST answer with a JSON object that matches the JSON schema above.", FS = "You MUST answer with JSON.";
function lf({
prompt: n,
schema: t,
schemaPrefix: e = t != null ? LS : void 0,
schemaSuffix: s = t != null ? DS : FS
}) {
return [
n != null && n.length > 0 ? n : void 0,
n != null && n.length > 0 ? "" : void 0,
// add a newline if prompt is not null
e,
t != null ? JSON.stringify(t) : void 0,
s
].filter((i) => i != null).join(`
`);
}
function $S(n) {
const t = n.pipeThrough(new TransformStream());
return t[Symbol.asyncIterator] = () => {
const e = t.getReader();
return {
async next() {
const { done: s, value: i } = await e.read();
return s ? { done: !0, value: void 0 } : { done: !1, value: i };
}
};
}, t;
}
var jS = {
type: "no-schema",
jsonSchema: void 0,
validatePartialResult({ value: n, textDelta: t }) {
return { success: !0, value: { partial: n, textDelta: t } };
},
validateFinalResult(n, t) {
return n === void 0 ? {
success: !1,
error: new en({
message: "No object generated: response did not match schema.",
text: t.text,
response: t.response,
usage: t.usage
})
} : { success: !0, value: n };
},
createElementStream() {
throw new oe({
functionality: "element streams in no-schema mode"
});
}
}, BS = (n) => ({
type: "object",
jsonSchema: n.jsonSchema,
validatePartialResult({ value: t, textDelta: e }) {
return {
success: !0,
value: {
// Note: currently no validation of partial results:
partial: t,
textDelta: e
}
};
},
validateFinalResult(t) {
return ca({ value: t, schema: n });
},
createElementStream() {
throw new oe({
functionality: "element streams in object mode"
});
}
}), HS = (n) => {
const { $schema: t, ...e } = n.jsonSchema;
return {
type: "enum",
// wrap in object that contains array of elements, since most LLMs will not
// be able to generate an array directly:
// possible future optimization: use arrays directly when model supports grammar-guided generation
jsonSchema: {
$schema: "http://json-schema.org/draft-07/schema#",
type: "object",
properties: {
elements: { type: "array", items: e }
},
required: ["elements"],
additionalProperties: !1
},
validatePartialResult({ value: s, latestObject: i, isFirstDelta: r, isFinalDelta: a }) {
var l;
if (!Kd(s) || !pg(s.elements))
return {
success: !1,
error: new Zi({
value: s,
cause: "value must be an object that contains an array of elements"
})
};
const c = s.elements, h = [];
for (let f = 0; f < c.length; f++) {
const g = c[f], m = ca({ value: g, schema: n });
if (!(f === c.length - 1 && !a)) {
if (!m.success)
return m;
h.push(m.value);
}
}
const u = (l = i == null ? void 0 : i.length) != null ? l : 0;
let d = "";
return r && (d += "["), u > 0 && (d += ","), d += h.slice(u).map((f) => JSON.stringify(f)).join(","), a && (d += "]"), {
success: !0,
value: {
partial: h,
textDelta: d
}
};
},
validateFinalResult(s) {
if (!Kd(s) || !pg(s.elements))
return {
success: !1,
error: new Zi({
value: s,
cause: "value must be an object that contains an array of elements"
})
};
const i = s.elements;
for (const r of i) {
const a = ca({ value: r, schema: n });
if (!a.success)
return a;
}
return { success: !0, value: i };
},
createElementStream(s) {
let i = 0;
return $S(
s.pipeThrough(
new TransformStream({
transform(r, a) {
switch (r.type) {
case "object": {
const l = r.object;
for (; i < l.length; i++)
a.enqueue(l[i]);
break;
}
case "text-delta":
case "finish":
case "error":
break;
default: {
const l = r;
throw new Error(
`Unsupported chunk type: ${l}`
);
}
}
}
})
)
);
}
};
}, US = (n) => ({
type: "enum",
// wrap in object that contains result, since most LLMs will not
// be able to generate an enum value directly:
// possible future optimization: use enums directly when model supports top-level enums
jsonSchema: {
$schema: "http://json-schema.org/draft-07/schema#",
type: "object",
properties: {
result: { type: "string", enum: n }
},
required: ["result"],
additionalProperties: !1
},
validateFinalResult(t) {
if (!Kd(t) || typeof t.result != "string")
return {
success: !1,
error: new Zi({
value: t,
cause: 'value must be an object that contains a string in the "result" property.'
})
};
const e = t.result;
return n.includes(e) ? { success: !0, value: e } : {
success: !1,
error: new Zi({
value: t,
cause: "value must be a string in the enum"
})
};
},
validatePartialResult() {
throw new oe({
functionality: "partial results in enum mode"
});
},
createElementStream() {
throw new oe({
functionality: "element streams in enum mode"
});
}
});
function zS({
output: n,
schema: t,
enumValues: e
}) {
switch (n) {
case "object":
return BS(rf(t));
case "array":
return HS(rf(t));
case "enum":
return US(e);
case "no-schema":
return jS;
default: {
const s = n;
throw new Error(`Unsupported output: ${s}`);
}
}
}
function VS({
output: n,
mode: t,
schema: e,
schemaName: s,
schemaDescription: i,
enumValues: r
}) {
if (n != null && n !== "object" && n !== "array" && n !== "enum" && n !== "no-schema")
throw new Rt({
parameter: "output",
value: n,
message: "Invalid output type."
});
if (n === "no-schema") {
if (t === "auto" || t === "tool")
throw new Rt({
parameter: "mode",
value: t,
message: 'Mode must be "json" for no-schema output.'
});
if (e != null)
throw new Rt({
parameter: "schema",
value: e,
message: "Schema is not supported for no-schema output."
});
if (i != null)
throw new Rt({
parameter: "schemaDescription",
value: i,
message: "Schema description is not supported for no-schema output."
});
if (s != null)
throw new Rt({
parameter: "schemaName",
value: s,
message: "Schema name is not supported for no-schema output."
});
if (r != null)
throw new Rt({
parameter: "enumValues",
value: r,
message: "Enum values are not supported for no-schema output."
});
}
if (n === "object") {
if (e == null)
throw new Rt({
parameter: "schema",
value: e,
message: "Schema is required for object output."
});
if (r != null)
throw new Rt({
parameter: "enumValues",
value: r,
message: "Enum values are not supported for object output."
});
}
if (n === "array") {
if (e == null)
throw new Rt({
parameter: "schema",
value: e,
message: "Element schema is required for array output."
});
if (r != null)
throw new Rt({
parameter: "enumValues",
value: r,
message: "Enum values are not supported for array output."
});
}
if (n === "enum") {
if (e != null)
throw new Rt({
parameter: "schema",
value: e,
message: "Schema is not supported for enum output."
});
if (i != null)
throw new Rt({
parameter: "schemaDescription",
value: i,
message: "Schema description is not supported for enum output."
});
if (s != null)
throw new Rt({
parameter: "schemaName",
value: s,
message: "Schema name is not supported for enum output."
});
if (r == null)
throw new Rt({
parameter: "enumValues",
value: r,
message: "Enum values are required for enum output."
});
for (const a of r)
if (typeof a != "string")
throw new Rt({
parameter: "enumValues",
value: a,
message: "Enum values must be strings."
});
}
}
var GS = ya({ prefix: "aiobj", size: 24 });
async function qS({
model: n,
enum: t,
// rename bc enum is reserved by typescript
schema: e,
schemaName: s,
schemaDescription: i,
mode: r,
output: a = "object",
system: l,
prompt: c,
messages: h,
maxRetries: u,
abortSignal: d,
headers: f,
experimental_repairText: g,
experimental_telemetry: m,
experimental_providerMetadata: y,
providerOptions: _ = y,
_internal: {
generateId: A = GS,
currentDate: S = () => /* @__PURE__ */ new Date()
} = {},
...E
}) {
VS({
output: a,
mode: r,
schema: e,
schemaName: s,
schemaDescription: i,
enumValues: t
});
const { maxRetries: x, retry: T } = Q0({ maxRetries: u }), k = zS({
output: a,
schema: e,
enumValues: t
});
k.type === "no-schema" && r === void 0 && (r = "json");
const C = tS({
model: n,
telemetry: m,
headers: f,
settings: { ...E, maxRetries: x }
}), P = iS(m);
return Bd({
name: "ai.generateObject",
attributes: va({
telemetry: m,
attributes: {
...jd({
operationId: "ai.generateObject",
telemetry: m
}),
...C,
// specific settings that only make sense on the outer level:
"ai.prompt": {
input: () => JSON.stringify({ system: l, prompt: c, messages: h })
},
"ai.schema": k.jsonSchema != null ? { input: () => JSON.stringify(k.jsonSchema) } : void 0,
"ai.schema.name": s,
"ai.schema.description": i,
"ai.settings.output": k.type,
"ai.settings.mode": r
}
}),
tracer: P,
fn: async (j) => {
var Z, V, dt, gt;
(r === "auto" || r == null) && (r = n.defaultObjectGenerationMode);
let Y, xt, M, z, ot, kt, yt, Q, Vt;
switch (r) {
case "json": {
const Tt = Rg({
prompt: {
system: k.jsonSchema == null ? lf({ prompt: l }) : n.supportsStructuredOutputs ? l : lf({
prompt: l,
schema: k.jsonSchema
}),
prompt: c,
messages: h
},
tools: void 0
}), St = await kg({
prompt: Tt,
modelSupportsImageUrls: n.supportsImageUrls,
modelSupportsUrl: (Z = n.supportsUrl) == null ? void 0 : Z.bind(n)
// support 'this' context
}), tt = await T(
() => Bd({
name: "ai.generateObject.doGenerate",
attributes: va({
telemetry: m,
attributes: {
...jd({
operationId: "ai.generateObject.doGenerate",
telemetry: m
}),
...C,
"ai.prompt.format": {
input: () => Tt.type
},
"ai.prompt.messages": {
input: () => JSON.stringify(St)
},
"ai.settings.mode": r,
// standardized gen-ai llm span attributes:
"gen_ai.system": n.provider,
"gen_ai.request.model": n.modelId,
"gen_ai.request.frequency_penalty": E.frequencyPenalty,
"gen_ai.request.max_tokens": E.maxTokens,
"gen_ai.request.presence_penalty": E.presencePenalty,
"gen_ai.request.temperature": E.temperature,
"gen_ai.request.top_k": E.topK,
"gen_ai.request.top_p": E.topP
}
}),
tracer: P,
fn: async (Qt) => {
var Vn, Gn, Ko, Jo, Qo, tl;
const le = await n.doGenerate({
mode: {
type: "object-json",
schema: k.jsonSchema,
name: s,
description: i
},
...Ig(E),
inputFormat: Tt.type,
prompt: St,
providerMetadata: _,
abortSignal: d,
headers: f
}), zs = {
id: (Gn = (Vn = le.response) == null ? void 0 : Vn.id) != null ? Gn : A(),
timestamp: (Jo = (Ko = le.response) == null ? void 0 : Ko.timestamp) != null ? Jo : S(),
modelId: (tl = (Qo = le.response) == null ? void 0 : Qo.modelId) != null ? tl : n.modelId
};
if (le.text === void 0)
throw new en({
message: "No object generated: the model did not return a response.",
response: zs,
usage: _a(le.usage)
});
return Qt.setAttributes(
va({
telemetry: m,
attributes: {
"ai.response.finishReason": le.finishReason,
"ai.response.object": { output: () => le.text },
"ai.response.id": zs.id,
"ai.response.model": zs.modelId,
"ai.response.timestamp": zs.timestamp.toISOString(),
"ai.usage.promptTokens": le.usage.promptTokens,
"ai.usage.completionTokens": le.usage.completionTokens,
// standardized gen-ai llm span attributes:
"gen_ai.response.finish_reasons": [le.finishReason],
"gen_ai.response.id": zs.id,
"gen_ai.response.model": zs.modelId,
"gen_ai.usage.prompt_tokens": le.usage.promptTokens,
"gen_ai.usage.completion_tokens": le.usage.completionTokens
}
})
), { ...le, objectText: le.text, responseData: zs };
}
})
);
Y = tt.objectText, xt = tt.finishReason, M = tt.usage, z = tt.warnings, ot = tt.rawResponse, Q = tt.logprobs, Vt = tt.providerMetadata, yt = (V = tt.request) != null ? V : {}, kt = tt.responseData;
break;
}
case "tool": {
const Tt = Rg({
prompt: { system: l, prompt: c, messages: h },
tools: void 0
}), St = await kg({
prompt: Tt,
modelSupportsImageUrls: n.supportsImageUrls,
modelSupportsUrl: (dt = n.supportsUrl) == null ? void 0 : dt.bind(n)
// support 'this' context,
}), tt = Tt.type, Qt = await T(
() => Bd({
name: "ai.generateObject.doGenerate",
attributes: va({
telemetry: m,
attributes: {
...jd({
operationId: "ai.generateObject.doGenerate",
telemetry: m
}),
...C,
"ai.prompt.format": {
input: () => tt
},
"ai.prompt.messages": {
input: () => JSON.stringify(St)
},
"ai.settings.mode": r,
// standardized gen-ai llm span attributes:
"gen_ai.system": n.provider,
"gen_ai.request.model": n.modelId,
"gen_ai.request.frequency_penalty": E.frequencyPenalty,
"gen_ai.request.max_tokens": E.maxTokens,
"gen_ai.request.presence_penalty": E.presencePenalty,
"gen_ai.request.temperature": E.temperature,
"gen_ai.request.top_k": E.topK,
"gen_ai.request.top_p": E.topP
}
}),
tracer: P,
fn: async (Vn) => {
var Gn, Ko, Jo, Qo, tl, le, zs, sg;
const os = await n.doGenerate({
mode: {
type: "object-tool",
tool: {
type: "function",
name: s ?? "json",
description: i ?? "Respond with a JSON object.",
parameters: k.jsonSchema
}
},
...Ig(E),
inputFormat: tt,
prompt: St,
providerMetadata: _,
abortSignal: d,
headers: f
}), xd = (Ko = (Gn = os.toolCalls) == null ? void 0 : Gn[0]) == null ? void 0 : Ko.args, qn = {
id: (Qo = (Jo = os.response) == null ? void 0 : Jo.id) != null ? Qo : A(),
timestamp: (le = (tl = os.response) == null ? void 0 : tl.timestamp) != null ? le : S(),
modelId: (sg = (zs = os.response) == null ? void 0 : zs.modelId) != null ? sg : n.modelId
};
if (xd === void 0)
throw new en({
message: "No object generated: the tool was not called.",
response: qn,
usage: _a(os.usage)
});
return Vn.setAttributes(
va({
telemetry: m,
attributes: {
"ai.response.finishReason": os.finishReason,
"ai.response.object": { output: () => xd },
"ai.response.id": qn.id,
"ai.response.model": qn.modelId,
"ai.response.timestamp": qn.timestamp.toISOString(),
"ai.usage.promptTokens": os.usage.promptTokens,
"ai.usage.completionTokens": os.usage.completionTokens,
// standardized gen-ai llm span attributes:
"gen_ai.response.finish_reasons": [os.finishReason],
"gen_ai.response.id": qn.id,
"gen_ai.response.model": qn.modelId,
"gen_ai.usage.input_tokens": os.usage.promptTokens,
"gen_ai.usage.output_tokens": os.usage.completionTokens
}
})
), { ...os, objectText: xd, responseData: qn };
}
})
);
Y = Qt.objectText, xt = Qt.finishReason, M = Qt.usage, z = Qt.warnings, ot = Qt.rawResponse, Q = Qt.logprobs, Vt = Qt.providerMetadata, yt = (gt = Qt.request) != null ? gt : {}, kt = Qt.responseData;
break;
}
case void 0:
throw new Error(
"Model does not have a default object generation mode."
);
default: {
const Tt = r;
throw new Error(`Unsupported mode: ${Tt}`);
}
}
function $t(Tt) {
const St = Go({ text: Tt });
if (!St.success)
throw new en({
message: "No object generated: could not parse the response.",
cause: St.error,
text: Tt,
response: kt,
usage: _a(M)
});
const tt = k.validateFinalResult(
St.value,
{
text: Tt,
response: kt,
usage: _a(M)
}
);
if (!tt.success)
throw new en({
message: "No object generated: response did not match schema.",
cause: tt.error,
text: Tt,
response: kt,
usage: _a(M)
});
return tt.value;
}
let vs;
try {
vs = $t(Y);
} catch (Tt) {
if (g != null && en.isInstance(Tt) && (Ll.isInstance(Tt.cause) || Zi.isInstance(Tt.cause))) {
const St = await g({
text: Y,
error: Tt.cause
});
if (St === null)
throw Tt;
vs = $t(St);
} else
throw Tt;
}
return j.setAttributes(
va({
telemetry: m,
attributes: {
"ai.response.finishReason": xt,
"ai.response.object": {
output: () => JSON.stringify(vs)
},
"ai.usage.promptTokens": M.promptTokens,
"ai.usage.completionTokens": M.completionTokens
}
})
), new WS({
object: vs,
finishReason: xt,
usage: _a(M),
warnings: z,
request: yt,
response: {
...kt,
headers: ot == null ? void 0 : ot.headers,
body: ot == null ? void 0 : ot.body
},
logprobs: Q,
providerMetadata: Vt
});
}
});
}
var WS = class {
constructor(n) {
this.object = n.object, this.finishReason = n.finishReason, this.usage = n.usage, this.warnings = n.warnings, this.providerMetadata = n.providerMetadata, this.experimental_providerMetadata = n.providerMetadata, this.response = n.response, this.request = n.request, this.logprobs = n.logprobs;
}
toJsonResponse(n) {
var t;
return new Response(JSON.stringify(this.object), {
status: (t = n == null ? void 0 : n.status) != null ? t : 200,
headers: Dp(n == null ? void 0 : n.headers, {
contentType: "application/json; charset=utf-8"
})
});
}
};
ya({ prefix: "aiobj", size: 24 });
ya({
prefix: "aitxt",
size: 24
});
ya({
prefix: "msg",
size: 24
});
var XS = {};
Lp(XS, {
object: () => YS,
text: () => ZS
});
var ZS = () => ({
type: "text",
responseFormat: () => ({ type: "text" }),
injectIntoSystemPrompt({ system: n }) {
return n;
},
parsePartial({ text: n }) {
return { partial: n };
},
parseOutput({ text: n }) {
return n;
}
}), YS = ({
schema: n
}) => {
const t = rf(n);
return {
type: "object",
responseFormat: ({ model: e }) => ({
type: "json",
schema: e.supportsStructuredOutputs ? t.jsonSchema : void 0
}),
injectIntoSystemPrompt({ system: e, model: s }) {
return s.supportsStructuredOutputs ? e : lf({
prompt: e,
schema: t.jsonSchema
});
},
parsePartial({ text: e }) {
const s = Xw(e);
switch (s.state) {
case "failed-parse":
case "undefined-input":
return;
case "repaired-parse":
case "successful-parse":
return {
// Note: currently no validation of partial results:
partial: s.value
};
default: {
const i = s.state;
throw new Error(`Unsupported parse state: ${i}`);
}
}
},
parseOutput({ text: e }, s) {
const i = Go({ text: e });
if (!i.success)
throw new en({
message: "No object generated: could not parse the response.",
cause: i.error,
text: e,
response: s.response,
usage: s.usage
});
const r = ca({
value: i.value,
schema: t
});
if (!r.success)
throw new en({
message: "No object generated: response did not match schema.",
cause: r.error,
text: e,
response: s.response,
usage: s.usage
});
return r.value;
}
};
};
function Oy(n, t) {
const e = n.getReader(), s = t.getReader();
let i, r, a = !1, l = !1;
async function c(u) {
try {
i == null && (i = e.read());
const d = await i;
i = void 0, d.done ? u.close() : u.enqueue(d.value);
} catch (d) {
u.error(d);
}
}
async function h(u) {
try {
r == null && (r = s.read());
const d = await r;
r = void 0, d.done ? u.close() : u.enqueue(d.value);
} catch (d) {
u.error(d);
}
}
return new ReadableStream({
async pull(u) {
try {
if (a) {
await h(u);
return;
}
if (l) {
await c(u);
return;
}
i == null && (i = e.read()), r == null && (r = s.read());
const { result: d, reader: f } = await Promise.race([
i.then((g) => ({ result: g, reader: e })),
r.then((g) => ({ result: g, reader: s }))
]);
d.done || u.enqueue(d.value), f === e ? (i = void 0, d.done && (await h(u), a = !0)) : (r = void 0, d.done && (l = !0, await c(u)));
} catch (d) {
u.error(d);
}
},
cancel() {
e.cancel(), s.cancel();
}
});
}
ya({
prefix: "aitxt",
size: 24
});
ya({
prefix: "msg",
size: 24
});
var KS = {};
Lp(KS, {
mergeIntoDataStream: () => tE,
toDataStream: () => JS,
toDataStreamResponse: () => QS
});
function Ly(n = {}) {
const t = new TextEncoder();
let e = "";
return new TransformStream({
async start() {
n.onStart && await n.onStart();
},
async transform(s, i) {
i.enqueue(t.encode(s)), e += s, n.onToken && await n.onToken(s), n.onText && typeof s == "string" && await n.onText(s);
},
async flush() {
n.onCompletion && await n.onCompletion(e), n.onFinal && await n.onFinal(e);
}
});
}
function Fp(n, t) {
return n.pipeThrough(
new TransformStream({
transform: async (e, s) => {
var i;
if (typeof e == "string") {
s.enqueue(e);
return;
}
if ("event" in e) {
e.event === "on_chat_model_stream" && Pg(
(i = e.data) == null ? void 0 : i.chunk,
s
);
return;
}
Pg(e, s);
}
})
).pipeThrough(Ly(t)).pipeThrough(new TextDecoderStream()).pipeThrough(
new TransformStream({
transform: async (e, s) => {
s.enqueue(iy("text", e));
}
})
);
}
function JS(n, t) {
return Fp(n, t).pipeThrough(
new TextEncoderStream()
);
}
function QS(n, t) {
var e;
const s = Fp(
n,
t == null ? void 0 : t.callbacks
).pipeThrough(new TextEncoderStream()), i = t == null ? void 0 : t.data, r = t == null ? void 0 : t.init, a = i ? Oy(i.stream, s) : s;
return new Response(a, {
status: (e = r == null ? void 0 : r.status) != null ? e : 200,
statusText: r == null ? void 0 : r.statusText,
headers: Dp(r == null ? void 0 : r.headers, {
contentType: "text/plain; charset=utf-8",
dataStreamVersion: "v1"
})
});
}
function tE(n, t) {
t.dataStream.merge(Fp(n, t.callbacks));
}
function Pg(n, t) {
if (typeof n.content == "string")
t.enqueue(n.content);
else {
const e = n.content;
for (const s of e)
s.type === "text" && t.enqueue(s.text);
}
}
var eE = {};
Lp(eE, {
mergeIntoDataStream: () => nE,
toDataStream: () => sE,
toDataStreamResponse: () => iE
});
function $p(n, t) {
const e = rE();
return L_(n[Symbol.asyncIterator]()).pipeThrough(
new TransformStream({
async transform(s, i) {
i.enqueue(e(s.delta));
}
})
).pipeThrough(Ly(t)).pipeThrough(new TextDecoderStream()).pipeThrough(
new TransformStream({
transform: async (s, i) => {
i.enqueue(iy("text", s));
}
})
);
}
function sE(n, t) {
return $p(n, t).pipeThrough(
new TextEncoderStream()
);
}
function iE(n, t = {}) {
var e;
const { init: s, data: i, callbacks: r } = t, a = $p(n, r).pipeThrough(
new TextEncoderStream()
), l = i ? Oy(i.stream, a) : a;
return new Response(l, {
status: (e = s == null ? void 0 : s.status) != null ? e : 200,
statusText: s == null ? void 0 : s.statusText,
headers: Dp(s == null ? void 0 : s.headers, {
contentType: "text/plain; charset=utf-8",
dataStreamVersion: "v1"
})
});
}
function nE(n, t) {
t.dataStream.merge($p(n, t.callbacks));
}
function rE() {
let n = !0;
return (t) => (n && (t = t.trimStart(), t && (n = !1)), t);
}
function aE({
prompt: n,
useLegacyFunctionCalling: t = !1,
systemMessageMode: e = "system"
}) {
const s = [];
for (const { role: i, content: r } of n)
switch (i) {
case "system": {
switch (e) {
case "system": {
s.push({ role: "system", content: r });
break;
}
case "developer": {
s.push({ role: "developer", content: r });
break;
}
case "remove":
break;
default: {
const a = e;
throw new Error(
`Unsupported system message mode: ${a}`
);
}
}
break;
}
case "user": {
if (r.length === 1 && r[0].type === "text") {
s.push({ role: "user", content: r[0].text });
break;
}
s.push({
role: "user",
content: r.map((a) => {
var l, c, h;
switch (a.type) {
case "text":
return { type: "text", text: a.text };
case "image":
return {
type: "image_url",
image_url: {
url: a.image instanceof URL ? a.image.toString() : `data:${(l = a.mimeType) != null ? l : "image/jpeg"};base64,${Jd(a.image)}`,
// OpenAI specific extension: image detail
detail: (h = (c = a.providerMetadata) == null ? void 0 : c.openai) == null ? void 0 : h.imageDetail
}
};
case "file": {
if (a.data instanceof URL)
throw new oe({
functionality: "'File content parts with URL data' functionality not supported."
});
switch (a.mimeType) {
case "audio/wav":
return {
type: "input_audio",
input_audio: { data: a.data, format: "wav" }
};
case "audio/mp3":
case "audio/mpeg":
return {
type: "input_audio",
input_audio: { data: a.data, format: "mp3" }
};
default:
throw new oe({
functionality: `File content part type ${a.mimeType} in user messages`
});
}
}
}
})
});
break;
}
case "assistant": {
let a = "";
const l = [];
for (const c of r)
switch (c.type) {
case "text": {
a += c.text;
break;
}
case "redacted-reasoning":
case "reasoning":
break;
case "tool-call": {
l.push({
id: c.toolCallId,
type: "function",
function: {
name: c.toolName,
arguments: JSON.stringify(c.args)
}
});
break;
}
default: {
const h = c;
throw new Error(`Unsupported part: ${h}`);
}
}
if (t) {
if (l.length > 1)
throw new oe({
functionality: "useLegacyFunctionCalling with multiple tool calls in one message"
});
s.push({
role: "assistant",
content: a,
function_call: l.length > 0 ? l[0].function : void 0
});
} else
s.push({
role: "assistant",
content: a,
tool_calls: l.length > 0 ? l : void 0
});
break;
}
case "tool": {
for (const a of r)
t ? s.push({
role: "function",
name: a.toolName,
content: JSON.stringify(a.result)
}) : s.push({
role: "tool",
tool_call_id: a.toolCallId,
content: JSON.stringify(a.result)
});
break;
}
default: {
const a = i;
throw new Error(`Unsupported role: ${a}`);
}
}
return s;
}
function Mg(n) {
var t, e;
return (e = (t = n == null ? void 0 : n.content) == null ? void 0 : t.map(({ token: s, logprob: i, top_logprobs: r }) => ({
token: s,
logprob: i,
topLogprobs: r ? r.map(({ token: a, logprob: l }) => ({
token: a,
logprob: l
})) : []
}))) != null ? e : void 0;
}
function Du(n) {
switch (n) {
case "stop":
return "stop";
case "length":
return "length";
case "content_filter":
return "content-filter";
case "function_call":
case "tool_calls":
return "tool-calls";
default:
return "unknown";
}
}
var jp = w.object({
error: w.object({
message: w.string(),
// The additional information below is handled loosely to support
// OpenAI-compatible providers that have slightly different error
// responses:
type: w.string().nullish(),
param: w.any().nullish(),
code: w.union([w.string(), w.number()]).nullish()
})
}), Yo = X_({
errorSchema: jp,
errorToMessage: (n) => n.error.message
});
function Fu({
id: n,
model: t,
created: e
}) {
return {
id: n ?? void 0,
modelId: t ?? void 0,
timestamp: e != null ? new Date(e * 1e3) : void 0
};
}
function oE({
mode: n,
useLegacyFunctionCalling: t = !1,
structuredOutputs: e
}) {
var s;
const i = (s = n.tools) != null && s.length ? n.tools : void 0, r = [];
if (i == null)
return { tools: void 0, tool_choice: void 0, toolWarnings: r };
const a = n.toolChoice;
if (t) {
const h = [];
for (const d of i)
d.type === "provider-defined" ? r.push({ type: "unsupported-tool", tool: d }) : h.push({
name: d.name,
description: d.description,
parameters: d.parameters
});
if (a == null)
return {
functions: h,
function_call: void 0,
toolWarnings: r
};
switch (a.type) {
case "auto":
case "none":
case void 0:
return {
functions: h,
function_call: void 0,
toolWarnings: r
};
case "required":
throw new oe({
functionality: "useLegacyFunctionCalling and toolChoice: required"
});
default:
return {
functions: h,
function_call: { name: a.toolName },
toolWarnings: r
};
}
}
const l = [];
for (const h of i)
h.type === "provider-defined" ? r.push({ type: "unsupported-tool", tool: h }) : l.push({
type: "function",
function: {
name: h.name,
description: h.description,
parameters: h.parameters,
strict: e ? !0 : void 0
}
});
if (a == null)
return { tools: l, tool_choice: void 0, toolWarnings: r };
const c = a.type;
switch (c) {
case "auto":
case "none":
case "required":
return { tools: l, tool_choice: c, toolWarnings: r };
case "tool":
return {
tools: l,
tool_choice: {
type: "function",
function: {
name: a.toolName
}
},
toolWarnings: r
};
default: {
const h = c;
throw new oe({
functionality: `Unsupported tool choice type: ${h}`
});
}
}
}
var lE = class {
constructor(n, t, e) {
this.specificationVersion = "v1", this.modelId = n, this.settings = t, this.config = e;
}
get supportsStructuredOutputs() {
var n;
return (n = this.settings.structuredOutputs) != null ? n : cf(this.modelId);
}
get defaultObjectGenerationMode() {
return uE(this.modelId) ? "tool" : this.supportsStructuredOutputs ? "json" : "tool";
}
get provider() {
return this.config.provider;
}
get supportsImageUrls() {
return !this.settings.downloadImages;
}
getArgs({
mode: n,
prompt: t,
maxTokens: e,
temperature: s,
topP: i,
topK: r,
frequencyPenalty: a,
presencePenalty: l,
stopSequences: c,
responseFormat: h,
seed: u,
providerMetadata: d
}) {
var f, g, m, y, _, A, S, E;
const x = n.type, T = [];
r != null && T.push({
type: "unsupported-setting",
setting: "topK"
}), (h == null ? void 0 : h.type) === "json" && h.schema != null && !this.supportsStructuredOutputs && T.push({
type: "unsupported-setting",
setting: "responseFormat",
details: "JSON response format schema is only supported with structuredOutputs"
});
const k = this.settings.useLegacyFunctionCalling;
if (k && this.settings.parallelToolCalls === !0)
throw new oe({
functionality: "useLegacyFunctionCalling with parallelToolCalls"
});
if (k && this.supportsStructuredOutputs)
throw new oe({
functionality: "structuredOutputs with useLegacyFunctionCalling"
});
Ng(this.modelId) === "remove" && t.some((P) => P.role === "system") && T.push({
type: "other",
message: "system messages are removed for this model"
});
const C = {
// model id:
model: this.modelId,
// model specific settings:
logit_bias: this.settings.logitBias,
logprobs: this.settings.logprobs === !0 || typeof this.settings.logprobs == "number" ? !0 : void 0,
top_logprobs: typeof this.settings.logprobs == "number" ? this.settings.logprobs : typeof this.settings.logprobs == "boolean" && this.settings.logprobs ? 0 : void 0,
user: this.settings.user,
parallel_tool_calls: this.settings.parallelToolCalls,
// standardized settings:
max_tokens: e,
temperature: s,
top_p: i,
frequency_penalty: a,
presence_penalty: l,
response_format: (h == null ? void 0 : h.type) === "json" ? this.supportsStructuredOutputs && h.schema != null ? {
type: "json_schema",
json_schema: {
schema: h.schema,
strict: !0,
name: (f = h.name) != null ? f : "response",
description: h.description
}
} : { type: "json_object" } : void 0,
stop: c,
seed: u,
// openai specific settings:
// TODO remove in next major version; we auto-map maxTokens now
max_completion_tokens: (g = d == null ? void 0 : d.openai) == null ? void 0 : g.maxCompletionTokens,
store: (m = d == null ? void 0 : d.openai) == null ? void 0 : m.store,
metadata: (y = d == null ? void 0 : d.openai) == null ? void 0 : y.metadata,
prediction: (_ = d == null ? void 0 : d.openai) == null ? void 0 : _.prediction,
reasoning_effort: (S = (A = d == null ? void 0 : d.openai) == null ? void 0 : A.reasoningEffort) != null ? S : this.settings.reasoningEffort,
// messages:
messages: aE({
prompt: t,
useLegacyFunctionCalling: k,
systemMessageMode: Ng(this.modelId)
})
};
switch (cf(this.modelId) && (C.temperature != null && (C.temperature = void 0, T.push({
type: "unsupported-setting",
setting: "temperature",
details: "temperature is not supported for reasoning models"
})), C.top_p != null && (C.top_p = void 0, T.push({
type: "unsupported-setting",
setting: "topP",
details: "topP is not supported for reasoning models"
})), C.frequency_penalty != null && (C.frequency_penalty = void 0, T.push({
type: "unsupported-setting",
setting: "frequencyPenalty",
details: "frequencyPenalty is not supported for reasoning models"
})), C.presence_penalty != null && (C.presence_penalty = void 0, T.push({
type: "unsupported-setting",
setting: "presencePenalty",
details: "presencePenalty is not supported for reasoning models"
})), C.logit_bias != null && (C.logit_bias = void 0, T.push({
type: "other",
message: "logitBias is not supported for reasoning models"
})), C.logprobs != null && (C.logprobs = void 0, T.push({
type: "other",
message: "logprobs is not supported for reasoning models"
})), C.top_logprobs != null && (C.top_logprobs = void 0, T.push({
type: "other",
message: "topLogprobs is not supported for reasoning models"
})), C.max_tokens != null && (C.max_completion_tokens == null && (C.max_completion_tokens = C.max_tokens), C.max_tokens = void 0)), x) {
case "regular": {
const { tools: P, tool_choice: j, functions: Z, function_call: V, toolWarnings: dt } = oE({
mode: n,
useLegacyFunctionCalling: k,
structuredOutputs: this.supportsStructuredOutputs
});
return {
args: {
...C,
tools: P,
tool_choice: j,
functions: Z,
function_call: V
},
warnings: [...T, ...dt]
};
}
case "object-json":
return {
args: {
...C,
response_format: this.supportsStructuredOutputs && n.schema != null ? {
type: "json_schema",
json_schema: {
schema: n.schema,
strict: !0,
name: (E = n.name) != null ? E : "response",
description: n.description
}
} : { type: "json_object" }
},
warnings: T
};
case "object-tool":
return {
args: k ? {
...C,
function_call: {
name: n.tool.name
},
functions: [
{
name: n.tool.name,
description: n.tool.description,
parameters: n.tool.parameters
}
]
} : {
...C,
tool_choice: {
type: "function",
function: { name: n.tool.name }
},
tools: [
{
type: "function",
function: {
name: n.tool.name,
description: n.tool.description,
parameters: n.tool.parameters,
strict: this.supportsStructuredOutputs ? !0 : void 0
}
}
]
},
warnings: T
};
default: {
const P = x;
throw new Error(`Unsupported type: ${P}`);
}
}
}
async doGenerate(n) {
var t, e, s, i, r, a, l, c;
const { args: h, warnings: u } = this.getArgs(n), {
responseHeaders: d,
value: f,
rawValue: g
} = await qo({
url: this.config.url({
path: "/chat/completions",
modelId: this.modelId
}),
headers: Vo(this.config.headers(), n.headers),
body: h,
failedResponseHandler: Yo,
successfulResponseHandler: pd(
cE
),
abortSignal: n.abortSignal,
fetch: this.config.fetch
}), { messages: m, ...y } = h, _ = f.choices[0], A = (t = f.usage) == null ? void 0 : t.completion_tokens_details, S = (e = f.usage) == null ? void 0 : e.prompt_tokens_details, E = { openai: {} };
return (A == null ? void 0 : A.reasoning_tokens) != null && (E.openai.reasoningTokens = A == null ? void 0 : A.reasoning_tokens), (A == null ? void 0 : A.accepted_prediction_tokens) != null && (E.openai.acceptedPredictionTokens = A == null ? void 0 : A.accepted_prediction_tokens), (A == null ? void 0 : A.rejected_prediction_tokens) != null && (E.openai.rejectedPredictionTokens = A == null ? void 0 : A.rejected_prediction_tokens), (S == null ? void 0 : S.cached_tokens) != null && (E.openai.cachedPromptTokens = S == null ? void 0 : S.cached_tokens), {
text: (s = _.message.content) != null ? s : void 0,
toolCalls: this.settings.useLegacyFunctionCalling && _.message.function_call ? [
{
toolCallType: "function",
toolCallId: sl(),
toolName: _.message.function_call.name,
args: _.message.function_call.arguments
}
] : (i = _.message.tool_calls) == null ? void 0 : i.map((x) => {
var T;
return {
toolCallType: "function",
toolCallId: (T = x.id) != null ? T : sl(),
toolName: x.function.name,
args: x.function.arguments
};
}),
finishReason: Du(_.finish_reason),
usage: {
promptTokens: (a = (r = f.usage) == null ? void 0 : r.prompt_tokens) != null ? a : NaN,
completionTokens: (c = (l = f.usage) == null ? void 0 : l.completion_tokens) != null ? c : NaN
},
rawCall: { rawPrompt: m, rawSettings: y },
rawResponse: { headers: d, body: g },
request: { body: JSON.stringify(h) },
response: Fu(f),
warnings: u,
logprobs: Mg(_.logprobs),
providerMetadata: E
};
}
async doStream(n) {
if (this.settings.simulateStreaming) {
const y = await this.doGenerate(n);
return {
stream: new ReadableStream({
start(A) {
if (A.enqueue({ type: "response-metadata", ...y.response }), y.text && A.enqueue({
type: "text-delta",
textDelta: y.text
}), y.toolCalls)
for (const S of y.toolCalls)
A.enqueue({
type: "tool-call-delta",
toolCallType: "function",
toolCallId: S.toolCallId,
toolName: S.toolName,
argsTextDelta: S.args
}), A.enqueue({
type: "tool-call",
...S
});
A.enqueue({
type: "finish",
finishReason: y.finishReason,
usage: y.usage,
logprobs: y.logprobs,
providerMetadata: y.providerMetadata
}), A.close();
}
}),
rawCall: y.rawCall,
rawResponse: y.rawResponse,
warnings: y.warnings
};
}
const { args: t, warnings: e } = this.getArgs(n), s = {
...t,
stream: !0,
// only include stream_options when in strict compatibility mode:
stream_options: this.config.compatibility === "strict" ? { include_usage: !0 } : void 0
}, { responseHeaders: i, value: r } = await qo({
url: this.config.url({
path: "/chat/completions",
modelId: this.modelId
}),
headers: Vo(this.config.headers(), n.headers),
body: s,
failedResponseHandler: Yo,
successfulResponseHandler: Hm(
hE
),
abortSignal: n.abortSignal,
fetch: this.config.fetch
}), { messages: a, ...l } = t, c = [];
let h = "unknown", u = {
promptTokens: void 0,
completionTokens: void 0
}, d, f = !0;
const { useLegacyFunctionCalling: g } = this.settings, m = { openai: {} };
return {
stream: r.pipeThrough(
new TransformStream({
transform(y, _) {
var A, S, E, x, T, k, C, P, j, Z, V, dt;
if (!y.success) {
h = "error", _.enqueue({ type: "error", error: y.error });
return;
}
const gt = y.value;
if ("error" in gt) {
h = "error", _.enqueue({ type: "error", error: gt.error });
return;
}
if (f && (f = !1, _.enqueue({
type: "response-metadata",
...Fu(gt)
})), gt.usage != null) {
const {
prompt_tokens: ot,
completion_tokens: kt,
prompt_tokens_details: yt,
completion_tokens_details: Q
} = gt.usage;
u = {
promptTokens: ot ?? void 0,
completionTokens: kt ?? void 0
}, (Q == null ? void 0 : Q.reasoning_tokens) != null && (m.openai.reasoningTokens = Q == null ? void 0 : Q.reasoning_tokens), (Q == null ? void 0 : Q.accepted_prediction_tokens) != null && (m.openai.acceptedPredictionTokens = Q == null ? void 0 : Q.accepted_prediction_tokens), (Q == null ? void 0 : Q.rejected_prediction_tokens) != null && (m.openai.rejectedPredictionTokens = Q == null ? void 0 : Q.rejected_prediction_tokens), (yt == null ? void 0 : yt.cached_tokens) != null && (m.openai.cachedPromptTokens = yt == null ? void 0 : yt.cached_tokens);
}
const Y = gt.choices[0];
if ((Y == null ? void 0 : Y.finish_reason) != null && (h = Du(Y.finish_reason)), (Y == null ? void 0 : Y.delta) == null)
return;
const xt = Y.delta;
xt.content != null && _.enqueue({
type: "text-delta",
textDelta: xt.content
});
const M = Mg(
Y == null ? void 0 : Y.logprobs
);
M != null && M.length && (d === void 0 && (d = []), d.push(...M));
const z = g && xt.function_call != null ? [
{
type: "function",
id: sl(),
function: xt.function_call,
index: 0
}
] : xt.tool_calls;
if (z != null)
for (const ot of z) {
const kt = ot.index;
if (c[kt] == null) {
if (ot.type !== "function")
throw new Pd({
data: ot,
message: "Expected 'function' type."
});
if (ot.id == null)
throw new Pd({
data: ot,
message: "Expected 'id' to be a string."
});
if (((A = ot.function) == null ? void 0 : A.name) == null)
throw new Pd({
data: ot,
message: "Expected 'function.name' to be a string."
});
c[kt] = {
id: ot.id,
type: "function",
function: {
name: ot.function.name,
arguments: (S = ot.function.arguments) != null ? S : ""
},
hasFinished: !1
};
const Q = c[kt];
((E = Q.function) == null ? void 0 : E.name) != null && ((x = Q.function) == null ? void 0 : x.arguments) != null && (Q.function.arguments.length > 0 && _.enqueue({
type: "tool-call-delta",
toolCallType: "function",
toolCallId: Q.id,
toolName: Q.function.name,
argsTextDelta: Q.function.arguments
}), yg(Q.function.arguments) && (_.enqueue({
type: "tool-call",
toolCallType: "function",
toolCallId: (T = Q.id) != null ? T : sl(),
toolName: Q.function.name,
args: Q.function.arguments
}), Q.hasFinished = !0));
continue;
}
const yt = c[kt];
yt.hasFinished || (((k = ot.function) == null ? void 0 : k.arguments) != null && (yt.function.arguments += (P = (C = ot.function) == null ? void 0 : C.arguments) != null ? P : ""), _.enqueue({
type: "tool-call-delta",
toolCallType: "function",
toolCallId: yt.id,
toolName: yt.function.name,
argsTextDelta: (j = ot.function.arguments) != null ? j : ""
}), ((Z = yt.function) == null ? void 0 : Z.name) != null && ((V = yt.function) == null ? void 0 : V.arguments) != null && yg(yt.function.arguments) && (_.enqueue({
type: "tool-call",
toolCallType: "function",
toolCallId: (dt = yt.id) != null ? dt : sl(),
toolName: yt.function.name,
args: yt.function.arguments
}), yt.hasFinished = !0));
}
},
flush(y) {
var _, A;
y.enqueue({
type: "finish",
finishReason: h,
logprobs: d,
usage: {
promptTokens: (_ = u.promptTokens) != null ? _ : NaN,
completionTokens: (A = u.completionTokens) != null ? A : NaN
},
...m != null ? { providerMetadata: m } : {}
});
}
})
),
rawCall: { rawPrompt: a, rawSettings: l },
rawResponse: { headers: i },
request: { body: JSON.stringify(s) },
warnings: e
};
}
}, Dy = w.object({
prompt_tokens: w.number().nullish(),
completion_tokens: w.number().nullish(),
prompt_tokens_details: w.object({
cached_tokens: w.number().nullish()
}).nullish(),
completion_tokens_details: w.object({
reasoning_tokens: w.number().nullish(),
accepted_prediction_tokens: w.number().nullish(),
rejected_prediction_tokens: w.number().nullish()
}).nullish()
}).nullish(), cE = w.object({
id: w.string().nullish(),
created: w.number().nullish(),
model: w.string().nullish(),
choices: w.array(
w.object({
message: w.object({
role: w.literal("assistant").nullish(),
content: w.string().nullish(),
function_call: w.object({
arguments: w.string(),
name: w.string()
}).nullish(),
tool_calls: w.array(
w.object({
id: w.string().nullish(),
type: w.literal("function"),
function: w.object({
name: w.string(),
arguments: w.string()
})
})
).nullish()
}),
index: w.number(),
logprobs: w.object({
content: w.array(
w.object({
token: w.string(),
logprob: w.number(),
top_logprobs: w.array(
w.object({
token: w.string(),
logprob: w.number()
})
)
})
).nullable()
}).nullish(),
finish_reason: w.string().nullish()
})
),
usage: Dy
}), hE = w.union([
w.object({
id: w.string().nullish(),
created: w.number().nullish(),
model: w.string().nullish(),
choices: w.array(
w.object({
delta: w.object({
role: w.enum(["assistant"]).nullish(),
content: w.string().nullish(),
function_call: w.object({
name: w.string().optional(),
arguments: w.string().optional()
}).nullish(),
tool_calls: w.array(
w.object({
index: w.number(),
id: w.string().nullish(),
type: w.literal("function").optional(),
function: w.object({
name: w.string().nullish(),
arguments: w.string().nullish()
})
})
).nullish()
}).nullish(),
logprobs: w.object({
content: w.array(
w.object({
token: w.string(),
logprob: w.number(),
top_logprobs: w.array(
w.object({
token: w.string(),
logprob: w.number()
})
)
})
).nullable()
}).nullish(),
finish_reason: w.string().nullable().optional(),
index: w.number()
})
),
usage: Dy
}),
jp
]);
function cf(n) {
return n === "o1" || n.startsWith("o1-") || n === "o3" || n.startsWith("o3-");
}
function uE(n) {
return n.startsWith("gpt-4o-audio-preview");
}
function Ng(n) {
var t, e;
return cf(n) ? (e = (t = dE[n]) == null ? void 0 : t.systemMessageMode) != null ? e : "developer" : "system";
}
var dE = {
"o1-mini": {
systemMessageMode: "remove"
},
"o1-mini-2024-09-12": {
systemMessageMode: "remove"
},
"o1-preview": {
systemMessageMode: "remove"
},
"o1-preview-2024-09-12": {
systemMessageMode: "remove"
},
"o3-mini": {
systemMessageMode: "developer"
},
"o3-mini-2025-01-31": {
systemMessageMode: "developer"
}
};
function fE({
prompt: n,
inputFormat: t,
user: e = "user",
assistant: s = "assistant"
}) {
if (t === "prompt" && n.length === 1 && n[0].role === "user" && n[0].content.length === 1 && n[0].content[0].type === "text")
return { prompt: n[0].content[0].text };
let i = "";
n[0].role === "system" && (i += `${n[0].content}
`, n = n.slice(1));
for (const { role: r, content: a } of n)
switch (r) {
case "system":
throw new Zn({
message: "Unexpected system message in prompt: ${content}",
prompt: n
});
case "user": {
const l = a.map((c) => {
switch (c.type) {
case "text":
return c.text;
case "image":
throw new oe({
functionality: "images"
});
}
}).join("");
i += `${e}:
${l}
`;
break;
}
case "assistant": {
const l = a.map((c) => {
switch (c.type) {
case "text":
return c.text;
case "tool-call":
throw new oe({
functionality: "tool-call messages"
});
}
}).join("");
i += `${s}:
${l}
`;
break;
}
case "tool":
throw new oe({
functionality: "tool messages"
});
default: {
const l = r;
throw new Error(`Unsupported role: ${l}`);
}
}
return i += `${s}:
`, {
prompt: i,
stopSequences: [`
${e}:`]
};
}
function Og(n) {
return n == null ? void 0 : n.tokens.map((t, e) => ({
token: t,
logprob: n.token_logprobs[e],
topLogprobs: n.top_logprobs ? Object.entries(n.top_logprobs[e]).map(
([s, i]) => ({
token: s,
logprob: i
})
) : []
}));
}
var pE = class {
constructor(n, t, e) {
this.specificationVersion = "v1", this.defaultObjectGenerationMode = void 0, this.modelId = n, this.settings = t, this.config = e;
}
get provider() {
return this.config.provider;
}
getArgs({
mode: n,
inputFormat: t,
prompt: e,
maxTokens: s,
temperature: i,
topP: r,
topK: a,
frequencyPenalty: l,
presencePenalty: c,
stopSequences: h,
responseFormat: u,
seed: d
}) {
var f;
const g = n.type, m = [];
a != null && m.push({
type: "unsupported-setting",
setting: "topK"
}), u != null && u.type !== "text" && m.push({
type: "unsupported-setting",
setting: "responseFormat",
details: "JSON response format is not supported."
});
const { prompt: y, stopSequences: _ } = fE({ prompt: e, inputFormat: t }), A = [..._ ?? [], ...h ?? []], S = {
// model id:
model: this.modelId,
// model specific settings:
echo: this.settings.echo,
logit_bias: this.settings.logitBias,
logprobs: typeof this.settings.logprobs == "number" ? this.settings.logprobs : typeof this.settings.logprobs == "boolean" && this.settings.logprobs ? 0 : void 0,
suffix: this.settings.suffix,
user: this.settings.user,
// standardized settings:
max_tokens: s,
temperature: i,
top_p: r,
frequency_penalty: l,
presence_penalty: c,
seed: d,
// prompt:
prompt: y,
// stop sequences:
stop: A.length > 0 ? A : void 0
};
switch (g) {
case "regular": {
if ((f = n.tools) != null && f.length)
throw new oe({
functionality: "tools"
});
if (n.toolChoice)
throw new oe({
functionality: "toolChoice"
});
return { args: S, warnings: m };
}
case "object-json":
throw new oe({
functionality: "object-json mode"
});
case "object-tool":
throw new oe({
functionality: "object-tool mode"
});
default: {
const E = g;
throw new Error(`Unsupported type: ${E}`);
}
}
}
async doGenerate(n) {
const { args: t, warnings: e } = this.getArgs(n), {
responseHeaders: s,
value: i,
rawValue: r
} = await qo({
url: this.config.url({
path: "/completions",
modelId: this.modelId
}),
headers: Vo(this.config.headers(), n.headers),
body: t,
failedResponseHandler: Yo,
successfulResponseHandler: pd(
gE
),
abortSignal: n.abortSignal,
fetch: this.config.fetch
}), { prompt: a, ...l } = t, c = i.choices[0];
return {
text: c.text,
usage: {
promptTokens: i.usage.prompt_tokens,
completionTokens: i.usage.completion_tokens
},
finishReason: Du(c.finish_reason),
logprobs: Og(c.logprobs),
rawCall: { rawPrompt: a, rawSettings: l },
rawResponse: { headers: s, body: r },
response: Fu(i),
warnings: e,
request: { body: JSON.stringify(t) }
};
}
async doStream(n) {
const { args: t, warnings: e } = this.getArgs(n), s = {
...t,
stream: !0,
// only include stream_options when in strict compatibility mode:
stream_options: this.config.compatibility === "strict" ? { include_usage: !0 } : void 0
}, { responseHeaders: i, value: r } = await qo({
url: this.config.url({
path: "/completions",
modelId: this.modelId
}),
headers: Vo(this.config.headers(), n.headers),
body: s,
failedResponseHandler: Yo,
successfulResponseHandler: Hm(
mE
),
abortSignal: n.abortSignal,
fetch: this.config.fetch
}), { prompt: a, ...l } = t;
let c = "unknown", h = {
promptTokens: Number.NaN,
completionTokens: Number.NaN
}, u, d = !0;
return {
stream: r.pipeThrough(
new TransformStream({
transform(f, g) {
if (!f.success) {
c = "error", g.enqueue({ type: "error", error: f.error });
return;
}
const m = f.value;
if ("error" in m) {
c = "error", g.enqueue({ type: "error", error: m.error });
return;
}
d && (d = !1, g.enqueue({
type: "response-metadata",
...Fu(m)
})), m.usage != null && (h = {
promptTokens: m.usage.prompt_tokens,
completionTokens: m.usage.completion_tokens
});
const y = m.choices[0];
(y == null ? void 0 : y.finish_reason) != null && (c = Du(y.finish_reason)), (y == null ? void 0 : y.text) != null && g.enqueue({
type: "text-delta",
textDelta: y.text
});
const _ = Og(
y == null ? void 0 : y.logprobs
);
_ != null && _.length && (u === void 0 && (u = []), u.push(..._));
},
flush(f) {
f.enqueue({
type: "finish",
finishReason: c,
logprobs: u,
usage: h
});
}
})
),
rawCall: { rawPrompt: a, rawSettings: l },
rawResponse: { headers: i },
warnings: e,
request: { body: JSON.stringify(s) }
};
}
}, gE = w.object({
id: w.string().nullish(),
created: w.number().nullish(),
model: w.string().nullish(),
choices: w.array(
w.object({
text: w.string(),
finish_reason: w.string(),
logprobs: w.object({
tokens: w.array(w.string()),
token_logprobs: w.array(w.number()),
top_logprobs: w.array(w.record(w.string(), w.number())).nullable()
}).nullish()
})
),
usage: w.object({
prompt_tokens: w.number(),
completion_tokens: w.number()
})
}), mE = w.union([
w.object({
id: w.string().nullish(),
created: w.number().nullish(),
model: w.string().nullish(),
choices: w.array(
w.object({
text: w.string(),
finish_reason: w.string().nullish(),
index: w.number(),
logprobs: w.object({
tokens: w.array(w.string()),
token_logprobs: w.array(w.number()),
top_logprobs: w.array(w.record(w.string(), w.number())).nullable()
}).nullish()
})
),
usage: w.object({
prompt_tokens: w.number(),
completion_tokens: w.number()
}).nullish()
}),
jp
]), yE = class {
constructor(n, t, e) {
this.specificationVersion = "v1", this.modelId = n, this.settings = t, this.config = e;
}
get provider() {
return this.config.provider;
}
get maxEmbeddingsPerCall() {
var n;
return (n = this.settings.maxEmbeddingsPerCall) != null ? n : 2048;
}
get supportsParallelCalls() {
var n;
return (n = this.settings.supportsParallelCalls) != null ? n : !0;
}
async doEmbed({
values: n,
headers: t,
abortSignal: e
}) {
if (n.length > this.maxEmbeddingsPerCall)
throw new w_({
provider: this.provider,
modelId: this.modelId,
maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,
values: n
});
const { responseHeaders: s, value: i } = await qo({
url: this.config.url({
path: "/embeddings",
modelId: this.modelId
}),
headers: Vo(this.config.headers(), t),
body: {
model: this.modelId,
input: n,
encoding_format: "float",
dimensions: this.settings.dimensions,
user: this.settings.user
},
failedResponseHandler: Yo,
successfulResponseHandler: pd(
bE
),
abortSignal: e,
fetch: this.config.fetch
});
return {
embeddings: i.data.map((r) => r.embedding),
usage: i.usage ? { tokens: i.usage.prompt_tokens } : void 0,
rawResponse: { headers: s }
};
}
}, bE = w.object({
data: w.array(w.object({ embedding: w.array(w.number()) })),
usage: w.object({ prompt_tokens: w.number() }).nullish()
}), vE = {
"dall-e-3": 1,
"dall-e-2": 10
}, _E = class {
constructor(n, t, e) {
this.modelId = n, this.settings = t, this.config = e, this.specificationVersion = "v1";
}
get maxImagesPerCall() {
var n, t;
return (t = (n = this.settings.maxImagesPerCall) != null ? n : vE[this.modelId]) != null ? t : 1;
}
get provider() {
return this.config.provider;
}
async doGenerate({
prompt: n,
n: t,
size: e,
aspectRatio: s,
seed: i,
providerOptions: r,
headers: a,
abortSignal: l
}) {
var c, h, u, d;
const f = [];
s != null && f.push({
type: "unsupported-setting",
setting: "aspectRatio",
details: "This model does not support aspect ratio. Use `size` instead."
}), i != null && f.push({ type: "unsupported-setting", setting: "seed" });
const g = (u = (h = (c = this.config._internal) == null ? void 0 : c.currentDate) == null ? void 0 : h.call(c)) != null ? u : /* @__PURE__ */ new Date(), { value: m, responseHeaders: y } = await qo({
url: this.config.url({
path: "/images/generations",
modelId: this.modelId
}),
headers: Vo(this.config.headers(), a),
body: {
model: this.modelId,
prompt: n,
n: t,
size: e,
...(d = r.openai) != null ? d : {},
response_format: "b64_json"
},
failedResponseHandler: Yo,
successfulResponseHandler: pd(
AE
),
abortSignal: l,
fetch: this.config.fetch
});
return {
images: m.data.map((_) => _.b64_json),
warnings: f,
response: {
timestamp: g,
modelId: this.modelId,
headers: y
}
};
}
}, AE = w.object({
data: w.array(w.object({ b64_json: w.string() }))
});
function Fy(n = {}) {
var t, e, s;
const i = (t = J_(n.baseURL)) != null ? t : "https://api.openai.com/v1", r = (e = n.compatibility) != null ? e : "compatible", a = (s = n.name) != null ? s : "openai", l = () => ({
Authorization: `Bearer ${j_({
apiKey: n.apiKey,
environmentVariableName: "OPENAI_API_KEY",
description: "OpenAI"
})}`,
"OpenAI-Organization": n.organization,
"OpenAI-Project": n.project,
...n.headers
}), c = (m, y = {}) => new lE(m, y, {
provider: `${a}.chat`,
url: ({ path: _ }) => `${i}${_}`,
headers: l,
compatibility: r,
fetch: n.fetch
}), h = (m, y = {}) => new pE(m, y, {
provider: `${a}.completion`,
url: ({ path: _ }) => `${i}${_}`,
headers: l,
compatibility: r,
fetch: n.fetch
}), u = (m, y = {}) => new yE(m, y, {
provider: `${a}.embedding`,
url: ({ path: _ }) => `${i}${_}`,
headers: l,
fetch: n.fetch
}), d = (m, y = {}) => new _E(m, y, {
provider: `${a}.image`,
url: ({ path: _ }) => `${i}${_}`,
headers: l,
fetch: n.fetch
}), f = (m, y) => {
if (new.target)
throw new Error(
"The OpenAI model function cannot be called with the new keyword."
);
return m === "gpt-3.5-turbo-instruct" ? h(
m,
y
) : c(m, y);
}, g = function(m, y) {
return f(m, y);
};
return g.languageModel = f, g.chat = c, g.completion = h, g.embedding = u, g.textEmbedding = u, g.textEmbeddingModel = u, g.image = d, g.imageModel = d, g;
}
Fy({
compatibility: "strict"
// strict for OpenAI API
});
var Rl = {};
Rl.d = (n, t) => {
for (var e in t)
Rl.o(t, e) && !Rl.o(n, e) && Object.defineProperty(n, e, { enumerable: !0, get: t[e] });
};
Rl.o = (n, t) => Object.prototype.hasOwnProperty.call(n, t);
var X = globalThis.pdfjsLib = {};
Rl.d(X, {
AbortException: () => (
/* reexport */
Bn
),
AnnotationEditorLayer: () => (
/* reexport */
bp
),
AnnotationEditorParamsType: () => (
/* reexport */
lt
),
AnnotationEditorType: () => (
/* reexport */
et
),
AnnotationEditorUIManager: () => (
/* reexport */
pa
),
AnnotationLayer: () => (
/* reexport */
mT
),
AnnotationMode: () => (
/* reexport */
sn
),
ColorPicker: () => (
/* reexport */
zu
),
DOMSVGFactory: () => (
/* reexport */
Xp
),
DrawLayer: () => (
/* reexport */
Ap
),
FeatureTest: () => (
/* reexport */
Me
),
GlobalWorkerOptions: () => (
/* reexport */
qi
),
ImageKind: () => (
/* reexport */
Gh
),
InvalidPDFException: () => (
/* reexport */
uf
),
MissingPDFException: () => (
/* reexport */
ic
),
OPS: () => (
/* reexport */
Ss
),
OutputScale: () => (
/* reexport */
ff
),
PDFDataRangeTransport: () => (
/* reexport */
jb
),
PDFDateString: () => (
/* reexport */
Vp
),
PDFWorker: () => (
/* reexport */
La
),
PasswordResponses: () => (
/* reexport */
xE
),
PermissionFlag: () => (
/* reexport */
EE
),
PixelsPerInch: () => (
/* reexport */
Hn
),
RenderingCancelledException: () => (
/* reexport */
Up
),
TextLayer: () => (
/* reexport */
nc
),
TouchManager: () => (
/* reexport */
Hu
),
UnexpectedResponseException: () => (
/* reexport */
$u
),
Util: () => (
/* reexport */
U
),
VerbosityLevel: () => (
/* reexport */
yd
),
XfaLayer: () => (
/* reexport */
Hb
),
build: () => (
/* reexport */
Yx
),
createValidAbsoluteUrl: () => (
/* reexport */
IE
),
fetchData: () => (
/* reexport */
Ad
),
getDocument: () => (
/* reexport */
Hx
),
getFilenameFromUrl: () => (
/* reexport */
$E
),
getPdfFilenameFromUrl: () => (
/* reexport */
jE
),
getXfaPageViewport: () => (
/* reexport */
BE
),
isDataScheme: () => (
/* reexport */
wd
),
isPdfFile: () => (
/* reexport */
zp
),
noContextMenu: () => (
/* reexport */
Hs
),
normalizeUnicode: () => (
/* reexport */
LE
),
setLayerDimensions: () => (
/* reexport */
fa
),
shadow: () => (
/* reexport */
at
),
stopEvent: () => (
/* reexport */
ns
),
version: () => (
/* reexport */
Zx
)
});
const Se = typeof process == "object" && process + "" == "[object process]" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== "browser"), $y = [1, 0, 0, 1, 0, 0], hf = [1e-3, 0, 0, 1e-3, 0, 0], wE = 1e7, zd = 1.35, ss = {
ANY: 1,
DISPLAY: 2,
PRINT: 4,
ANNOTATIONS_FORMS: 16,
ANNOTATIONS_STORAGE: 32,
ANNOTATIONS_DISABLE: 64,
IS_EDITING: 128,
OPLIST: 256
}, sn = {
DISABLE: 0,
ENABLE: 1,
ENABLE_FORMS: 2,
ENABLE_STORAGE: 3
}, SE = "pdfjs_internal_editor_", et = {
DISABLE: -1,
NONE: 0,
FREETEXT: 3,
HIGHLIGHT: 9,
STAMP: 13,
INK: 15
}, lt = {
RESIZE: 1,
CREATE: 2,
FREETEXT_SIZE: 11,
FREETEXT_COLOR: 12,
FREETEXT_OPACITY: 13,
INK_COLOR: 21,
INK_THICKNESS: 22,
INK_OPACITY: 23,
HIGHLIGHT_COLOR: 31,
HIGHLIGHT_DEFAULT_COLOR: 32,
HIGHLIGHT_THICKNESS: 33,
HIGHLIGHT_FREE: 34,
HIGHLIGHT_SHOW_ALL: 35,
DRAW_STEP: 41
}, EE = {
PRINT: 4,
MODIFY_CONTENTS: 8,
COPY: 16,
MODIFY_ANNOTATIONS: 32,
FILL_INTERACTIVE_FORMS: 256,
COPY_FOR_ACCESSIBILITY: 512,
ASSEMBLE: 1024,
PRINT_HIGH_QUALITY: 2048
}, ge = {
FILL: 0,
STROKE: 1,
FILL_STROKE: 2,
INVISIBLE: 3,
FILL_STROKE_MASK: 3,
ADD_TO_PATH_FLAG: 4
}, Gh = {
GRAYSCALE_1BPP: 1,
RGB_24BPP: 2,
RGBA_32BPP: 3
}, Xt = {
TEXT: 1,
LINK: 2,
FREETEXT: 3,
LINE: 4,
SQUARE: 5,
CIRCLE: 6,
POLYGON: 7,
POLYLINE: 8,
HIGHLIGHT: 9,
UNDERLINE: 10,
SQUIGGLY: 11,
STRIKEOUT: 12,
STAMP: 13,
CARET: 14,
INK: 15,
POPUP: 16,
FILEATTACHMENT: 17,
WIDGET: 20
}, nl = {
SOLID: 1,
DASHED: 2,
BEVELED: 3,
INSET: 4,
UNDERLINE: 5
}, yd = {
ERRORS: 0,
WARNINGS: 1,
INFOS: 5
}, Ss = {
dependency: 1,
setLineWidth: 2,
setLineCap: 3,
setLineJoin: 4,
setMiterLimit: 5,
setDash: 6,
setRenderingIntent: 7,
setFlatness: 8,
setGState: 9,
save: 10,
restore: 11,
transform: 12,
moveTo: 13,
lineTo: 14,
curveTo: 15,
curveTo2: 16,
curveTo3: 17,
closePath: 18,
rectangle: 19,
stroke: 20,
closeStroke: 21,
fill: 22,
eoFill: 23,
fillStroke: 24,
eoFillStroke: 25,
closeFillStroke: 26,
closeEOFillStroke: 27,
endPath: 28,
clip: 29,
eoClip: 30,
beginText: 31,
endText: 32,
setCharSpacing: 33,
setWordSpacing: 34,
setHScale: 35,
setLeading: 36,
setFont: 37,
setTextRenderingMode: 38,
setTextRise: 39,
moveText: 40,
setLeadingMoveText: 41,
setTextMatrix: 42,
nextLine: 43,
showText: 44,
showSpacedText: 45,
nextLineShowText: 46,
nextLineSetSpacingShowText: 47,
setCharWidth: 48,
setCharWidthAndBounds: 49,
setStrokeColorSpace: 50,
setFillColorSpace: 51,
setStrokeColor: 52,
setStrokeColorN: 53,
setFillColor: 54,
setFillColorN: 55,
setStrokeGray: 56,
setFillGray: 57,
setStrokeRGBColor: 58,
setFillRGBColor: 59,
setStrokeCMYKColor: 60,
setFillCMYKColor: 61,
shadingFill: 62,
beginInlineImage: 63,
beginImageData: 64,
endInlineImage: 65,
paintXObject: 66,
markPoint: 67,
markPointProps: 68,
beginMarkedContent: 69,
beginMarkedContentProps: 70,
endMarkedContent: 71,
beginCompat: 72,
endCompat: 73,
paintFormXObjectBegin: 74,
paintFormXObjectEnd: 75,
beginGroup: 76,
endGroup: 77,
beginAnnotation: 80,
endAnnotation: 81,
paintImageMaskXObject: 83,
paintImageMaskXObjectGroup: 84,
paintImageXObject: 85,
paintInlineImageXObject: 86,
paintInlineImageXObjectGroup: 87,
paintImageXObjectRepeat: 88,
paintImageMaskXObjectRepeat: 89,
paintSolidColorImageMask: 90,
constructPath: 91,
setStrokeTransparent: 92,
setFillTransparent: 93
}, xE = {
NEED_PASSWORD: 1,
INCORRECT_PASSWORD: 2
};
let bd = yd.WARNINGS;
function TE(n) {
Number.isInteger(n) && (bd = n);
}
function CE() {
return bd;
}
function vd(n) {
bd >= yd.INFOS && console.log(`Info: ${n}`);
}
function st(n) {
bd >= yd.WARNINGS && console.log(`Warning: ${n}`);
}
function Et(n) {
throw new Error(n);
}
function qt(n, t) {
n || Et(t);
}
function kE(n) {
switch (n == null ? void 0 : n.protocol) {
case "http:":
case "https:":
case "ftp:":
case "mailto:":
case "tel:":
return !0;
default:
return !1;
}
}
function IE(n, t = null, e = null) {
if (!n)
return null;
try {
if (e && typeof n == "string") {
if (e.addDefaultProtocol && n.startsWith("www.")) {
const i = n.match(/\./g);
(i == null ? void 0 : i.length) >= 2 && (n = `http://${n}`);
}
if (e.tryConvertEncoding)
try {
n = OE(n);
} catch {
}
}
const s = t ? new URL(n, t) : new URL(n);
if (kE(s))
return s;
} catch {
}
return null;
}
function at(n, t, e, s = !1) {
return Object.defineProperty(n, t, {
value: e,
enumerable: !s,
configurable: !0,
writable: !1
}), e;
}
const zn = function() {
function t(e, s) {
this.message = e, this.name = s;
}
return t.prototype = new Error(), t.constructor = t, t;
}();
class Lg extends zn {
constructor(t, e) {
super(t, "PasswordException"), this.code = e;
}
}
class Vd extends zn {
constructor(t, e) {
super(t, "UnknownErrorException"), this.details = e;
}
}
class uf extends zn {
constructor(t) {
super(t, "InvalidPDFException");
}
}
class ic extends zn {
constructor(t) {
super(t, "MissingPDFException");
}
}
class $u extends zn {
constructor(t, e) {
super(t, "UnexpectedResponseException"), this.status = e;
}
}
class RE extends zn {
constructor(t) {
super(t, "FormatError");
}
}
class Bn extends zn {
constructor(t) {
super(t, "AbortException");
}
}
function jy(n) {
(typeof n != "object" || (n == null ? void 0 : n.length) === void 0) && Et("Invalid argument for bytesToString");
const t = n.length, e = 8192;
if (t < e)
return String.fromCharCode.apply(null, n);
const s = [];
for (let i = 0; i < t; i += e) {
const r = Math.min(i + e, t), a = n.subarray(i, r);
s.push(String.fromCharCode.apply(null, a));
}
return s.join("");
}
function _d(n) {
typeof n != "string" && Et("Invalid argument for stringToBytes");
const t = n.length, e = new Uint8Array(t);
for (let s = 0; s < t; ++s)
e[s] = n.charCodeAt(s) & 255;
return e;
}
function PE(n) {
return String.fromCharCode(n >> 24 & 255, n >> 16 & 255, n >> 8 & 255, n & 255);
}
function Bp(n) {
const t = /* @__PURE__ */ Object.create(null);
for (const [e, s] of n)
t[e] = s;
return t;
}
function ME() {
const n = new Uint8Array(4);
return n[0] = 1, new Uint32Array(n.buffer, 0, 1)[0] === 1;
}
function NE() {
try {
return new Function(""), !0;
} catch {
return !1;
}
}
class Me {
static get isLittleEndian() {
return at(this, "isLittleEndian", ME());
}
static get isEvalSupported() {
return at(this, "isEvalSupported", NE());
}
static get isOffscreenCanvasSupported() {
return at(this, "isOffscreenCanvasSupported", typeof OffscreenCanvas < "u");
}
static get isImageDecoderSupported() {
return at(this, "isImageDecoderSupported", typeof ImageDecoder < "u");
}
static get platform() {
return typeof navigator < "u" && typeof (navigator == null ? void 0 : navigator.platform) == "string" ? at(this, "platform", {
isMac: navigator.platform.includes("Mac"),
isWindows: navigator.platform.includes("Win"),
isFirefox: typeof (navigator == null ? void 0 : navigator.userAgent) == "string" && navigator.userAgent.includes("Firefox")
}) : at(this, "platform", {
isMac: !1,
isWindows: !1,
isFirefox: !1
});
}
static get isCSSRoundSupported() {
var t, e;
return at(this, "isCSSRoundSupported", (e = (t = globalThis.CSS) == null ? void 0 : t.supports) == null ? void 0 : e.call(t, "width: round(1.5px, 1px)"));
}
}
const Gd = Array.from(Array(256).keys(), (n) => n.toString(16).padStart(2, "0"));
var Wi, qh, df;
class U {
static makeHexColor(t, e, s) {
return `#${Gd[t]}${Gd[e]}${Gd[s]}`;
}
static scaleMinMax(t, e) {
let s;
t[0] ? (t[0] < 0 && (s = e[0], e[0] = e[2], e[2] = s), e[0] *= t[0], e[2] *= t[0], t[3] < 0 && (s = e[1], e[1] = e[3], e[3] = s), e[1] *= t[3], e[3] *= t[3]) : (s = e[0], e[0] = e[1], e[1] = s, s = e[2], e[2] = e[3], e[3] = s, t[1] < 0 && (s = e[1], e[1] = e[3], e[3] = s), e[1] *= t[1], e[3] *= t[1], t[2] < 0 && (s = e[0], e[0] = e[2], e[2] = s), e[0] *= t[2], e[2] *= t[2]), e[0] += t[4], e[1] += t[5], e[2] += t[4], e[3] += t[5];
}
static transform(t, e) {
return [t[0] * e[0] + t[2] * e[1], t[1] * e[0] + t[3] * e[1], t[0] * e[2] + t[2] * e[3], t[1] * e[2] + t[3] * e[3], t[0] * e[4] + t[2] * e[5] + t[4], t[1] * e[4] + t[3] * e[5] + t[5]];
}
static applyTransform(t, e) {
const s = t[0] * e[0] + t[1] * e[2] + e[4], i = t[0] * e[1] + t[1] * e[3] + e[5];
return [s, i];
}
static applyInverseTransform(t, e) {
const s = e[0] * e[3] - e[1] * e[2], i = (t[0] * e[3] - t[1] * e[2] + e[2] * e[5] - e[4] * e[3]) / s, r = (-t[0] * e[1] + t[1] * e[0] + e[4] * e[1] - e[5] * e[0]) / s;
return [i, r];
}
static getAxialAlignedBoundingBox(t, e) {
const s = this.applyTransform(t, e), i = this.applyTransform(t.slice(2, 4), e), r = this.applyTransform([t[0], t[3]], e), a = this.applyTransform([t[2], t[1]], e);
return [Math.min(s[0], i[0], r[0], a[0]), Math.min(s[1], i[1], r[1], a[1]), Math.max(s[0], i[0], r[0], a[0]), Math.max(s[1], i[1], r[1], a[1])];
}
static inverseTransform(t) {
const e = t[0] * t[3] - t[1] * t[2];
return [t[3] / e, -t[1] / e, -t[2] / e, t[0] / e, (t[2] * t[5] - t[4] * t[3]) / e, (t[4] * t[1] - t[5] * t[0]) / e];
}
static singularValueDecompose2dScale(t) {
const e = [t[0], t[2], t[1], t[3]], s = t[0] * e[0] + t[1] * e[2], i = t[0] * e[1] + t[1] * e[3], r = t[2] * e[0] + t[3] * e[2], a = t[2] * e[1] + t[3] * e[3], l = (s + a) / 2, c = Math.sqrt((s + a) ** 2 - 4 * (s * a - r * i)) / 2, h = l + c || 1, u = l - c || 1;
return [Math.sqrt(h), Math.sqrt(u)];
}
static normalizeRect(t) {
const e = t.slice(0);
return t[0] > t[2] && (e[0] = t[2], e[2] = t[0]), t[1] > t[3] && (e[1] = t[3], e[3] = t[1]), e;
}
static intersect(t, e) {
const s = Math.max(Math.min(t[0], t[2]), Math.min(e[0], e[2])), i = Math.min(Math.max(t[0], t[2]), Math.max(e[0], e[2]));
if (s > i)
return null;
const r = Math.max(Math.min(t[1], t[3]), Math.min(e[1], e[3])), a = Math.min(Math.max(t[1], t[3]), Math.max(e[1], e[3]));
return r > a ? null : [s, r, i, a];
}
static bezierBoundingBox(t, e, s, i, r, a, l, c, h) {
return h ? (h[0] = Math.min(h[0], t, l), h[1] = Math.min(h[1], e, c), h[2] = Math.max(h[2], t, l), h[3] = Math.max(h[3], e, c)) : h = [Math.min(t, l), Math.min(e, c), Math.max(t, l), Math.max(e, c)], v(this, Wi, df).call(this, t, s, r, l, e, i, a, c, 3 * (-t + 3 * (s - r) + l), 6 * (t - 2 * s + r), 3 * (s - t), h), v(this, Wi, df).call(this, t, s, r, l, e, i, a, c, 3 * (-e + 3 * (i - a) + c), 6 * (e - 2 * i + a), 3 * (i - e), h), h;
}
}
Wi = new WeakSet(), qh = function(t, e, s, i, r, a, l, c, h, u) {
if (h <= 0 || h >= 1)
return;
const d = 1 - h, f = h * h, g = f * h, m = d * (d * (d * t + 3 * h * e) + 3 * f * s) + g * i, y = d * (d * (d * r + 3 * h * a) + 3 * f * l) + g * c;
u[0] = Math.min(u[0], m), u[1] = Math.min(u[1], y), u[2] = Math.max(u[2], m), u[3] = Math.max(u[3], y);
}, df = function(t, e, s, i, r, a, l, c, h, u, d, f) {
if (Math.abs(h) < 1e-12) {
Math.abs(u) >= 1e-12 && v(this, Wi, qh).call(this, t, e, s, i, r, a, l, c, -d / u, f);
return;
}
const g = u ** 2 - 4 * d * h;
if (g < 0)
return;
const m = Math.sqrt(g), y = 2 * h;
v(this, Wi, qh).call(this, t, e, s, i, r, a, l, c, (-u + m) / y, f), v(this, Wi, qh).call(this, t, e, s, i, r, a, l, c, (-u - m) / y, f);
}, b(U, Wi);
function OE(n) {
return decodeURIComponent(escape(n));
}
let qd = null, Dg = null;
function LE(n) {
return qd || (qd = /([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc-\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa-\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu, Dg = /* @__PURE__ */ new Map([["ſt", "ſt"]])), n.replaceAll(qd, (t, e, s) => e ? e.normalize("NFKC") : Dg.get(s));
}
function DE() {
if (typeof crypto.randomUUID == "function")
return crypto.randomUUID();
const n = new Uint8Array(32);
return crypto.getRandomValues(n), jy(n);
}
const Hp = "pdfjs_internal_id_";
function FE(n) {
return Uint8Array.prototype.toBase64 ? n.toBase64() : btoa(jy(n));
}
typeof Promise.try != "function" && (Promise.try = function(n, ...t) {
return new Promise((e) => {
e(n(...t));
});
});
const gi = "http://www.w3.org/2000/svg", Qn = class Qn {
};
G(Qn, "CSS", 96), G(Qn, "PDF", 72), G(Qn, "PDF_TO_CSS_UNITS", Qn.CSS / Qn.PDF);
let Hn = Qn;
async function Ad(n, t = "text") {
if (hl(n, document.baseURI)) {
const e = await fetch(n);
if (!e.ok)
throw new Error(e.statusText);
switch (t) {
case "arraybuffer":
return e.arrayBuffer();
case "blob":
return e.blob();
case "json":
return e.json();
}
return e.text();
}
return new Promise((e, s) => {
const i = new XMLHttpRequest();
i.open("GET", n, !0), i.responseType = t, i.onreadystatechange = () => {
if (i.readyState === XMLHttpRequest.DONE) {
if (i.status === 200 || i.status === 0) {
switch (t) {
case "arraybuffer":
case "blob":
case "json":
e(i.response);
return;
}
e(i.responseText);
return;
}
s(new Error(i.statusText));
}
}, i.send(null);
});
}
class Nh {
constructor({
viewBox: t,
userUnit: e,
scale: s,
rotation: i,
offsetX: r = 0,
offsetY: a = 0,
dontFlip: l = !1
}) {
this.viewBox = t, this.userUnit = e, this.scale = s, this.rotation = i, this.offsetX = r, this.offsetY = a, s *= e;
const c = (t[2] + t[0]) / 2, h = (t[3] + t[1]) / 2;
let u, d, f, g;
switch (i %= 360, i < 0 && (i += 360), i) {
case 180:
u = -1, d = 0, f = 0, g = 1;
break;
case 90:
u = 0, d = 1, f = 1, g = 0;
break;
case 270:
u = 0, d = -1, f = -1, g = 0;
break;
case 0:
u = 1, d = 0, f = 0, g = -1;
break;
default:
throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.");
}
l && (f = -f, g = -g);
let m, y, _, A;
u === 0 ? (m = Math.abs(h - t[1]) * s + r, y = Math.abs(c - t[0]) * s + a, _ = (t[3] - t[1]) * s, A = (t[2] - t[0]) * s) : (m = Math.abs(c - t[0]) * s + r, y = Math.abs(h - t[1]) * s + a, _ = (t[2] - t[0]) * s, A = (t[3] - t[1]) * s), this.transform = [u * s, d * s, f * s, g * s, m - u * s * c - f * s * h, y - d * s * c - g * s * h], this.width = _, this.height = A;
}
get rawDims() {
const {
userUnit: t,
viewBox: e
} = this, s = e.map((i) => i * t);
return at(this, "rawDims", {
pageWidth: s[2] - s[0],
pageHeight: s[3] - s[1],
pageX: s[0],
pageY: s[1]
});
}
clone({
scale: t = this.scale,
rotation: e = this.rotation,
offsetX: s = this.offsetX,
offsetY: i = this.offsetY,
dontFlip: r = !1
} = {}) {
return new Nh({
viewBox: this.viewBox.slice(),
userUnit: this.userUnit,
scale: t,
rotation: e,
offsetX: s,
offsetY: i,
dontFlip: r
});
}
convertToViewportPoint(t, e) {
return U.applyTransform([t, e], this.transform);
}
convertToViewportRectangle(t) {
const e = U.applyTransform([t[0], t[1]], this.transform), s = U.applyTransform([t[2], t[3]], this.transform);
return [e[0], e[1], s[0], s[1]];
}
convertToPdfPoint(t, e) {
return U.applyInverseTransform([t, e], this.transform);
}
}
class Up extends zn {
constructor(t, e = 0) {
super(t, "RenderingCancelledException"), this.extraDelay = e;
}
}
function wd(n) {
const t = n.length;
let e = 0;
for (; e < t && n[e].trim() === ""; )
e++;
return n.substring(e, e + 5).toLowerCase() === "data:";
}
function zp(n) {
return typeof n == "string" && /\.pdf$/i.test(n);
}
function $E(n) {
return [n] = n.split(/[#?]/, 1), n.substring(n.lastIndexOf("/") + 1);
}
function jE(n, t = "document.pdf") {
if (typeof n != "string")
return t;
if (wd(n))
return st('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.'), t;
const e = /^(?:(?:[^:]+:)?\/\/[^/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/, s = /[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i, i = e.exec(n);
let r = s.exec(i[1]) || s.exec(i[2]) || s.exec(i[3]);
if (r && (r = r[0], r.includes("%")))
try {
r = s.exec(decodeURIComponent(r))[0];
} catch {
}
return r || t;
}
class Fg {
constructor() {
G(this, "started", /* @__PURE__ */ Object.create(null));
G(this, "times", []);
}
time(t) {
t in this.started && st(`Timer is already running for ${t}`), this.started[t] = Date.now();
}
timeEnd(t) {
t in this.started || st(`Timer has not been started for ${t}`), this.times.push({
name: t,
start: this.started[t],
end: Date.now()
}), delete this.started[t];
}
toString() {
const t = [];
let e = 0;
for (const {
name: s
} of this.times)
e = Math.max(s.length, e);
for (const {
name: s,
start: i,
end: r
} of this.times)
t.push(`${s.padEnd(e)} ${r - i}ms
`);
return t.join("");
}
}
function hl(n, t) {
try {
const {
protocol: e
} = t ? new URL(n, t) : new URL(n);
return e === "http:" || e === "https:";
} catch {
return !1;
}
}
function Hs(n) {
n.preventDefault();
}
function ns(n) {
n.preventDefault(), n.stopPropagation();
}
var ac;
class Vp {
static toDateObject(t) {
if (!t || typeof t != "string")
return null;
o(this, ac) || p(this, ac, new RegExp("^D:(\\d{4})(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?([Z|+|-])?(\\d{2})?'?(\\d{2})?'?"));
const e = o(this, ac).exec(t);
if (!e)
return null;
const s = parseInt(e[1], 10);
let i = parseInt(e[2], 10);
i = i >= 1 && i <= 12 ? i - 1 : 0;
let r = parseInt(e[3], 10);
r = r >= 1 && r <= 31 ? r : 1;
let a = parseInt(e[4], 10);
a = a >= 0 && a <= 23 ? a : 0;
let l = parseInt(e[5], 10);
l = l >= 0 && l <= 59 ? l : 0;
let c = parseInt(e[6], 10);
c = c >= 0 && c <= 59 ? c : 0;
const h = e[7] || "Z";
let u = parseInt(e[8], 10);
u = u >= 0 && u <= 23 ? u : 0;
let d = parseInt(e[9], 10) || 0;
return d = d >= 0 && d <= 59 ? d : 0, h === "-" ? (a += u, l += d) : h === "+" && (a -= u, l -= d), new Date(Date.UTC(s, i, r, a, l, c));
}
}
ac = new WeakMap(), b(Vp, ac);
function BE(n, {
scale: t = 1,
rotation: e = 0
}) {
const {
width: s,
height: i
} = n.attributes.style, r = [0, 0, parseInt(s), parseInt(i)];
return new Nh({
viewBox: r,
userUnit: 1,
scale: t,
rotation: e
});
}
function Gp(n) {
if (n.startsWith("#")) {
const t = parseInt(n.slice(1), 16);
return [(t & 16711680) >> 16, (t & 65280) >> 8, t & 255];
}
return n.startsWith("rgb(") ? n.slice(4, -1).split(",").map((t) => parseInt(t)) : n.startsWith("rgba(") ? n.slice(5, -1).split(",").map((t) => parseInt(t)).slice(0, 3) : (st(`Not a valid color format: "${n}"`), [0, 0, 0]);
}
function HE(n) {
const t = document.createElement("span");
t.style.visibility = "hidden", document.body.append(t);
for (const e of n.keys()) {
t.style.color = e;
const s = window.getComputedStyle(t).color;
n.set(e, Gp(s));
}
t.remove();
}
function Mt(n) {
const {
a: t,
b: e,
c: s,
d: i,
e: r,
f: a
} = n.getTransform();
return [t, e, s, i, r, a];
}
function Vs(n) {
const {
a: t,
b: e,
c: s,
d: i,
e: r,
f: a
} = n.getTransform().invertSelf();
return [t, e, s, i, r, a];
}
function fa(n, t, e = !1, s = !0) {
if (t instanceof Nh) {
const {
pageWidth: i,
pageHeight: r
} = t.rawDims, {
style: a
} = n, l = Me.isCSSRoundSupported, c = `var(--scale-factor) * ${i}px`, h = `var(--scale-factor) * ${r}px`, u = l ? `round(down, ${c}, var(--scale-round-x, 1px))` : `calc(${c})`, d = l ? `round(down, ${h}, var(--scale-round-y, 1px))` : `calc(${h})`;
!e || t.rotation % 180 === 0 ? (a.width = u, a.height = d) : (a.width = d, a.height = u);
}
s && n.setAttribute("data-main-rotation", t.rotation);
}
class ff {
constructor() {
const t = window.devicePixelRatio || 1;
this.sx = t, this.sy = t;
}
get scaled() {
return this.sx !== 1 || this.sy !== 1;
}
get symmetric() {
return this.sx === this.sy;
}
}
var nn, ir, Es, nr, oc, lc, Wu, By, Ne, Hy, Uy, Wh, zy, gf;
const bi = class bi {
constructor(t) {
b(this, Ne);
b(this, nn, null);
b(this, ir, null);
b(this, Es);
b(this, nr, null);
b(this, oc, null);
p(this, Es, t), o(bi, lc) || p(bi, lc, Object.freeze({
freetext: "pdfjs-editor-remove-freetext-button",
highlight: "pdfjs-editor-remove-highlight-button",
ink: "pdfjs-editor-remove-ink-button",
stamp: "pdfjs-editor-remove-stamp-button"
}));
}
render() {
const t = p(this, nn, document.createElement("div"));
t.classList.add("editToolbar", "hidden"), t.setAttribute("role", "toolbar");
const e = o(this, Es)._uiManager._signal;
t.addEventListener("contextmenu", Hs, {
signal: e
}), t.addEventListener("pointerdown", v(bi, Wu, By), {
signal: e
});
const s = p(this, nr, document.createElement("div"));
s.className = "buttons", t.append(s);
const i = o(this, Es).toolbarPosition;
if (i) {
const {
style: r
} = t, a = o(this, Es)._uiManager.direction === "ltr" ? 1 - i[0] : i[0];
r.insetInlineEnd = `${100 * a}%`, r.top = `calc(${100 * i[1]}% + var(--editor-toolbar-vert-offset))`;
}
return v(this, Ne, zy).call(this), t;
}
get div() {
return o(this, nn);
}
hide() {
var t;
o(this, nn).classList.add("hidden"), (t = o(this, ir)) == null || t.hideDropdown();
}
show() {
var t;
o(this, nn).classList.remove("hidden"), (t = o(this, oc)) == null || t.shown();
}
async addAltText(t) {
const e = await t.render();
v(this, Ne, Wh).call(this, e), o(this, nr).prepend(e, o(this, Ne, gf)), p(this, oc, t);
}
addColorPicker(t) {
p(this, ir, t);
const e = t.renderButton();
v(this, Ne, Wh).call(this, e), o(this, nr).prepend(e, o(this, Ne, gf));
}
remove() {
var t;
o(this, nn).remove(), (t = o(this, ir)) == null || t.destroy(), p(this, ir, null);
}
};
nn = new WeakMap(), ir = new WeakMap(), Es = new WeakMap(), nr = new WeakMap(), oc = new WeakMap(), lc = new WeakMap(), Wu = new WeakSet(), By = function(t) {
t.stopPropagation();
}, Ne = new WeakSet(), Hy = function(t) {
o(this, Es)._focusEventsAllowed = !1, ns(t);
}, Uy = function(t) {
o(this, Es)._focusEventsAllowed = !0, ns(t);
}, Wh = function(t) {
const e = o(this, Es)._uiManager._signal;
t.addEventListener("focusin", v(this, Ne, Hy).bind(this), {
capture: !0,
signal: e
}), t.addEventListener("focusout", v(this, Ne, Uy).bind(this), {
capture: !0,
signal: e
}), t.addEventListener("contextmenu", Hs, {
signal: e
});
}, zy = function() {
const {
editorType: t,
_uiManager: e
} = o(this, Es), s = document.createElement("button");
s.className = "delete", s.tabIndex = 0, s.setAttribute("data-l10n-id", o(bi, lc)[t]), v(this, Ne, Wh).call(this, s), s.addEventListener("click", (i) => {
e.delete();
}, {
signal: e._signal
}), o(this, nr).append(s);
}, gf = function() {
const t = document.createElement("div");
return t.className = "divider", t;
}, b(bi, Wu), b(bi, lc, null);
let pf = bi;
var cc, rr, ar, Un, Vy, Gy, qy;
class UE {
constructor(t) {
b(this, Un);
b(this, cc, null);
b(this, rr, null);
b(this, ar);
p(this, ar, t);
}
show(t, e, s) {
const [i, r] = v(this, Un, Gy).call(this, e, s), {
style: a
} = o(this, rr) || p(this, rr, v(this, Un, Vy).call(this));
t.append(o(this, rr)), a.insetInlineEnd = `${100 * i}%`, a.top = `calc(${100 * r}% + var(--editor-toolbar-vert-offset))`;
}
hide() {
o(this, rr).remove();
}
}
cc = new WeakMap(), rr = new WeakMap(), ar = new WeakMap(), Un = new WeakSet(), Vy = function() {
const t = p(this, rr, document.createElement("div"));
t.className = "editToolbar", t.setAttribute("role", "toolbar"), t.addEventListener("contextmenu", Hs, {
signal: o(this, ar)._signal
});
const e = p(this, cc, document.createElement("div"));
return e.className = "buttons", t.append(e), v(this, Un, qy).call(this), t;
}, Gy = function(t, e) {
let s = 0, i = 0;
for (const r of t) {
const a = r.y + r.height;
if (a < s)
continue;
const l = r.x + (e ? r.width : 0);
if (a > s) {
i = l, s = a;
continue;
}
e ? l > i && (i = l) : l < i && (i = l);
}
return [e ? 1 - i : i, s];
}, qy = function() {
const t = document.createElement("button");
t.className = "highlightButton", t.tabIndex = 0, t.setAttribute("data-l10n-id", "pdfjs-highlight-floating-button1");
const e = document.createElement("span");
t.append(e), e.className = "visuallyHidden", e.setAttribute("data-l10n-id", "pdfjs-highlight-floating-button-label");
const s = o(this, ar)._signal;
t.addEventListener("contextmenu", Hs, {
signal: s
}), t.addEventListener("click", () => {
o(this, ar).highlightSelection("floating_button");
}, {
signal: s
}), o(this, cc).append(t);
};
function ju(n, t, e) {
for (const s of e)
t.addEventListener(s, n[s].bind(n));
}
var Xu;
class zE {
constructor() {
b(this, Xu, 0);
}
get id() {
return `${SE}${xe(this, Xu)._++}`;
}
}
Xu = new WeakMap();
var Da, hc, be, Fa, Xh;
const Yp = class Yp {
constructor() {
b(this, Fa);
b(this, Da, DE());
b(this, hc, 0);
b(this, be, null);
}
static get _isSVGFittingCanvas() {
const t = 'data:image/svg+xml;charset=UTF-8,<svg viewBox="0 0 1 1" width="1" height="1" xmlns="http://www.w3.org/2000/svg"><rect width="1" height="1" style="fill:red;"/></svg>', s = new OffscreenCanvas(1, 3).getContext("2d", {
willReadFrequently: !0
}), i = new Image();
i.src = t;
const r = i.decode().then(() => (s.drawImage(i, 0, 0, 1, 1, 0, 0, 1, 3), new Uint32Array(s.getImageData(0, 0, 1, 1).data.buffer)[0] === 0));
return at(this, "_isSVGFittingCanvas", r);
}
async getFromFile(t) {
const {
lastModified: e,
name: s,
size: i,
type: r
} = t;
return v(this, Fa, Xh).call(this, `${e}_${s}_${i}_${r}`, t);
}
async getFromUrl(t) {
return v(this, Fa, Xh).call(this, t, t);
}
async getFromBlob(t, e) {
const s = await e;
return v(this, Fa, Xh).call(this, t, s);
}
async getFromId(t) {
o(this, be) || p(this, be, /* @__PURE__ */ new Map());
const e = o(this, be).get(t);
if (!e)
return null;
if (e.bitmap)
return e.refCounter += 1, e;
if (e.file)
return this.getFromFile(e.file);
if (e.blobPromise) {
const {
blobPromise: s
} = e;
return delete e.blobPromise, this.getFromBlob(e.id, s);
}
return this.getFromUrl(e.url);
}
getFromCanvas(t, e) {
o(this, be) || p(this, be, /* @__PURE__ */ new Map());
let s = o(this, be).get(t);
if (s != null && s.bitmap)
return s.refCounter += 1, s;
const i = new OffscreenCanvas(e.width, e.height);
return i.getContext("2d").drawImage(e, 0, 0), s = {
bitmap: i.transferToImageBitmap(),
id: `image_${o(this, Da)}_${xe(this, hc)._++}`,
refCounter: 1,
isSvg: !1
}, o(this, be).set(t, s), o(this, be).set(s.id, s), s;
}
getSvgUrl(t) {
const e = o(this, be).get(t);
return e != null && e.isSvg ? e.svgUrl : null;
}
deleteId(t) {
var i;
o(this, be) || p(this, be, /* @__PURE__ */ new Map());
const e = o(this, be).get(t);
if (!e || (e.refCounter -= 1, e.refCounter !== 0))
return;
const {
bitmap: s
} = e;
if (!e.url && !e.file) {
const r = new OffscreenCanvas(s.width, s.height);
r.getContext("bitmaprenderer").transferFromImageBitmap(s), e.blobPromise = r.convertToBlob();
}
(i = s.close) == null || i.call(s), e.bitmap = null;
}
isValidId(t) {
return t.startsWith(`image_${o(this, Da)}_`);
}
};
Da = new WeakMap(), hc = new WeakMap(), be = new WeakMap(), Fa = new WeakSet(), Xh = async function(t, e) {
o(this, be) || p(this, be, /* @__PURE__ */ new Map());
let s = o(this, be).get(t);
if (s === null)
return null;
if (s != null && s.bitmap)
return s.refCounter += 1, s;
try {
s || (s = {
bitmap: null,
id: `image_${o(this, Da)}_${xe(this, hc)._++}`,
refCounter: 0,
isSvg: !1
});
let i;
if (typeof e == "string" ? (s.url = e, i = await Ad(e, "blob")) : e instanceof File ? i = s.file = e : e instanceof Blob && (i = e), i.type === "image/svg+xml") {
const r = Yp._isSVGFittingCanvas, a = new FileReader(), l = new Image(), c = new Promise((h, u) => {
l.onload = () => {
s.bitmap = l, s.isSvg = !0, h();
}, a.onload = async () => {
const d = s.svgUrl = a.result;
l.src = await r ? `${d}#svgView(preserveAspectRatio(none))` : d;
}, l.onerror = a.onerror = u;
});
a.readAsDataURL(i), await c;
} else
s.bitmap = await createImageBitmap(i);
s.refCounter = 1;
} catch (i) {
st(i), s = null;
}
return o(this, be).set(t, s), s && o(this, be).set(s.id, s), s;
};
let mf = Yp;
var Ht, rn, uc, Ot;
class VE {
constructor(t = 128) {
b(this, Ht, []);
b(this, rn, !1);
b(this, uc);
b(this, Ot, -1);
p(this, uc, t);
}
add({
cmd: t,
undo: e,
post: s,
mustExec: i,
type: r = NaN,
overwriteIfSameType: a = !1,
keepUndo: l = !1
}) {
if (i && t(), o(this, rn))
return;
const c = {
cmd: t,
undo: e,
post: s,
type: r
};
if (o(this, Ot) === -1) {
o(this, Ht).length > 0 && (o(this, Ht).length = 0), p(this, Ot, 0), o(this, Ht).push(c);
return;
}
if (a && o(this, Ht)[o(this, Ot)].type === r) {
l && (c.undo = o(this, Ht)[o(this, Ot)].undo), o(this, Ht)[o(this, Ot)] = c;
return;
}
const h = o(this, Ot) + 1;
h === o(this, uc) ? o(this, Ht).splice(0, 1) : (p(this, Ot, h), h < o(this, Ht).length && o(this, Ht).splice(h)), o(this, Ht).push(c);
}
undo() {
if (o(this, Ot) === -1)
return;
p(this, rn, !0);
const {
undo: t,
post: e
} = o(this, Ht)[o(this, Ot)];
t(), e == null || e(), p(this, rn, !1), p(this, Ot, o(this, Ot) - 1);
}
redo() {
if (o(this, Ot) < o(this, Ht).length - 1) {
p(this, Ot, o(this, Ot) + 1), p(this, rn, !0);
const {
cmd: t,
post: e
} = o(this, Ht)[o(this, Ot)];
t(), e == null || e(), p(this, rn, !1);
}
}
hasSomethingToUndo() {
return o(this, Ot) !== -1;
}
hasSomethingToRedo() {
return o(this, Ot) < o(this, Ht).length - 1;
}
cleanType(t) {
if (o(this, Ot) !== -1) {
for (let e = o(this, Ot); e >= 0; e--)
if (o(this, Ht)[e].type !== t) {
o(this, Ht).splice(e + 1, o(this, Ot) - e), p(this, Ot, e);
return;
}
o(this, Ht).length = 0, p(this, Ot, -1);
}
}
destroy() {
p(this, Ht, null);
}
}
Ht = new WeakMap(), rn = new WeakMap(), uc = new WeakMap(), Ot = new WeakMap();
var Zu, Wy;
class Oh {
constructor(t) {
b(this, Zu);
this.buffer = [], this.callbacks = /* @__PURE__ */ new Map(), this.allKeys = /* @__PURE__ */ new Set();
const {
isMac: e
} = Me.platform;
for (const [s, i, r = {}] of t)
for (const a of s) {
const l = a.startsWith("mac+");
e && l ? (this.callbacks.set(a.slice(4), {
callback: i,
options: r
}), this.allKeys.add(a.split("+").at(-1))) : !e && !l && (this.callbacks.set(a, {
callback: i,
options: r
}), this.allKeys.add(a.split("+").at(-1)));
}
}
exec(t, e) {
if (!this.allKeys.has(e.key))
return;
const s = this.callbacks.get(v(this, Zu, Wy).call(this, e));
if (!s)
return;
const {
callback: i,
options: {
bubbles: r = !1,
args: a = [],
checker: l = null
}
} = s;
l && !l(t, e) || (i.bind(t, ...a, e)(), r || ns(e));
}
}
Zu = new WeakSet(), Wy = function(t) {
t.altKey && this.buffer.push("alt"), t.ctrlKey && this.buffer.push("ctrl"), t.metaKey && this.buffer.push("meta"), t.shiftKey && this.buffer.push("shift"), this.buffer.push(t.key);
const e = this.buffer.join("+");
return this.buffer.length = 0, e;
};
const Yu = class Yu {
get _colors() {
const t = /* @__PURE__ */ new Map([["CanvasText", null], ["Canvas", null]]);
return HE(t), at(this, "_colors", t);
}
convert(t) {
const e = Gp(t);
if (!window.matchMedia("(forced-colors: active)").matches)
return e;
for (const [s, i] of this._colors)
if (i.every((r, a) => r === e[a]))
return Yu._colorsMapping.get(s);
return e;
}
getHexCode(t) {
const e = this._colors.get(t);
return e ? U.makeHexColor(...e) : t;
}
};
G(Yu, "_colorsMapping", /* @__PURE__ */ new Map([["CanvasText", [0, 0, 0]], ["Canvas", [255, 255, 255]]]));
let yf = Yu;
var $a, ze, Yt, ce, ja, Ai, Ba, cs, an, or, Ha, lr, Ws, xs, cr, dc, fc, Ua, pc, Xs, on, za, ln, Zs, Ku, cn, gc, hn, hr, mc, yc, te, bt, wi, ur, bc, vc, un, Ys, Si, _c, hs, N, Zh, bf, Xy, Zy, Yh, Yy, Ky, Jy, vf, Qy, _f, Af, tb, Ce, mi, eb, sb, wf, ib, ul, Sf;
const Pa = class Pa {
constructor(t, e, s, i, r, a, l, c, h, u, d, f, g) {
b(this, N);
b(this, $a, new AbortController());
b(this, ze, null);
b(this, Yt, /* @__PURE__ */ new Map());
b(this, ce, /* @__PURE__ */ new Map());
b(this, ja, null);
b(this, Ai, null);
b(this, Ba, null);
b(this, cs, new VE());
b(this, an, null);
b(this, or, null);
b(this, Ha, 0);
b(this, lr, /* @__PURE__ */ new Set());
b(this, Ws, null);
b(this, xs, null);
b(this, cr, /* @__PURE__ */ new Set());
G(this, "_editorUndoBar", null);
b(this, dc, !1);
b(this, fc, !1);
b(this, Ua, !1);
b(this, pc, null);
b(this, Xs, null);
b(this, on, null);
b(this, za, null);
b(this, ln, !1);
b(this, Zs, null);
b(this, Ku, new zE());
b(this, cn, !1);
b(this, gc, !1);
b(this, hn, null);
b(this, hr, null);
b(this, mc, null);
b(this, yc, null);
b(this, te, et.NONE);
b(this, bt, /* @__PURE__ */ new Set());
b(this, wi, null);
b(this, ur, null);
b(this, bc, null);
b(this, vc, {
isEditing: !1,
isEmpty: !0,
hasSomethingToUndo: !1,
hasSomethingToRedo: !1,
hasSelectedEditor: !1,
hasSelectedText: !1
});
b(this, un, [0, 0]);
b(this, Ys, null);
b(this, Si, null);
b(this, _c, null);
b(this, hs, null);
const m = this._signal = o(this, $a).signal;
p(this, Si, t), p(this, _c, e), p(this, ja, s), this._eventBus = i, i._on("editingaction", this.onEditingAction.bind(this), {
signal: m
}), i._on("pagechanging", this.onPageChanging.bind(this), {
signal: m
}), i._on("scalechanging", this.onScaleChanging.bind(this), {
signal: m
}), i._on("rotationchanging", this.onRotationChanging.bind(this), {
signal: m
}), i._on("setpreference", this.onSetPreference.bind(this), {
signal: m
}), i._on("switchannotationeditorparams", (y) => this.updateParams(y.type, y.value), {
signal: m
}), v(this, N, Yy).call(this), v(this, N, tb).call(this), v(this, N, vf).call(this), p(this, Ai, r.annotationStorage), p(this, pc, r.filterFactory), p(this, ur, a), p(this, za, l || null), p(this, dc, c), p(this, fc, h), p(this, Ua, u), p(this, yc, d || null), this.viewParameters = {
realScale: Hn.PDF_TO_CSS_UNITS,
rotation: 0
}, this.isShiftKeyDown = !1, this._editorUndoBar = f || null, this._supportsPinchToZoom = g !== !1;
}
static get _keyboardManager() {
const t = Pa.prototype, e = (a) => o(a, Si).contains(document.activeElement) && document.activeElement.tagName !== "BUTTON" && a.hasSomethingToControl(), s = (a, {
target: l
}) => {
if (l instanceof HTMLInputElement) {
const {
type: c
} = l;
return c !== "text" && c !== "number";
}
return !0;
}, i = this.TRANSLATE_SMALL, r = this.TRANSLATE_BIG;
return at(this, "_keyboardManager", new Oh([[["ctrl+a", "mac+meta+a"], t.selectAll, {
checker: s
}], [["ctrl+z", "mac+meta+z"], t.undo, {
checker: s
}], [["ctrl+y", "ctrl+shift+z", "mac+meta+shift+z", "ctrl+shift+Z", "mac+meta+shift+Z"], t.redo, {
checker: s
}], [["Backspace", "alt+Backspace", "ctrl+Backspace", "shift+Backspace", "mac+Backspace", "mac+alt+Backspace", "mac+ctrl+Backspace", "Delete", "ctrl+Delete", "shift+Delete", "mac+Delete"], t.delete, {
checker: s
}], [["Enter", "mac+Enter"], t.addNewEditorFromKeyboard, {
checker: (a, {
target: l
}) => !(l instanceof HTMLButtonElement) && o(a, Si).contains(l) && !a.isEnterHandled
}], [[" ", "mac+ "], t.addNewEditorFromKeyboard, {
checker: (a, {
target: l
}) => !(l instanceof HTMLButtonElement) && o(a, Si).contains(document.activeElement)
}], [["Escape", "mac+Escape"], t.unselectAll], [["ArrowLeft", "mac+ArrowLeft"], t.translateSelectedEditors, {
args: [-i, 0],
checker: e
}], [["ctrl+ArrowLeft", "mac+shift+ArrowLeft"], t.translateSelectedEditors, {
args: [-r, 0],
checker: e
}], [["ArrowRight", "mac+ArrowRight"], t.translateSelectedEditors, {
args: [i, 0],
checker: e
}], [["ctrl+ArrowRight", "mac+shift+ArrowRight"], t.translateSelectedEditors, {
args: [r, 0],
checker: e
}], [["ArrowUp", "mac+ArrowUp"], t.translateSelectedEditors, {
args: [0, -i],
checker: e
}], [["ctrl+ArrowUp", "mac+shift+ArrowUp"], t.translateSelectedEditors, {
args: [0, -r],
checker: e
}], [["ArrowDown", "mac+ArrowDown"], t.translateSelectedEditors, {
args: [0, i],
checker: e
}], [["ctrl+ArrowDown", "mac+shift+ArrowDown"], t.translateSelectedEditors, {
args: [0, r],
checker: e
}]]));
}
destroy() {
var t, e, s, i, r;
(t = o(this, hs)) == null || t.resolve(), p(this, hs, null), (e = o(this, $a)) == null || e.abort(), p(this, $a, null), this._signal = null;
for (const a of o(this, ce).values())
a.destroy();
o(this, ce).clear(), o(this, Yt).clear(), o(this, cr).clear(), p(this, ze, null), o(this, bt).clear(), o(this, cs).destroy(), (s = o(this, ja)) == null || s.destroy(), (i = o(this, Zs)) == null || i.hide(), p(this, Zs, null), o(this, Xs) && (clearTimeout(o(this, Xs)), p(this, Xs, null)), o(this, Ys) && (clearTimeout(o(this, Ys)), p(this, Ys, null)), (r = this._editorUndoBar) == null || r.destroy();
}
combinedSignal(t) {
return AbortSignal.any([this._signal, t.signal]);
}
get mlManager() {
return o(this, yc);
}
get useNewAltTextFlow() {
return o(this, fc);
}
get useNewAltTextWhenAddingImage() {
return o(this, Ua);
}
get hcmFilter() {
return at(this, "hcmFilter", o(this, ur) ? o(this, pc).addHCMFilter(o(this, ur).foreground, o(this, ur).background) : "none");
}
get direction() {
return at(this, "direction", getComputedStyle(o(this, Si)).direction);
}
get highlightColors() {
return at(this, "highlightColors", o(this, za) ? new Map(o(this, za).split(",").map((t) => t.split("=").map((e) => e.trim()))) : null);
}
get highlightColorNames() {
return at(this, "highlightColorNames", this.highlightColors ? new Map(Array.from(this.highlightColors, (t) => t.reverse())) : null);
}
setCurrentDrawingSession(t) {
t ? (this.unselectAll(), this.disableUserSelect(!0)) : this.disableUserSelect(!1), p(this, or, t);
}
setMainHighlightColorPicker(t) {
p(this, mc, t);
}
editAltText(t, e = !1) {
var s;
(s = o(this, ja)) == null || s.editAltText(this, t, e);
}
switchToMode(t, e) {
this._eventBus.on("annotationeditormodechanged", e, {
once: !0,
signal: this._signal
}), this._eventBus.dispatch("showannotationeditorui", {
source: this,
mode: t
});
}
setPreference(t, e) {
this._eventBus.dispatch("setpreference", {
source: this,
name: t,
value: e
});
}
onSetPreference({
name: t,
value: e
}) {
switch (t) {
case "enableNewAltTextWhenAddingImage":
p(this, Ua, e);
break;
}
}
onPageChanging({
pageNumber: t
}) {
p(this, Ha, t - 1);
}
focusMainContainer() {
o(this, Si).focus();
}
findParent(t, e) {
for (const s of o(this, ce).values()) {
const {
x: i,
y: r,
width: a,
height: l
} = s.div.getBoundingClientRect();
if (t >= i && t <= i + a && e >= r && e <= r + l)
return s;
}
return null;
}
disableUserSelect(t = !1) {
o(this, _c).classList.toggle("noUserSelect", t);
}
addShouldRescale(t) {
o(this, cr).add(t);
}
removeShouldRescale(t) {
o(this, cr).delete(t);
}
onScaleChanging({
scale: t
}) {
var e;
this.commitOrRemove(), this.viewParameters.realScale = t * Hn.PDF_TO_CSS_UNITS;
for (const s of o(this, cr))
s.onScaleChanging();
(e = o(this, or)) == null || e.onScaleChanging();
}
onRotationChanging({
pagesRotation: t
}) {
this.commitOrRemove(), this.viewParameters.rotation = t;
}
highlightSelection(t = "") {
const e = document.getSelection();
if (!e || e.isCollapsed)
return;
const {
anchorNode: s,
anchorOffset: i,
focusNode: r,
focusOffset: a
} = e, l = e.toString(), h = v(this, N, Zh).call(this, e).closest(".textLayer"), u = this.getSelectionBoxes(h);
if (!u)
return;
e.empty();
const d = v(this, N, bf).call(this, h), f = o(this, te) === et.NONE, g = () => {
d == null || d.createAndAddNewEditor({
x: 0,
y: 0
}, !1, {
methodOfCreation: t,
boxes: u,
anchorNode: s,
anchorOffset: i,
focusNode: r,
focusOffset: a,
text: l
}), f && this.showAllEditors("highlight", !0, !0);
};
if (f) {
this.switchToMode(et.HIGHLIGHT, g);
return;
}
g();
}
addToAnnotationStorage(t) {
!t.isEmpty() && o(this, Ai) && !o(this, Ai).has(t.id) && o(this, Ai).setValue(t.id, t);
}
blur() {
if (this.isShiftKeyDown = !1, o(this, ln) && (p(this, ln, !1), v(this, N, Yh).call(this, "main_toolbar")), !this.hasSelection)
return;
const {
activeElement: t
} = document;
for (const e of o(this, bt))
if (e.div.contains(t)) {
p(this, hr, [e, t]), e._focusEventsAllowed = !1;
break;
}
}
focus() {
if (!o(this, hr))
return;
const [t, e] = o(this, hr);
p(this, hr, null), e.addEventListener("focusin", () => {
t._focusEventsAllowed = !0;
}, {
once: !0,
signal: this._signal
}), e.focus();
}
addEditListeners() {
v(this, N, vf).call(this), v(this, N, _f).call(this);
}
removeEditListeners() {
v(this, N, Qy).call(this), v(this, N, Af).call(this);
}
dragOver(t) {
for (const {
type: e
} of t.dataTransfer.items)
for (const s of o(this, xs))
if (s.isHandlingMimeForPasting(e)) {
t.dataTransfer.dropEffect = "copy", t.preventDefault();
return;
}
}
drop(t) {
for (const e of t.dataTransfer.items)
for (const s of o(this, xs))
if (s.isHandlingMimeForPasting(e.type)) {
s.paste(e, this.currentLayer), t.preventDefault();
return;
}
}
copy(t) {
var s;
if (t.preventDefault(), (s = o(this, ze)) == null || s.commitOrRemove(), !this.hasSelection)
return;
const e = [];
for (const i of o(this, bt)) {
const r = i.serialize(!0);
r && e.push(r);
}
e.length !== 0 && t.clipboardData.setData("application/pdfjs", JSON.stringify(e));
}
cut(t) {
this.copy(t), this.delete();
}
async paste(t) {
t.preventDefault();
const {
clipboardData: e
} = t;
for (const r of e.items)
for (const a of o(this, xs))
if (a.isHandlingMimeForPasting(r.type)) {
a.paste(r, this.currentLayer);
return;
}
let s = e.getData("application/pdfjs");
if (!s)
return;
try {
s = JSON.parse(s);
} catch (r) {
st(`paste: "${r.message}".`);
return;
}
if (!Array.isArray(s))
return;
this.unselectAll();
const i = this.currentLayer;
try {
const r = [];
for (const c of s) {
const h = await i.deserialize(c);
if (!h)
return;
r.push(h);
}
const a = () => {
for (const c of r)
v(this, N, wf).call(this, c);
v(this, N, Sf).call(this, r);
}, l = () => {
for (const c of r)
c.remove();
};
this.addCommands({
cmd: a,
undo: l,
mustExec: !0
});
} catch (r) {
st(`paste: "${r.message}".`);
}
}
keydown(t) {
!this.isShiftKeyDown && t.key === "Shift" && (this.isShiftKeyDown = !0), o(this, te) !== et.NONE && !this.isEditorHandlingKeyboard && Pa._keyboardManager.exec(this, t);
}
keyup(t) {
this.isShiftKeyDown && t.key === "Shift" && (this.isShiftKeyDown = !1, o(this, ln) && (p(this, ln, !1), v(this, N, Yh).call(this, "main_toolbar")));
}
onEditingAction({
name: t
}) {
switch (t) {
case "undo":
case "redo":
case "delete":
case "selectAll":
this[t]();
break;
case "highlightSelection":
this.highlightSelection("context_menu");
break;
}
}
setEditingState(t) {
t ? (v(this, N, Ky).call(this), v(this, N, _f).call(this), v(this, N, Ce).call(this, {
isEditing: o(this, te) !== et.NONE,
isEmpty: v(this, N, ul).call(this),
hasSomethingToUndo: o(this, cs).hasSomethingToUndo(),
hasSomethingToRedo: o(this, cs).hasSomethingToRedo(),
hasSelectedEditor: !1
})) : (v(this, N, Jy).call(this), v(this, N, Af).call(this), v(this, N, Ce).call(this, {
isEditing: !1
}), this.disableUserSelect(!1));
}
registerEditorTypes(t) {
if (!o(this, xs)) {
p(this, xs, t);
for (const e of o(this, xs))
v(this, N, mi).call(this, e.defaultPropertiesToUpdate);
}
}
getId() {
return o(this, Ku).id;
}
get currentLayer() {
return o(this, ce).get(o(this, Ha));
}
getLayer(t) {
return o(this, ce).get(t);
}
get currentPageIndex() {
return o(this, Ha);
}
addLayer(t) {
o(this, ce).set(t.pageIndex, t), o(this, cn) ? t.enable() : t.disable();
}
removeLayer(t) {
o(this, ce).delete(t.pageIndex);
}
async updateMode(t, e = null, s = !1) {
var i;
if (o(this, te) !== t && !(o(this, hs) && (await o(this, hs).promise, !o(this, hs)))) {
if (p(this, hs, Promise.withResolvers()), p(this, te, t), t === et.NONE) {
this.setEditingState(!1), v(this, N, sb).call(this), (i = this._editorUndoBar) == null || i.hide(), o(this, hs).resolve();
return;
}
this.setEditingState(!0), await v(this, N, eb).call(this), this.unselectAll();
for (const r of o(this, ce).values())
r.updateMode(t);
if (!e) {
s && this.addNewEditorFromKeyboard(), o(this, hs).resolve();
return;
}
for (const r of o(this, Yt).values())
r.annotationElementId === e ? (this.setSelected(r), r.enterInEditMode()) : r.unselect();
o(this, hs).resolve();
}
}
addNewEditorFromKeyboard() {
this.currentLayer.canCreateNewEmptyEditor() && this.currentLayer.addNewEditor();
}
updateToolbar(t) {
t !== o(this, te) && this._eventBus.dispatch("switchannotationeditormode", {
source: this,
mode: t
});
}
updateParams(t, e) {
var s;
if (o(this, xs)) {
switch (t) {
case lt.CREATE:
this.currentLayer.addNewEditor();
return;
case lt.HIGHLIGHT_DEFAULT_COLOR:
(s = o(this, mc)) == null || s.updateColor(e);
break;
case lt.HIGHLIGHT_SHOW_ALL:
this._eventBus.dispatch("reporttelemetry", {
source: this,
details: {
type: "editing",
data: {
type: "highlight",
action: "toggle_visibility"
}
}
}), (o(this, bc) || p(this, bc, /* @__PURE__ */ new Map())).set(t, e), this.showAllEditors("highlight", e);
break;
}
for (const i of o(this, bt))
i.updateParams(t, e);
for (const i of o(this, xs))
i.updateDefaultParams(t, e);
}
}
showAllEditors(t, e, s = !1) {
var r;
for (const a of o(this, Yt).values())
a.editorType === t && a.show(e);
(((r = o(this, bc)) == null ? void 0 : r.get(lt.HIGHLIGHT_SHOW_ALL)) ?? !0) !== e && v(this, N, mi).call(this, [[lt.HIGHLIGHT_SHOW_ALL, e]]);
}
enableWaiting(t = !1) {
if (o(this, gc) !== t) {
p(this, gc, t);
for (const e of o(this, ce).values())
t ? e.disableClick() : e.enableClick(), e.div.classList.toggle("waiting", t);
}
}
getEditors(t) {
const e = [];
for (const s of o(this, Yt).values())
s.pageIndex === t && e.push(s);
return e;
}
getEditor(t) {
return o(this, Yt).get(t);
}
addEditor(t) {
o(this, Yt).set(t.id, t);
}
removeEditor(t) {
var e;
t.div.contains(document.activeElement) && (o(this, Xs) && clearTimeout(o(this, Xs)), p(this, Xs, setTimeout(() => {
this.focusMainContainer(), p(this, Xs, null);
}, 0))), o(this, Yt).delete(t.id), this.unselect(t), (!t.annotationElementId || !o(this, lr).has(t.annotationElementId)) && ((e = o(this, Ai)) == null || e.remove(t.id));
}
addDeletedAnnotationElement(t) {
o(this, lr).add(t.annotationElementId), this.addChangedExistingAnnotation(t), t.deleted = !0;
}
isDeletedAnnotationElement(t) {
return o(this, lr).has(t);
}
removeDeletedAnnotationElement(t) {
o(this, lr).delete(t.annotationElementId), this.removeChangedExistingAnnotation(t), t.deleted = !1;
}
setActiveEditor(t) {
o(this, ze) !== t && (p(this, ze, t), t && v(this, N, mi).call(this, t.propertiesToUpdate));
}
updateUI(t) {
o(this, N, ib) === t && v(this, N, mi).call(this, t.propertiesToUpdate);
}
updateUIForDefaultProperties(t) {
v(this, N, mi).call(this, t.defaultPropertiesToUpdate);
}
toggleSelected(t) {
if (o(this, bt).has(t)) {
o(this, bt).delete(t), t.unselect(), v(this, N, Ce).call(this, {
hasSelectedEditor: this.hasSelection
});
return;
}
o(this, bt).add(t), t.select(), v(this, N, mi).call(this, t.propertiesToUpdate), v(this, N, Ce).call(this, {
hasSelectedEditor: !0
});
}
setSelected(t) {
var e;
(e = o(this, or)) == null || e.commitOrRemove();
for (const s of o(this, bt))
s !== t && s.unselect();
o(this, bt).clear(), o(this, bt).add(t), t.select(), v(this, N, mi).call(this, t.propertiesToUpdate), v(this, N, Ce).call(this, {
hasSelectedEditor: !0
});
}
isSelected(t) {
return o(this, bt).has(t);
}
get firstSelectedEditor() {
return o(this, bt).values().next().value;
}
unselect(t) {
t.unselect(), o(this, bt).delete(t), v(this, N, Ce).call(this, {
hasSelectedEditor: this.hasSelection
});
}
get hasSelection() {
return o(this, bt).size !== 0;
}
get isEnterHandled() {
return o(this, bt).size === 1 && this.firstSelectedEditor.isEnterHandled;
}
undo() {
var t;
o(this, cs).undo(), v(this, N, Ce).call(this, {
hasSomethingToUndo: o(this, cs).hasSomethingToUndo(),
hasSomethingToRedo: !0,
isEmpty: v(this, N, ul).call(this)
}), (t = this._editorUndoBar) == null || t.hide();
}
redo() {
o(this, cs).redo(), v(this, N, Ce).call(this, {
hasSomethingToUndo: !0,
hasSomethingToRedo: o(this, cs).hasSomethingToRedo(),
isEmpty: v(this, N, ul).call(this)
});
}
addCommands(t) {
o(this, cs).add(t), v(this, N, Ce).call(this, {
hasSomethingToUndo: !0,
hasSomethingToRedo: !1,
isEmpty: v(this, N, ul).call(this)
});
}
cleanUndoStack(t) {
o(this, cs).cleanType(t);
}
delete() {
var r;
this.commitOrRemove();
const t = (r = this.currentLayer) == null ? void 0 : r.endDrawingSession(!0);
if (!this.hasSelection && !t)
return;
const e = t ? [t] : [...o(this, bt)], s = () => {
var a;
(a = this._editorUndoBar) == null || a.show(i, e.length === 1 ? e[0].editorType : e.length);
for (const l of e)
l.remove();
}, i = () => {
for (const a of e)
v(this, N, wf).call(this, a);
};
this.addCommands({
cmd: s,
undo: i,
mustExec: !0
});
}
commitOrRemove() {
var t;
(t = o(this, ze)) == null || t.commitOrRemove();
}
hasSomethingToControl() {
return o(this, ze) || this.hasSelection;
}
selectAll() {
for (const t of o(this, bt))
t.commit();
v(this, N, Sf).call(this, o(this, Yt).values());
}
unselectAll() {
var t;
if (!(o(this, ze) && (o(this, ze).commitOrRemove(), o(this, te) !== et.NONE)) && !((t = o(this, or)) != null && t.commitOrRemove()) && this.hasSelection) {
for (const e of o(this, bt))
e.unselect();
o(this, bt).clear(), v(this, N, Ce).call(this, {
hasSelectedEditor: !1
});
}
}
translateSelectedEditors(t, e, s = !1) {
if (s || this.commitOrRemove(), !this.hasSelection)
return;
o(this, un)[0] += t, o(this, un)[1] += e;
const [i, r] = o(this, un), a = [...o(this, bt)], l = 1e3;
o(this, Ys) && clearTimeout(o(this, Ys)), p(this, Ys, setTimeout(() => {
p(this, Ys, null), o(this, un)[0] = o(this, un)[1] = 0, this.addCommands({
cmd: () => {
for (const c of a)
o(this, Yt).has(c.id) && c.translateInPage(i, r);
},
undo: () => {
for (const c of a)
o(this, Yt).has(c.id) && c.translateInPage(-i, -r);
},
mustExec: !1
});
}, l));
for (const c of a)
c.translateInPage(t, e);
}
setUpDragSession() {
if (this.hasSelection) {
this.disableUserSelect(!0), p(this, Ws, /* @__PURE__ */ new Map());
for (const t of o(this, bt))
o(this, Ws).set(t, {
savedX: t.x,
savedY: t.y,
savedPageIndex: t.pageIndex,
newX: 0,
newY: 0,
newPageIndex: -1
});
}
}
endDragSession() {
if (!o(this, Ws))
return !1;
this.disableUserSelect(!1);
const t = o(this, Ws);
p(this, Ws, null);
let e = !1;
for (const [{
x: i,
y: r,
pageIndex: a
}, l] of t)
l.newX = i, l.newY = r, l.newPageIndex = a, e || (e = i !== l.savedX || r !== l.savedY || a !== l.savedPageIndex);
if (!e)
return !1;
const s = (i, r, a, l) => {
if (o(this, Yt).has(i.id)) {
const c = o(this, ce).get(l);
c ? i._setParentAndPosition(c, r, a) : (i.pageIndex = l, i.x = r, i.y = a);
}
};
return this.addCommands({
cmd: () => {
for (const [i, {
newX: r,
newY: a,
newPageIndex: l
}] of t)
s(i, r, a, l);
},
undo: () => {
for (const [i, {
savedX: r,
savedY: a,
savedPageIndex: l
}] of t)
s(i, r, a, l);
},
mustExec: !0
}), !0;
}
dragSelectedEditors(t, e) {
if (o(this, Ws))
for (const s of o(this, Ws).keys())
s.drag(t, e);
}
rebuild(t) {
if (t.parent === null) {
const e = this.getLayer(t.pageIndex);
e ? (e.changeParent(t), e.addOrRebuild(t)) : (this.addEditor(t), this.addToAnnotationStorage(t), t.rebuild());
} else
t.parent.addOrRebuild(t);
}
get isEditorHandlingKeyboard() {
var t;
return ((t = this.getActive()) == null ? void 0 : t.shouldGetKeyboardEvents()) || o(this, bt).size === 1 && this.firstSelectedEditor.shouldGetKeyboardEvents();
}
isActive(t) {
return o(this, ze) === t;
}
getActive() {
return o(this, ze);
}
getMode() {
return o(this, te);
}
get imageManager() {
return at(this, "imageManager", new mf());
}
getSelectionBoxes(t) {
if (!t)
return null;
const e = document.getSelection();
for (let h = 0, u = e.rangeCount; h < u; h++)
if (!t.contains(e.getRangeAt(h).commonAncestorContainer))
return null;
const {
x: s,
y: i,
width: r,
height: a
} = t.getBoundingClientRect();
let l;
switch (t.getAttribute("data-main-rotation")) {
case "90":
l = (h, u, d, f) => ({
x: (u - i) / a,
y: 1 - (h + d - s) / r,
width: f / a,
height: d / r
});
break;
case "180":
l = (h, u, d, f) => ({
x: 1 - (h + d - s) / r,
y: 1 - (u + f - i) / a,
width: d / r,
height: f / a
});
break;
case "270":
l = (h, u, d, f) => ({
x: 1 - (u + f - i) / a,
y: (h - s) / r,
width: f / a,
height: d / r
});
break;
default:
l = (h, u, d, f) => ({
x: (h - s) / r,
y: (u - i) / a,
width: d / r,
height: f / a
});
break;
}
const c = [];
for (let h = 0, u = e.rangeCount; h < u; h++) {
const d = e.getRangeAt(h);
if (!d.collapsed)
for (const {
x: f,
y: g,
width: m,
height: y
} of d.getClientRects())
m === 0 || y === 0 || c.push(l(f, g, m, y));
}
return c.length === 0 ? null : c;
}
addChangedExistingAnnotation({
annotationElementId: t,
id: e
}) {
(o(this, Ba) || p(this, Ba, /* @__PURE__ */ new Map())).set(t, e);
}
removeChangedExistingAnnotation({
annotationElementId: t
}) {
var e;
(e = o(this, Ba)) == null || e.delete(t);
}
renderAnnotationElement(t) {
var i;
const e = (i = o(this, Ba)) == null ? void 0 : i.get(t.data.id);
if (!e)
return;
const s = o(this, Ai).getRawValue(e);
s && (o(this, te) === et.NONE && !s.hasBeenModified || s.renderAnnotationElement(t));
}
};
$a = new WeakMap(), ze = new WeakMap(), Yt = new WeakMap(), ce = new WeakMap(), ja = new WeakMap(), Ai = new WeakMap(), Ba = new WeakMap(), cs = new WeakMap(), an = new WeakMap(), or = new WeakMap(), Ha = new WeakMap(), lr = new WeakMap(), Ws = new WeakMap(), xs = new WeakMap(), cr = new WeakMap(), dc = new WeakMap(), fc = new WeakMap(), Ua = new WeakMap(), pc = new WeakMap(), Xs = new WeakMap(), on = new WeakMap(), za = new WeakMap(), ln = new WeakMap(), Zs = new WeakMap(), Ku = new WeakMap(), cn = new WeakMap(), gc = new WeakMap(), hn = new WeakMap(), hr = new WeakMap(), mc = new WeakMap(), yc = new WeakMap(), te = new WeakMap(), bt = new WeakMap(), wi = new WeakMap(), ur = new WeakMap(), bc = new WeakMap(), vc = new WeakMap(), un = new WeakMap(), Ys = new WeakMap(), Si = new WeakMap(), _c = new WeakMap(), hs = new WeakMap(), N = new WeakSet(), Zh = function({
anchorNode: t
}) {
return t.nodeType === Node.TEXT_NODE ? t.parentElement : t;
}, bf = function(t) {
const {
currentLayer: e
} = this;
if (e.hasTextLayer(t))
return e;
for (const s of o(this, ce).values())
if (s.hasTextLayer(t))
return s;
return null;
}, Xy = function() {
const t = document.getSelection();
if (!t || t.isCollapsed)
return;
const s = v(this, N, Zh).call(this, t).closest(".textLayer"), i = this.getSelectionBoxes(s);
i && (o(this, Zs) || p(this, Zs, new UE(this)), o(this, Zs).show(s, i, this.direction === "ltr"));
}, Zy = function() {
var r, a, l;
const t = document.getSelection();
if (!t || t.isCollapsed) {
o(this, wi) && ((r = o(this, Zs)) == null || r.hide(), p(this, wi, null), v(this, N, Ce).call(this, {
hasSelectedText: !1
}));
return;
}
const {
anchorNode: e
} = t;
if (e === o(this, wi))
return;
const i = v(this, N, Zh).call(this, t).closest(".textLayer");
if (!i) {
o(this, wi) && ((a = o(this, Zs)) == null || a.hide(), p(this, wi, null), v(this, N, Ce).call(this, {
hasSelectedText: !1
}));
return;
}
if ((l = o(this, Zs)) == null || l.hide(), p(this, wi, e), v(this, N, Ce).call(this, {
hasSelectedText: !0
}), !(o(this, te) !== et.HIGHLIGHT && o(this, te) !== et.NONE) && (o(this, te) === et.HIGHLIGHT && this.showAllEditors("highlight", !0, !0), p(this, ln, this.isShiftKeyDown), !this.isShiftKeyDown)) {
const c = o(this, te) === et.HIGHLIGHT ? v(this, N, bf).call(this, i) : null;
c == null || c.toggleDrawing();
const h = new AbortController(), u = this.combinedSignal(h), d = (f) => {
f.type === "pointerup" && f.button !== 0 || (h.abort(), c == null || c.toggleDrawing(!0), f.type === "pointerup" && v(this, N, Yh).call(this, "main_toolbar"));
};
window.addEventListener("pointerup", d, {
signal: u
}), window.addEventListener("blur", d, {
signal: u
});
}
}, Yh = function(t = "") {
o(this, te) === et.HIGHLIGHT ? this.highlightSelection(t) : o(this, dc) && v(this, N, Xy).call(this);
}, Yy = function() {
document.addEventListener("selectionchange", v(this, N, Zy).bind(this), {
signal: this._signal
});
}, Ky = function() {
if (o(this, on))
return;
p(this, on, new AbortController());
const t = this.combinedSignal(o(this, on));
window.addEventListener("focus", this.focus.bind(this), {
signal: t
}), window.addEventListener("blur", this.blur.bind(this), {
signal: t
});
}, Jy = function() {
var t;
(t = o(this, on)) == null || t.abort(), p(this, on, null);
}, vf = function() {
if (o(this, hn))
return;
p(this, hn, new AbortController());
const t = this.combinedSignal(o(this, hn));
window.addEventListener("keydown", this.keydown.bind(this), {
signal: t
}), window.addEventListener("keyup", this.keyup.bind(this), {
signal: t
});
}, Qy = function() {
var t;
(t = o(this, hn)) == null || t.abort(), p(this, hn, null);
}, _f = function() {
if (o(this, an))
return;
p(this, an, new AbortController());
const t = this.combinedSignal(o(this, an));
document.addEventListener("copy", this.copy.bind(this), {
signal: t
}), document.addEventListener("cut", this.cut.bind(this), {
signal: t
}), document.addEventListener("paste", this.paste.bind(this), {
signal: t
});
}, Af = function() {
var t;
(t = o(this, an)) == null || t.abort(), p(this, an, null);
}, tb = function() {
const t = this._signal;
document.addEventListener("dragover", this.dragOver.bind(this), {
signal: t
}), document.addEventListener("drop", this.drop.bind(this), {
signal: t
});
}, Ce = function(t) {
Object.entries(t).some(([s, i]) => o(this, vc)[s] !== i) && (this._eventBus.dispatch("annotationeditorstateschanged", {
source: this,
details: Object.assign(o(this, vc), t)
}), o(this, te) === et.HIGHLIGHT && t.hasSelectedEditor === !1 && v(this, N, mi).call(this, [[lt.HIGHLIGHT_FREE, !0]]));
}, mi = function(t) {
this._eventBus.dispatch("annotationeditorparamschanged", {
source: this,
details: t
});
}, eb = async function() {
if (!o(this, cn)) {
p(this, cn, !0);
const t = [];
for (const e of o(this, ce).values())
t.push(e.enable());
await Promise.all(t);
for (const e of o(this, Yt).values())
e.enable();
}
}, sb = function() {
if (this.unselectAll(), o(this, cn)) {
p(this, cn, !1);
for (const t of o(this, ce).values())
t.disable();
for (const t of o(this, Yt).values())
t.disable();
}
}, wf = function(t) {
const e = o(this, ce).get(t.pageIndex);
e ? e.addOrRebuild(t) : (this.addEditor(t), this.addToAnnotationStorage(t));
}, ib = function() {
let t = null;
for (t of o(this, bt))
;
return t;
}, ul = function() {
if (o(this, Yt).size === 0)
return !0;
if (o(this, Yt).size === 1)
for (const t of o(this, Yt).values())
return t.isEmpty();
return !1;
}, Sf = function(t) {
for (const e of o(this, bt))
e.unselect();
o(this, bt).clear();
for (const e of t)
e.isEmpty() || (o(this, bt).add(e), e.select());
v(this, N, Ce).call(this, {
hasSelectedEditor: this.hasSelection
});
}, G(Pa, "TRANSLATE_SMALL", 1), G(Pa, "TRANSLATE_BIG", 10);
let pa = Pa;
var ee, Ks, Ts, Va, Js, Ve, Ga, Qs, je, Ei, dr, ti, dn, Fs, dl, Kh;
const ke = class ke {
constructor(t) {
b(this, Fs);
b(this, ee, null);
b(this, Ks, !1);
b(this, Ts, null);
b(this, Va, null);
b(this, Js, null);
b(this, Ve, null);
b(this, Ga, !1);
b(this, Qs, null);
b(this, je, null);
b(this, Ei, null);
b(this, dr, null);
b(this, ti, !1);
p(this, je, t), p(this, ti, t._uiManager.useNewAltTextFlow), o(ke, dn) || p(ke, dn, Object.freeze({
added: "pdfjs-editor-new-alt-text-added-button",
"added-label": "pdfjs-editor-new-alt-text-added-button-label",
missing: "pdfjs-editor-new-alt-text-missing-button",
"missing-label": "pdfjs-editor-new-alt-text-missing-button-label",
review: "pdfjs-editor-new-alt-text-to-review-button",
"review-label": "pdfjs-editor-new-alt-text-to-review-button-label"
}));
}
static initialize(t) {
ke._l10n ?? (ke._l10n = t);
}
async render() {
const t = p(this, Ts, document.createElement("button"));
t.className = "altText", t.tabIndex = "0";
const e = p(this, Va, document.createElement("span"));
t.append(e), o(this, ti) ? (t.classList.add("new"), t.setAttribute("data-l10n-id", o(ke, dn).missing), e.setAttribute("data-l10n-id", o(ke, dn)["missing-label"])) : (t.setAttribute("data-l10n-id", "pdfjs-editor-alt-text-button"), e.setAttribute("data-l10n-id", "pdfjs-editor-alt-text-button-label"));
const s = o(this, je)._uiManager._signal;
t.addEventListener("contextmenu", Hs, {
signal: s
}), t.addEventListener("pointerdown", (r) => r.stopPropagation(), {
signal: s
});
const i = (r) => {
r.preventDefault(), o(this, je)._uiManager.editAltText(o(this, je)), o(this, ti) && o(this, je)._reportTelemetry({
action: "pdfjs.image.alt_text.image_status_label_clicked",
data: {
label: o(this, Fs, dl)
}
});
};
return t.addEventListener("click", i, {
capture: !0,
signal: s
}), t.addEventListener("keydown", (r) => {
r.target === t && r.key === "Enter" && (p(this, Ga, !0), i(r));
}, {
signal: s
}), await v(this, Fs, Kh).call(this), t;
}
finish() {
o(this, Ts) && (o(this, Ts).focus({
focusVisible: o(this, Ga)
}), p(this, Ga, !1));
}
isEmpty() {
return o(this, ti) ? o(this, ee) === null : !o(this, ee) && !o(this, Ks);
}
hasData() {
return o(this, ti) ? o(this, ee) !== null || !!o(this, Ei) : this.isEmpty();
}
get guessedText() {
return o(this, Ei);
}
async setGuessedText(t) {
o(this, ee) === null && (p(this, Ei, t), p(this, dr, await ke._l10n.get("pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer", {
generatedAltText: t
})), v(this, Fs, Kh).call(this));
}
toggleAltTextBadge(t = !1) {
var e;
if (!o(this, ti) || o(this, ee)) {
(e = o(this, Qs)) == null || e.remove(), p(this, Qs, null);
return;
}
if (!o(this, Qs)) {
const s = p(this, Qs, document.createElement("div"));
s.className = "noAltTextBadge", o(this, je).div.append(s);
}
o(this, Qs).classList.toggle("hidden", !t);
}
serialize(t) {
let e = o(this, ee);
return !t && o(this, Ei) === e && (e = o(this, dr)), {
altText: e,
decorative: o(this, Ks),
guessedText: o(this, Ei),
textWithDisclaimer: o(this, dr)
};
}
get data() {
return {
altText: o(this, ee),
decorative: o(this, Ks)
};
}
set data({
altText: t,
decorative: e,
guessedText: s,
textWithDisclaimer: i,
cancel: r = !1
}) {
s && (p(this, Ei, s), p(this, dr, i)), !(o(this, ee) === t && o(this, Ks) === e) && (r || (p(this, ee, t), p(this, Ks, e)), v(this, Fs, Kh).call(this));
}
toggle(t = !1) {
o(this, Ts) && (!t && o(this, Ve) && (clearTimeout(o(this, Ve)), p(this, Ve, null)), o(this, Ts).disabled = !t);
}
shown() {
o(this, je)._reportTelemetry({
action: "pdfjs.image.alt_text.image_status_label_displayed",
data: {
label: o(this, Fs, dl)
}
});
}
destroy() {
var t, e;
(t = o(this, Ts)) == null || t.remove(), p(this, Ts, null), p(this, Va, null), p(this, Js, null), (e = o(this, Qs)) == null || e.remove(), p(this, Qs, null);
}
};
ee = new WeakMap(), Ks = new WeakMap(), Ts = new WeakMap(), Va = new WeakMap(), Js = new WeakMap(), Ve = new WeakMap(), Ga = new WeakMap(), Qs = new WeakMap(), je = new WeakMap(), Ei = new WeakMap(), dr = new WeakMap(), ti = new WeakMap(), dn = new WeakMap(), Fs = new WeakSet(), dl = function() {
return o(this, ee) && "added" || o(this, ee) === null && this.guessedText && "review" || "missing";
}, Kh = async function() {
var i, r, a;
const t = o(this, Ts);
if (!t)
return;
if (o(this, ti)) {
if (t.classList.toggle("done", !!o(this, ee)), t.setAttribute("data-l10n-id", o(ke, dn)[o(this, Fs, dl)]), (i = o(this, Va)) == null || i.setAttribute("data-l10n-id", o(ke, dn)[`${o(this, Fs, dl)}-label`]), !o(this, ee)) {
(r = o(this, Js)) == null || r.remove();
return;
}
} else {
if (!o(this, ee) && !o(this, Ks)) {
t.classList.remove("done"), (a = o(this, Js)) == null || a.remove();
return;
}
t.classList.add("done"), t.setAttribute("data-l10n-id", "pdfjs-editor-alt-text-edit-button");
}
let e = o(this, Js);
if (!e) {
p(this, Js, e = document.createElement("span")), e.className = "tooltip", e.setAttribute("role", "tooltip"), e.id = `alt-text-tooltip-${o(this, je).id}`;
const l = 100, c = o(this, je)._uiManager._signal;
c.addEventListener("abort", () => {
clearTimeout(o(this, Ve)), p(this, Ve, null);
}, {
once: !0
}), t.addEventListener("mouseenter", () => {
p(this, Ve, setTimeout(() => {
p(this, Ve, null), o(this, Js).classList.add("show"), o(this, je)._reportTelemetry({
action: "alt_text_tooltip"
});
}, l));
}, {
signal: c
}), t.addEventListener("mouseleave", () => {
var h;
o(this, Ve) && (clearTimeout(o(this, Ve)), p(this, Ve, null)), (h = o(this, Js)) == null || h.classList.remove("show");
}, {
signal: c
});
}
o(this, Ks) ? e.setAttribute("data-l10n-id", "pdfjs-editor-alt-text-decorative-tooltip") : (e.removeAttribute("data-l10n-id"), e.textContent = o(this, ee)), e.parentNode || t.append(e);
const s = o(this, je).getImageForAltText();
s == null || s.setAttribute("aria-describedby", e.id);
}, b(ke, dn, null), G(ke, "_l10n", null);
let Bu = ke;
var Ac, fr, wc, Sc, Ec, xc, Tc, qa, xi, pr, fn, Ki, nb, rb, Ef;
const Kp = class Kp {
constructor({
container: t,
isPinchingDisabled: e = null,
isPinchingStopped: s = null,
onPinchStart: i = null,
onPinching: r = null,
onPinchEnd: a = null,
signal: l
}) {
b(this, Ki);
b(this, Ac);
b(this, fr, !1);
b(this, wc, null);
b(this, Sc);
b(this, Ec);
b(this, xc);
b(this, Tc);
b(this, qa);
b(this, xi, null);
b(this, pr);
b(this, fn, null);
p(this, Ac, t), p(this, wc, s), p(this, Sc, e), p(this, Ec, i), p(this, xc, r), p(this, Tc, a), p(this, pr, new AbortController()), p(this, qa, AbortSignal.any([l, o(this, pr).signal])), t.addEventListener("touchstart", v(this, Ki, nb).bind(this), {
passive: !1,
signal: o(this, qa)
});
}
get MIN_TOUCH_DISTANCE_TO_PINCH() {
return at(this, "MIN_TOUCH_DISTANCE_TO_PINCH", 35 / (window.devicePixelRatio || 1));
}
destroy() {
var t;
(t = o(this, pr)) == null || t.abort(), p(this, pr, null);
}
};
Ac = new WeakMap(), fr = new WeakMap(), wc = new WeakMap(), Sc = new WeakMap(), Ec = new WeakMap(), xc = new WeakMap(), Tc = new WeakMap(), qa = new WeakMap(), xi = new WeakMap(), pr = new WeakMap(), fn = new WeakMap(), Ki = new WeakSet(), nb = function(t) {
var i, r, a;
if ((i = o(this, Sc)) != null && i.call(this) || t.touches.length < 2)
return;
if (!o(this, fn)) {
p(this, fn, new AbortController());
const l = AbortSignal.any([o(this, qa), o(this, fn).signal]), c = o(this, Ac), h = {
signal: l,
passive: !1
};
c.addEventListener("touchmove", v(this, Ki, rb).bind(this), h), c.addEventListener("touchend", v(this, Ki, Ef).bind(this), h), c.addEventListener("touchcancel", v(this, Ki, Ef).bind(this), h), (r = o(this, Ec)) == null || r.call(this);
}
if (ns(t), t.touches.length !== 2 || (a = o(this, wc)) != null && a.call(this)) {
p(this, xi, null);
return;
}
let [e, s] = t.touches;
e.identifier > s.identifier && ([e, s] = [s, e]), p(this, xi, {
touch0X: e.screenX,
touch0Y: e.screenY,
touch1X: s.screenX,
touch1Y: s.screenY
});
}, rb = function(t) {
var x;
if (!o(this, xi) || t.touches.length !== 2)
return;
let [e, s] = t.touches;
e.identifier > s.identifier && ([e, s] = [s, e]);
const {
screenX: i,
screenY: r
} = e, {
screenX: a,
screenY: l
} = s, c = o(this, xi), {
touch0X: h,
touch0Y: u,
touch1X: d,
touch1Y: f
} = c, g = d - h, m = f - u, y = a - i, _ = l - r, A = Math.hypot(y, _) || 1, S = Math.hypot(g, m) || 1;
if (!o(this, fr) && Math.abs(S - A) <= Kp.MIN_TOUCH_DISTANCE_TO_PINCH)
return;
if (c.touch0X = i, c.touch0Y = r, c.touch1X = a, c.touch1Y = l, t.preventDefault(), !o(this, fr)) {
p(this, fr, !0);
return;
}
const E = [(i + a) / 2, (r + l) / 2];
(x = o(this, xc)) == null || x.call(this, E, S, A);
}, Ef = function(t) {
var e;
o(this, fn).abort(), p(this, fn, null), (e = o(this, Tc)) == null || e.call(this), o(this, xi) && (t.preventDefault(), p(this, xi, null), p(this, fr, !1));
};
let Hu = Kp;
var gr, Cs, It, Wa, pn, Cc, mr, he, yr, Ti, gn, kc, br, Ge, Ic, vr, Ci, ei, Xa, Za, us, _r, Rc, Ju, q, xf, Pc, Tf, Jh, ab, ob, Cf, Qh, kf, lb, cb, hb, If, ub, Rf, db, fb, pb, Pf, fl;
const it = class it {
constructor(t) {
b(this, q);
b(this, gr, null);
b(this, Cs, null);
b(this, It, null);
b(this, Wa, !1);
b(this, pn, null);
b(this, Cc, "");
b(this, mr, !1);
b(this, he, null);
b(this, yr, null);
b(this, Ti, null);
b(this, gn, null);
b(this, kc, "");
b(this, br, !1);
b(this, Ge, null);
b(this, Ic, !1);
b(this, vr, !1);
b(this, Ci, !1);
b(this, ei, null);
b(this, Xa, 0);
b(this, Za, 0);
b(this, us, null);
b(this, _r, null);
G(this, "_editToolbar", null);
G(this, "_initialOptions", /* @__PURE__ */ Object.create(null));
G(this, "_initialData", null);
G(this, "_isVisible", !0);
G(this, "_uiManager", null);
G(this, "_focusEventsAllowed", !0);
b(this, Rc, !1);
b(this, Ju, it._zIndex++);
this.parent = t.parent, this.id = t.id, this.width = this.height = null, this.pageIndex = t.parent.pageIndex, this.name = t.name, this.div = null, this._uiManager = t.uiManager, this.annotationElementId = null, this._willKeepAspectRatio = !1, this._initialOptions.isCentered = t.isCentered, this._structTreeParentId = null;
const {
rotation: e,
rawDims: {
pageWidth: s,
pageHeight: i,
pageX: r,
pageY: a
}
} = this.parent.viewport;
this.rotation = e, this.pageRotation = (360 + e - this._uiManager.viewParameters.rotation) % 360, this.pageDimensions = [s, i], this.pageTranslation = [r, a];
const [l, c] = this.parentDimensions;
this.x = t.x / l, this.y = t.y / c, this.isAttachedToDOM = !1, this.deleted = !1;
}
static get _resizerKeyboardManager() {
const t = it.prototype._resizeWithKeyboard, e = pa.TRANSLATE_SMALL, s = pa.TRANSLATE_BIG;
return at(this, "_resizerKeyboardManager", new Oh([[["ArrowLeft", "mac+ArrowLeft"], t, {
args: [-e, 0]
}], [["ctrl+ArrowLeft", "mac+shift+ArrowLeft"], t, {
args: [-s, 0]
}], [["ArrowRight", "mac+ArrowRight"], t, {
args: [e, 0]
}], [["ctrl+ArrowRight", "mac+shift+ArrowRight"], t, {
args: [s, 0]
}], [["ArrowUp", "mac+ArrowUp"], t, {
args: [0, -e]
}], [["ctrl+ArrowUp", "mac+shift+ArrowUp"], t, {
args: [0, -s]
}], [["ArrowDown", "mac+ArrowDown"], t, {
args: [0, e]
}], [["ctrl+ArrowDown", "mac+shift+ArrowDown"], t, {
args: [0, s]
}], [["Escape", "mac+Escape"], it.prototype._stopResizingWithKeyboard]]));
}
get editorType() {
return Object.getPrototypeOf(this).constructor._type;
}
static get isDrawer() {
return !1;
}
static get _defaultLineColor() {
return at(this, "_defaultLineColor", this._colorManager.getHexCode("CanvasText"));
}
static deleteAnnotationElement(t) {
const e = new GE({
id: t.parent.getNextId(),
parent: t.parent,
uiManager: t._uiManager
});
e.annotationElementId = t.annotationElementId, e.deleted = !0, e._uiManager.addToAnnotationStorage(e);
}
static initialize(t, e) {
if (it._l10n ?? (it._l10n = t), it._l10nResizer || (it._l10nResizer = Object.freeze({
topLeft: "pdfjs-editor-resizer-top-left",
topMiddle: "pdfjs-editor-resizer-top-middle",
topRight: "pdfjs-editor-resizer-top-right",
middleRight: "pdfjs-editor-resizer-middle-right",
bottomRight: "pdfjs-editor-resizer-bottom-right",
bottomMiddle: "pdfjs-editor-resizer-bottom-middle",
bottomLeft: "pdfjs-editor-resizer-bottom-left",
middleLeft: "pdfjs-editor-resizer-middle-left"
})), it._borderLineWidth !== -1)
return;
const s = getComputedStyle(document.documentElement);
it._borderLineWidth = parseFloat(s.getPropertyValue("--outline-width")) || 0;
}
static updateDefaultParams(t, e) {
}
static get defaultPropertiesToUpdate() {
return [];
}
static isHandlingMimeForPasting(t) {
return !1;
}
static paste(t, e) {
Et("Not implemented");
}
get propertiesToUpdate() {
return [];
}
get _isDraggable() {
return o(this, Rc);
}
set _isDraggable(t) {
var e;
p(this, Rc, t), (e = this.div) == null || e.classList.toggle("draggable", t);
}
get isEnterHandled() {
return !0;
}
center() {
const [t, e] = this.pageDimensions;
switch (this.parentRotation) {
case 90:
this.x -= this.height * e / (t * 2), this.y += this.width * t / (e * 2);
break;
case 180:
this.x += this.width / 2, this.y += this.height / 2;
break;
case 270:
this.x += this.height * e / (t * 2), this.y -= this.width * t / (e * 2);
break;
default:
this.x -= this.width / 2, this.y -= this.height / 2;
break;
}
this.fixAndSetPosition();
}
addCommands(t) {
this._uiManager.addCommands(t);
}
get currentLayer() {
return this._uiManager.currentLayer;
}
setInBackground() {
this.div.style.zIndex = 0;
}
setInForeground() {
this.div.style.zIndex = o(this, Ju);
}
setParent(t) {
t !== null ? (this.pageIndex = t.pageIndex, this.pageDimensions = t.pageDimensions) : v(this, q, fl).call(this), this.parent = t;
}
focusin(t) {
this._focusEventsAllowed && (o(this, br) ? p(this, br, !1) : this.parent.setSelected(this));
}
focusout(t) {
var s;
if (!this._focusEventsAllowed || !this.isAttachedToDOM)
return;
const e = t.relatedTarget;
e != null && e.closest(`#${this.id}`) || (t.preventDefault(), (s = this.parent) != null && s.isMultipleSelection || this.commitOrRemove());
}
commitOrRemove() {
this.isEmpty() ? this.remove() : this.commit();
}
commit() {
this.addToAnnotationStorage();
}
addToAnnotationStorage() {
this._uiManager.addToAnnotationStorage(this);
}
setAt(t, e, s, i) {
const [r, a] = this.parentDimensions;
[s, i] = this.screenToPageTranslation(s, i), this.x = (t + s) / r, this.y = (e + i) / a, this.fixAndSetPosition();
}
translate(t, e) {
v(this, q, xf).call(this, this.parentDimensions, t, e);
}
translateInPage(t, e) {
o(this, Ge) || p(this, Ge, [this.x, this.y, this.width, this.height]), v(this, q, xf).call(this, this.pageDimensions, t, e), this.div.scrollIntoView({
block: "nearest"
});
}
drag(t, e) {
o(this, Ge) || p(this, Ge, [this.x, this.y, this.width, this.height]);
const {
div: s,
parentDimensions: [i, r]
} = this;
if (this.x += t / i, this.y += e / r, this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {
const {
x: d,
y: f
} = this.div.getBoundingClientRect();
this.parent.findNewParent(this, d, f) && (this.x -= Math.floor(this.x), this.y -= Math.floor(this.y));
}
let {
x: a,
y: l
} = this;
const [c, h] = this.getBaseTranslation();
a += c, l += h;
const {
style: u
} = s;
u.left = `${(100 * a).toFixed(2)}%`, u.top = `${(100 * l).toFixed(2)}%`, this._onTranslating(a, l), s.scrollIntoView({
block: "nearest"
});
}
_onTranslating(t, e) {
}
_onTranslated(t, e) {
}
get _hasBeenMoved() {
return !!o(this, Ge) && (o(this, Ge)[0] !== this.x || o(this, Ge)[1] !== this.y);
}
get _hasBeenResized() {
return !!o(this, Ge) && (o(this, Ge)[2] !== this.width || o(this, Ge)[3] !== this.height);
}
getBaseTranslation() {
const [t, e] = this.parentDimensions, {
_borderLineWidth: s
} = it, i = s / t, r = s / e;
switch (this.rotation) {
case 90:
return [-i, r];
case 180:
return [i, r];
case 270:
return [i, -r];
default:
return [-i, -r];
}
}
get _mustFixPosition() {
return !0;
}
fixAndSetPosition(t = this.rotation) {
const {
div: {
style: e
},
pageDimensions: [s, i]
} = this;
let {
x: r,
y: a,
width: l,
height: c
} = this;
if (l *= s, c *= i, r *= s, a *= i, this._mustFixPosition)
switch (t) {
case 0:
r = Math.max(0, Math.min(s - l, r)), a = Math.max(0, Math.min(i - c, a));
break;
case 90:
r = Math.max(0, Math.min(s - c, r)), a = Math.min(i, Math.max(l, a));
break;
case 180:
r = Math.min(s, Math.max(l, r)), a = Math.min(i, Math.max(c, a));
break;
case 270:
r = Math.min(s, Math.max(c, r)), a = Math.max(0, Math.min(i - l, a));
break;
}
this.x = r /= s, this.y = a /= i;
const [h, u] = this.getBaseTranslation();
r += h, a += u, e.left = `${(100 * r).toFixed(2)}%`, e.top = `${(100 * a).toFixed(2)}%`, this.moveInDOM();
}
screenToPageTranslation(t, e) {
var s;
return v(s = it, Pc, Tf).call(s, t, e, this.parentRotation);
}
pageTranslationToScreen(t, e) {
var s;
return v(s = it, Pc, Tf).call(s, t, e, 360 - this.parentRotation);
}
get parentScale() {
return this._uiManager.viewParameters.realScale;
}
get parentRotation() {
return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;
}
get parentDimensions() {
const {
parentScale: t,
pageDimensions: [e, s]
} = this;
return [e * t, s * t];
}
setDims(t, e) {
const [s, i] = this.parentDimensions, {
style: r
} = this.div;
r.width = `${(100 * t / s).toFixed(2)}%`, o(this, mr) || (r.height = `${(100 * e / i).toFixed(2)}%`);
}
fixDims() {
const {
style: t
} = this.div, {
height: e,
width: s
} = t, i = s.endsWith("%"), r = !o(this, mr) && e.endsWith("%");
if (i && r)
return;
const [a, l] = this.parentDimensions;
i || (t.width = `${(100 * parseFloat(s) / a).toFixed(2)}%`), !o(this, mr) && !r && (t.height = `${(100 * parseFloat(e) / l).toFixed(2)}%`);
}
getInitialTranslation() {
return [0, 0];
}
_onResized() {
}
static _round(t) {
return Math.round(t * 1e4) / 1e4;
}
_onResizing() {
}
altTextFinish() {
var t;
(t = o(this, It)) == null || t.finish();
}
async addEditToolbar() {
return this._editToolbar || o(this, vr) ? this._editToolbar : (this._editToolbar = new pf(this), this.div.append(this._editToolbar.render()), o(this, It) && await this._editToolbar.addAltText(o(this, It)), this._editToolbar);
}
removeEditToolbar() {
var t;
this._editToolbar && (this._editToolbar.remove(), this._editToolbar = null, (t = o(this, It)) == null || t.destroy());
}
addContainer(t) {
var s;
const e = (s = this._editToolbar) == null ? void 0 : s.div;
e ? e.before(t) : this.div.append(t);
}
getClientDimensions() {
return this.div.getBoundingClientRect();
}
async addAltTextButton() {
o(this, It) || (Bu.initialize(it._l10n), p(this, It, new Bu(this)), o(this, gr) && (o(this, It).data = o(this, gr), p(this, gr, null)), await this.addEditToolbar());
}
get altTextData() {
var t;
return (t = o(this, It)) == null ? void 0 : t.data;
}
set altTextData(t) {
o(this, It) && (o(this, It).data = t);
}
get guessedAltText() {
var t;
return (t = o(this, It)) == null ? void 0 : t.guessedText;
}
async setGuessedAltText(t) {
var e;
await ((e = o(this, It)) == null ? void 0 : e.setGuessedText(t));
}
serializeAltText(t) {
var e;
return (e = o(this, It)) == null ? void 0 : e.serialize(t);
}
hasAltText() {
return !!o(this, It) && !o(this, It).isEmpty();
}
hasAltTextData() {
var t;
return ((t = o(this, It)) == null ? void 0 : t.hasData()) ?? !1;
}
render() {
var r;
this.div = document.createElement("div"), this.div.setAttribute("data-editor-rotation", (360 - this.rotation) % 360), this.div.className = this.name, this.div.setAttribute("id", this.id), this.div.tabIndex = o(this, Wa) ? -1 : 0, this._isVisible || this.div.classList.add("hidden"), this.setInForeground(), v(this, q, Rf).call(this);
const [t, e] = this.parentDimensions;
this.parentRotation % 180 !== 0 && (this.div.style.maxWidth = `${(100 * e / t).toFixed(2)}%`, this.div.style.maxHeight = `${(100 * t / e).toFixed(2)}%`);
const [s, i] = this.getInitialTranslation();
return this.translate(s, i), ju(this, this.div, ["pointerdown"]), this.isResizable && this._uiManager._supportsPinchToZoom && (o(this, _r) || p(this, _r, new Hu({
container: this.div,
isPinchingDisabled: () => !this.isSelected,
onPinchStart: v(this, q, lb).bind(this),
onPinching: v(this, q, cb).bind(this),
onPinchEnd: v(this, q, hb).bind(this),
signal: this._uiManager._signal
}))), (r = this._uiManager._editorUndoBar) == null || r.hide(), this.div;
}
pointerdown(t) {
const {
isMac: e
} = Me.platform;
if (t.button !== 0 || t.ctrlKey && e) {
t.preventDefault();
return;
}
if (p(this, br, !0), this._isDraggable) {
v(this, q, ub).call(this, t);
return;
}
v(this, q, If).call(this, t);
}
get isSelected() {
return this._uiManager.isSelected(this);
}
_onStartDragging() {
}
_onStopDragging() {
}
moveInDOM() {
o(this, ei) && clearTimeout(o(this, ei)), p(this, ei, setTimeout(() => {
var t;
p(this, ei, null), (t = this.parent) == null || t.moveEditorInDOM(this);
}, 0));
}
_setParentAndPosition(t, e, s) {
t.changeParent(this), this.x = e, this.y = s, this.fixAndSetPosition(), this._onTranslated();
}
getRect(t, e, s = this.rotation) {
const i = this.parentScale, [r, a] = this.pageDimensions, [l, c] = this.pageTranslation, h = t / i, u = e / i, d = this.x * r, f = this.y * a, g = this.width * r, m = this.height * a;
switch (s) {
case 0:
return [d + h + l, a - f - u - m + c, d + h + g + l, a - f - u + c];
case 90:
return [d + u + l, a - f + h + c, d + u + m + l, a - f + h + g + c];
case 180:
return [d - h - g + l, a - f + u + c, d - h + l, a - f + u + m + c];
case 270:
return [d - u - m + l, a - f - h - g + c, d - u + l, a - f - h + c];
default:
throw new Error("Invalid rotation");
}
}
getRectInCurrentCoords(t, e) {
const [s, i, r, a] = t, l = r - s, c = a - i;
switch (this.rotation) {
case 0:
return [s, e - a, l, c];
case 90:
return [s, e - i, c, l];
case 180:
return [r, e - i, l, c];
case 270:
return [r, e - a, c, l];
default:
throw new Error("Invalid rotation");
}
}
onceAdded(t) {
}
isEmpty() {
return !1;
}
enableEditMode() {
p(this, vr, !0);
}
disableEditMode() {
p(this, vr, !1);
}
isInEditMode() {
return o(this, vr);
}
shouldGetKeyboardEvents() {
return o(this, Ci);
}
needsToBeRebuilt() {
return this.div && !this.isAttachedToDOM;
}
get isOnScreen() {
const {
top: t,
left: e,
bottom: s,
right: i
} = this.getClientDimensions(), {
innerHeight: r,
innerWidth: a
} = window;
return e < a && i > 0 && t < r && s > 0;
}
rebuild() {
v(this, q, Rf).call(this);
}
rotate(t) {
}
resize() {
}
serializeDeleted() {
var t;
return {
id: this.annotationElementId,
deleted: !0,
pageIndex: this.pageIndex,
popupRef: ((t = this._initialData) == null ? void 0 : t.popupRef) || ""
};
}
serialize(t = !1, e = null) {
Et("An editor must be serializable");
}
static async deserialize(t, e, s) {
const i = new this.prototype.constructor({
parent: e,
id: e.getNextId(),
uiManager: s
});
i.rotation = t.rotation, p(i, gr, t.accessibilityData);
const [r, a] = i.pageDimensions, [l, c, h, u] = i.getRectInCurrentCoords(t.rect, a);
return i.x = l / r, i.y = c / a, i.width = h / r, i.height = u / a, i;
}
get hasBeenModified() {
return !!this.annotationElementId && (this.deleted || this.serialize() !== null);
}
remove() {
var t, e;
if ((t = o(this, gn)) == null || t.abort(), p(this, gn, null), this.isEmpty() || this.commit(), this.parent ? this.parent.remove(this) : this._uiManager.removeEditor(this), o(this, ei) && (clearTimeout(o(this, ei)), p(this, ei, null)), v(this, q, fl).call(this), this.removeEditToolbar(), o(this, us)) {
for (const s of o(this, us).values())
clearTimeout(s);
p(this, us, null);
}
this.parent = null, (e = o(this, _r)) == null || e.destroy(), p(this, _r, null);
}
get isResizable() {
return !1;
}
makeResizable() {
this.isResizable && (v(this, q, ab).call(this), o(this, he).classList.remove("hidden"), ju(this, this.div, ["keydown"]));
}
get toolbarPosition() {
return null;
}
keydown(t) {
if (!this.isResizable || t.target !== this.div || t.key !== "Enter")
return;
this._uiManager.setSelected(this), p(this, Ti, {
savedX: this.x,
savedY: this.y,
savedWidth: this.width,
savedHeight: this.height
});
const e = o(this, he).children;
if (!o(this, Cs)) {
p(this, Cs, Array.from(e));
const a = v(this, q, db).bind(this), l = v(this, q, fb).bind(this), c = this._uiManager._signal;
for (const h of o(this, Cs)) {
const u = h.getAttribute("data-resizer-name");
h.setAttribute("role", "spinbutton"), h.addEventListener("keydown", a, {
signal: c
}), h.addEventListener("blur", l, {
signal: c
}), h.addEventListener("focus", v(this, q, pb).bind(this, u), {
signal: c
}), h.setAttribute("data-l10n-id", it._l10nResizer[u]);
}
}
const s = o(this, Cs)[0];
let i = 0;
for (const a of e) {
if (a === s)
break;
i++;
}
const r = (360 - this.rotation + this.parentRotation) % 360 / 90 * (o(this, Cs).length / 4);
if (r !== i) {
if (r < i)
for (let l = 0; l < i - r; l++)
o(this, he).append(o(this, he).firstChild);
else if (r > i)
for (let l = 0; l < r - i; l++)
o(this, he).firstChild.before(o(this, he).lastChild);
let a = 0;
for (const l of e) {
const h = o(this, Cs)[a++].getAttribute("data-resizer-name");
l.setAttribute("data-l10n-id", it._l10nResizer[h]);
}
}
v(this, q, Pf).call(this, 0), p(this, Ci, !0), o(this, he).firstChild.focus({
focusVisible: !0
}), t.preventDefault(), t.stopImmediatePropagation();
}
_resizeWithKeyboard(t, e) {
o(this, Ci) && v(this, q, kf).call(this, o(this, kc), {
deltaX: t,
deltaY: e,
fromKeyboard: !0
});
}
_stopResizingWithKeyboard() {
v(this, q, fl).call(this), this.div.focus();
}
select() {
var t, e, s;
if (this.makeResizable(), (t = this.div) == null || t.classList.add("selectedEditor"), !this._editToolbar) {
this.addEditToolbar().then(() => {
var i, r;
(i = this.div) != null && i.classList.contains("selectedEditor") && ((r = this._editToolbar) == null || r.show());
});
return;
}
(e = this._editToolbar) == null || e.show(), (s = o(this, It)) == null || s.toggleAltTextBadge(!1);
}
unselect() {
var t, e, s, i, r;
(t = o(this, he)) == null || t.classList.add("hidden"), (e = this.div) == null || e.classList.remove("selectedEditor"), (s = this.div) != null && s.contains(document.activeElement) && this._uiManager.currentLayer.div.focus({
preventScroll: !0
}), (i = this._editToolbar) == null || i.hide(), (r = o(this, It)) == null || r.toggleAltTextBadge(!0);
}
updateParams(t, e) {
}
disableEditing() {
}
enableEditing() {
}
enterInEditMode() {
}
getImageForAltText() {
return null;
}
get contentDiv() {
return this.div;
}
get isEditing() {
return o(this, Ic);
}
set isEditing(t) {
p(this, Ic, t), this.parent && (t ? (this.parent.setSelected(this), this.parent.setActiveEditor(this)) : this.parent.setActiveEditor(null));
}
setAspectRatio(t, e) {
p(this, mr, !0);
const s = t / e, {
style: i
} = this.div;
i.aspectRatio = s, i.height = "auto";
}
static get MIN_SIZE() {
return 16;
}
static canCreateNewEmptyEditor() {
return !0;
}
get telemetryInitialData() {
return {
action: "added"
};
}
get telemetryFinalData() {
return null;
}
_reportTelemetry(t, e = !1) {
if (e) {
o(this, us) || p(this, us, /* @__PURE__ */ new Map());
const {
action: s
} = t;
let i = o(this, us).get(s);
i && clearTimeout(i), i = setTimeout(() => {
this._reportTelemetry(t), o(this, us).delete(s), o(this, us).size === 0 && p(this, us, null);
}, it._telemetryTimeout), o(this, us).set(s, i);
return;
}
t.type || (t.type = this.editorType), this._uiManager._eventBus.dispatch("reporttelemetry", {
source: this,
details: {
type: "editing",
data: t
}
});
}
show(t = this._isVisible) {
this.div.classList.toggle("hidden", !t), this._isVisible = t;
}
enable() {
this.div && (this.div.tabIndex = 0), p(this, Wa, !1);
}
disable() {
this.div && (this.div.tabIndex = -1), p(this, Wa, !0);
}
renderAnnotationElement(t) {
let e = t.container.querySelector(".annotationContent");
if (!e)
e = document.createElement("div"), e.classList.add("annotationContent", this.editorType), t.container.prepend(e);
else if (e.nodeName === "CANVAS") {
const s = e;
e = document.createElement("div"), e.classList.add("annotationContent", this.editorType), s.before(e);
}
return e;
}
resetAnnotationElement(t) {
const {
firstChild: e
} = t.container;
(e == null ? void 0 : e.nodeName) === "DIV" && e.classList.contains("annotationContent") && e.remove();
}
};
gr = new WeakMap(), Cs = new WeakMap(), It = new WeakMap(), Wa = new WeakMap(), pn = new WeakMap(), Cc = new WeakMap(), mr = new WeakMap(), he = new WeakMap(), yr = new WeakMap(), Ti = new WeakMap(), gn = new WeakMap(), kc = new WeakMap(), br = new WeakMap(), Ge = new WeakMap(), Ic = new WeakMap(), vr = new WeakMap(), Ci = new WeakMap(), ei = new WeakMap(), Xa = new WeakMap(), Za = new WeakMap(), us = new WeakMap(), _r = new WeakMap(), Rc = new WeakMap(), Ju = new WeakMap(), q = new WeakSet(), xf = function([t, e], s, i) {
[s, i] = this.screenToPageTranslation(s, i), this.x += s / t, this.y += i / e, this._onTranslating(this.x, this.y), this.fixAndSetPosition();
}, Pc = new WeakSet(), Tf = function(t, e, s) {
switch (s) {
case 90:
return [e, -t];
case 180:
return [-t, -e];
case 270:
return [-e, t];
default:
return [t, e];
}
}, Jh = function(t) {
switch (t) {
case 90: {
const [e, s] = this.pageDimensions;
return [0, -e / s, s / e, 0];
}
case 180:
return [-1, 0, 0, -1];
case 270: {
const [e, s] = this.pageDimensions;
return [0, e / s, -s / e, 0];
}
default:
return [1, 0, 0, 1];
}
}, ab = function() {
if (o(this, he))
return;
p(this, he, document.createElement("div")), o(this, he).classList.add("resizers");
const t = this._willKeepAspectRatio ? ["topLeft", "topRight", "bottomRight", "bottomLeft"] : ["topLeft", "topMiddle", "topRight", "middleRight", "bottomRight", "bottomMiddle", "bottomLeft", "middleLeft"], e = this._uiManager._signal;
for (const s of t) {
const i = document.createElement("div");
o(this, he).append(i), i.classList.add("resizer", s), i.setAttribute("data-resizer-name", s), i.addEventListener("pointerdown", v(this, q, ob).bind(this, s), {
signal: e
}), i.addEventListener("contextmenu", Hs, {
signal: e
}), i.tabIndex = -1;
}
this.div.prepend(o(this, he));
}, ob = function(t, e) {
var u;
e.preventDefault();
const {
isMac: s
} = Me.platform;
if (e.button !== 0 || e.ctrlKey && s)
return;
(u = o(this, It)) == null || u.toggle(!1);
const i = this._isDraggable;
this._isDraggable = !1, p(this, yr, [e.screenX, e.screenY]);
const r = new AbortController(), a = this._uiManager.combinedSignal(r);
this.parent.togglePointerEvents(!1), window.addEventListener("pointermove", v(this, q, kf).bind(this, t), {
passive: !0,
capture: !0,
signal: a
}), window.addEventListener("touchmove", ns, {
passive: !1,
signal: a
}), window.addEventListener("contextmenu", Hs, {
signal: a
}), p(this, Ti, {
savedX: this.x,
savedY: this.y,
savedWidth: this.width,
savedHeight: this.height
});
const l = this.parent.div.style.cursor, c = this.div.style.cursor;
this.div.style.cursor = this.parent.div.style.cursor = window.getComputedStyle(e.target).cursor;
const h = () => {
var d;
r.abort(), this.parent.togglePointerEvents(!0), (d = o(this, It)) == null || d.toggle(!0), this._isDraggable = i, this.parent.div.style.cursor = l, this.div.style.cursor = c, v(this, q, Qh).call(this);
};
window.addEventListener("pointerup", h, {
signal: a
}), window.addEventListener("blur", h, {
signal: a
});
}, Cf = function(t, e, s, i) {
this.width = s, this.height = i, this.x = t, this.y = e;
const [r, a] = this.parentDimensions;
this.setDims(r * s, a * i), this.fixAndSetPosition(), this._onResized();
}, Qh = function() {
if (!o(this, Ti))
return;
const {
savedX: t,
savedY: e,
savedWidth: s,
savedHeight: i
} = o(this, Ti);
p(this, Ti, null);
const r = this.x, a = this.y, l = this.width, c = this.height;
r === t && a === e && l === s && c === i || this.addCommands({
cmd: v(this, q, Cf).bind(this, r, a, l, c),
undo: v(this, q, Cf).bind(this, t, e, s, i),
mustExec: !0
});
}, kf = function(t, e) {
const [s, i] = this.parentDimensions, r = this.x, a = this.y, l = this.width, c = this.height, h = it.MIN_SIZE / s, u = it.MIN_SIZE / i, d = v(this, q, Jh).call(this, this.rotation), f = (M, z) => [d[0] * M + d[2] * z, d[1] * M + d[3] * z], g = v(this, q, Jh).call(this, 360 - this.rotation), m = (M, z) => [g[0] * M + g[2] * z, g[1] * M + g[3] * z];
let y, _, A = !1, S = !1;
switch (t) {
case "topLeft":
A = !0, y = (M, z) => [0, 0], _ = (M, z) => [M, z];
break;
case "topMiddle":
y = (M, z) => [M / 2, 0], _ = (M, z) => [M / 2, z];
break;
case "topRight":
A = !0, y = (M, z) => [M, 0], _ = (M, z) => [0, z];
break;
case "middleRight":
S = !0, y = (M, z) => [M, z / 2], _ = (M, z) => [0, z / 2];
break;
case "bottomRight":
A = !0, y = (M, z) => [M, z], _ = (M, z) => [0, 0];
break;
case "bottomMiddle":
y = (M, z) => [M / 2, z], _ = (M, z) => [M / 2, 0];
break;
case "bottomLeft":
A = !0, y = (M, z) => [0, z], _ = (M, z) => [M, 0];
break;
case "middleLeft":
S = !0, y = (M, z) => [0, z / 2], _ = (M, z) => [M, z / 2];
break;
}
const E = y(l, c), x = _(l, c);
let T = f(...x);
const k = it._round(r + T[0]), C = it._round(a + T[1]);
let P = 1, j = 1, Z, V;
if (e.fromKeyboard)
({
deltaX: Z,
deltaY: V
} = e);
else {
const {
screenX: M,
screenY: z
} = e, [ot, kt] = o(this, yr);
[Z, V] = this.screenToPageTranslation(M - ot, z - kt), o(this, yr)[0] = M, o(this, yr)[1] = z;
}
if ([Z, V] = m(Z / s, V / i), A) {
const M = Math.hypot(l, c);
P = j = Math.max(Math.min(Math.hypot(x[0] - E[0] - Z, x[1] - E[1] - V) / M, 1 / l, 1 / c), h / l, u / c);
} else S ? P = Math.max(h, Math.min(1, Math.abs(x[0] - E[0] - Z))) / l : j = Math.max(u, Math.min(1, Math.abs(x[1] - E[1] - V))) / c;
const dt = it._round(l * P), gt = it._round(c * j);
T = f(..._(dt, gt));
const Y = k - T[0], xt = C - T[1];
o(this, Ge) || p(this, Ge, [this.x, this.y, this.width, this.height]), this.width = dt, this.height = gt, this.x = Y, this.y = xt, this.setDims(s * dt, i * gt), this.fixAndSetPosition(), this._onResizing();
}, lb = function() {
var t;
p(this, Ti, {
savedX: this.x,
savedY: this.y,
savedWidth: this.width,
savedHeight: this.height
}), (t = o(this, It)) == null || t.toggle(!1), this.parent.togglePointerEvents(!1);
}, cb = function(t, e, s) {
let r = 0.7 * (s / e) + 1 - 0.7;
if (r === 1)
return;
const a = v(this, q, Jh).call(this, this.rotation), l = (k, C) => [a[0] * k + a[2] * C, a[1] * k + a[3] * C], [c, h] = this.parentDimensions, u = this.x, d = this.y, f = this.width, g = this.height, m = it.MIN_SIZE / c, y = it.MIN_SIZE / h;
r = Math.max(Math.min(r, 1 / f, 1 / g), m / f, y / g);
const _ = it._round(f * r), A = it._round(g * r);
if (_ === f && A === g)
return;
o(this, Ge) || p(this, Ge, [u, d, f, g]);
const S = l(f / 2, g / 2), E = it._round(u + S[0]), x = it._round(d + S[1]), T = l(_ / 2, A / 2);
this.x = E - T[0], this.y = x - T[1], this.width = _, this.height = A, this.setDims(c * _, h * A), this.fixAndSetPosition(), this._onResizing();
}, hb = function() {
var t;
(t = o(this, It)) == null || t.toggle(!0), this.parent.togglePointerEvents(!0), v(this, q, Qh).call(this);
}, If = function(t) {
const {
isMac: e
} = Me.platform;
t.ctrlKey && !e || t.shiftKey || t.metaKey && e ? this.parent.toggleSelected(this) : this.parent.setSelected(this);
}, ub = function(t) {
const {
isSelected: e
} = this;
this._uiManager.setUpDragSession();
let s = !1;
const i = new AbortController(), r = this._uiManager.combinedSignal(i), a = {
capture: !0,
passive: !1,
signal: r
}, l = (h) => {
i.abort(), p(this, pn, null), p(this, br, !1), this._uiManager.endDragSession() || v(this, q, If).call(this, h), s && this._onStopDragging();
};
e && (p(this, Xa, t.clientX), p(this, Za, t.clientY), p(this, pn, t.pointerId), p(this, Cc, t.pointerType), window.addEventListener("pointermove", (h) => {
s || (s = !0, this._onStartDragging());
const {
clientX: u,
clientY: d,
pointerId: f
} = h;
if (f !== o(this, pn)) {
ns(h);
return;
}
const [g, m] = this.screenToPageTranslation(u - o(this, Xa), d - o(this, Za));
p(this, Xa, u), p(this, Za, d), this._uiManager.dragSelectedEditors(g, m);
}, a), window.addEventListener("touchmove", ns, a), window.addEventListener("pointerdown", (h) => {
h.pointerType === o(this, Cc) && (o(this, _r) || h.isPrimary) && l(h), ns(h);
}, a));
const c = (h) => {
if (!o(this, pn) || o(this, pn) === h.pointerId) {
l(h);
return;
}
ns(h);
};
window.addEventListener("pointerup", c, {
signal: r
}), window.addEventListener("blur", c, {
signal: r
});
}, Rf = function() {
if (o(this, gn) || !this.div)
return;
p(this, gn, new AbortController());
const t = this._uiManager.combinedSignal(o(this, gn));
this.div.addEventListener("focusin", this.focusin.bind(this), {
signal: t
}), this.div.addEventListener("focusout", this.focusout.bind(this), {
signal: t
});
}, db = function(t) {
it._resizerKeyboardManager.exec(this, t);
}, fb = function(t) {
var e;
o(this, Ci) && ((e = t.relatedTarget) == null ? void 0 : e.parentNode) !== o(this, he) && v(this, q, fl).call(this);
}, pb = function(t) {
p(this, kc, o(this, Ci) ? t : "");
}, Pf = function(t) {
if (o(this, Cs))
for (const e of o(this, Cs))
e.tabIndex = t;
}, fl = function() {
p(this, Ci, !1), v(this, q, Pf).call(this, -1), v(this, q, Qh).call(this);
}, b(it, Pc), G(it, "_l10n", null), G(it, "_l10nResizer", null), G(it, "_borderLineWidth", -1), G(it, "_colorManager", new yf()), G(it, "_zIndex", 1), G(it, "_telemetryTimeout", 1e3);
let Ft = it;
class GE extends Ft {
constructor(t) {
super(t), this.annotationElementId = t.annotationElementId, this.deleted = !0;
}
serialize() {
return this.serializeDeleted();
}
}
const $g = 3285377520, ls = 4294901760, Gs = 65535;
class gb {
constructor(t) {
this.h1 = t ? t & 4294967295 : $g, this.h2 = t ? t & 4294967295 : $g;
}
update(t) {
let e, s;
if (typeof t == "string") {
e = new Uint8Array(t.length * 2), s = 0;
for (let y = 0, _ = t.length; y < _; y++) {
const A = t.charCodeAt(y);
A <= 255 ? e[s++] = A : (e[s++] = A >>> 8, e[s++] = A & 255);
}
} else if (ArrayBuffer.isView(t))
e = t.slice(), s = e.byteLength;
else
throw new Error("Invalid data format, must be a string or TypedArray.");
const i = s >> 2, r = s - i * 4, a = new Uint32Array(e.buffer, 0, i);
let l = 0, c = 0, h = this.h1, u = this.h2;
const d = 3432918353, f = 461845907, g = d & Gs, m = f & Gs;
for (let y = 0; y < i; y++)
y & 1 ? (l = a[y], l = l * d & ls | l * g & Gs, l = l << 15 | l >>> 17, l = l * f & ls | l * m & Gs, h ^= l, h = h << 13 | h >>> 19, h = h * 5 + 3864292196) : (c = a[y], c = c * d & ls | c * g & Gs, c = c << 15 | c >>> 17, c = c * f & ls | c * m & Gs, u ^= c, u = u << 13 | u >>> 19, u = u * 5 + 3864292196);
switch (l = 0, r) {
case 3:
l ^= e[i * 4 + 2] << 16;
case 2:
l ^= e[i * 4 + 1] << 8;
case 1:
l ^= e[i * 4], l = l * d & ls | l * g & Gs, l = l << 15 | l >>> 17, l = l * f & ls | l * m & Gs, i & 1 ? h ^= l : u ^= l;
}
this.h1 = h, this.h2 = u;
}
hexdigest() {
let t = this.h1, e = this.h2;
return t ^= e >>> 1, t = t * 3981806797 & ls | t * 36045 & Gs, e = e * 4283543511 & ls | ((e << 16 | t >>> 16) * 2950163797 & ls) >>> 16, t ^= e >>> 1, t = t * 444984403 & ls | t * 60499 & Gs, e = e * 3301882366 & ls | ((e << 16 | t >>> 16) * 3120437893 & ls) >>> 16, t ^= e >>> 1, (t >>> 0).toString(16).padStart(8, "0") + (e >>> 0).toString(16).padStart(8, "0");
}
}
const Mf = Object.freeze({
map: null,
hash: "",
transfer: void 0
});
var Ar, wr, se, Qu, mb;
class qp {
constructor() {
b(this, Qu);
b(this, Ar, !1);
b(this, wr, null);
b(this, se, /* @__PURE__ */ new Map());
this.onSetModified = null, this.onResetModified = null, this.onAnnotationEditor = null;
}
getValue(t, e) {
const s = o(this, se).get(t);
return s === void 0 ? e : Object.assign(e, s);
}
getRawValue(t) {
return o(this, se).get(t);
}
remove(t) {
if (o(this, se).delete(t), o(this, se).size === 0 && this.resetModified(), typeof this.onAnnotationEditor == "function") {
for (const e of o(this, se).values())
if (e instanceof Ft)
return;
this.onAnnotationEditor(null);
}
}
setValue(t, e) {
const s = o(this, se).get(t);
let i = !1;
if (s !== void 0)
for (const [r, a] of Object.entries(e))
s[r] !== a && (i = !0, s[r] = a);
else
i = !0, o(this, se).set(t, e);
i && v(this, Qu, mb).call(this), e instanceof Ft && typeof this.onAnnotationEditor == "function" && this.onAnnotationEditor(e.constructor._type);
}
has(t) {
return o(this, se).has(t);
}
getAll() {
return o(this, se).size > 0 ? Bp(o(this, se)) : null;
}
setAll(t) {
for (const [e, s] of Object.entries(t))
this.setValue(e, s);
}
get size() {
return o(this, se).size;
}
resetModified() {
o(this, Ar) && (p(this, Ar, !1), typeof this.onResetModified == "function" && this.onResetModified());
}
get print() {
return new yb(this);
}
get serializable() {
if (o(this, se).size === 0)
return Mf;
const t = /* @__PURE__ */ new Map(), e = new gb(), s = [], i = /* @__PURE__ */ Object.create(null);
let r = !1;
for (const [a, l] of o(this, se)) {
const c = l instanceof Ft ? l.serialize(!1, i) : l;
c && (t.set(a, c), e.update(`${a}:${JSON.stringify(c)}`), r || (r = !!c.bitmap));
}
if (r)
for (const a of t.values())
a.bitmap && s.push(a.bitmap);
return t.size > 0 ? {
map: t,
hash: e.hexdigest(),
transfer: s
} : Mf;
}
get editorStats() {
let t = null;
const e = /* @__PURE__ */ new Map();
for (const s of o(this, se).values()) {
if (!(s instanceof Ft))
continue;
const i = s.telemetryFinalData;
if (!i)
continue;
const {
type: r
} = i;
e.has(r) || e.set(r, Object.getPrototypeOf(s).constructor), t || (t = /* @__PURE__ */ Object.create(null));
const a = t[r] || (t[r] = /* @__PURE__ */ new Map());
for (const [l, c] of Object.entries(i)) {
if (l === "type")
continue;
let h = a.get(l);
h || (h = /* @__PURE__ */ new Map(), a.set(l, h));
const u = h.get(c) ?? 0;
h.set(c, u + 1);
}
}
for (const [s, i] of e)
t[s] = i.computeTelemetryFinalData(t[s]);
return t;
}
resetModifiedIds() {
p(this, wr, null);
}
get modifiedIds() {
if (o(this, wr))
return o(this, wr);
const t = [];
for (const e of o(this, se).values())
!(e instanceof Ft) || !e.annotationElementId || !e.serialize() || t.push(e.annotationElementId);
return p(this, wr, {
ids: new Set(t),
hash: t.join(",")
});
}
}
Ar = new WeakMap(), wr = new WeakMap(), se = new WeakMap(), Qu = new WeakSet(), mb = function() {
o(this, Ar) || (p(this, Ar, !0), typeof this.onSetModified == "function" && this.onSetModified());
};
var Mc;
class yb extends qp {
constructor(e) {
super();
b(this, Mc);
const {
map: s,
hash: i,
transfer: r
} = e.serializable, a = structuredClone(s, r ? {
transfer: r
} : null);
p(this, Mc, {
map: a,
hash: i,
transfer: r
});
}
get print() {
Et("Should not call PrintAnnotationStorage.print");
}
get serializable() {
return o(this, Mc);
}
get modifiedIds() {
return at(this, "modifiedIds", {
ids: /* @__PURE__ */ new Set(),
hash: ""
});
}
}
Mc = new WeakMap();
var Ya;
class qE {
constructor({
ownerDocument: t = globalThis.document,
styleElement: e = null
}) {
b(this, Ya, /* @__PURE__ */ new Set());
this._document = t, this.nativeFontFaces = /* @__PURE__ */ new Set(), this.styleElement = null, this.loadingRequests = [], this.loadTestFontId = 0;
}
addNativeFontFace(t) {
this.nativeFontFaces.add(t), this._document.fonts.add(t);
}
removeNativeFontFace(t) {
this.nativeFontFaces.delete(t), this._document.fonts.delete(t);
}
insertRule(t) {
this.styleElement || (this.styleElement = this._document.createElement("style"), this._document.documentElement.getElementsByTagName("head")[0].append(this.styleElement));
const e = this.styleElement.sheet;
e.insertRule(t, e.cssRules.length);
}
clear() {
for (const t of this.nativeFontFaces)
this._document.fonts.delete(t);
this.nativeFontFaces.clear(), o(this, Ya).clear(), this.styleElement && (this.styleElement.remove(), this.styleElement = null);
}
async loadSystemFont({
systemFontInfo: t,
_inspectFont: e
}) {
if (!(!t || o(this, Ya).has(t.loadedName))) {
if (qt(!this.disableFontFace, "loadSystemFont shouldn't be called when `disableFontFace` is set."), this.isFontLoadingAPISupported) {
const {
loadedName: s,
src: i,
style: r
} = t, a = new FontFace(s, i, r);
this.addNativeFontFace(a);
try {
await a.load(), o(this, Ya).add(s), e == null || e(t);
} catch {
st(`Cannot load system font: ${t.baseFontName}, installing it could help to improve PDF rendering.`), this.removeNativeFontFace(a);
}
return;
}
Et("Not implemented: loadSystemFont without the Font Loading API.");
}
}
async bind(t) {
if (t.attached || t.missingFile && !t.systemFontInfo)
return;
if (t.attached = !0, t.systemFontInfo) {
await this.loadSystemFont(t);
return;
}
if (this.isFontLoadingAPISupported) {
const s = t.createNativeFontFace();
if (s) {
this.addNativeFontFace(s);
try {
await s.loaded;
} catch (i) {
throw st(`Failed to load font '${s.family}': '${i}'.`), t.disableFontFace = !0, i;
}
}
return;
}
const e = t.createFontFaceRule();
if (e) {
if (this.insertRule(e), this.isSyncFontLoadingSupported)
return;
await new Promise((s) => {
const i = this._queueLoadingCallback(s);
this._prepareFontLoadEvent(t, i);
});
}
}
get isFontLoadingAPISupported() {
var e;
const t = !!((e = this._document) != null && e.fonts);
return at(this, "isFontLoadingAPISupported", t);
}
get isSyncFontLoadingSupported() {
let t = !1;
return (Se || typeof navigator < "u" && typeof (navigator == null ? void 0 : navigator.userAgent) == "string" && /Mozilla\/5.0.*?rv:\d+.*? Gecko/.test(navigator.userAgent)) && (t = !0), at(this, "isSyncFontLoadingSupported", t);
}
_queueLoadingCallback(t) {
function e() {
for (qt(!i.done, "completeRequest() cannot be called twice."), i.done = !0; s.length > 0 && s[0].done; ) {
const r = s.shift();
setTimeout(r.callback, 0);
}
}
const {
loadingRequests: s
} = this, i = {
done: !1,
complete: e,
callback: t
};
return s.push(i), i;
}
get _loadTestFont() {
const t = atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==");
return at(this, "_loadTestFont", t);
}
_prepareFontLoadEvent(t, e) {
function s(x, T) {
return x.charCodeAt(T) << 24 | x.charCodeAt(T + 1) << 16 | x.charCodeAt(T + 2) << 8 | x.charCodeAt(T + 3) & 255;
}
function i(x, T, k, C) {
const P = x.substring(0, T), j = x.substring(T + k);
return P + C + j;
}
let r, a;
const l = this._document.createElement("canvas");
l.width = 1, l.height = 1;
const c = l.getContext("2d");
let h = 0;
function u(x, T) {
if (++h > 30) {
st("Load test font never loaded."), T();
return;
}
if (c.font = "30px " + x, c.fillText(".", 0, 20), c.getImageData(0, 0, 1, 1).data[3] > 0) {
T();
return;
}
setTimeout(u.bind(null, x, T));
}
const d = `lt${Date.now()}${this.loadTestFontId++}`;
let f = this._loadTestFont;
f = i(f, 976, d.length, d);
const m = 16, y = 1482184792;
let _ = s(f, m);
for (r = 0, a = d.length - 3; r < a; r += 4)
_ = _ - y + s(d, r) | 0;
r < d.length && (_ = _ - y + s(d + "XXX", r) | 0), f = i(f, m, 4, PE(_));
const A = `url(data:font/opentype;base64,${btoa(f)});`, S = `@font-face {font-family:"${d}";src:${A}}`;
this.insertRule(S);
const E = this._document.createElement("div");
E.style.visibility = "hidden", E.style.width = E.style.height = "10px", E.style.position = "absolute", E.style.top = E.style.left = "0px";
for (const x of [t.loadedName, d]) {
const T = this._document.createElement("span");
T.textContent = "Hi", T.style.fontFamily = x, E.append(T);
}
this._document.body.append(E), u(d, () => {
E.remove(), e.complete();
});
}
}
Ya = new WeakMap();
class WE {
constructor(t, {
disableFontFace: e = !1,
fontExtraProperties: s = !1,
inspectFont: i = null
}) {
this.compiledGlyphs = /* @__PURE__ */ Object.create(null);
for (const r in t)
this[r] = t[r];
this.disableFontFace = e === !0, this.fontExtraProperties = s === !0, this._inspectFont = i;
}
createNativeFontFace() {
var e;
if (!this.data || this.disableFontFace)
return null;
let t;
if (!this.cssFontInfo)
t = new FontFace(this.loadedName, this.data, {});
else {
const s = {
weight: this.cssFontInfo.fontWeight
};
this.cssFontInfo.italicAngle && (s.style = `oblique ${this.cssFontInfo.italicAngle}deg`), t = new FontFace(this.cssFontInfo.fontFamily, this.data, s);
}
return (e = this._inspectFont) == null || e.call(this, this), t;
}
createFontFaceRule() {
var s;
if (!this.data || this.disableFontFace)
return null;
const t = `url(data:${this.mimetype};base64,${FE(this.data)});`;
let e;
if (!this.cssFontInfo)
e = `@font-face {font-family:"${this.loadedName}";src:${t}}`;
else {
let i = `font-weight: ${this.cssFontInfo.fontWeight};`;
this.cssFontInfo.italicAngle && (i += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`), e = `@font-face {font-family:"${this.cssFontInfo.fontFamily}";${i}src:${t}}`;
}
return (s = this._inspectFont) == null || s.call(this, this, t), e;
}
getPathGenerator(t, e) {
if (this.compiledGlyphs[e] !== void 0)
return this.compiledGlyphs[e];
const s = this.loadedName + "_path_" + e;
let i;
try {
i = t.get(s);
} catch (a) {
st(`getPathGenerator - ignoring character: "${a}".`);
}
const r = new Path2D(i || "");
return this.fontExtraProperties || t.delete(s), this.compiledGlyphs[e] = r;
}
}
const jh = {
DATA: 1,
ERROR: 2
}, Gt = {
CANCEL: 1,
CANCEL_COMPLETE: 2,
CLOSE: 3,
ENQUEUE: 4,
ERROR: 5,
PULL: 6,
PULL_COMPLETE: 7,
START_COMPLETE: 8
};
function jg() {
}
function Fe(n) {
if (n instanceof Bn || n instanceof uf || n instanceof ic || n instanceof Lg || n instanceof $u || n instanceof Vd)
return n;
switch (n instanceof Error || typeof n == "object" && n !== null || Et('wrapReason: Expected "reason" to be a (possibly cloned) Error.'), n.name) {
case "AbortException":
return new Bn(n.message);
case "InvalidPDFException":
return new uf(n.message);
case "MissingPDFException":
return new ic(n.message);
case "PasswordException":
return new Lg(n.message, n.code);
case "UnexpectedResponseException":
return new $u(n.message, n.status);
case "UnknownErrorException":
return new Vd(n.message, n.details);
}
return new Vd(n.message, n.toString());
}
var Ka, bs, bb, vb, _b, tu;
class pl {
constructor(t, e, s) {
b(this, bs);
b(this, Ka, new AbortController());
this.sourceName = t, this.targetName = e, this.comObj = s, this.callbackId = 1, this.streamId = 1, this.streamSinks = /* @__PURE__ */ Object.create(null), this.streamControllers = /* @__PURE__ */ Object.create(null), this.callbackCapabilities = /* @__PURE__ */ Object.create(null), this.actionHandler = /* @__PURE__ */ Object.create(null), s.addEventListener("message", v(this, bs, bb).bind(this), {
signal: o(this, Ka).signal
});
}
on(t, e) {
const s = this.actionHandler;
if (s[t])
throw new Error(`There is already an actionName called "${t}"`);
s[t] = e;
}
send(t, e, s) {
this.comObj.postMessage({
sourceName: this.sourceName,
targetName: this.targetName,
action: t,
data: e
}, s);
}
sendWithPromise(t, e, s) {
const i = this.callbackId++, r = Promise.withResolvers();
this.callbackCapabilities[i] = r;
try {
this.comObj.postMessage({
sourceName: this.sourceName,
targetName: this.targetName,
action: t,
callbackId: i,
data: e
}, s);
} catch (a) {
r.reject(a);
}
return r.promise;
}
sendWithStream(t, e, s, i) {
const r = this.streamId++, a = this.sourceName, l = this.targetName, c = this.comObj;
return new ReadableStream({
start: (h) => {
const u = Promise.withResolvers();
return this.streamControllers[r] = {
controller: h,
startCall: u,
pullCall: null,
cancelCall: null,
isClosed: !1
}, c.postMessage({
sourceName: a,
targetName: l,
action: t,
streamId: r,
data: e,
desiredSize: h.desiredSize
}, i), u.promise;
},
pull: (h) => {
const u = Promise.withResolvers();
return this.streamControllers[r].pullCall = u, c.postMessage({
sourceName: a,
targetName: l,
stream: Gt.PULL,
streamId: r,
desiredSize: h.desiredSize
}), u.promise;
},
cancel: (h) => {
qt(h instanceof Error, "cancel must have a valid reason");
const u = Promise.withResolvers();
return this.streamControllers[r].cancelCall = u, this.streamControllers[r].isClosed = !0, c.postMessage({
sourceName: a,
targetName: l,
stream: Gt.CANCEL,
streamId: r,
reason: Fe(h)
}), u.promise;
}
}, s);
}
destroy() {
var t;
(t = o(this, Ka)) == null || t.abort(), p(this, Ka, null);
}
}
Ka = new WeakMap(), bs = new WeakSet(), bb = function({
data: t
}) {
if (t.targetName !== this.sourceName)
return;
if (t.stream) {
v(this, bs, _b).call(this, t);
return;
}
if (t.callback) {
const s = t.callbackId, i = this.callbackCapabilities[s];
if (!i)
throw new Error(`Cannot resolve callback ${s}`);
if (delete this.callbackCapabilities[s], t.callback === jh.DATA)
i.resolve(t.data);
else if (t.callback === jh.ERROR)
i.reject(Fe(t.reason));
else
throw new Error("Unexpected callback case");
return;
}
const e = this.actionHandler[t.action];
if (!e)
throw new Error(`Unknown action from worker: ${t.action}`);
if (t.callbackId) {
const s = this.sourceName, i = t.sourceName, r = this.comObj;
Promise.try(e, t.data).then(function(a) {
r.postMessage({
sourceName: s,
targetName: i,
callback: jh.DATA,
callbackId: t.callbackId,
data: a
});
}, function(a) {
r.postMessage({
sourceName: s,
targetName: i,
callback: jh.ERROR,
callbackId: t.callbackId,
reason: Fe(a)
});
});
return;
}
if (t.streamId) {
v(this, bs, vb).call(this, t);
return;
}
e(t.data);
}, vb = function(t) {
const e = t.streamId, s = this.sourceName, i = t.sourceName, r = this.comObj, a = this, l = this.actionHandler[t.action], c = {
enqueue(h, u = 1, d) {
if (this.isCancelled)
return;
const f = this.desiredSize;
this.desiredSize -= u, f > 0 && this.desiredSize <= 0 && (this.sinkCapability = Promise.withResolvers(), this.ready = this.sinkCapability.promise), r.postMessage({
sourceName: s,
targetName: i,
stream: Gt.ENQUEUE,
streamId: e,
chunk: h
}, d);
},
close() {
this.isCancelled || (this.isCancelled = !0, r.postMessage({
sourceName: s,
targetName: i,
stream: Gt.CLOSE,
streamId: e
}), delete a.streamSinks[e]);
},
error(h) {
qt(h instanceof Error, "error must have a valid reason"), !this.isCancelled && (this.isCancelled = !0, r.postMessage({
sourceName: s,
targetName: i,
stream: Gt.ERROR,
streamId: e,
reason: Fe(h)
}));
},
sinkCapability: Promise.withResolvers(),
onPull: null,
onCancel: null,
isCancelled: !1,
desiredSize: t.desiredSize,
ready: null
};
c.sinkCapability.resolve(), c.ready = c.sinkCapability.promise, this.streamSinks[e] = c, Promise.try(l, t.data, c).then(function() {
r.postMessage({
sourceName: s,
targetName: i,
stream: Gt.START_COMPLETE,
streamId: e,
success: !0
});
}, function(h) {
r.postMessage({
sourceName: s,
targetName: i,
stream: Gt.START_COMPLETE,
streamId: e,
reason: Fe(h)
});
});
}, _b = function(t) {
const e = t.streamId, s = this.sourceName, i = t.sourceName, r = this.comObj, a = this.streamControllers[e], l = this.streamSinks[e];
switch (t.stream) {
case Gt.START_COMPLETE:
t.success ? a.startCall.resolve() : a.startCall.reject(Fe(t.reason));
break;
case Gt.PULL_COMPLETE:
t.success ? a.pullCall.resolve() : a.pullCall.reject(Fe(t.reason));
break;
case Gt.PULL:
if (!l) {
r.postMessage({
sourceName: s,
targetName: i,
stream: Gt.PULL_COMPLETE,
streamId: e,
success: !0
});
break;
}
l.desiredSize <= 0 && t.desiredSize > 0 && l.sinkCapability.resolve(), l.desiredSize = t.desiredSize, Promise.try(l.onPull || jg).then(function() {
r.postMessage({
sourceName: s,
targetName: i,
stream: Gt.PULL_COMPLETE,
streamId: e,
success: !0
});
}, function(h) {
r.postMessage({
sourceName: s,
targetName: i,
stream: Gt.PULL_COMPLETE,
streamId: e,
reason: Fe(h)
});
});
break;
case Gt.ENQUEUE:
if (qt(a, "enqueue should have stream controller"), a.isClosed)
break;
a.controller.enqueue(t.chunk);
break;
case Gt.CLOSE:
if (qt(a, "close should have stream controller"), a.isClosed)
break;
a.isClosed = !0, a.controller.close(), v(this, bs, tu).call(this, a, e);
break;
case Gt.ERROR:
qt(a, "error should have stream controller"), a.controller.error(Fe(t.reason)), v(this, bs, tu).call(this, a, e);
break;
case Gt.CANCEL_COMPLETE:
t.success ? a.cancelCall.resolve() : a.cancelCall.reject(Fe(t.reason)), v(this, bs, tu).call(this, a, e);
break;
case Gt.CANCEL:
if (!l)
break;
const c = Fe(t.reason);
Promise.try(l.onCancel || jg, c).then(function() {
r.postMessage({
sourceName: s,
targetName: i,
stream: Gt.CANCEL_COMPLETE,
streamId: e,
success: !0
});
}, function(h) {
r.postMessage({
sourceName: s,
targetName: i,
stream: Gt.CANCEL_COMPLETE,
streamId: e,
reason: Fe(h)
});
}), l.sinkCapability.reject(c), l.isCancelled = !0, delete this.streamSinks[e];
break;
default:
throw new Error("Unexpected stream case");
}
}, tu = async function(t, e) {
var s, i, r;
await Promise.allSettled([(s = t.startCall) == null ? void 0 : s.promise, (i = t.pullCall) == null ? void 0 : i.promise, (r = t.cancelCall) == null ? void 0 : r.promise]), delete this.streamControllers[e];
};
var Nc;
class Ab {
constructor({
enableHWA: t = !1
}) {
b(this, Nc, !1);
p(this, Nc, t);
}
create(t, e) {
if (t <= 0 || e <= 0)
throw new Error("Invalid canvas size");
const s = this._createCanvas(t, e);
return {
canvas: s,
context: s.getContext("2d", {
willReadFrequently: !o(this, Nc)
})
};
}
reset(t, e, s) {
if (!t.canvas)
throw new Error("Canvas is not specified");
if (e <= 0 || s <= 0)
throw new Error("Invalid canvas size");
t.canvas.width = e, t.canvas.height = s;
}
destroy(t) {
if (!t.canvas)
throw new Error("Canvas is not specified");
t.canvas.width = 0, t.canvas.height = 0, t.canvas = null, t.context = null;
}
_createCanvas(t, e) {
Et("Abstract method `_createCanvas` called.");
}
}
Nc = new WeakMap();
class XE extends Ab {
constructor({
ownerDocument: t = globalThis.document,
enableHWA: e = !1
}) {
super({
enableHWA: e
}), this._document = t;
}
_createCanvas(t, e) {
const s = this._document.createElement("canvas");
return s.width = t, s.height = e, s;
}
}
class wb {
constructor({
baseUrl: t = null,
isCompressed: e = !0
}) {
this.baseUrl = t, this.isCompressed = e;
}
async fetch({
name: t
}) {
if (!this.baseUrl)
throw new Error("Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.");
if (!t)
throw new Error("CMap name must be specified.");
const e = this.baseUrl + t + (this.isCompressed ? ".bcmap" : "");
return this._fetch(e).then((s) => ({
cMapData: s,
isCompressed: this.isCompressed
})).catch((s) => {
throw new Error(`Unable to load ${this.isCompressed ? "binary " : ""}CMap at: ${e}`);
});
}
async _fetch(t) {
Et("Abstract method `_fetch` called.");
}
}
class Sb extends wb {
async _fetch(t) {
const e = await Ad(t, this.isCompressed ? "arraybuffer" : "text");
return e instanceof ArrayBuffer ? new Uint8Array(e) : _d(e);
}
}
class Eb {
addFilter(t) {
return "none";
}
addHCMFilter(t, e) {
return "none";
}
addAlphaFilter(t) {
return "none";
}
addLuminosityFilter(t) {
return "none";
}
addHighlightHCMFilter(t, e, s, i, r) {
return "none";
}
destroy(t = !1) {
}
}
var Sr, Ja, ki, Ii, ve, Er, xr, D, me, gl, Sa, eu, Ea, xb, Nf, xa, ml, yl, Of, bl;
class ZE extends Eb {
constructor({
docId: e,
ownerDocument: s = globalThis.document
}) {
super();
b(this, D);
b(this, Sr);
b(this, Ja);
b(this, ki);
b(this, Ii);
b(this, ve);
b(this, Er);
b(this, xr, 0);
p(this, Ii, e), p(this, ve, s);
}
addFilter(e) {
if (!e)
return "none";
let s = o(this, D, me).get(e);
if (s)
return s;
const [i, r, a] = v(this, D, eu).call(this, e), l = e.length === 1 ? i : `${i}${r}${a}`;
if (s = o(this, D, me).get(l), s)
return o(this, D, me).set(e, s), s;
const c = `g_${o(this, Ii)}_transfer_map_${xe(this, xr)._++}`, h = v(this, D, Ea).call(this, c);
o(this, D, me).set(e, h), o(this, D, me).set(l, h);
const u = v(this, D, xa).call(this, c);
return v(this, D, yl).call(this, i, r, a, u), h;
}
addHCMFilter(e, s) {
var m;
const i = `${e}-${s}`, r = "base";
let a = o(this, D, gl).get(r);
if ((a == null ? void 0 : a.key) === i || (a ? ((m = a.filter) == null || m.remove(), a.key = i, a.url = "none", a.filter = null) : (a = {
key: i,
url: "none",
filter: null
}, o(this, D, gl).set(r, a)), !e || !s))
return a.url;
const l = v(this, D, bl).call(this, e);
e = U.makeHexColor(...l);
const c = v(this, D, bl).call(this, s);
if (s = U.makeHexColor(...c), o(this, D, Sa).style.color = "", e === "#000000" && s === "#ffffff" || e === s)
return a.url;
const h = new Array(256);
for (let y = 0; y <= 255; y++) {
const _ = y / 255;
h[y] = _ <= 0.03928 ? _ / 12.92 : ((_ + 0.055) / 1.055) ** 2.4;
}
const u = h.join(","), d = `g_${o(this, Ii)}_hcm_filter`, f = a.filter = v(this, D, xa).call(this, d);
v(this, D, yl).call(this, u, u, u, f), v(this, D, Nf).call(this, f);
const g = (y, _) => {
const A = l[y] / 255, S = c[y] / 255, E = new Array(_ + 1);
for (let x = 0; x <= _; x++)
E[x] = A + x / _ * (S - A);
return E.join(",");
};
return v(this, D, yl).call(this, g(0, 5), g(1, 5), g(2, 5), f), a.url = v(this, D, Ea).call(this, d), a.url;
}
addAlphaFilter(e) {
let s = o(this, D, me).get(e);
if (s)
return s;
const [i] = v(this, D, eu).call(this, [e]), r = `alpha_${i}`;
if (s = o(this, D, me).get(r), s)
return o(this, D, me).set(e, s), s;
const a = `g_${o(this, Ii)}_alpha_map_${xe(this, xr)._++}`, l = v(this, D, Ea).call(this, a);
o(this, D, me).set(e, l), o(this, D, me).set(r, l);
const c = v(this, D, xa).call(this, a);
return v(this, D, Of).call(this, i, c), l;
}
addLuminosityFilter(e) {
let s = o(this, D, me).get(e || "luminosity");
if (s)
return s;
let i, r;
if (e ? ([i] = v(this, D, eu).call(this, [e]), r = `luminosity_${i}`) : r = "luminosity", s = o(this, D, me).get(r), s)
return o(this, D, me).set(e, s), s;
const a = `g_${o(this, Ii)}_luminosity_map_${xe(this, xr)._++}`, l = v(this, D, Ea).call(this, a);
o(this, D, me).set(e, l), o(this, D, me).set(r, l);
const c = v(this, D, xa).call(this, a);
return v(this, D, xb).call(this, c), e && v(this, D, Of).call(this, i, c), l;
}
addHighlightHCMFilter(e, s, i, r, a) {
var S;
const l = `${s}-${i}-${r}-${a}`;
let c = o(this, D, gl).get(e);
if ((c == null ? void 0 : c.key) === l || (c ? ((S = c.filter) == null || S.remove(), c.key = l, c.url = "none", c.filter = null) : (c = {
key: l,
url: "none",
filter: null
}, o(this, D, gl).set(e, c)), !s || !i))
return c.url;
const [h, u] = [s, i].map(v(this, D, bl).bind(this));
let d = Math.round(0.2126 * h[0] + 0.7152 * h[1] + 0.0722 * h[2]), f = Math.round(0.2126 * u[0] + 0.7152 * u[1] + 0.0722 * u[2]), [g, m] = [r, a].map(v(this, D, bl).bind(this));
f < d && ([d, f, g, m] = [f, d, m, g]), o(this, D, Sa).style.color = "";
const y = (E, x, T) => {
const k = new Array(256), C = (f - d) / T, P = E / 255, j = (x - E) / (255 * T);
let Z = 0;
for (let V = 0; V <= T; V++) {
const dt = Math.round(d + V * C), gt = P + V * j;
for (let Y = Z; Y <= dt; Y++)
k[Y] = gt;
Z = dt + 1;
}
for (let V = Z; V < 256; V++)
k[V] = k[Z - 1];
return k.join(",");
}, _ = `g_${o(this, Ii)}_hcm_${e}_filter`, A = c.filter = v(this, D, xa).call(this, _);
return v(this, D, Nf).call(this, A), v(this, D, yl).call(this, y(g[0], m[0], 5), y(g[1], m[1], 5), y(g[2], m[2], 5), A), c.url = v(this, D, Ea).call(this, _), c.url;
}
destroy(e = !1) {
var s, i, r, a;
e && ((s = o(this, Er)) != null && s.size) || ((i = o(this, ki)) == null || i.parentNode.parentNode.remove(), p(this, ki, null), (r = o(this, Ja)) == null || r.clear(), p(this, Ja, null), (a = o(this, Er)) == null || a.clear(), p(this, Er, null), p(this, xr, 0));
}
}
Sr = new WeakMap(), Ja = new WeakMap(), ki = new WeakMap(), Ii = new WeakMap(), ve = new WeakMap(), Er = new WeakMap(), xr = new WeakMap(), D = new WeakSet(), me = function() {
return o(this, Ja) || p(this, Ja, /* @__PURE__ */ new Map());
}, gl = function() {
return o(this, Er) || p(this, Er, /* @__PURE__ */ new Map());
}, Sa = function() {
if (!o(this, ki)) {
const e = o(this, ve).createElement("div"), {
style: s
} = e;
s.visibility = "hidden", s.contain = "strict", s.width = s.height = 0, s.position = "absolute", s.top = s.left = 0, s.zIndex = -1;
const i = o(this, ve).createElementNS(gi, "svg");
i.setAttribute("width", 0), i.setAttribute("height", 0), p(this, ki, o(this, ve).createElementNS(gi, "defs")), e.append(i), i.append(o(this, ki)), o(this, ve).body.append(e);
}
return o(this, ki);
}, eu = function(e) {
if (e.length === 1) {
const h = e[0], u = new Array(256);
for (let f = 0; f < 256; f++)
u[f] = h[f] / 255;
const d = u.join(",");
return [d, d, d];
}
const [s, i, r] = e, a = new Array(256), l = new Array(256), c = new Array(256);
for (let h = 0; h < 256; h++)
a[h] = s[h] / 255, l[h] = i[h] / 255, c[h] = r[h] / 255;
return [a.join(","), l.join(","), c.join(",")];
}, Ea = function(e) {
if (o(this, Sr) === void 0) {
p(this, Sr, "");
const s = o(this, ve).URL;
s !== o(this, ve).baseURI && (wd(s) ? st('#createUrl: ignore "data:"-URL for performance reasons.') : p(this, Sr, s.split("#", 1)[0]));
}
return `url(${o(this, Sr)}#${e})`;
}, xb = function(e) {
const s = o(this, ve).createElementNS(gi, "feColorMatrix");
s.setAttribute("type", "matrix"), s.setAttribute("values", "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0"), e.append(s);
}, Nf = function(e) {
const s = o(this, ve).createElementNS(gi, "feColorMatrix");
s.setAttribute("type", "matrix"), s.setAttribute("values", "0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0"), e.append(s);
}, xa = function(e) {
const s = o(this, ve).createElementNS(gi, "filter");
return s.setAttribute("color-interpolation-filters", "sRGB"), s.setAttribute("id", e), o(this, D, Sa).append(s), s;
}, ml = function(e, s, i) {
const r = o(this, ve).createElementNS(gi, s);
r.setAttribute("type", "discrete"), r.setAttribute("tableValues", i), e.append(r);
}, yl = function(e, s, i, r) {
const a = o(this, ve).createElementNS(gi, "feComponentTransfer");
r.append(a), v(this, D, ml).call(this, a, "feFuncR", e), v(this, D, ml).call(this, a, "feFuncG", s), v(this, D, ml).call(this, a, "feFuncB", i);
}, Of = function(e, s) {
const i = o(this, ve).createElementNS(gi, "feComponentTransfer");
s.append(i), v(this, D, ml).call(this, i, "feFuncA", e);
}, bl = function(e) {
return o(this, D, Sa).style.color = e, Gp(getComputedStyle(o(this, D, Sa)).getPropertyValue("color"));
};
class Tb {
constructor({
baseUrl: t = null
}) {
this.baseUrl = t;
}
async fetch({
filename: t
}) {
if (!this.baseUrl)
throw new Error("Ensure that the `standardFontDataUrl` API parameter is provided.");
if (!t)
throw new Error("Font filename must be specified.");
const e = `${this.baseUrl}${t}`;
return this._fetch(e).catch((s) => {
throw new Error(`Unable to load font data at: ${e}`);
});
}
async _fetch(t) {
Et("Abstract method `_fetch` called.");
}
}
class Cb extends Tb {
async _fetch(t) {
const e = await Ad(t, "arraybuffer");
return new Uint8Array(e);
}
}
Se && st("Please use the `legacy` build in Node.js environments.");
async function kb(n) {
const e = await process.getBuiltinModule("fs").promises.readFile(n);
return new Uint8Array(e);
}
class YE extends Eb {
}
class KE extends Ab {
_createCanvas(t, e) {
return process.getBuiltinModule("module").createRequire(import.meta.url)("@napi-rs/canvas").createCanvas(t, e);
}
}
class JE extends wb {
async _fetch(t) {
return kb(t);
}
}
class QE extends Tb {
async _fetch(t) {
return kb(t);
}
}
const we = {
FILL: "Fill",
STROKE: "Stroke",
SHADING: "Shading"
};
function Lf(n, t) {
if (!t)
return;
const e = t[2] - t[0], s = t[3] - t[1], i = new Path2D();
i.rect(t[0], t[1], e, s), n.clip(i);
}
class Wp {
getPattern() {
Et("Abstract method `getPattern` called.");
}
}
class tx extends Wp {
constructor(t) {
super(), this._type = t[1], this._bbox = t[2], this._colorStops = t[3], this._p0 = t[4], this._p1 = t[5], this._r0 = t[6], this._r1 = t[7], this.matrix = null;
}
_createGradient(t) {
let e;
this._type === "axial" ? e = t.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]) : this._type === "radial" && (e = t.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1));
for (const s of this._colorStops)
e.addColorStop(s[0], s[1]);
return e;
}
getPattern(t, e, s, i) {
let r;
if (i === we.STROKE || i === we.FILL) {
const a = e.current.getClippedPathBoundingBox(i, Mt(t)) || [0, 0, 0, 0], l = Math.ceil(a[2] - a[0]) || 1, c = Math.ceil(a[3] - a[1]) || 1, h = e.cachedCanvases.getCanvas("pattern", l, c), u = h.context;
u.clearRect(0, 0, u.canvas.width, u.canvas.height), u.beginPath(), u.rect(0, 0, u.canvas.width, u.canvas.height), u.translate(-a[0], -a[1]), s = U.transform(s, [1, 0, 0, 1, a[0], a[1]]), u.transform(...e.baseTransform), this.matrix && u.transform(...this.matrix), Lf(u, this._bbox), u.fillStyle = this._createGradient(u), u.fill(), r = t.createPattern(h.canvas, "no-repeat");
const d = new DOMMatrix(s);
r.setTransform(d);
} else
Lf(t, this._bbox), r = this._createGradient(t);
return r;
}
}
function Wd(n, t, e, s, i, r, a, l) {
const c = t.coords, h = t.colors, u = n.data, d = n.width * 4;
let f;
c[e + 1] > c[s + 1] && (f = e, e = s, s = f, f = r, r = a, a = f), c[s + 1] > c[i + 1] && (f = s, s = i, i = f, f = a, a = l, l = f), c[e + 1] > c[s + 1] && (f = e, e = s, s = f, f = r, r = a, a = f);
const g = (c[e] + t.offsetX) * t.scaleX, m = (c[e + 1] + t.offsetY) * t.scaleY, y = (c[s] + t.offsetX) * t.scaleX, _ = (c[s + 1] + t.offsetY) * t.scaleY, A = (c[i] + t.offsetX) * t.scaleX, S = (c[i + 1] + t.offsetY) * t.scaleY;
if (m >= S)
return;
const E = h[r], x = h[r + 1], T = h[r + 2], k = h[a], C = h[a + 1], P = h[a + 2], j = h[l], Z = h[l + 1], V = h[l + 2], dt = Math.round(m), gt = Math.round(S);
let Y, xt, M, z, ot, kt, yt, Q;
for (let Vt = dt; Vt <= gt; Vt++) {
if (Vt < _) {
const tt = Vt < m ? 0 : (m - Vt) / (m - _);
Y = g - (g - y) * tt, xt = E - (E - k) * tt, M = x - (x - C) * tt, z = T - (T - P) * tt;
} else {
let tt;
Vt > S ? tt = 1 : _ === S ? tt = 0 : tt = (_ - Vt) / (_ - S), Y = y - (y - A) * tt, xt = k - (k - j) * tt, M = C - (C - Z) * tt, z = P - (P - V) * tt;
}
let $t;
Vt < m ? $t = 0 : Vt > S ? $t = 1 : $t = (m - Vt) / (m - S), ot = g - (g - A) * $t, kt = E - (E - j) * $t, yt = x - (x - Z) * $t, Q = T - (T - V) * $t;
const vs = Math.round(Math.min(Y, ot)), Tt = Math.round(Math.max(Y, ot));
let St = d * Vt + vs * 4;
for (let tt = vs; tt <= Tt; tt++)
$t = (Y - tt) / (Y - ot), $t < 0 ? $t = 0 : $t > 1 && ($t = 1), u[St++] = xt - (xt - kt) * $t | 0, u[St++] = M - (M - yt) * $t | 0, u[St++] = z - (z - Q) * $t | 0, u[St++] = 255;
}
}
function ex(n, t, e) {
const s = t.coords, i = t.colors;
let r, a;
switch (t.type) {
case "lattice":
const l = t.verticesPerRow, c = Math.floor(s.length / l) - 1, h = l - 1;
for (r = 0; r < c; r++) {
let u = r * l;
for (let d = 0; d < h; d++, u++)
Wd(n, e, s[u], s[u + 1], s[u + l], i[u], i[u + 1], i[u + l]), Wd(n, e, s[u + l + 1], s[u + 1], s[u + l], i[u + l + 1], i[u + 1], i[u + l]);
}
break;
case "triangles":
for (r = 0, a = s.length; r < a; r += 3)
Wd(n, e, s[r], s[r + 1], s[r + 2], i[r], i[r + 1], i[r + 2]);
break;
default:
throw new Error("illegal figure");
}
}
class sx extends Wp {
constructor(t) {
super(), this._coords = t[2], this._colors = t[3], this._figures = t[4], this._bounds = t[5], this._bbox = t[7], this._background = t[8], this.matrix = null;
}
_createMeshCanvas(t, e, s) {
const l = Math.floor(this._bounds[0]), c = Math.floor(this._bounds[1]), h = Math.ceil(this._bounds[2]) - l, u = Math.ceil(this._bounds[3]) - c, d = Math.min(Math.ceil(Math.abs(h * t[0] * 1.1)), 3e3), f = Math.min(Math.ceil(Math.abs(u * t[1] * 1.1)), 3e3), g = h / d, m = u / f, y = {
coords: this._coords,
colors: this._colors,
offsetX: -l,
offsetY: -c,
scaleX: 1 / g,
scaleY: 1 / m
}, _ = d + 2 * 2, A = f + 2 * 2, S = s.getCanvas("mesh", _, A), E = S.context, x = E.createImageData(d, f);
if (e) {
const k = x.data;
for (let C = 0, P = k.length; C < P; C += 4)
k[C] = e[0], k[C + 1] = e[1], k[C + 2] = e[2], k[C + 3] = 255;
}
for (const k of this._figures)
ex(x, k, y);
return E.putImageData(x, 2, 2), {
canvas: S.canvas,
offsetX: l - 2 * g,
offsetY: c - 2 * m,
scaleX: g,
scaleY: m
};
}
getPattern(t, e, s, i) {
Lf(t, this._bbox);
let r;
if (i === we.SHADING)
r = U.singularValueDecompose2dScale(Mt(t));
else if (r = U.singularValueDecompose2dScale(e.baseTransform), this.matrix) {
const l = U.singularValueDecompose2dScale(this.matrix);
r = [r[0] * l[0], r[1] * l[1]];
}
const a = this._createMeshCanvas(r, i === we.SHADING ? null : this._background, e.cachedCanvases);
return i !== we.SHADING && (t.setTransform(...e.baseTransform), this.matrix && t.transform(...this.matrix)), t.translate(a.offsetX, a.offsetY), t.scale(a.scaleX, a.scaleY), t.createPattern(a.canvas, "no-repeat");
}
}
class ix extends Wp {
getPattern() {
return "hotpink";
}
}
function nx(n) {
switch (n[0]) {
case "RadialAxial":
return new tx(n);
case "Mesh":
return new sx(n);
case "Dummy":
return new ix();
}
throw new Error(`Unknown IR type: ${n[0]}`);
}
const Bg = {
COLORED: 1,
UNCOLORED: 2
}, td = class td {
constructor(t, e, s, i, r) {
this.operatorList = t[2], this.matrix = t[3], this.bbox = t[4], this.xstep = t[5], this.ystep = t[6], this.paintType = t[7], this.tilingType = t[8], this.color = e, this.ctx = s, this.canvasGraphicsFactory = i, this.baseTransform = r;
}
createPatternCanvas(t) {
const {
bbox: e,
operatorList: s,
paintType: i,
tilingType: r,
color: a,
canvasGraphicsFactory: l
} = this;
let {
xstep: c,
ystep: h
} = this;
c = Math.abs(c), h = Math.abs(h), vd("TilingType: " + r);
const u = e[0], d = e[1], f = e[2], g = e[3], m = f - u, y = g - d, _ = U.singularValueDecompose2dScale(this.matrix), A = U.singularValueDecompose2dScale(this.baseTransform), S = _[0] * A[0], E = _[1] * A[1];
let x = m, T = y, k = !1, C = !1;
const P = Math.ceil(c * S), j = Math.ceil(h * E), Z = Math.ceil(m * S), V = Math.ceil(y * E);
P >= Z ? x = c : k = !0, j >= V ? T = h : C = !0;
const dt = this.getSizeAndScale(x, this.ctx.canvas.width, S), gt = this.getSizeAndScale(T, this.ctx.canvas.height, E), Y = t.cachedCanvases.getCanvas("pattern", dt.size, gt.size), xt = Y.context, M = l.createCanvasGraphics(xt);
if (M.groupLevel = t.groupLevel, this.setFillAndStrokeStyleToContext(M, i, a), xt.translate(-dt.scale * u, -gt.scale * d), M.transform(dt.scale, 0, 0, gt.scale, 0, 0), xt.save(), this.clipBbox(M, u, d, f, g), M.baseTransform = Mt(M.ctx), M.executeOperatorList(s), M.endDrawing(), xt.restore(), k || C) {
const z = Y.canvas;
k && (x = c), C && (T = h);
const ot = this.getSizeAndScale(x, this.ctx.canvas.width, S), kt = this.getSizeAndScale(T, this.ctx.canvas.height, E), yt = ot.size, Q = kt.size, Vt = t.cachedCanvases.getCanvas("pattern-workaround", yt, Q), $t = Vt.context, vs = k ? Math.floor(m / c) : 0, Tt = C ? Math.floor(y / h) : 0;
for (let St = 0; St <= vs; St++)
for (let tt = 0; tt <= Tt; tt++)
$t.drawImage(z, yt * St, Q * tt, yt, Q, 0, 0, yt, Q);
return {
canvas: Vt.canvas,
scaleX: ot.scale,
scaleY: kt.scale,
offsetX: u,
offsetY: d
};
}
return {
canvas: Y.canvas,
scaleX: dt.scale,
scaleY: gt.scale,
offsetX: u,
offsetY: d
};
}
getSizeAndScale(t, e, s) {
const i = Math.max(td.MAX_PATTERN_SIZE, e);
let r = Math.ceil(t * s);
return r >= i ? r = i : s = r / t, {
scale: s,
size: r
};
}
clipBbox(t, e, s, i, r) {
const a = i - e, l = r - s;
t.ctx.rect(e, s, a, l), t.current.updateRectMinMax(Mt(t.ctx), [e, s, i, r]), t.clip(), t.endPath();
}
setFillAndStrokeStyleToContext(t, e, s) {
const i = t.ctx, r = t.current;
switch (e) {
case Bg.COLORED:
const a = this.ctx;
i.fillStyle = a.fillStyle, i.strokeStyle = a.strokeStyle, r.fillColor = a.fillStyle, r.strokeColor = a.strokeStyle;
break;
case Bg.UNCOLORED:
const l = U.makeHexColor(s[0], s[1], s[2]);
i.fillStyle = l, i.strokeStyle = l, r.fillColor = l, r.strokeColor = l;
break;
default:
throw new RE(`Unsupported paint type: ${e}`);
}
}
getPattern(t, e, s, i) {
let r = s;
i !== we.SHADING && (r = U.transform(r, e.baseTransform), this.matrix && (r = U.transform(r, this.matrix)));
const a = this.createPatternCanvas(e);
let l = new DOMMatrix(r);
l = l.translate(a.offsetX, a.offsetY), l = l.scale(1 / a.scaleX, 1 / a.scaleY);
const c = t.createPattern(a.canvas, "repeat");
return c.setTransform(l), c;
}
};
G(td, "MAX_PATTERN_SIZE", 3e3);
let Df = td;
function rx({
src: n,
srcPos: t = 0,
dest: e,
width: s,
height: i,
nonBlackColor: r = 4294967295,
inverseDecode: a = !1
}) {
const l = Me.isLittleEndian ? 4278190080 : 255, [c, h] = a ? [r, l] : [l, r], u = s >> 3, d = s & 7, f = n.length;
e = new Uint32Array(e.buffer);
let g = 0;
for (let m = 0; m < i; m++) {
for (const _ = t + u; t < _; t++) {
const A = t < f ? n[t] : 255;
e[g++] = A & 128 ? h : c, e[g++] = A & 64 ? h : c, e[g++] = A & 32 ? h : c, e[g++] = A & 16 ? h : c, e[g++] = A & 8 ? h : c, e[g++] = A & 4 ? h : c, e[g++] = A & 2 ? h : c, e[g++] = A & 1 ? h : c;
}
if (d === 0)
continue;
const y = t < f ? n[t++] : 255;
for (let _ = 0; _ < d; _++)
e[g++] = y & 1 << 7 - _ ? h : c;
}
return {
srcPos: t,
destPos: g
};
}
const Hg = 16, Ug = 100, ax = 15, zg = 10, Vg = 1e3, Ue = 16;
function ox(n, t) {
if (n._removeMirroring)
throw new Error("Context is already forwarding operations.");
n.__originalSave = n.save, n.__originalRestore = n.restore, n.__originalRotate = n.rotate, n.__originalScale = n.scale, n.__originalTranslate = n.translate, n.__originalTransform = n.transform, n.__originalSetTransform = n.setTransform, n.__originalResetTransform = n.resetTransform, n.__originalClip = n.clip, n.__originalMoveTo = n.moveTo, n.__originalLineTo = n.lineTo, n.__originalBezierCurveTo = n.bezierCurveTo, n.__originalRect = n.rect, n.__originalClosePath = n.closePath, n.__originalBeginPath = n.beginPath, n._removeMirroring = () => {
n.save = n.__originalSave, n.restore = n.__originalRestore, n.rotate = n.__originalRotate, n.scale = n.__originalScale, n.translate = n.__originalTranslate, n.transform = n.__originalTransform, n.setTransform = n.__originalSetTransform, n.resetTransform = n.__originalResetTransform, n.clip = n.__originalClip, n.moveTo = n.__originalMoveTo, n.lineTo = n.__originalLineTo, n.bezierCurveTo = n.__originalBezierCurveTo, n.rect = n.__originalRect, n.closePath = n.__originalClosePath, n.beginPath = n.__originalBeginPath, delete n._removeMirroring;
}, n.save = function() {
t.save(), this.__originalSave();
}, n.restore = function() {
t.restore(), this.__originalRestore();
}, n.translate = function(s, i) {
t.translate(s, i), this.__originalTranslate(s, i);
}, n.scale = function(s, i) {
t.scale(s, i), this.__originalScale(s, i);
}, n.transform = function(s, i, r, a, l, c) {
t.transform(s, i, r, a, l, c), this.__originalTransform(s, i, r, a, l, c);
}, n.setTransform = function(s, i, r, a, l, c) {
t.setTransform(s, i, r, a, l, c), this.__originalSetTransform(s, i, r, a, l, c);
}, n.resetTransform = function() {
t.resetTransform(), this.__originalResetTransform();
}, n.rotate = function(s) {
t.rotate(s), this.__originalRotate(s);
}, n.clip = function(s) {
t.clip(s), this.__originalClip(s);
}, n.moveTo = function(e, s) {
t.moveTo(e, s), this.__originalMoveTo(e, s);
}, n.lineTo = function(e, s) {
t.lineTo(e, s), this.__originalLineTo(e, s);
}, n.bezierCurveTo = function(e, s, i, r, a, l) {
t.bezierCurveTo(e, s, i, r, a, l), this.__originalBezierCurveTo(e, s, i, r, a, l);
}, n.rect = function(e, s, i, r) {
t.rect(e, s, i, r), this.__originalRect(e, s, i, r);
}, n.closePath = function() {
t.closePath(), this.__originalClosePath();
}, n.beginPath = function() {
t.beginPath(), this.__originalBeginPath();
};
}
class lx {
constructor(t) {
this.canvasFactory = t, this.cache = /* @__PURE__ */ Object.create(null);
}
getCanvas(t, e, s) {
let i;
return this.cache[t] !== void 0 ? (i = this.cache[t], this.canvasFactory.reset(i, e, s)) : (i = this.canvasFactory.create(e, s), this.cache[t] = i), i;
}
delete(t) {
delete this.cache[t];
}
clear() {
for (const t in this.cache) {
const e = this.cache[t];
this.canvasFactory.destroy(e), delete this.cache[t];
}
}
}
function Bh(n, t, e, s, i, r, a, l, c, h) {
const [u, d, f, g, m, y] = Mt(n);
if (d === 0 && f === 0) {
const S = a * u + m, E = Math.round(S), x = l * g + y, T = Math.round(x), k = (a + c) * u + m, C = Math.abs(Math.round(k) - E) || 1, P = (l + h) * g + y, j = Math.abs(Math.round(P) - T) || 1;
return n.setTransform(Math.sign(u), 0, 0, Math.sign(g), E, T), n.drawImage(t, e, s, i, r, 0, 0, C, j), n.setTransform(u, d, f, g, m, y), [C, j];
}
if (u === 0 && g === 0) {
const S = l * f + m, E = Math.round(S), x = a * d + y, T = Math.round(x), k = (l + h) * f + m, C = Math.abs(Math.round(k) - E) || 1, P = (a + c) * d + y, j = Math.abs(Math.round(P) - T) || 1;
return n.setTransform(0, Math.sign(d), Math.sign(f), 0, E, T), n.drawImage(t, e, s, i, r, 0, 0, j, C), n.setTransform(u, d, f, g, m, y), [j, C];
}
n.drawImage(t, e, s, i, r, a, l, c, h);
const _ = Math.hypot(u, d), A = Math.hypot(f, g);
return [_ * c, A * h];
}
function cx(n) {
const {
width: t,
height: e
} = n;
if (t > Vg || e > Vg)
return null;
const s = 1e3, i = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]), r = t + 1;
let a = new Uint8Array(r * (e + 1)), l, c, h;
const u = t + 7 & -8;
let d = new Uint8Array(u * e), f = 0;
for (const A of n.data) {
let S = 128;
for (; S > 0; )
d[f++] = A & S ? 0 : 255, S >>= 1;
}
let g = 0;
for (f = 0, d[f] !== 0 && (a[0] = 1, ++g), c = 1; c < t; c++)
d[f] !== d[f + 1] && (a[c] = d[f] ? 2 : 1, ++g), f++;
for (d[f] !== 0 && (a[c] = 2, ++g), l = 1; l < e; l++) {
f = l * u, h = l * r, d[f - u] !== d[f] && (a[h] = d[f] ? 1 : 8, ++g);
let A = (d[f] ? 4 : 0) + (d[f - u] ? 8 : 0);
for (c = 1; c < t; c++)
A = (A >> 2) + (d[f + 1] ? 4 : 0) + (d[f - u + 1] ? 8 : 0), i[A] && (a[h + c] = i[A], ++g), f++;
if (d[f - u] !== d[f] && (a[h + c] = d[f] ? 2 : 4, ++g), g > s)
return null;
}
for (f = u * (e - 1), h = l * r, d[f] !== 0 && (a[h] = 8, ++g), c = 1; c < t; c++)
d[f] !== d[f + 1] && (a[h + c] = d[f] ? 4 : 8, ++g), f++;
if (d[f] !== 0 && (a[h + c] = 4, ++g), g > s)
return null;
const m = new Int32Array([0, r, -1, 0, -r, 0, 0, 0, 1]), y = new Path2D();
for (l = 0; g && l <= e; l++) {
let A = l * r;
const S = A + t;
for (; A < S && !a[A]; )
A++;
if (A === S)
continue;
y.moveTo(A % r, l);
const E = A;
let x = a[A];
do {
const T = m[x];
do
A += T;
while (!a[A]);
const k = a[A];
k !== 5 && k !== 10 ? (x = k, a[A] = 0) : (x = k & 51 * x >> 4, a[A] &= x >> 2 | x << 2), y.lineTo(A % r, A / r | 0), a[A] || --g;
} while (E !== A);
--l;
}
return d = null, a = null, function(A) {
A.save(), A.scale(1 / t, -1 / e), A.translate(0, -e), A.fill(y), A.beginPath(), A.restore();
};
}
class Gg {
constructor(t, e) {
this.alphaIsShape = !1, this.fontSize = 0, this.fontSizeScale = 1, this.textMatrix = $y, this.textMatrixScale = 1, this.fontMatrix = hf, this.leading = 0, this.x = 0, this.y = 0, this.lineX = 0, this.lineY = 0, this.charSpacing = 0, this.wordSpacing = 0, this.textHScale = 1, this.textRenderingMode = ge.FILL, this.textRise = 0, this.fillColor = "#000000", this.strokeColor = "#000000", this.patternFill = !1, this.patternStroke = !1, this.fillAlpha = 1, this.strokeAlpha = 1, this.lineWidth = 1, this.activeSMask = null, this.transferMaps = "none", this.startNewPathAndClipBox([0, 0, t, e]);
}
clone() {
const t = Object.create(this);
return t.clipBox = this.clipBox.slice(), t;
}
setCurrentPoint(t, e) {
this.x = t, this.y = e;
}
updatePathMinMax(t, e, s) {
[e, s] = U.applyTransform([e, s], t), this.minX = Math.min(this.minX, e), this.minY = Math.min(this.minY, s), this.maxX = Math.max(this.maxX, e), this.maxY = Math.max(this.maxY, s);
}
updateRectMinMax(t, e) {
const s = U.applyTransform(e, t), i = U.applyTransform(e.slice(2), t), r = U.applyTransform([e[0], e[3]], t), a = U.applyTransform([e[2], e[1]], t);
this.minX = Math.min(this.minX, s[0], i[0], r[0], a[0]), this.minY = Math.min(this.minY, s[1], i[1], r[1], a[1]), this.maxX = Math.max(this.maxX, s[0], i[0], r[0], a[0]), this.maxY = Math.max(this.maxY, s[1], i[1], r[1], a[1]);
}
updateScalingPathMinMax(t, e) {
U.scaleMinMax(t, e), this.minX = Math.min(this.minX, e[0]), this.minY = Math.min(this.minY, e[1]), this.maxX = Math.max(this.maxX, e[2]), this.maxY = Math.max(this.maxY, e[3]);
}
updateCurvePathMinMax(t, e, s, i, r, a, l, c, h, u) {
const d = U.bezierBoundingBox(e, s, i, r, a, l, c, h, u);
u || this.updateRectMinMax(t, d);
}
getPathBoundingBox(t = we.FILL, e = null) {
const s = [this.minX, this.minY, this.maxX, this.maxY];
if (t === we.STROKE) {
e || Et("Stroke bounding box must include transform.");
const i = U.singularValueDecompose2dScale(e), r = i[0] * this.lineWidth / 2, a = i[1] * this.lineWidth / 2;
s[0] -= r, s[1] -= a, s[2] += r, s[3] += a;
}
return s;
}
updateClipFromPath() {
const t = U.intersect(this.clipBox, this.getPathBoundingBox());
this.startNewPathAndClipBox(t || [0, 0, 0, 0]);
}
isEmptyClip() {
return this.minX === 1 / 0;
}
startNewPathAndClipBox(t) {
this.clipBox = t, this.minX = 1 / 0, this.minY = 1 / 0, this.maxX = 0, this.maxY = 0;
}
getClippedPathBoundingBox(t = we.FILL, e = null) {
return U.intersect(this.clipBox, this.getPathBoundingBox(t, e));
}
}
function qg(n, t) {
if (t instanceof ImageData) {
n.putImageData(t, 0, 0);
return;
}
const e = t.height, s = t.width, i = e % Ue, r = (e - i) / Ue, a = i === 0 ? r : r + 1, l = n.createImageData(s, Ue);
let c = 0, h;
const u = t.data, d = l.data;
let f, g, m, y;
if (t.kind === Gh.GRAYSCALE_1BPP) {
const _ = u.byteLength, A = new Uint32Array(d.buffer, 0, d.byteLength >> 2), S = A.length, E = s + 7 >> 3, x = 4294967295, T = Me.isLittleEndian ? 4278190080 : 255;
for (f = 0; f < a; f++) {
for (m = f < r ? Ue : i, h = 0, g = 0; g < m; g++) {
const k = _ - c;
let C = 0;
const P = k > E ? s : k * 8 - 7, j = P & -8;
let Z = 0, V = 0;
for (; C < j; C += 8)
V = u[c++], A[h++] = V & 128 ? x : T, A[h++] = V & 64 ? x : T, A[h++] = V & 32 ? x : T, A[h++] = V & 16 ? x : T, A[h++] = V & 8 ? x : T, A[h++] = V & 4 ? x : T, A[h++] = V & 2 ? x : T, A[h++] = V & 1 ? x : T;
for (; C < P; C++)
Z === 0 && (V = u[c++], Z = 128), A[h++] = V & Z ? x : T, Z >>= 1;
}
for (; h < S; )
A[h++] = 0;
n.putImageData(l, 0, f * Ue);
}
} else if (t.kind === Gh.RGBA_32BPP) {
for (g = 0, y = s * Ue * 4, f = 0; f < r; f++)
d.set(u.subarray(c, c + y)), c += y, n.putImageData(l, 0, g), g += Ue;
f < a && (y = s * i * 4, d.set(u.subarray(c, c + y)), n.putImageData(l, 0, g));
} else if (t.kind === Gh.RGB_24BPP)
for (m = Ue, y = s * m, f = 0; f < a; f++) {
for (f >= r && (m = i, y = s * m), h = 0, g = y; g--; )
d[h++] = u[c++], d[h++] = u[c++], d[h++] = u[c++], d[h++] = 255;
n.putImageData(l, 0, f * Ue);
}
else
throw new Error(`bad image kind: ${t.kind}`);
}
function Wg(n, t) {
if (t.bitmap) {
n.drawImage(t.bitmap, 0, 0);
return;
}
const e = t.height, s = t.width, i = e % Ue, r = (e - i) / Ue, a = i === 0 ? r : r + 1, l = n.createImageData(s, Ue);
let c = 0;
const h = t.data, u = l.data;
for (let d = 0; d < a; d++) {
const f = d < r ? Ue : i;
({
srcPos: c
} = rx({
src: h,
srcPos: c,
dest: u,
width: s,
height: f,
nonBlackColor: 0
})), n.putImageData(l, 0, d * Ue);
}
}
function rl(n, t) {
const e = ["strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineWidth", "lineCap", "lineJoin", "miterLimit", "globalCompositeOperation", "font", "filter"];
for (const s of e)
n[s] !== void 0 && (t[s] = n[s]);
n.setLineDash !== void 0 && (t.setLineDash(n.getLineDash()), t.lineDashOffset = n.lineDashOffset);
}
function Hh(n) {
if (n.strokeStyle = n.fillStyle = "#000000", n.fillRule = "nonzero", n.globalAlpha = 1, n.lineWidth = 1, n.lineCap = "butt", n.lineJoin = "miter", n.miterLimit = 10, n.globalCompositeOperation = "source-over", n.font = "10px sans-serif", n.setLineDash !== void 0 && (n.setLineDash([]), n.lineDashOffset = 0), !Se) {
const {
filter: t
} = n;
t !== "none" && t !== "" && (n.filter = "none");
}
}
function Xg(n, t) {
if (t)
return !0;
const e = U.singularValueDecompose2dScale(n);
e[0] = Math.fround(e[0]), e[1] = Math.fround(e[1]);
const s = Math.fround((globalThis.devicePixelRatio || 1) * Hn.PDF_TO_CSS_UNITS);
return e[0] <= s && e[1] <= s;
}
const hx = ["butt", "round", "square"], ux = ["miter", "round", "bevel"], dx = {}, Zg = {};
var Us, Ff, $f, jf;
const Jp = class Jp {
constructor(t, e, s, i, r, {
optionalContentConfig: a,
markedContentStack: l = null
}, c, h) {
b(this, Us);
this.ctx = t, this.current = new Gg(this.ctx.canvas.width, this.ctx.canvas.height), this.stateStack = [], this.pendingClip = null, this.pendingEOFill = !1, this.res = null, this.xobjs = null, this.commonObjs = e, this.objs = s, this.canvasFactory = i, this.filterFactory = r, this.groupStack = [], this.processingType3 = null, this.baseTransform = null, this.baseTransformStack = [], this.groupLevel = 0, this.smaskStack = [], this.smaskCounter = 0, this.tempSMask = null, this.suspendedCtx = null, this.contentVisible = !0, this.markedContentStack = l || [], this.optionalContentConfig = a, this.cachedCanvases = new lx(this.canvasFactory), this.cachedPatterns = /* @__PURE__ */ new Map(), this.annotationCanvasMap = c, this.viewportScale = 1, this.outputScaleX = 1, this.outputScaleY = 1, this.pageColors = h, this._cachedScaleForStroking = [-1, 0], this._cachedGetSinglePixelWidth = null, this._cachedBitmapsMap = /* @__PURE__ */ new Map();
}
getObject(t, e = null) {
return typeof t == "string" ? t.startsWith("g_") ? this.commonObjs.get(t) : this.objs.get(t) : e;
}
beginDrawing({
transform: t,
viewport: e,
transparency: s = !1,
background: i = null
}) {
const r = this.ctx.canvas.width, a = this.ctx.canvas.height, l = this.ctx.fillStyle;
if (this.ctx.fillStyle = i || "#ffffff", this.ctx.fillRect(0, 0, r, a), this.ctx.fillStyle = l, s) {
const c = this.cachedCanvases.getCanvas("transparent", r, a);
this.compositeCtx = this.ctx, this.transparentCanvas = c.canvas, this.ctx = c.context, this.ctx.save(), this.ctx.transform(...Mt(this.compositeCtx));
}
this.ctx.save(), Hh(this.ctx), t && (this.ctx.transform(...t), this.outputScaleX = t[0], this.outputScaleY = t[0]), this.ctx.transform(...e.transform), this.viewportScale = e.scale, this.baseTransform = Mt(this.ctx);
}
executeOperatorList(t, e, s, i) {
const r = t.argsArray, a = t.fnArray;
let l = e || 0;
const c = r.length;
if (c === l)
return l;
const h = c - l > zg && typeof s == "function", u = h ? Date.now() + ax : 0;
let d = 0;
const f = this.commonObjs, g = this.objs;
let m;
for (; ; ) {
if (i !== void 0 && l === i.nextBreakPoint)
return i.breakIt(l, s), l;
if (m = a[l], m !== Ss.dependency)
this[m].apply(this, r[l]);
else
for (const y of r[l]) {
const _ = y.startsWith("g_") ? f : g;
if (!_.has(y))
return _.get(y, s), l;
}
if (l++, l === c)
return l;
if (h && ++d > zg) {
if (Date.now() > u)
return s(), l;
d = 0;
}
}
}
endDrawing() {
v(this, Us, Ff).call(this), this.cachedCanvases.clear(), this.cachedPatterns.clear();
for (const t of this._cachedBitmapsMap.values()) {
for (const e of t.values())
typeof HTMLCanvasElement < "u" && e instanceof HTMLCanvasElement && (e.width = e.height = 0);
t.clear();
}
this._cachedBitmapsMap.clear(), v(this, Us, $f).call(this);
}
_scaleImage(t, e) {
const s = t.width ?? t.displayWidth, i = t.height ?? t.displayHeight;
let r = Math.max(Math.hypot(e[0], e[1]), 1), a = Math.max(Math.hypot(e[2], e[3]), 1), l = s, c = i, h = "prescale1", u, d;
for (; r > 2 && l > 1 || a > 2 && c > 1; ) {
let f = l, g = c;
r > 2 && l > 1 && (f = l >= 16384 ? Math.floor(l / 2) - 1 || 1 : Math.ceil(l / 2), r /= l / f), a > 2 && c > 1 && (g = c >= 16384 ? Math.floor(c / 2) - 1 || 1 : Math.ceil(c) / 2, a /= c / g), u = this.cachedCanvases.getCanvas(h, f, g), d = u.context, d.clearRect(0, 0, f, g), d.drawImage(t, 0, 0, l, c, 0, 0, f, g), t = u.canvas, l = f, c = g, h = h === "prescale1" ? "prescale2" : "prescale1";
}
return {
img: t,
paintWidth: l,
paintHeight: c
};
}
_createMaskCanvas(t) {
const e = this.ctx, {
width: s,
height: i
} = t, r = this.current.fillColor, a = this.current.patternFill, l = Mt(e);
let c, h, u, d;
if ((t.bitmap || t.data) && t.count > 1) {
const P = t.bitmap || t.data.buffer;
h = JSON.stringify(a ? l : [l.slice(0, 4), r]), c = this._cachedBitmapsMap.get(P), c || (c = /* @__PURE__ */ new Map(), this._cachedBitmapsMap.set(P, c));
const j = c.get(h);
if (j && !a) {
const Z = Math.round(Math.min(l[0], l[2]) + l[4]), V = Math.round(Math.min(l[1], l[3]) + l[5]);
return {
canvas: j,
offsetX: Z,
offsetY: V
};
}
u = j;
}
u || (d = this.cachedCanvases.getCanvas("maskCanvas", s, i), Wg(d.context, t));
let f = U.transform(l, [1 / s, 0, 0, -1 / i, 0, 0]);
f = U.transform(f, [1, 0, 0, 1, 0, -i]);
const [g, m, y, _] = U.getAxialAlignedBoundingBox([0, 0, s, i], f), A = Math.round(y - g) || 1, S = Math.round(_ - m) || 1, E = this.cachedCanvases.getCanvas("fillCanvas", A, S), x = E.context, T = g, k = m;
x.translate(-T, -k), x.transform(...f), u || (u = this._scaleImage(d.canvas, Vs(x)), u = u.img, c && a && c.set(h, u)), x.imageSmoothingEnabled = Xg(Mt(x), t.interpolate), Bh(x, u, 0, 0, u.width, u.height, 0, 0, s, i), x.globalCompositeOperation = "source-in";
const C = U.transform(Vs(x), [1, 0, 0, 1, -T, -k]);
return x.fillStyle = a ? r.getPattern(e, this, C, we.FILL) : r, x.fillRect(0, 0, s, i), c && !a && (this.cachedCanvases.delete("fillCanvas"), c.set(h, E.canvas)), {
canvas: E.canvas,
offsetX: Math.round(T),
offsetY: Math.round(k)
};
}
setLineWidth(t) {
t !== this.current.lineWidth && (this._cachedScaleForStroking[0] = -1), this.current.lineWidth = t, this.ctx.lineWidth = t;
}
setLineCap(t) {
this.ctx.lineCap = hx[t];
}
setLineJoin(t) {
this.ctx.lineJoin = ux[t];
}
setMiterLimit(t) {
this.ctx.miterLimit = t;
}
setDash(t, e) {
const s = this.ctx;
s.setLineDash !== void 0 && (s.setLineDash(t), s.lineDashOffset = e);
}
setRenderingIntent(t) {
}
setFlatness(t) {
}
setGState(t) {
for (const [e, s] of t)
switch (e) {
case "LW":
this.setLineWidth(s);
break;
case "LC":
this.setLineCap(s);
break;
case "LJ":
this.setLineJoin(s);
break;
case "ML":
this.setMiterLimit(s);
break;
case "D":
this.setDash(s[0], s[1]);
break;
case "RI":
this.setRenderingIntent(s);
break;
case "FL":
this.setFlatness(s);
break;
case "Font":
this.setFont(s[0], s[1]);
break;
case "CA":
this.current.strokeAlpha = s;
break;
case "ca":
this.current.fillAlpha = s, this.ctx.globalAlpha = s;
break;
case "BM":
this.ctx.globalCompositeOperation = s;
break;
case "SMask":
this.current.activeSMask = s ? this.tempSMask : null, this.tempSMask = null, this.checkSMaskState();
break;
case "TR":
this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(s);
break;
}
}
get inSMaskMode() {
return !!this.suspendedCtx;
}
checkSMaskState() {
const t = this.inSMaskMode;
this.current.activeSMask && !t ? this.beginSMaskMode() : !this.current.activeSMask && t && this.endSMaskMode();
}
beginSMaskMode() {
if (this.inSMaskMode)
throw new Error("beginSMaskMode called while already in smask mode");
const t = this.ctx.canvas.width, e = this.ctx.canvas.height, s = "smaskGroupAt" + this.groupLevel, i = this.cachedCanvases.getCanvas(s, t, e);
this.suspendedCtx = this.ctx, this.ctx = i.context;
const r = this.ctx;
r.setTransform(...Mt(this.suspendedCtx)), rl(this.suspendedCtx, r), ox(r, this.suspendedCtx), this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]);
}
endSMaskMode() {
if (!this.inSMaskMode)
throw new Error("endSMaskMode called while not in smask mode");
this.ctx._removeMirroring(), rl(this.ctx, this.suspendedCtx), this.ctx = this.suspendedCtx, this.suspendedCtx = null;
}
compose(t) {
if (!this.current.activeSMask)
return;
t ? (t[0] = Math.floor(t[0]), t[1] = Math.floor(t[1]), t[2] = Math.ceil(t[2]), t[3] = Math.ceil(t[3])) : t = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];
const e = this.current.activeSMask, s = this.suspendedCtx;
this.composeSMask(s, e, this.ctx, t), this.ctx.save(), this.ctx.setTransform(1, 0, 0, 1, 0, 0), this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height), this.ctx.restore();
}
composeSMask(t, e, s, i) {
const r = i[0], a = i[1], l = i[2] - r, c = i[3] - a;
l === 0 || c === 0 || (this.genericComposeSMask(e.context, s, l, c, e.subtype, e.backdrop, e.transferMap, r, a, e.offsetX, e.offsetY), t.save(), t.globalAlpha = 1, t.globalCompositeOperation = "source-over", t.setTransform(1, 0, 0, 1, 0, 0), t.drawImage(s.canvas, 0, 0), t.restore());
}
genericComposeSMask(t, e, s, i, r, a, l, c, h, u, d) {
let f = t.canvas, g = c - u, m = h - d;
if (a) {
const _ = U.makeHexColor(...a);
if (g < 0 || m < 0 || g + s > f.width || m + i > f.height) {
const A = this.cachedCanvases.getCanvas("maskExtension", s, i), S = A.context;
S.drawImage(f, -g, -m), S.globalCompositeOperation = "destination-atop", S.fillStyle = _, S.fillRect(0, 0, s, i), S.globalCompositeOperation = "source-over", f = A.canvas, g = m = 0;
} else {
t.save(), t.globalAlpha = 1, t.setTransform(1, 0, 0, 1, 0, 0);
const A = new Path2D();
A.rect(g, m, s, i), t.clip(A), t.globalCompositeOperation = "destination-atop", t.fillStyle = _, t.fillRect(g, m, s, i), t.restore();
}
}
e.save(), e.globalAlpha = 1, e.setTransform(1, 0, 0, 1, 0, 0), r === "Alpha" && l ? e.filter = this.filterFactory.addAlphaFilter(l) : r === "Luminosity" && (e.filter = this.filterFactory.addLuminosityFilter(l));
const y = new Path2D();
y.rect(c, h, s, i), e.clip(y), e.globalCompositeOperation = "destination-in", e.drawImage(f, g, m, s, i, c, h, s, i), e.restore();
}
save() {
this.inSMaskMode ? (rl(this.ctx, this.suspendedCtx), this.suspendedCtx.save()) : this.ctx.save();
const t = this.current;
this.stateStack.push(t), this.current = t.clone();
}
restore() {
this.stateStack.length === 0 && this.inSMaskMode && this.endSMaskMode(), this.stateStack.length !== 0 && (this.current = this.stateStack.pop(), this.inSMaskMode ? (this.suspendedCtx.restore(), rl(this.suspendedCtx, this.ctx)) : this.ctx.restore(), this.checkSMaskState(), this.pendingClip = null, this._cachedScaleForStroking[0] = -1, this._cachedGetSinglePixelWidth = null);
}
transform(t, e, s, i, r, a) {
this.ctx.transform(t, e, s, i, r, a), this._cachedScaleForStroking[0] = -1, this._cachedGetSinglePixelWidth = null;
}
constructPath(t, e, s) {
const i = this.ctx, r = this.current;
let a = r.x, l = r.y, c, h;
const u = Mt(i), d = u[0] === 0 && u[3] === 0 || u[1] === 0 && u[2] === 0, f = d ? s.slice(0) : null;
for (let g = 0, m = 0, y = t.length; g < y; g++)
switch (t[g] | 0) {
case Ss.rectangle:
a = e[m++], l = e[m++];
const _ = e[m++], A = e[m++], S = a + _, E = l + A;
i.moveTo(a, l), _ === 0 || A === 0 ? i.lineTo(S, E) : (i.lineTo(S, l), i.lineTo(S, E), i.lineTo(a, E)), d || r.updateRectMinMax(u, [a, l, S, E]), i.closePath();
break;
case Ss.moveTo:
a = e[m++], l = e[m++], i.moveTo(a, l), d || r.updatePathMinMax(u, a, l);
break;
case Ss.lineTo:
a = e[m++], l = e[m++], i.lineTo(a, l), d || r.updatePathMinMax(u, a, l);
break;
case Ss.curveTo:
c = a, h = l, a = e[m + 4], l = e[m + 5], i.bezierCurveTo(e[m], e[m + 1], e[m + 2], e[m + 3], a, l), r.updateCurvePathMinMax(u, c, h, e[m], e[m + 1], e[m + 2], e[m + 3], a, l, f), m += 6;
break;
case Ss.curveTo2:
c = a, h = l, i.bezierCurveTo(a, l, e[m], e[m + 1], e[m + 2], e[m + 3]), r.updateCurvePathMinMax(u, c, h, a, l, e[m], e[m + 1], e[m + 2], e[m + 3], f), a = e[m + 2], l = e[m + 3], m += 4;
break;
case Ss.curveTo3:
c = a, h = l, a = e[m + 2], l = e[m + 3], i.bezierCurveTo(e[m], e[m + 1], a, l, a, l), r.updateCurvePathMinMax(u, c, h, e[m], e[m + 1], a, l, a, l, f), m += 4;
break;
case Ss.closePath:
i.closePath();
break;
}
d && r.updateScalingPathMinMax(u, f), r.setCurrentPoint(a, l);
}
closePath() {
this.ctx.closePath();
}
stroke(t = !0) {
const e = this.ctx, s = this.current.strokeColor;
e.globalAlpha = this.current.strokeAlpha, this.contentVisible && (typeof s == "object" && (s != null && s.getPattern) ? (e.save(), e.strokeStyle = s.getPattern(e, this, Vs(e), we.STROKE), this.rescaleAndStroke(!1), e.restore()) : this.rescaleAndStroke(!0)), t && this.consumePath(this.current.getClippedPathBoundingBox()), e.globalAlpha = this.current.fillAlpha;
}
closeStroke() {
this.closePath(), this.stroke();
}
fill(t = !0) {
const e = this.ctx, s = this.current.fillColor, i = this.current.patternFill;
let r = !1;
i && (e.save(), e.fillStyle = s.getPattern(e, this, Vs(e), we.FILL), r = !0);
const a = this.current.getClippedPathBoundingBox();
this.contentVisible && a !== null && (this.pendingEOFill ? (e.fill("evenodd"), this.pendingEOFill = !1) : e.fill()), r && e.restore(), t && this.consumePath(a);
}
eoFill() {
this.pendingEOFill = !0, this.fill();
}
fillStroke() {
this.fill(!1), this.stroke(!1), this.consumePath();
}
eoFillStroke() {
this.pendingEOFill = !0, this.fillStroke();
}
closeFillStroke() {
this.closePath(), this.fillStroke();
}
closeEOFillStroke() {
this.pendingEOFill = !0, this.closePath(), this.fillStroke();
}
endPath() {
this.consumePath();
}
clip() {
this.pendingClip = dx;
}
eoClip() {
this.pendingClip = Zg;
}
beginText() {
this.current.textMatrix = $y, this.current.textMatrixScale = 1, this.current.x = this.current.lineX = 0, this.current.y = this.current.lineY = 0;
}
endText() {
const t = this.pendingTextPaths, e = this.ctx;
if (t === void 0) {
e.beginPath();
return;
}
const s = new Path2D(), i = e.getTransform().invertSelf();
for (const {
transform: r,
x: a,
y: l,
fontSize: c,
path: h
} of t)
s.addPath(h, new DOMMatrix(r).preMultiplySelf(i).translate(a, l).scale(c, -c));
e.clip(s), e.beginPath(), delete this.pendingTextPaths;
}
setCharSpacing(t) {
this.current.charSpacing = t;
}
setWordSpacing(t) {
this.current.wordSpacing = t;
}
setHScale(t) {
this.current.textHScale = t / 100;
}
setLeading(t) {
this.current.leading = -t;
}
setFont(t, e) {
var u;
const s = this.commonObjs.get(t), i = this.current;
if (!s)
throw new Error(`Can't find font for ${t}`);
if (i.fontMatrix = s.fontMatrix || hf, (i.fontMatrix[0] === 0 || i.fontMatrix[3] === 0) && st("Invalid font matrix for font " + t), e < 0 ? (e = -e, i.fontDirection = -1) : i.fontDirection = 1, this.current.font = s, this.current.fontSize = e, s.isType3Font)
return;
const r = s.loadedName || "sans-serif", a = ((u = s.systemFontInfo) == null ? void 0 : u.css) || `"${r}", ${s.fallbackName}`;
let l = "normal";
s.black ? l = "900" : s.bold && (l = "bold");
const c = s.italic ? "italic" : "normal";
let h = e;
e < Hg ? h = Hg : e > Ug && (h = Ug), this.current.fontSizeScale = e / h, this.ctx.font = `${c} ${l} ${h}px ${a}`;
}
setTextRenderingMode(t) {
this.current.textRenderingMode = t;
}
setTextRise(t) {
this.current.textRise = t;
}
moveText(t, e) {
this.current.x = this.current.lineX += t, this.current.y = this.current.lineY += e;
}
setLeadingMoveText(t, e) {
this.setLeading(-e), this.moveText(t, e);
}
setTextMatrix(t, e, s, i, r, a) {
this.current.textMatrix = [t, e, s, i, r, a], this.current.textMatrixScale = Math.hypot(t, e), this.current.x = this.current.lineX = 0, this.current.y = this.current.lineY = 0;
}
nextLine() {
this.moveText(0, this.current.leading);
}
paintChar(t, e, s, i, r) {
const a = this.ctx, l = this.current, c = l.font, h = l.textRenderingMode, u = l.fontSize / l.fontSizeScale, d = h & ge.FILL_STROKE_MASK, f = !!(h & ge.ADD_TO_PATH_FLAG), g = l.patternFill && !c.missingFile, m = l.patternStroke && !c.missingFile;
let y;
if ((c.disableFontFace || f || g || m) && (y = c.getPathGenerator(this.commonObjs, t)), c.disableFontFace || g || m) {
if (a.save(), a.translate(e, s), a.scale(u, -u), d === ge.FILL || d === ge.FILL_STROKE)
if (i) {
const _ = a.getTransform();
a.setTransform(...i), a.fill(v(this, Us, jf).call(this, y, _, i));
} else
a.fill(y);
if (d === ge.STROKE || d === ge.FILL_STROKE)
if (r) {
const _ = a.getTransform();
a.setTransform(...r), a.stroke(v(this, Us, jf).call(this, y, _, r));
} else
a.lineWidth /= u, a.stroke(y);
a.restore();
} else
(d === ge.FILL || d === ge.FILL_STROKE) && a.fillText(t, e, s), (d === ge.STROKE || d === ge.FILL_STROKE) && a.strokeText(t, e, s);
f && (this.pendingTextPaths || (this.pendingTextPaths = [])).push({
transform: Mt(a),
x: e,
y: s,
fontSize: u,
path: y
});
}
get isFontSubpixelAAEnabled() {
const {
context: t
} = this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled", 10, 10);
t.scale(1.5, 1), t.fillText("I", 0, 10);
const e = t.getImageData(0, 0, 10, 10).data;
let s = !1;
for (let i = 3; i < e.length; i += 4)
if (e[i] > 0 && e[i] < 255) {
s = !0;
break;
}
return at(this, "isFontSubpixelAAEnabled", s);
}
showText(t) {
const e = this.current, s = e.font;
if (s.isType3Font)
return this.showType3Text(t);
const i = e.fontSize;
if (i === 0)
return;
const r = this.ctx, a = e.fontSizeScale, l = e.charSpacing, c = e.wordSpacing, h = e.fontDirection, u = e.textHScale * h, d = t.length, f = s.vertical, g = f ? 1 : -1, m = s.defaultVMetrics, y = i * e.fontMatrix[0], _ = e.textRenderingMode === ge.FILL && !s.disableFontFace && !e.patternFill;
r.save(), r.transform(...e.textMatrix), r.translate(e.x, e.y + e.textRise), h > 0 ? r.scale(u, -1) : r.scale(u, 1);
let A, S;
if (e.patternFill) {
r.save();
const C = e.fillColor.getPattern(r, this, Vs(r), we.FILL);
A = Mt(r), r.restore(), r.fillStyle = C;
}
if (e.patternStroke) {
r.save();
const C = e.strokeColor.getPattern(r, this, Vs(r), we.STROKE);
S = Mt(r), r.restore(), r.strokeStyle = C;
}
let E = e.lineWidth;
const x = e.textMatrixScale;
if (x === 0 || E === 0) {
const C = e.textRenderingMode & ge.FILL_STROKE_MASK;
(C === ge.STROKE || C === ge.FILL_STROKE) && (E = this.getSinglePixelWidth());
} else
E /= x;
if (a !== 1 && (r.scale(a, a), E /= a), r.lineWidth = E, s.isInvalidPDFjsFont) {
const C = [];
let P = 0;
for (const j of t)
C.push(j.unicode), P += j.width;
r.fillText(C.join(""), 0, 0), e.x += P * y * u, r.restore(), this.compose();
return;
}
let T = 0, k;
for (k = 0; k < d; ++k) {
const C = t[k];
if (typeof C == "number") {
T += g * C * i / 1e3;
continue;
}
let P = !1;
const j = (C.isSpace ? c : 0) + l, Z = C.fontChar, V = C.accent;
let dt, gt, Y = C.width;
if (f) {
const M = C.vmetric || m, z = -(C.vmetric ? M[1] : Y * 0.5) * y, ot = M[2] * y;
Y = M ? -M[0] : Y, dt = z / a, gt = (T + ot) / a;
} else
dt = T / a, gt = 0;
if (s.remeasure && Y > 0) {
const M = r.measureText(Z).width * 1e3 / i * a;
if (Y < M && this.isFontSubpixelAAEnabled) {
const z = Y / M;
P = !0, r.save(), r.scale(z, 1), dt /= z;
} else Y !== M && (dt += (Y - M) / 2e3 * i / a);
}
if (this.contentVisible && (C.isInFont || s.missingFile)) {
if (_ && !V)
r.fillText(Z, dt, gt);
else if (this.paintChar(Z, dt, gt, A, S), V) {
const M = dt + i * V.offset.x / a, z = gt - i * V.offset.y / a;
this.paintChar(V.fontChar, M, z, A, S);
}
}
const xt = f ? Y * y - j * h : Y * y + j * h;
T += xt, P && r.restore();
}
f ? e.y -= T : e.x += T * u, r.restore(), this.compose();
}
showType3Text(t) {
const e = this.ctx, s = this.current, i = s.font, r = s.fontSize, a = s.fontDirection, l = i.vertical ? 1 : -1, c = s.charSpacing, h = s.wordSpacing, u = s.textHScale * a, d = s.fontMatrix || hf, f = t.length, g = s.textRenderingMode === ge.INVISIBLE;
let m, y, _, A;
if (!(g || r === 0)) {
for (this._cachedScaleForStroking[0] = -1, this._cachedGetSinglePixelWidth = null, e.save(), e.transform(...s.textMatrix), e.translate(s.x, s.y), e.scale(u, a), m = 0; m < f; ++m) {
if (y = t[m], typeof y == "number") {
A = l * y * r / 1e3, this.ctx.translate(A, 0), s.x += A * u;
continue;
}
const S = (y.isSpace ? h : 0) + c, E = i.charProcOperatorList[y.operatorListId];
if (!E) {
st(`Type3 character "${y.operatorListId}" is not available.`);
continue;
}
this.contentVisible && (this.processingType3 = y, this.save(), e.scale(r, r), e.transform(...d), this.executeOperatorList(E), this.restore()), _ = U.applyTransform([y.width, 0], d)[0] * r + S, e.translate(_, 0), s.x += _ * u;
}
e.restore(), this.processingType3 = null;
}
}
setCharWidth(t, e) {
}
setCharWidthAndBounds(t, e, s, i, r, a) {
this.ctx.rect(s, i, r - s, a - i), this.ctx.clip(), this.endPath();
}
getColorN_Pattern(t) {
let e;
if (t[0] === "TilingPattern") {
const s = t[1], i = this.baseTransform || Mt(this.ctx), r = {
createCanvasGraphics: (a) => new Jp(a, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {
optionalContentConfig: this.optionalContentConfig,
markedContentStack: this.markedContentStack
})
};
e = new Df(t, s, this.ctx, r, i);
} else
e = this._getPattern(t[1], t[2]);
return e;
}
setStrokeColorN() {
this.current.strokeColor = this.getColorN_Pattern(arguments), this.current.patternStroke = !0;
}
setFillColorN() {
this.current.fillColor = this.getColorN_Pattern(arguments), this.current.patternFill = !0;
}
setStrokeRGBColor(t, e, s) {
this.ctx.strokeStyle = this.current.strokeColor = U.makeHexColor(t, e, s), this.current.patternStroke = !1;
}
setStrokeTransparent() {
this.ctx.strokeStyle = this.current.strokeColor = "transparent", this.current.patternStroke = !1;
}
setFillRGBColor(t, e, s) {
this.ctx.fillStyle = this.current.fillColor = U.makeHexColor(t, e, s), this.current.patternFill = !1;
}
setFillTransparent() {
this.ctx.fillStyle = this.current.fillColor = "transparent", this.current.patternFill = !1;
}
_getPattern(t, e = null) {
let s;
return this.cachedPatterns.has(t) ? s = this.cachedPatterns.get(t) : (s = nx(this.getObject(t)), this.cachedPatterns.set(t, s)), e && (s.matrix = e), s;
}
shadingFill(t) {
if (!this.contentVisible)
return;
const e = this.ctx;
this.save();
const s = this._getPattern(t);
e.fillStyle = s.getPattern(e, this, Vs(e), we.SHADING);
const i = Vs(e);
if (i) {
const {
width: r,
height: a
} = e.canvas, [l, c, h, u] = U.getAxialAlignedBoundingBox([0, 0, r, a], i);
this.ctx.fillRect(l, c, h - l, u - c);
} else
this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);
this.compose(this.current.getClippedPathBoundingBox()), this.restore();
}
beginInlineImage() {
Et("Should not call beginInlineImage");
}
beginImageData() {
Et("Should not call beginImageData");
}
paintFormXObjectBegin(t, e) {
if (this.contentVisible && (this.save(), this.baseTransformStack.push(this.baseTransform), t && this.transform(...t), this.baseTransform = Mt(this.ctx), e)) {
const s = e[2] - e[0], i = e[3] - e[1];
this.ctx.rect(e[0], e[1], s, i), this.current.updateRectMinMax(Mt(this.ctx), e), this.clip(), this.endPath();
}
}
paintFormXObjectEnd() {
this.contentVisible && (this.restore(), this.baseTransform = this.baseTransformStack.pop());
}
beginGroup(t) {
if (!this.contentVisible)
return;
this.save(), this.inSMaskMode && (this.endSMaskMode(), this.current.activeSMask = null);
const e = this.ctx;
t.isolated || vd("TODO: Support non-isolated groups."), t.knockout && st("Knockout groups not supported.");
const s = Mt(e);
if (t.matrix && e.transform(...t.matrix), !t.bbox)
throw new Error("Bounding box is required.");
let i = U.getAxialAlignedBoundingBox(t.bbox, Mt(e));
const r = [0, 0, e.canvas.width, e.canvas.height];
i = U.intersect(i, r) || [0, 0, 0, 0];
const a = Math.floor(i[0]), l = Math.floor(i[1]), c = Math.max(Math.ceil(i[2]) - a, 1), h = Math.max(Math.ceil(i[3]) - l, 1);
this.current.startNewPathAndClipBox([0, 0, c, h]);
let u = "groupAt" + this.groupLevel;
t.smask && (u += "_smask_" + this.smaskCounter++ % 2);
const d = this.cachedCanvases.getCanvas(u, c, h), f = d.context;
f.translate(-a, -l), f.transform(...s), t.smask ? this.smaskStack.push({
canvas: d.canvas,
context: f,
offsetX: a,
offsetY: l,
subtype: t.smask.subtype,
backdrop: t.smask.backdrop,
transferMap: t.smask.transferMap || null,
startTransformInverse: null
}) : (e.setTransform(1, 0, 0, 1, 0, 0), e.translate(a, l), e.save()), rl(e, f), this.ctx = f, this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]), this.groupStack.push(e), this.groupLevel++;
}
endGroup(t) {
if (!this.contentVisible)
return;
this.groupLevel--;
const e = this.ctx, s = this.groupStack.pop();
if (this.ctx = s, this.ctx.imageSmoothingEnabled = !1, t.smask)
this.tempSMask = this.smaskStack.pop(), this.restore();
else {
this.ctx.restore();
const i = Mt(this.ctx);
this.restore(), this.ctx.save(), this.ctx.setTransform(...i);
const r = U.getAxialAlignedBoundingBox([0, 0, e.canvas.width, e.canvas.height], i);
this.ctx.drawImage(e.canvas, 0, 0), this.ctx.restore(), this.compose(r);
}
}
beginAnnotation(t, e, s, i, r) {
if (v(this, Us, Ff).call(this), Hh(this.ctx), this.ctx.save(), this.save(), this.baseTransform && this.ctx.setTransform(...this.baseTransform), e) {
const a = e[2] - e[0], l = e[3] - e[1];
if (r && this.annotationCanvasMap) {
s = s.slice(), s[4] -= e[0], s[5] -= e[1], e = e.slice(), e[0] = e[1] = 0, e[2] = a, e[3] = l;
const [c, h] = U.singularValueDecompose2dScale(Mt(this.ctx)), {
viewportScale: u
} = this, d = Math.ceil(a * this.outputScaleX * u), f = Math.ceil(l * this.outputScaleY * u);
this.annotationCanvas = this.canvasFactory.create(d, f);
const {
canvas: g,
context: m
} = this.annotationCanvas;
this.annotationCanvasMap.set(t, g), this.annotationCanvas.savedCtx = this.ctx, this.ctx = m, this.ctx.save(), this.ctx.setTransform(c, 0, 0, -h, 0, l * h), Hh(this.ctx);
} else
Hh(this.ctx), this.endPath(), this.ctx.rect(e[0], e[1], a, l), this.ctx.clip(), this.ctx.beginPath();
}
this.current = new Gg(this.ctx.canvas.width, this.ctx.canvas.height), this.transform(...s), this.transform(...i);
}
endAnnotation() {
this.annotationCanvas && (this.ctx.restore(), v(this, Us, $f).call(this), this.ctx = this.annotationCanvas.savedCtx, delete this.annotationCanvas.savedCtx, delete this.annotationCanvas);
}
paintImageMaskXObject(t) {
if (!this.contentVisible)
return;
const e = t.count;
t = this.getObject(t.data, t), t.count = e;
const s = this.ctx, i = this.processingType3;
if (i && (i.compiled === void 0 && (i.compiled = cx(t)), i.compiled)) {
i.compiled(s);
return;
}
const r = this._createMaskCanvas(t), a = r.canvas;
s.save(), s.setTransform(1, 0, 0, 1, 0, 0), s.drawImage(a, r.offsetX, r.offsetY), s.restore(), this.compose();
}
paintImageMaskXObjectRepeat(t, e, s = 0, i = 0, r, a) {
if (!this.contentVisible)
return;
t = this.getObject(t.data, t);
const l = this.ctx;
l.save();
const c = Mt(l);
l.transform(e, s, i, r, 0, 0);
const h = this._createMaskCanvas(t);
l.setTransform(1, 0, 0, 1, h.offsetX - c[4], h.offsetY - c[5]);
for (let u = 0, d = a.length; u < d; u += 2) {
const f = U.transform(c, [e, s, i, r, a[u], a[u + 1]]), [g, m] = U.applyTransform([0, 0], f);
l.drawImage(h.canvas, g, m);
}
l.restore(), this.compose();
}
paintImageMaskXObjectGroup(t) {
if (!this.contentVisible)
return;
const e = this.ctx, s = this.current.fillColor, i = this.current.patternFill;
for (const r of t) {
const {
data: a,
width: l,
height: c,
transform: h
} = r, u = this.cachedCanvases.getCanvas("maskCanvas", l, c), d = u.context;
d.save();
const f = this.getObject(a, r);
Wg(d, f), d.globalCompositeOperation = "source-in", d.fillStyle = i ? s.getPattern(d, this, Vs(e), we.FILL) : s, d.fillRect(0, 0, l, c), d.restore(), e.save(), e.transform(...h), e.scale(1, -1), Bh(e, u.canvas, 0, 0, l, c, 0, -1, 1, 1), e.restore();
}
this.compose();
}
paintImageXObject(t) {
if (!this.contentVisible)
return;
const e = this.getObject(t);
if (!e) {
st("Dependent image isn't ready yet");
return;
}
this.paintInlineImageXObject(e);
}
paintImageXObjectRepeat(t, e, s, i) {
if (!this.contentVisible)
return;
const r = this.getObject(t);
if (!r) {
st("Dependent image isn't ready yet");
return;
}
const a = r.width, l = r.height, c = [];
for (let h = 0, u = i.length; h < u; h += 2)
c.push({
transform: [e, 0, 0, s, i[h], i[h + 1]],
x: 0,
y: 0,
w: a,
h: l
});
this.paintInlineImageXObjectGroup(r, c);
}
applyTransferMapsToCanvas(t) {
return this.current.transferMaps !== "none" && (t.filter = this.current.transferMaps, t.drawImage(t.canvas, 0, 0), t.filter = "none"), t.canvas;
}
applyTransferMapsToBitmap(t) {
if (this.current.transferMaps === "none")
return t.bitmap;
const {
bitmap: e,
width: s,
height: i
} = t, r = this.cachedCanvases.getCanvas("inlineImage", s, i), a = r.context;
return a.filter = this.current.transferMaps, a.drawImage(e, 0, 0), a.filter = "none", r.canvas;
}
paintInlineImageXObject(t) {
if (!this.contentVisible)
return;
const e = t.width, s = t.height, i = this.ctx;
if (this.save(), !Se) {
const {
filter: l
} = i;
l !== "none" && l !== "" && (i.filter = "none");
}
i.scale(1 / e, -1 / s);
let r;
if (t.bitmap)
r = this.applyTransferMapsToBitmap(t);
else if (typeof HTMLElement == "function" && t instanceof HTMLElement || !t.data)
r = t;
else {
const c = this.cachedCanvases.getCanvas("inlineImage", e, s).context;
qg(c, t), r = this.applyTransferMapsToCanvas(c);
}
const a = this._scaleImage(r, Vs(i));
i.imageSmoothingEnabled = Xg(Mt(i), t.interpolate), Bh(i, a.img, 0, 0, a.paintWidth, a.paintHeight, 0, -s, e, s), this.compose(), this.restore();
}
paintInlineImageXObjectGroup(t, e) {
if (!this.contentVisible)
return;
const s = this.ctx;
let i;
if (t.bitmap)
i = t.bitmap;
else {
const r = t.width, a = t.height, c = this.cachedCanvases.getCanvas("inlineImage", r, a).context;
qg(c, t), i = this.applyTransferMapsToCanvas(c);
}
for (const r of e)
s.save(), s.transform(...r.transform), s.scale(1, -1), Bh(s, i, r.x, r.y, r.w, r.h, 0, -1, 1, 1), s.restore();
this.compose();
}
paintSolidColorImageMask() {
this.contentVisible && (this.ctx.fillRect(0, 0, 1, 1), this.compose());
}
markPoint(t) {
}
markPointProps(t, e) {
}
beginMarkedContent(t) {
this.markedContentStack.push({
visible: !0
});
}
beginMarkedContentProps(t, e) {
t === "OC" ? this.markedContentStack.push({
visible: this.optionalContentConfig.isVisible(e)
}) : this.markedContentStack.push({
visible: !0
}), this.contentVisible = this.isContentVisible();
}
endMarkedContent() {
this.markedContentStack.pop(), this.contentVisible = this.isContentVisible();
}
beginCompat() {
}
endCompat() {
}
consumePath(t) {
const e = this.current.isEmptyClip();
this.pendingClip && this.current.updateClipFromPath(), this.pendingClip || this.compose(t);
const s = this.ctx;
this.pendingClip && (e || (this.pendingClip === Zg ? s.clip("evenodd") : s.clip()), this.pendingClip = null), this.current.startNewPathAndClipBox(this.current.clipBox), s.beginPath();
}
getSinglePixelWidth() {
if (!this._cachedGetSinglePixelWidth) {
const t = Mt(this.ctx);
if (t[1] === 0 && t[2] === 0)
this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(t[0]), Math.abs(t[3]));
else {
const e = Math.abs(t[0] * t[3] - t[2] * t[1]), s = Math.hypot(t[0], t[2]), i = Math.hypot(t[1], t[3]);
this._cachedGetSinglePixelWidth = Math.max(s, i) / e;
}
}
return this._cachedGetSinglePixelWidth;
}
getScaleForStroking() {
if (this._cachedScaleForStroking[0] === -1) {
const {
lineWidth: t
} = this.current, {
a: e,
b: s,
c: i,
d: r
} = this.ctx.getTransform();
let a, l;
if (s === 0 && i === 0) {
const c = Math.abs(e), h = Math.abs(r);
if (c === h)
if (t === 0)
a = l = 1 / c;
else {
const u = c * t;
a = l = u < 1 ? 1 / u : 1;
}
else if (t === 0)
a = 1 / c, l = 1 / h;
else {
const u = c * t, d = h * t;
a = u < 1 ? 1 / u : 1, l = d < 1 ? 1 / d : 1;
}
} else {
const c = Math.abs(e * r - s * i), h = Math.hypot(e, s), u = Math.hypot(i, r);
if (t === 0)
a = u / c, l = h / c;
else {
const d = t * c;
a = u > d ? u / d : 1, l = h > d ? h / d : 1;
}
}
this._cachedScaleForStroking[0] = a, this._cachedScaleForStroking[1] = l;
}
return this._cachedScaleForStroking;
}
rescaleAndStroke(t) {
const {
ctx: e
} = this, {
lineWidth: s
} = this.current, [i, r] = this.getScaleForStroking();
if (e.lineWidth = s || 1, i === 1 && r === 1) {
e.stroke();
return;
}
const a = e.getLineDash();
if (t && e.save(), e.scale(i, r), a.length > 0) {
const l = Math.max(i, r);
e.setLineDash(a.map((c) => c / l)), e.lineDashOffset /= l;
}
e.stroke(), t && e.restore();
}
isContentVisible() {
for (let t = this.markedContentStack.length - 1; t >= 0; t--)
if (!this.markedContentStack[t].visible)
return !1;
return !0;
}
};
Us = new WeakSet(), Ff = function() {
for (; this.stateStack.length || this.inSMaskMode; )
this.restore();
this.current.activeSMask = null, this.ctx.restore(), this.transparentCanvas && (this.ctx = this.compositeCtx, this.ctx.save(), this.ctx.setTransform(1, 0, 0, 1, 0, 0), this.ctx.drawImage(this.transparentCanvas, 0, 0), this.ctx.restore(), this.transparentCanvas = null);
}, $f = function() {
if (this.pageColors) {
const t = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);
if (t !== "none") {
const e = this.ctx.filter;
this.ctx.filter = t, this.ctx.drawImage(this.ctx.canvas, 0, 0), this.ctx.filter = e;
}
}
}, jf = function(t, e, s) {
const i = new Path2D();
return i.addPath(t, new DOMMatrix(s).invertSelf().multiplySelf(e)), i;
};
let Oa = Jp;
for (const n in Ss)
Oa.prototype[n] !== void 0 && (Oa.prototype[Ss[n]] = Oa.prototype[n]);
var Oc, Lc;
class qi {
static get workerPort() {
return o(this, Oc);
}
static set workerPort(t) {
if (!(typeof Worker < "u" && t instanceof Worker) && t !== null)
throw new Error("Invalid `workerPort` type.");
p(this, Oc, t);
}
static get workerSrc() {
return o(this, Lc);
}
static set workerSrc(t) {
if (typeof t != "string")
throw new Error("Invalid `workerSrc` type.");
p(this, Lc, t);
}
}
Oc = new WeakMap(), Lc = new WeakMap(), b(qi, Oc, null), b(qi, Lc, "");
var Tr, Dc;
class fx {
constructor({
parsedData: t,
rawData: e
}) {
b(this, Tr);
b(this, Dc);
p(this, Tr, t), p(this, Dc, e);
}
getRaw() {
return o(this, Dc);
}
get(t) {
return o(this, Tr).get(t) ?? null;
}
getAll() {
return Bp(o(this, Tr));
}
has(t) {
return o(this, Tr).has(t);
}
}
Tr = new WeakMap(), Dc = new WeakMap();
const Ta = Symbol("INTERNAL");
var Fc, $c, jc, Qa;
class px {
constructor(t, {
name: e,
intent: s,
usage: i,
rbGroups: r
}) {
b(this, Fc, !1);
b(this, $c, !1);
b(this, jc, !1);
b(this, Qa, !0);
p(this, Fc, !!(t & ss.DISPLAY)), p(this, $c, !!(t & ss.PRINT)), this.name = e, this.intent = s, this.usage = i, this.rbGroups = r;
}
get visible() {
if (o(this, jc))
return o(this, Qa);
if (!o(this, Qa))
return !1;
const {
print: t,
view: e
} = this.usage;
return o(this, Fc) ? (e == null ? void 0 : e.viewState) !== "OFF" : o(this, $c) ? (t == null ? void 0 : t.printState) !== "OFF" : !0;
}
_setVisible(t, e, s = !1) {
t !== Ta && Et("Internal method `_setVisible` called."), p(this, jc, s), p(this, Qa, e);
}
}
Fc = new WeakMap(), $c = new WeakMap(), jc = new WeakMap(), Qa = new WeakMap();
var mn, vt, to, eo, Bc, Bf;
class gx {
constructor(t, e = ss.DISPLAY) {
b(this, Bc);
b(this, mn, null);
b(this, vt, /* @__PURE__ */ new Map());
b(this, to, null);
b(this, eo, null);
if (this.renderingIntent = e, this.name = null, this.creator = null, t !== null) {
this.name = t.name, this.creator = t.creator, p(this, eo, t.order);
for (const s of t.groups)
o(this, vt).set(s.id, new px(e, s));
if (t.baseState === "OFF")
for (const s of o(this, vt).values())
s._setVisible(Ta, !1);
for (const s of t.on)
o(this, vt).get(s)._setVisible(Ta, !0);
for (const s of t.off)
o(this, vt).get(s)._setVisible(Ta, !1);
p(this, to, this.getHash());
}
}
isVisible(t) {
if (o(this, vt).size === 0)
return !0;
if (!t)
return vd("Optional content group not defined."), !0;
if (t.type === "OCG")
return o(this, vt).has(t.id) ? o(this, vt).get(t.id).visible : (st(`Optional content group not found: ${t.id}`), !0);
if (t.type === "OCMD") {
if (t.expression)
return v(this, Bc, Bf).call(this, t.expression);
if (!t.policy || t.policy === "AnyOn") {
for (const e of t.ids) {
if (!o(this, vt).has(e))
return st(`Optional content group not found: ${e}`), !0;
if (o(this, vt).get(e).visible)
return !0;
}
return !1;
} else if (t.policy === "AllOn") {
for (const e of t.ids) {
if (!o(this, vt).has(e))
return st(`Optional content group not found: ${e}`), !0;
if (!o(this, vt).get(e).visible)
return !1;
}
return !0;
} else if (t.policy === "AnyOff") {
for (const e of t.ids) {
if (!o(this, vt).has(e))
return st(`Optional content group not found: ${e}`), !0;
if (!o(this, vt).get(e).visible)
return !0;
}
return !1;
} else if (t.policy === "AllOff") {
for (const e of t.ids) {
if (!o(this, vt).has(e))
return st(`Optional content group not found: ${e}`), !0;
if (o(this, vt).get(e).visible)
return !1;
}
return !0;
}
return st(`Unknown optional content policy ${t.policy}.`), !0;
}
return st(`Unknown group type ${t.type}.`), !0;
}
setVisibility(t, e = !0, s = !0) {
var r;
const i = o(this, vt).get(t);
if (!i) {
st(`Optional content group not found: ${t}`);
return;
}
if (s && e && i.rbGroups.length)
for (const a of i.rbGroups)
for (const l of a)
l !== t && ((r = o(this, vt).get(l)) == null || r._setVisible(Ta, !1, !0));
i._setVisible(Ta, !!e, !0), p(this, mn, null);
}
setOCGState({
state: t,
preserveRB: e
}) {
let s;
for (const i of t) {
switch (i) {
case "ON":
case "OFF":
case "Toggle":
s = i;
continue;
}
const r = o(this, vt).get(i);
if (r)
switch (s) {
case "ON":
this.setVisibility(i, !0, e);
break;
case "OFF":
this.setVisibility(i, !1, e);
break;
case "Toggle":
this.setVisibility(i, !r.visible, e);
break;
}
}
p(this, mn, null);
}
get hasInitialVisibility() {
return o(this, to) === null || this.getHash() === o(this, to);
}
getOrder() {
return o(this, vt).size ? o(this, eo) ? o(this, eo).slice() : [...o(this, vt).keys()] : null;
}
getGroups() {
return o(this, vt).size > 0 ? Bp(o(this, vt)) : null;
}
getGroup(t) {
return o(this, vt).get(t) || null;
}
getHash() {
if (o(this, mn) !== null)
return o(this, mn);
const t = new gb();
for (const [e, s] of o(this, vt))
t.update(`${e}:${s.visible}`);
return p(this, mn, t.hexdigest());
}
}
mn = new WeakMap(), vt = new WeakMap(), to = new WeakMap(), eo = new WeakMap(), Bc = new WeakSet(), Bf = function(t) {
const e = t.length;
if (e < 2)
return !0;
const s = t[0];
for (let i = 1; i < e; i++) {
const r = t[i];
let a;
if (Array.isArray(r))
a = v(this, Bc, Bf).call(this, r);
else if (o(this, vt).has(r))
a = o(this, vt).get(r).visible;
else
return st(`Optional content group not found: ${r}`), !0;
switch (s) {
case "And":
if (!a)
return !1;
break;
case "Or":
if (a)
return !0;
break;
case "Not":
return !a;
default:
return !0;
}
}
return s === "And";
};
class mx {
constructor(t, {
disableRange: e = !1,
disableStream: s = !1
}) {
qt(t, 'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.');
const {
length: i,
initialData: r,
progressiveDone: a,
contentDispositionFilename: l
} = t;
if (this._queuedChunks = [], this._progressiveDone = a, this._contentDispositionFilename = l, (r == null ? void 0 : r.length) > 0) {
const c = r instanceof Uint8Array && r.byteLength === r.buffer.byteLength ? r.buffer : new Uint8Array(r).buffer;
this._queuedChunks.push(c);
}
this._pdfDataRangeTransport = t, this._isStreamingSupported = !s, this._isRangeSupported = !e, this._contentLength = i, this._fullRequestReader = null, this._rangeReaders = [], t.addRangeListener((c, h) => {
this._onReceiveData({
begin: c,
chunk: h
});
}), t.addProgressListener((c, h) => {
this._onProgress({
loaded: c,
total: h
});
}), t.addProgressiveReadListener((c) => {
this._onReceiveData({
chunk: c
});
}), t.addProgressiveDoneListener(() => {
this._onProgressiveDone();
}), t.transportReady();
}
_onReceiveData({
begin: t,
chunk: e
}) {
const s = e instanceof Uint8Array && e.byteLength === e.buffer.byteLength ? e.buffer : new Uint8Array(e).buffer;
if (t === void 0)
this._fullRequestReader ? this._fullRequestReader._enqueue(s) : this._queuedChunks.push(s);
else {
const i = this._rangeReaders.some(function(r) {
return r._begin !== t ? !1 : (r._enqueue(s), !0);
});
qt(i, "_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.");
}
}
get _progressiveDataLength() {
var t;
return ((t = this._fullRequestReader) == null ? void 0 : t._loaded) ?? 0;
}
_onProgress(t) {
var e, s, i, r;
t.total === void 0 ? (s = (e = this._rangeReaders[0]) == null ? void 0 : e.onProgress) == null || s.call(e, {
loaded: t.loaded
}) : (r = (i = this._fullRequestReader) == null ? void 0 : i.onProgress) == null || r.call(i, {
loaded: t.loaded,
total: t.total
});
}
_onProgressiveDone() {
var t;
(t = this._fullRequestReader) == null || t.progressiveDone(), this._progressiveDone = !0;
}
_removeRangeReader(t) {
const e = this._rangeReaders.indexOf(t);
e >= 0 && this._rangeReaders.splice(e, 1);
}
getFullReader() {
qt(!this._fullRequestReader, "PDFDataTransportStream.getFullReader can only be called once.");
const t = this._queuedChunks;
return this._queuedChunks = null, new yx(this, t, this._progressiveDone, this._contentDispositionFilename);
}
getRangeReader(t, e) {
if (e <= this._progressiveDataLength)
return null;
const s = new bx(this, t, e);
return this._pdfDataRangeTransport.requestDataRange(t, e), this._rangeReaders.push(s), s;
}
cancelAllRequests(t) {
var e;
(e = this._fullRequestReader) == null || e.cancel(t);
for (const s of this._rangeReaders.slice(0))
s.cancel(t);
this._pdfDataRangeTransport.abort();
}
}
class yx {
constructor(t, e, s = !1, i = null) {
this._stream = t, this._done = s || !1, this._filename = zp(i) ? i : null, this._queuedChunks = e || [], this._loaded = 0;
for (const r of this._queuedChunks)
this._loaded += r.byteLength;
this._requests = [], this._headersReady = Promise.resolve(), t._fullRequestReader = this, this.onProgress = null;
}
_enqueue(t) {
this._done || (this._requests.length > 0 ? this._requests.shift().resolve({
value: t,
done: !1
}) : this._queuedChunks.push(t), this._loaded += t.byteLength);
}
get headersReady() {
return this._headersReady;
}
get filename() {
return this._filename;
}
get isRangeSupported() {
return this._stream._isRangeSupported;
}
get isStreamingSupported() {
return this._stream._isStreamingSupported;
}
get contentLength() {
return this._stream._contentLength;
}
async read() {
if (this._queuedChunks.length > 0)
return {
value: this._queuedChunks.shift(),
done: !1
};
if (this._done)
return {
value: void 0,
done: !0
};
const t = Promise.withResolvers();
return this._requests.push(t), t.promise;
}
cancel(t) {
this._done = !0;
for (const e of this._requests)
e.resolve({
value: void 0,
done: !0
});
this._requests.length = 0;
}
progressiveDone() {
this._done || (this._done = !0);
}
}
class bx {
constructor(t, e, s) {
this._stream = t, this._begin = e, this._end = s, this._queuedChunk = null, this._requests = [], this._done = !1, this.onProgress = null;
}
_enqueue(t) {
if (!this._done) {
if (this._requests.length === 0)
this._queuedChunk = t;
else {
this._requests.shift().resolve({
value: t,
done: !1
});
for (const s of this._requests)
s.resolve({
value: void 0,
done: !0
});
this._requests.length = 0;
}
this._done = !0, this._stream._removeRangeReader(this);
}
}
get isStreamingSupported() {
return !1;
}
async read() {
if (this._queuedChunk) {
const e = this._queuedChunk;
return this._queuedChunk = null, {
value: e,
done: !1
};
}
if (this._done)
return {
value: void 0,
done: !0
};
const t = Promise.withResolvers();
return this._requests.push(t), t.promise;
}
cancel(t) {
this._done = !0;
for (const e of this._requests)
e.resolve({
value: void 0,
done: !0
});
this._requests.length = 0, this._stream._removeRangeReader(this);
}
}
function vx(n) {
let t = !0, e = s("filename\\*", "i").exec(n);
if (e) {
e = e[1];
let u = l(e);
return u = unescape(u), u = c(u), u = h(u), r(u);
}
if (e = a(n), e) {
const u = h(e);
return r(u);
}
if (e = s("filename", "i").exec(n), e) {
e = e[1];
let u = l(e);
return u = h(u), r(u);
}
function s(u, d) {
return new RegExp("(?:^|;)\\s*" + u + '\\s*=\\s*([^";\\s][^;\\s]*|"(?:[^"\\\\]|\\\\"?)+"?)', d);
}
function i(u, d) {
if (u) {
if (!/^[\x00-\xFF]+$/.test(d))
return d;
try {
const f = new TextDecoder(u, {
fatal: !0
}), g = _d(d);
d = f.decode(g), t = !1;
} catch {
}
}
return d;
}
function r(u) {
return t && /[\x80-\xff]/.test(u) && (u = i("utf-8", u), t && (u = i("iso-8859-1", u))), u;
}
function a(u) {
const d = [];
let f;
const g = s("filename\\*((?!0\\d)\\d+)(\\*?)", "ig");
for (; (f = g.exec(u)) !== null; ) {
let [, y, _, A] = f;
if (y = parseInt(y, 10), y in d) {
if (y === 0)
break;
continue;
}
d[y] = [_, A];
}
const m = [];
for (let y = 0; y < d.length && y in d; ++y) {
let [_, A] = d[y];
A = l(A), _ && (A = unescape(A), y === 0 && (A = c(A))), m.push(A);
}
return m.join("");
}
function l(u) {
if (u.startsWith('"')) {
const d = u.slice(1).split('\\"');
for (let f = 0; f < d.length; ++f) {
const g = d[f].indexOf('"');
g !== -1 && (d[f] = d[f].slice(0, g), d.length = f + 1), d[f] = d[f].replaceAll(/\\(.)/g, "$1");
}
u = d.join('"');
}
return u;
}
function c(u) {
const d = u.indexOf("'");
if (d === -1)
return u;
const f = u.slice(0, d), m = u.slice(d + 1).replace(/^[^']*'/, "");
return i(f, m);
}
function h(u) {
return !u.startsWith("=?") || /[\x00-\x19\x80-\xff]/.test(u) ? u : u.replaceAll(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g, function(d, f, g, m) {
if (g === "q" || g === "Q")
return m = m.replaceAll("_", " "), m = m.replaceAll(/=([0-9a-fA-F]{2})/g, function(y, _) {
return String.fromCharCode(parseInt(_, 16));
}), i(f, m);
try {
m = atob(m);
} catch {
}
return i(f, m);
});
}
return "";
}
function Ib(n, t) {
const e = new Headers();
if (!n || !t || typeof t != "object")
return e;
for (const s in t) {
const i = t[s];
i !== void 0 && e.append(s, i);
}
return e;
}
function Sd(n) {
try {
return new URL(n).origin;
} catch {
}
return null;
}
function Rb({
responseHeaders: n,
isHttp: t,
rangeChunkSize: e,
disableRange: s
}) {
const i = {
allowRangeRequests: !1,
suggestedLength: void 0
}, r = parseInt(n.get("Content-Length"), 10);
return !Number.isInteger(r) || (i.suggestedLength = r, r <= 2 * e) || s || !t || n.get("Accept-Ranges") !== "bytes" || (n.get("Content-Encoding") || "identity") !== "identity" || (i.allowRangeRequests = !0), i;
}
function Pb(n) {
const t = n.get("Content-Disposition");
if (t) {
let e = vx(t);
if (e.includes("%"))
try {
e = decodeURIComponent(e);
} catch {
}
if (zp(e))
return e;
}
return null;
}
function Ed(n, t) {
return n === 404 || n === 0 && t.startsWith("file:") ? new ic('Missing PDF "' + t + '".') : new $u(`Unexpected server response (${n}) while retrieving PDF "${t}".`, n);
}
function Mb(n) {
return n === 200 || n === 206;
}
function Nb(n, t, e) {
return {
method: "GET",
headers: n,
signal: e.signal,
mode: "cors",
credentials: t ? "include" : "same-origin",
redirect: "follow"
};
}
function Ob(n) {
return n instanceof Uint8Array ? n.buffer : n instanceof ArrayBuffer ? n : (st(`getArrayBuffer - unexpected data format: ${n}`), new Uint8Array(n).buffer);
}
class Yg {
constructor(t) {
G(this, "_responseOrigin", null);
this.source = t, this.isHttp = /^https?:/i.test(t.url), this.headers = Ib(this.isHttp, t.httpHeaders), this._fullRequestReader = null, this._rangeRequestReaders = [];
}
get _progressiveDataLength() {
var t;
return ((t = this._fullRequestReader) == null ? void 0 : t._loaded) ?? 0;
}
getFullReader() {
return qt(!this._fullRequestReader, "PDFFetchStream.getFullReader can only be called once."), this._fullRequestReader = new _x(this), this._fullRequestReader;
}
getRangeReader(t, e) {
if (e <= this._progressiveDataLength)
return null;
const s = new Ax(this, t, e);
return this._rangeRequestReaders.push(s), s;
}
cancelAllRequests(t) {
var e;
(e = this._fullRequestReader) == null || e.cancel(t);
for (const s of this._rangeRequestReaders.slice(0))
s.cancel(t);
}
}
class _x {
constructor(t) {
this._stream = t, this._reader = null, this._loaded = 0, this._filename = null;
const e = t.source;
this._withCredentials = e.withCredentials || !1, this._contentLength = e.length, this._headersCapability = Promise.withResolvers(), this._disableRange = e.disableRange || !1, this._rangeChunkSize = e.rangeChunkSize, !this._rangeChunkSize && !this._disableRange && (this._disableRange = !0), this._abortController = new AbortController(), this._isStreamingSupported = !e.disableStream, this._isRangeSupported = !e.disableRange;
const s = new Headers(t.headers), i = e.url;
fetch(i, Nb(s, this._withCredentials, this._abortController)).then((r) => {
if (t._responseOrigin = Sd(r.url), !Mb(r.status))
throw Ed(r.status, i);
this._reader = r.body.getReader(), this._headersCapability.resolve();
const a = r.headers, {
allowRangeRequests: l,
suggestedLength: c
} = Rb({
responseHeaders: a,
isHttp: t.isHttp,
rangeChunkSize: this._rangeChunkSize,
disableRange: this._disableRange
});
this._isRangeSupported = l, this._contentLength = c || this._contentLength, this._filename = Pb(a), !this._isStreamingSupported && this._isRangeSupported && this.cancel(new Bn("Streaming is disabled."));
}).catch(this._headersCapability.reject), this.onProgress = null;
}
get headersReady() {
return this._headersCapability.promise;
}
get filename() {
return this._filename;
}
get contentLength() {
return this._contentLength;
}
get isRangeSupported() {
return this._isRangeSupported;
}
get isStreamingSupported() {
return this._isStreamingSupported;
}
async read() {
var s;
await this._headersCapability.promise;
const {
value: t,
done: e
} = await this._reader.read();
return e ? {
value: t,
done: e
} : (this._loaded += t.byteLength, (s = this.onProgress) == null || s.call(this, {
loaded: this._loaded,
total: this._contentLength
}), {
value: Ob(t),
done: !1
});
}
cancel(t) {
var e;
(e = this._reader) == null || e.cancel(t), this._abortController.abort();
}
}
class Ax {
constructor(t, e, s) {
this._stream = t, this._reader = null, this._loaded = 0;
const i = t.source;
this._withCredentials = i.withCredentials || !1, this._readCapability = Promise.withResolvers(), this._isStreamingSupported = !i.disableStream, this._abortController = new AbortController();
const r = new Headers(t.headers);
r.append("Range", `bytes=${e}-${s - 1}`);
const a = i.url;
fetch(a, Nb(r, this._withCredentials, this._abortController)).then((l) => {
const c = Sd(l.url);
if (c !== t._responseOrigin)
throw new Error(`Expected range response-origin "${c}" to match "${t._responseOrigin}".`);
if (!Mb(l.status))
throw Ed(l.status, a);
this._readCapability.resolve(), this._reader = l.body.getReader();
}).catch(this._readCapability.reject), this.onProgress = null;
}
get isStreamingSupported() {
return this._isStreamingSupported;
}
async read() {
var s;
await this._readCapability.promise;
const {
value: t,
done: e
} = await this._reader.read();
return e ? {
value: t,
done: e
} : (this._loaded += t.byteLength, (s = this.onProgress) == null || s.call(this, {
loaded: this._loaded
}), {
value: Ob(t),
done: !1
});
}
cancel(t) {
var e;
(e = this._reader) == null || e.cancel(t), this._abortController.abort();
}
}
const Xd = 200, Zd = 206;
function wx(n) {
const t = n.response;
return typeof t != "string" ? t : _d(t).buffer;
}
class Sx {
constructor({
url: t,
httpHeaders: e,
withCredentials: s
}) {
G(this, "_responseOrigin", null);
this.url = t, this.isHttp = /^https?:/i.test(t), this.headers = Ib(this.isHttp, e), this.withCredentials = s || !1, this.currXhrId = 0, this.pendingRequests = /* @__PURE__ */ Object.create(null);
}
request(t) {
const e = new XMLHttpRequest(), s = this.currXhrId++, i = this.pendingRequests[s] = {
xhr: e
};
e.open("GET", this.url), e.withCredentials = this.withCredentials;
for (const [r, a] of this.headers)
e.setRequestHeader(r, a);
return this.isHttp && "begin" in t && "end" in t ? (e.setRequestHeader("Range", `bytes=${t.begin}-${t.end - 1}`), i.expectedStatus = Zd) : i.expectedStatus = Xd, e.responseType = "arraybuffer", qt(t.onError, "Expected `onError` callback to be provided."), e.onerror = () => {
t.onError(e.status);
}, e.onreadystatechange = this.onStateChange.bind(this, s), e.onprogress = this.onProgress.bind(this, s), i.onHeadersReceived = t.onHeadersReceived, i.onDone = t.onDone, i.onError = t.onError, i.onProgress = t.onProgress, e.send(null), s;
}
onProgress(t, e) {
var i;
const s = this.pendingRequests[t];
s && ((i = s.onProgress) == null || i.call(s, e));
}
onStateChange(t, e) {
const s = this.pendingRequests[t];
if (!s)
return;
const i = s.xhr;
if (i.readyState >= 2 && s.onHeadersReceived && (s.onHeadersReceived(), delete s.onHeadersReceived), i.readyState !== 4 || !(t in this.pendingRequests))
return;
if (delete this.pendingRequests[t], i.status === 0 && this.isHttp) {
s.onError(i.status);
return;
}
const r = i.status || Xd;
if (!(r === Xd && s.expectedStatus === Zd) && r !== s.expectedStatus) {
s.onError(i.status);
return;
}
const l = wx(i);
if (r === Zd) {
const c = i.getResponseHeader("Content-Range"), h = /bytes (\d+)-(\d+)\/(\d+)/.exec(c);
h ? s.onDone({
begin: parseInt(h[1], 10),
chunk: l
}) : (st('Missing or invalid "Content-Range" header.'), s.onError(0));
} else l ? s.onDone({
begin: 0,
chunk: l
}) : s.onError(i.status);
}
getRequestXhr(t) {
return this.pendingRequests[t].xhr;
}
isPendingRequest(t) {
return t in this.pendingRequests;
}
abortRequest(t) {
const e = this.pendingRequests[t].xhr;
delete this.pendingRequests[t], e.abort();
}
}
class Ex {
constructor(t) {
this._source = t, this._manager = new Sx(t), this._rangeChunkSize = t.rangeChunkSize, this._fullRequestReader = null, this._rangeRequestReaders = [];
}
_onRangeRequestReaderClosed(t) {
const e = this._rangeRequestReaders.indexOf(t);
e >= 0 && this._rangeRequestReaders.splice(e, 1);
}
getFullReader() {
return qt(!this._fullRequestReader, "PDFNetworkStream.getFullReader can only be called once."), this._fullRequestReader = new xx(this._manager, this._source), this._fullRequestReader;
}
getRangeReader(t, e) {
const s = new Tx(this._manager, t, e);
return s.onClosed = this._onRangeRequestReaderClosed.bind(this), this._rangeRequestReaders.push(s), s;
}
cancelAllRequests(t) {
var e;
(e = this._fullRequestReader) == null || e.cancel(t);
for (const s of this._rangeRequestReaders.slice(0))
s.cancel(t);
}
}
class xx {
constructor(t, e) {
this._manager = t, this._url = e.url, this._fullRequestId = t.request({
onHeadersReceived: this._onHeadersReceived.bind(this),
onDone: this._onDone.bind(this),
onError: this._onError.bind(this),
onProgress: this._onProgress.bind(this)
}), this._headersCapability = Promise.withResolvers(), this._disableRange = e.disableRange || !1, this._contentLength = e.length, this._rangeChunkSize = e.rangeChunkSize, !this._rangeChunkSize && !this._disableRange && (this._disableRange = !0), this._isStreamingSupported = !1, this._isRangeSupported = !1, this._cachedChunks = [], this._requests = [], this._done = !1, this._storedError = void 0, this._filename = null, this.onProgress = null;
}
_onHeadersReceived() {
const t = this._fullRequestId, e = this._manager.getRequestXhr(t);
this._manager._responseOrigin = Sd(e.responseURL);
const s = e.getAllResponseHeaders(), i = new Headers(s ? s.trimStart().replace(/[^\S ]+$/, "").split(/[\r\n]+/).map((l) => {
const [c, ...h] = l.split(": ");
return [c, h.join(": ")];
}) : []), {
allowRangeRequests: r,
suggestedLength: a
} = Rb({
responseHeaders: i,
isHttp: this._manager.isHttp,
rangeChunkSize: this._rangeChunkSize,
disableRange: this._disableRange
});
r && (this._isRangeSupported = !0), this._contentLength = a || this._contentLength, this._filename = Pb(i), this._isRangeSupported && this._manager.abortRequest(t), this._headersCapability.resolve();
}
_onDone(t) {
if (t && (this._requests.length > 0 ? this._requests.shift().resolve({
value: t.chunk,
done: !1
}) : this._cachedChunks.push(t.chunk)), this._done = !0, !(this._cachedChunks.length > 0)) {
for (const e of this._requests)
e.resolve({
value: void 0,
done: !0
});
this._requests.length = 0;
}
}
_onError(t) {
this._storedError = Ed(t, this._url), this._headersCapability.reject(this._storedError);
for (const e of this._requests)
e.reject(this._storedError);
this._requests.length = 0, this._cachedChunks.length = 0;
}
_onProgress(t) {
var e;
(e = this.onProgress) == null || e.call(this, {
loaded: t.loaded,
total: t.lengthComputable ? t.total : this._contentLength
});
}
get filename() {
return this._filename;
}
get isRangeSupported() {
return this._isRangeSupported;
}
get isStreamingSupported() {
return this._isStreamingSupported;
}
get contentLength() {
return this._contentLength;
}
get headersReady() {
return this._headersCapability.promise;
}
async read() {
if (await this._headersCapability.promise, this._storedError)
throw this._storedError;
if (this._cachedChunks.length > 0)
return {
value: this._cachedChunks.shift(),
done: !1
};
if (this._done)
return {
value: void 0,
done: !0
};
const t = Promise.withResolvers();
return this._requests.push(t), t.promise;
}
cancel(t) {
this._done = !0, this._headersCapability.reject(t);
for (const e of this._requests)
e.resolve({
value: void 0,
done: !0
});
this._requests.length = 0, this._manager.isPendingRequest(this._fullRequestId) && this._manager.abortRequest(this._fullRequestId), this._fullRequestReader = null;
}
}
class Tx {
constructor(t, e, s) {
this._manager = t, this._url = t.url, this._requestId = t.request({
begin: e,
end: s,
onHeadersReceived: this._onHeadersReceived.bind(this),
onDone: this._onDone.bind(this),
onError: this._onError.bind(this),
onProgress: this._onProgress.bind(this)
}), this._requests = [], this._queuedChunk = null, this._done = !1, this._storedError = void 0, this.onProgress = null, this.onClosed = null;
}
_onHeadersReceived() {
var e;
const t = Sd((e = this._manager.getRequestXhr(this._requestId)) == null ? void 0 : e.responseURL);
t !== this._manager._responseOrigin && (this._storedError = new Error(`Expected range response-origin "${t}" to match "${this._manager._responseOrigin}".`), this._onError(0));
}
_close() {
var t;
(t = this.onClosed) == null || t.call(this, this);
}
_onDone(t) {
const e = t.chunk;
this._requests.length > 0 ? this._requests.shift().resolve({
value: e,
done: !1
}) : this._queuedChunk = e, this._done = !0;
for (const s of this._requests)
s.resolve({
value: void 0,
done: !0
});
this._requests.length = 0, this._close();
}
_onError(t) {
this._storedError ?? (this._storedError = Ed(t, this._url));
for (const e of this._requests)
e.reject(this._storedError);
this._requests.length = 0, this._queuedChunk = null;
}
_onProgress(t) {
var e;
this.isStreamingSupported || (e = this.onProgress) == null || e.call(this, {
loaded: t.loaded
});
}
get isStreamingSupported() {
return !1;
}
async read() {
if (this._storedError)
throw this._storedError;
if (this._queuedChunk !== null) {
const e = this._queuedChunk;
return this._queuedChunk = null, {
value: e,
done: !1
};
}
if (this._done)
return {
value: void 0,
done: !0
};
const t = Promise.withResolvers();
return this._requests.push(t), t.promise;
}
cancel(t) {
this._done = !0;
for (const e of this._requests)
e.resolve({
value: void 0,
done: !0
});
this._requests.length = 0, this._manager.isPendingRequest(this._requestId) && this._manager.abortRequest(this._requestId), this._close();
}
}
const Cx = /^[a-z][a-z0-9\-+.]+:/i;
function kx(n) {
if (Cx.test(n))
return new URL(n);
const t = process.getBuiltinModule("url");
return new URL(t.pathToFileURL(n));
}
class Ix {
constructor(t) {
this.source = t, this.url = kx(t.url), qt(this.url.protocol === "file:", "PDFNodeStream only supports file:// URLs."), this._fullRequestReader = null, this._rangeRequestReaders = [];
}
get _progressiveDataLength() {
var t;
return ((t = this._fullRequestReader) == null ? void 0 : t._loaded) ?? 0;
}
getFullReader() {
return qt(!this._fullRequestReader, "PDFNodeStream.getFullReader can only be called once."), this._fullRequestReader = new Rx(this), this._fullRequestReader;
}
getRangeReader(t, e) {
if (e <= this._progressiveDataLength)
return null;
const s = new Px(this, t, e);
return this._rangeRequestReaders.push(s), s;
}
cancelAllRequests(t) {
var e;
(e = this._fullRequestReader) == null || e.cancel(t);
for (const s of this._rangeRequestReaders.slice(0))
s.cancel(t);
}
}
class Rx {
constructor(t) {
this._url = t.url, this._done = !1, this._storedError = null, this.onProgress = null;
const e = t.source;
this._contentLength = e.length, this._loaded = 0, this._filename = null, this._disableRange = e.disableRange || !1, this._rangeChunkSize = e.rangeChunkSize, !this._rangeChunkSize && !this._disableRange && (this._disableRange = !0), this._isStreamingSupported = !e.disableStream, this._isRangeSupported = !e.disableRange, this._readableStream = null, this._readCapability = Promise.withResolvers(), this._headersCapability = Promise.withResolvers();
const s = process.getBuiltinModule("fs");
s.promises.lstat(this._url).then((i) => {
this._contentLength = i.size, this._setReadableStream(s.createReadStream(this._url)), this._headersCapability.resolve();
}, (i) => {
i.code === "ENOENT" && (i = new ic(`Missing PDF "${this._url}".`)), this._storedError = i, this._headersCapability.reject(i);
});
}
get headersReady() {
return this._headersCapability.promise;
}
get filename() {
return this._filename;
}
get contentLength() {
return this._contentLength;
}
get isRangeSupported() {
return this._isRangeSupported;
}
get isStreamingSupported() {
return this._isStreamingSupported;
}
async read() {
var s;
if (await this._readCapability.promise, this._done)
return {
value: void 0,
done: !0
};
if (this._storedError)
throw this._storedError;
const t = this._readableStream.read();
return t === null ? (this._readCapability = Promise.withResolvers(), this.read()) : (this._loaded += t.length, (s = this.onProgress) == null || s.call(this, {
loaded: this._loaded,
total: this._contentLength
}), {
value: new Uint8Array(t).buffer,
done: !1
});
}
cancel(t) {
if (!this._readableStream) {
this._error(t);
return;
}
this._readableStream.destroy(t);
}
_error(t) {
this._storedError = t, this._readCapability.resolve();
}
_setReadableStream(t) {
this._readableStream = t, t.on("readable", () => {
this._readCapability.resolve();
}), t.on("end", () => {
t.destroy(), this._done = !0, this._readCapability.resolve();
}), t.on("error", (e) => {
this._error(e);
}), !this._isStreamingSupported && this._isRangeSupported && this._error(new Bn("streaming is disabled")), this._storedError && this._readableStream.destroy(this._storedError);
}
}
class Px {
constructor(t, e, s) {
this._url = t.url, this._done = !1, this._storedError = null, this.onProgress = null, this._loaded = 0, this._readableStream = null, this._readCapability = Promise.withResolvers();
const i = t.source;
this._isStreamingSupported = !i.disableStream;
const r = process.getBuiltinModule("fs");
this._setReadableStream(r.createReadStream(this._url, {
start: e,
end: s - 1
}));
}
get isStreamingSupported() {
return this._isStreamingSupported;
}
async read() {
var s;
if (await this._readCapability.promise, this._done)
return {
value: void 0,
done: !0
};
if (this._storedError)
throw this._storedError;
const t = this._readableStream.read();
return t === null ? (this._readCapability = Promise.withResolvers(), this.read()) : (this._loaded += t.length, (s = this.onProgress) == null || s.call(this, {
loaded: this._loaded
}), {
value: new Uint8Array(t).buffer,
done: !1
});
}
cancel(t) {
if (!this._readableStream) {
this._error(t);
return;
}
this._readableStream.destroy(t);
}
_error(t) {
this._storedError = t, this._readCapability.resolve();
}
_setReadableStream(t) {
this._readableStream = t, t.on("readable", () => {
this._readCapability.resolve();
}), t.on("end", () => {
t.destroy(), this._done = !0, this._readCapability.resolve();
}), t.on("error", (e) => {
this._error(e);
}), this._storedError && this._readableStream.destroy(this._storedError);
}
}
const Mx = 1e5, De = 30, Nx = 0.8;
var em, yn, Be, Hc, Uc, Cr, Ri, zc, Vc, kr, so, io, bn, no, Gc, ro, Ir, qc, Wc, Rr, Pr, Xc, vn, ao, Ji, Lb, Db, Hf, as, su, Uf, Fb, $b;
const Zt = class Zt {
constructor({
textContentSource: t,
container: e,
viewport: s
}) {
b(this, Ji);
b(this, yn, Promise.withResolvers());
b(this, Be, null);
b(this, Hc, !1);
b(this, Uc, !!((em = globalThis.FontInspector) != null && em.enabled));
b(this, Cr, null);
b(this, Ri, null);
b(this, zc, 0);
b(this, Vc, 0);
b(this, kr, null);
b(this, so, null);
b(this, io, 0);
b(this, bn, 0);
b(this, no, /* @__PURE__ */ Object.create(null));
b(this, Gc, []);
b(this, ro, null);
b(this, Ir, []);
b(this, qc, /* @__PURE__ */ new WeakMap());
b(this, Wc, null);
var c;
if (t instanceof ReadableStream)
p(this, ro, t);
else if (typeof t == "object")
p(this, ro, new ReadableStream({
start(h) {
h.enqueue(t), h.close();
}
}));
else
throw new Error('No "textContentSource" parameter specified.');
p(this, Be, p(this, so, e)), p(this, bn, s.scale * (globalThis.devicePixelRatio || 1)), p(this, io, s.rotation), p(this, Ri, {
div: null,
properties: null,
ctx: null
});
const {
pageWidth: i,
pageHeight: r,
pageX: a,
pageY: l
} = s.rawDims;
p(this, Wc, [1, 0, 0, -1, -a, l + r]), p(this, Vc, i), p(this, zc, r), v(c = Zt, as, Fb).call(c), fa(e, s), o(this, yn).promise.finally(() => {
o(Zt, ao).delete(this), p(this, Ri, null), p(this, no, null);
}).catch(() => {
});
}
static get fontFamilyMap() {
const {
isWindows: t,
isFirefox: e
} = Me.platform;
return at(this, "fontFamilyMap", /* @__PURE__ */ new Map([["sans-serif", `${t && e ? "Calibri, " : ""}sans-serif`], ["monospace", `${t && e ? "Lucida Console, " : ""}monospace`]]));
}
render() {
const t = () => {
o(this, kr).read().then(({
value: e,
done: s
}) => {
if (s) {
o(this, yn).resolve();
return;
}
o(this, Cr) ?? p(this, Cr, e.lang), Object.assign(o(this, no), e.styles), v(this, Ji, Lb).call(this, e.items), t();
}, o(this, yn).reject);
};
return p(this, kr, o(this, ro).getReader()), o(Zt, ao).add(this), t(), o(this, yn).promise;
}
update({
viewport: t,
onBefore: e = null
}) {
var r;
const s = t.scale * (globalThis.devicePixelRatio || 1), i = t.rotation;
if (i !== o(this, io) && (e == null || e(), p(this, io, i), fa(o(this, so), {
rotation: i
})), s !== o(this, bn)) {
e == null || e(), p(this, bn, s);
const a = {
div: null,
properties: null,
ctx: v(r = Zt, as, su).call(r, o(this, Cr))
};
for (const l of o(this, Ir))
a.properties = o(this, qc).get(l), a.div = l, v(this, Ji, Hf).call(this, a);
}
}
cancel() {
var e;
const t = new Bn("TextLayer task cancelled.");
(e = o(this, kr)) == null || e.cancel(t).catch(() => {
}), p(this, kr, null), o(this, yn).reject(t);
}
get textDivs() {
return o(this, Ir);
}
get textContentItemsStr() {
return o(this, Gc);
}
static cleanup() {
if (!(o(this, ao).size > 0)) {
o(this, Rr).clear();
for (const {
canvas: t
} of o(this, Pr).values())
t.remove();
o(this, Pr).clear();
}
}
};
yn = new WeakMap(), Be = new WeakMap(), Hc = new WeakMap(), Uc = new WeakMap(), Cr = new WeakMap(), Ri = new WeakMap(), zc = new WeakMap(), Vc = new WeakMap(), kr = new WeakMap(), so = new WeakMap(), io = new WeakMap(), bn = new WeakMap(), no = new WeakMap(), Gc = new WeakMap(), ro = new WeakMap(), Ir = new WeakMap(), qc = new WeakMap(), Wc = new WeakMap(), Rr = new WeakMap(), Pr = new WeakMap(), Xc = new WeakMap(), vn = new WeakMap(), ao = new WeakMap(), Ji = new WeakSet(), Lb = function(t) {
var i, r;
if (o(this, Hc))
return;
(r = o(this, Ri)).ctx ?? (r.ctx = v(i = Zt, as, su).call(i, o(this, Cr)));
const e = o(this, Ir), s = o(this, Gc);
for (const a of t) {
if (e.length > Mx) {
st("Ignoring additional textDivs for performance reasons."), p(this, Hc, !0);
return;
}
if (a.str === void 0) {
if (a.type === "beginMarkedContentProps" || a.type === "beginMarkedContent") {
const l = o(this, Be);
p(this, Be, document.createElement("span")), o(this, Be).classList.add("markedContent"), a.id !== null && o(this, Be).setAttribute("id", `${a.id}`), l.append(o(this, Be));
} else a.type === "endMarkedContent" && p(this, Be, o(this, Be).parentNode);
continue;
}
s.push(a.str), v(this, Ji, Db).call(this, a);
}
}, Db = function(t) {
var y;
const e = document.createElement("span"), s = {
angle: 0,
canvasWidth: 0,
hasText: t.str !== "",
hasEOL: t.hasEOL,
fontSize: 0
};
o(this, Ir).push(e);
const i = U.transform(o(this, Wc), t.transform);
let r = Math.atan2(i[1], i[0]);
const a = o(this, no)[t.fontName];
a.vertical && (r += Math.PI / 2);
let l = o(this, Uc) && a.fontSubstitution || a.fontFamily;
l = Zt.fontFamilyMap.get(l) || l;
const c = Math.hypot(i[2], i[3]), h = c * v(y = Zt, as, $b).call(y, l, o(this, Cr));
let u, d;
r === 0 ? (u = i[4], d = i[5] - h) : (u = i[4] + h * Math.sin(r), d = i[5] - h * Math.cos(r));
const f = "calc(var(--scale-factor)*", g = e.style;
o(this, Be) === o(this, so) ? (g.left = `${(100 * u / o(this, Vc)).toFixed(2)}%`, g.top = `${(100 * d / o(this, zc)).toFixed(2)}%`) : (g.left = `${f}${u.toFixed(2)}px)`, g.top = `${f}${d.toFixed(2)}px)`), g.fontSize = `${f}${(o(Zt, vn) * c).toFixed(2)}px)`, g.fontFamily = l, s.fontSize = c, e.setAttribute("role", "presentation"), e.textContent = t.str, e.dir = t.dir, o(this, Uc) && (e.dataset.fontName = a.fontSubstitutionLoadedName || t.fontName), r !== 0 && (s.angle = r * (180 / Math.PI));
let m = !1;
if (t.str.length > 1)
m = !0;
else if (t.str !== " " && t.transform[0] !== t.transform[3]) {
const _ = Math.abs(t.transform[0]), A = Math.abs(t.transform[3]);
_ !== A && Math.max(_, A) / Math.min(_, A) > 1.5 && (m = !0);
}
if (m && (s.canvasWidth = a.vertical ? t.height : t.width), o(this, qc).set(e, s), o(this, Ri).div = e, o(this, Ri).properties = s, v(this, Ji, Hf).call(this, o(this, Ri)), s.hasText && o(this, Be).append(e), s.hasEOL) {
const _ = document.createElement("br");
_.setAttribute("role", "presentation"), o(this, Be).append(_);
}
}, Hf = function(t) {
var l;
const {
div: e,
properties: s,
ctx: i
} = t, {
style: r
} = e;
let a = "";
if (o(Zt, vn) > 1 && (a = `scale(${1 / o(Zt, vn)})`), s.canvasWidth !== 0 && s.hasText) {
const {
fontFamily: c
} = r, {
canvasWidth: h,
fontSize: u
} = s;
v(l = Zt, as, Uf).call(l, i, u * o(this, bn), c);
const {
width: d
} = i.measureText(e.textContent);
d > 0 && (a = `scaleX(${h * o(this, bn) / d}) ${a}`);
}
s.angle !== 0 && (a = `rotate(${s.angle}deg) ${a}`), a.length > 0 && (r.transform = a);
}, as = new WeakSet(), su = function(t = null) {
let e = o(this, Pr).get(t || (t = ""));
if (!e) {
const s = document.createElement("canvas");
s.className = "hiddenCanvasElement", s.lang = t, document.body.append(s), e = s.getContext("2d", {
alpha: !1,
willReadFrequently: !0
}), o(this, Pr).set(t, e), o(this, Xc).set(e, {
size: 0,
family: ""
});
}
return e;
}, Uf = function(t, e, s) {
const i = o(this, Xc).get(t);
e === i.size && s === i.family || (t.font = `${e}px ${s}`, i.size = e, i.family = s);
}, Fb = function() {
if (o(this, vn) !== null)
return;
const t = document.createElement("div");
t.style.opacity = 0, t.style.lineHeight = 1, t.style.fontSize = "1px", t.style.position = "absolute", t.textContent = "X", document.body.append(t), p(this, vn, t.getBoundingClientRect().height), t.remove();
}, $b = function(t, e) {
const s = o(this, Rr).get(t);
if (s)
return s;
const i = v(this, as, su).call(this, e);
i.canvas.width = i.canvas.height = De, v(this, as, Uf).call(this, i, De, t);
const r = i.measureText("");
let a = r.fontBoundingBoxAscent, l = Math.abs(r.fontBoundingBoxDescent);
if (a) {
const u = a / (a + l);
return o(this, Rr).set(t, u), i.canvas.width = i.canvas.height = 0, u;
}
i.strokeStyle = "red", i.clearRect(0, 0, De, De), i.strokeText("g", 0, 0);
let c = i.getImageData(0, 0, De, De).data;
l = 0;
for (let u = c.length - 1 - 3; u >= 0; u -= 4)
if (c[u] > 0) {
l = Math.ceil(u / 4 / De);
break;
}
i.clearRect(0, 0, De, De), i.strokeText("A", 0, De), c = i.getImageData(0, 0, De, De).data, a = 0;
for (let u = 0, d = c.length; u < d; u += 4)
if (c[u] > 0) {
a = De - Math.floor(u / 4 / De);
break;
}
i.canvas.width = i.canvas.height = 0;
const h = a ? a / (a + l) : Nx;
return o(this, Rr).set(t, h), h;
}, b(Zt, as), b(Zt, Rr, /* @__PURE__ */ new Map()), b(Zt, Pr, /* @__PURE__ */ new Map()), b(Zt, Xc, /* @__PURE__ */ new WeakMap()), b(Zt, vn, null), b(Zt, ao, /* @__PURE__ */ new Set());
let nc = Zt;
class rc {
static textContent(t) {
const e = [], s = {
items: e,
styles: /* @__PURE__ */ Object.create(null)
};
function i(r) {
var c;
if (!r)
return;
let a = null;
const l = r.name;
if (l === "#text")
a = r.value;
else if (rc.shouldBuildText(l))
(c = r == null ? void 0 : r.attributes) != null && c.textContent ? a = r.attributes.textContent : r.value && (a = r.value);
else return;
if (a !== null && e.push({
str: a
}), !!r.children)
for (const h of r.children)
i(h);
}
return i(t), s;
}
static shouldBuildText(t) {
return !(t === "textarea" || t === "input" || t === "option" || t === "select");
}
}
const Ox = 65536, Lx = 100, Dx = 5e3, Fx = Se ? KE : XE, $x = Se ? JE : Sb, jx = Se ? YE : ZE, Bx = Se ? QE : Cb;
function Hx(n = {}) {
typeof n == "string" || n instanceof URL ? n = {
url: n
} : (n instanceof ArrayBuffer || ArrayBuffer.isView(n)) && (n = {
data: n
});
const t = new zf(), {
docId: e
} = t, s = n.url ? Ux(n.url) : null, i = n.data ? zx(n.data) : null, r = n.httpHeaders || null, a = n.withCredentials === !0, l = n.password ?? null, c = n.range instanceof jb ? n.range : null, h = Number.isInteger(n.rangeChunkSize) && n.rangeChunkSize > 0 ? n.rangeChunkSize : Ox;
let u = n.worker instanceof La ? n.worker : null;
const d = n.verbosity, f = typeof n.docBaseUrl == "string" && !wd(n.docBaseUrl) ? n.docBaseUrl : null, g = typeof n.cMapUrl == "string" ? n.cMapUrl : null, m = n.cMapPacked !== !1, y = n.CMapReaderFactory || $x, _ = typeof n.standardFontDataUrl == "string" ? n.standardFontDataUrl : null, A = n.StandardFontDataFactory || Bx, S = n.stopAtErrors !== !0, E = Number.isInteger(n.maxImageSize) && n.maxImageSize > -1 ? n.maxImageSize : -1, x = n.isEvalSupported !== !1, T = typeof n.isOffscreenCanvasSupported == "boolean" ? n.isOffscreenCanvasSupported : !Se, k = typeof n.isImageDecoderSupported == "boolean" ? n.isImageDecoderSupported : !Se && (Me.platform.isFirefox || !globalThis.chrome), C = Number.isInteger(n.canvasMaxAreaInBytes) ? n.canvasMaxAreaInBytes : -1, P = typeof n.disableFontFace == "boolean" ? n.disableFontFace : Se, j = n.fontExtraProperties === !0, Z = n.enableXfa === !0, V = n.ownerDocument || globalThis.document, dt = n.disableRange === !0, gt = n.disableStream === !0, Y = n.disableAutoFetch === !0, xt = n.pdfBug === !0, M = n.CanvasFactory || Fx, z = n.FilterFactory || jx, ot = n.enableHWA === !0, kt = c ? c.length : n.length ?? NaN, yt = typeof n.useSystemFonts == "boolean" ? n.useSystemFonts : !Se && !P, Q = typeof n.useWorkerFetch == "boolean" ? n.useWorkerFetch : y === Sb && A === Cb && g && _ && hl(g, document.baseURI) && hl(_, document.baseURI), Vt = null;
TE(d);
const $t = {
canvasFactory: new M({
ownerDocument: V,
enableHWA: ot
}),
filterFactory: new z({
docId: e,
ownerDocument: V
}),
cMapReaderFactory: Q ? null : new y({
baseUrl: g,
isCompressed: m
}),
standardFontDataFactory: Q ? null : new A({
baseUrl: _
})
};
if (!u) {
const St = {
verbosity: d,
port: qi.workerPort
};
u = St.port ? La.fromPort(St) : new La(St), t._worker = u;
}
const vs = {
docId: e,
apiVersion: "4.10.38",
data: i,
password: l,
disableAutoFetch: Y,
rangeChunkSize: h,
length: kt,
docBaseUrl: f,
enableXfa: Z,
evaluatorOptions: {
maxImageSize: E,
disableFontFace: P,
ignoreErrors: S,
isEvalSupported: x,
isOffscreenCanvasSupported: T,
isImageDecoderSupported: k,
canvasMaxAreaInBytes: C,
fontExtraProperties: j,
useSystemFonts: yt,
cMapUrl: Q ? g : null,
standardFontDataUrl: Q ? _ : null
}
}, Tt = {
disableFontFace: P,
fontExtraProperties: j,
ownerDocument: V,
pdfBug: xt,
styleElement: Vt,
loadingParams: {
disableAutoFetch: Y,
enableXfa: Z
}
};
return u.promise.then(function() {
if (t.destroyed)
throw new Error("Loading aborted");
if (u.destroyed)
throw new Error("Worker was destroyed");
const St = u.messageHandler.sendWithPromise("GetDocRequest", vs, i ? [i.buffer] : null);
let tt;
if (c)
tt = new mx(c, {
disableRange: dt,
disableStream: gt
});
else if (!i) {
if (!s)
throw new Error("getDocument - no `url` parameter provided.");
let Qt;
if (Se)
if (hl(s)) {
if (typeof fetch > "u" || typeof Response > "u" || !("body" in Response.prototype))
throw new Error("getDocument - the Fetch API was disabled in Node.js, see `--no-experimental-fetch`.");
Qt = Yg;
} else
Qt = Ix;
else
Qt = hl(s) ? Yg : Ex;
tt = new Qt({
url: s,
length: kt,
httpHeaders: r,
withCredentials: a,
rangeChunkSize: h,
disableRange: dt,
disableStream: gt
});
}
return St.then((Qt) => {
if (t.destroyed)
throw new Error("Loading aborted");
if (u.destroyed)
throw new Error("Worker was destroyed");
const Vn = new pl(e, Qt, u.port), Gn = new Wx(Vn, t, tt, Tt, $t);
t._transport = Gn, Vn.send("Ready", null);
});
}).catch(t._capability.reject), t;
}
function Ux(n) {
if (n instanceof URL)
return n.href;
try {
return new URL(n, window.location).href;
} catch {
if (Se && typeof n == "string")
return n;
}
throw new Error("Invalid PDF url data: either string or URL-object is expected in the url property.");
}
function zx(n) {
if (Se && typeof Buffer < "u" && n instanceof Buffer)
throw new Error("Please provide binary data as `Uint8Array`, rather than `Buffer`.");
if (n instanceof Uint8Array && n.byteLength === n.buffer.byteLength)
return n;
if (typeof n == "string")
return _d(n);
if (n instanceof ArrayBuffer || ArrayBuffer.isView(n) || typeof n == "object" && !isNaN(n == null ? void 0 : n.length))
return new Uint8Array(n);
throw new Error("Invalid PDF binary data: either TypedArray, string, or array-like object is expected in the data property.");
}
function Kg(n) {
return typeof n == "object" && Number.isInteger(n == null ? void 0 : n.num) && n.num >= 0 && Number.isInteger(n == null ? void 0 : n.gen) && n.gen >= 0;
}
var ed;
const sd = class sd {
constructor() {
this._capability = Promise.withResolvers(), this._transport = null, this._worker = null, this.docId = `d${xe(sd, ed)._++}`, this.destroyed = !1, this.onPassword = null, this.onProgress = null;
}
get promise() {
return this._capability.promise;
}
async destroy() {
var t, e, s, i;
this.destroyed = !0;
try {
(t = this._worker) != null && t.port && (this._worker._pendingDestroy = !0), await ((e = this._transport) == null ? void 0 : e.destroy());
} catch (r) {
throw (s = this._worker) != null && s.port && delete this._worker._pendingDestroy, r;
}
this._transport = null, (i = this._worker) == null || i.destroy(), this._worker = null;
}
};
ed = new WeakMap(), b(sd, ed, 0);
let zf = sd;
class jb {
constructor(t, e, s = !1, i = null) {
this.length = t, this.initialData = e, this.progressiveDone = s, this.contentDispositionFilename = i, this._rangeListeners = [], this._progressListeners = [], this._progressiveReadListeners = [], this._progressiveDoneListeners = [], this._readyCapability = Promise.withResolvers();
}
addRangeListener(t) {
this._rangeListeners.push(t);
}
addProgressListener(t) {
this._progressListeners.push(t);
}
addProgressiveReadListener(t) {
this._progressiveReadListeners.push(t);
}
addProgressiveDoneListener(t) {
this._progressiveDoneListeners.push(t);
}
onDataRange(t, e) {
for (const s of this._rangeListeners)
s(t, e);
}
onDataProgress(t, e) {
this._readyCapability.promise.then(() => {
for (const s of this._progressListeners)
s(t, e);
});
}
onDataProgressiveRead(t) {
this._readyCapability.promise.then(() => {
for (const e of this._progressiveReadListeners)
e(t);
});
}
onDataProgressiveDone() {
this._readyCapability.promise.then(() => {
for (const t of this._progressiveDoneListeners)
t();
});
}
transportReady() {
this._readyCapability.resolve();
}
requestDataRange(t, e) {
Et("Abstract method PDFDataRangeTransport.requestDataRange");
}
abort() {
}
}
class Vx {
constructor(t, e) {
this._pdfInfo = t, this._transport = e;
}
get annotationStorage() {
return this._transport.annotationStorage;
}
get canvasFactory() {
return this._transport.canvasFactory;
}
get filterFactory() {
return this._transport.filterFactory;
}
get numPages() {
return this._pdfInfo.numPages;
}
get fingerprints() {
return this._pdfInfo.fingerprints;
}
get isPureXfa() {
return at(this, "isPureXfa", !!this._transport._htmlForXfa);
}
get allXfaHtml() {
return this._transport._htmlForXfa;
}
getPage(t) {
return this._transport.getPage(t);
}
getPageIndex(t) {
return this._transport.getPageIndex(t);
}
getDestinations() {
return this._transport.getDestinations();
}
getDestination(t) {
return this._transport.getDestination(t);
}
getPageLabels() {
return this._transport.getPageLabels();
}
getPageLayout() {
return this._transport.getPageLayout();
}
getPageMode() {
return this._transport.getPageMode();
}
getViewerPreferences() {
return this._transport.getViewerPreferences();
}
getOpenAction() {
return this._transport.getOpenAction();
}
getAttachments() {
return this._transport.getAttachments();
}
getJSActions() {
return this._transport.getDocJSActions();
}
getOutline() {
return this._transport.getOutline();
}
getOptionalContentConfig({
intent: t = "display"
} = {}) {
const {
renderingIntent: e
} = this._transport.getRenderingIntent(t);
return this._transport.getOptionalContentConfig(e);
}
getPermissions() {
return this._transport.getPermissions();
}
getMetadata() {
return this._transport.getMetadata();
}
getMarkInfo() {
return this._transport.getMarkInfo();
}
getData() {
return this._transport.getData();
}
saveDocument() {
return this._transport.saveDocument();
}
getDownloadInfo() {
return this._transport.downloadInfoCapability.promise;
}
cleanup(t = !1) {
return this._transport.startCleanup(t || this.isPureXfa);
}
destroy() {
return this.loadingTask.destroy();
}
cachedPageNumber(t) {
return this._transport.cachedPageNumber(t);
}
get loadingParams() {
return this._transport.loadingParams;
}
get loadingTask() {
return this._transport.loadingTask;
}
getFieldObjects() {
return this._transport.getFieldObjects();
}
hasJSActions() {
return this._transport.hasJSActions();
}
getCalculationOrderIds() {
return this._transport.getCalculationOrderIds();
}
}
var _n, Pi, ms, Ca, iu;
class Gx {
constructor(t, e, s, i = !1) {
b(this, ms);
b(this, _n, null);
b(this, Pi, !1);
this._pageIndex = t, this._pageInfo = e, this._transport = s, this._stats = i ? new Fg() : null, this._pdfBug = i, this.commonObjs = s.commonObjs, this.objs = new Bb(), this._maybeCleanupAfterRender = !1, this._intentStates = /* @__PURE__ */ new Map(), this.destroyed = !1;
}
get pageNumber() {
return this._pageIndex + 1;
}
get rotate() {
return this._pageInfo.rotate;
}
get ref() {
return this._pageInfo.ref;
}
get userUnit() {
return this._pageInfo.userUnit;
}
get view() {
return this._pageInfo.view;
}
getViewport({
scale: t,
rotation: e = this.rotate,
offsetX: s = 0,
offsetY: i = 0,
dontFlip: r = !1
} = {}) {
return new Nh({
viewBox: this.view,
userUnit: this.userUnit,
scale: t,
rotation: e,
offsetX: s,
offsetY: i,
dontFlip: r
});
}
getAnnotations({
intent: t = "display"
} = {}) {
const {
renderingIntent: e
} = this._transport.getRenderingIntent(t);
return this._transport.getAnnotations(this._pageIndex, e);
}
getJSActions() {
return this._transport.getPageJSActions(this._pageIndex);
}
get filterFactory() {
return this._transport.filterFactory;
}
get isPureXfa() {
return at(this, "isPureXfa", !!this._transport._htmlForXfa);
}
async getXfa() {
var t;
return ((t = this._transport._htmlForXfa) == null ? void 0 : t.children[this._pageIndex]) || null;
}
render({
canvasContext: t,
viewport: e,
intent: s = "display",
annotationMode: i = sn.ENABLE,
transform: r = null,
background: a = null,
optionalContentConfigPromise: l = null,
annotationCanvasMap: c = null,
pageColors: h = null,
printAnnotationStorage: u = null,
isEditing: d = !1
}) {
var x, T;
(x = this._stats) == null || x.time("Overall");
const f = this._transport.getRenderingIntent(s, i, u, d), {
renderingIntent: g,
cacheKey: m
} = f;
p(this, Pi, !1), v(this, ms, iu).call(this), l || (l = this._transport.getOptionalContentConfig(g));
let y = this._intentStates.get(m);
y || (y = /* @__PURE__ */ Object.create(null), this._intentStates.set(m, y)), y.streamReaderCancelTimeout && (clearTimeout(y.streamReaderCancelTimeout), y.streamReaderCancelTimeout = null);
const _ = !!(g & ss.PRINT);
y.displayReadyCapability || (y.displayReadyCapability = Promise.withResolvers(), y.operatorList = {
fnArray: [],
argsArray: [],
lastChunk: !1,
separateAnnots: null
}, (T = this._stats) == null || T.time("Page Request"), this._pumpOperatorList(f));
const A = (k) => {
var C;
y.renderTasks.delete(S), (this._maybeCleanupAfterRender || _) && p(this, Pi, !0), v(this, ms, Ca).call(this, !_), k ? (S.capability.reject(k), this._abortOperatorList({
intentState: y,
reason: k instanceof Error ? k : new Error(k)
})) : S.capability.resolve(), this._stats && (this._stats.timeEnd("Rendering"), this._stats.timeEnd("Overall"), (C = globalThis.Stats) != null && C.enabled && globalThis.Stats.add(this.pageNumber, this._stats));
}, S = new Gf({
callback: A,
params: {
canvasContext: t,
viewport: e,
transform: r,
background: a
},
objs: this.objs,
commonObjs: this.commonObjs,
annotationCanvasMap: c,
operatorList: y.operatorList,
pageIndex: this._pageIndex,
canvasFactory: this._transport.canvasFactory,
filterFactory: this._transport.filterFactory,
useRequestAnimationFrame: !_,
pdfBug: this._pdfBug,
pageColors: h
});
(y.renderTasks || (y.renderTasks = /* @__PURE__ */ new Set())).add(S);
const E = S.task;
return Promise.all([y.displayReadyCapability.promise, l]).then(([k, C]) => {
var P;
if (this.destroyed) {
A();
return;
}
if ((P = this._stats) == null || P.time("Rendering"), !(C.renderingIntent & g))
throw new Error("Must use the same `intent`-argument when calling the `PDFPageProxy.render` and `PDFDocumentProxy.getOptionalContentConfig` methods.");
S.initializeGraphics({
transparency: k,
optionalContentConfig: C
}), S.operatorListChanged();
}).catch(A), E;
}
getOperatorList({
intent: t = "display",
annotationMode: e = sn.ENABLE,
printAnnotationStorage: s = null,
isEditing: i = !1
} = {}) {
var h;
function r() {
l.operatorList.lastChunk && (l.opListReadCapability.resolve(l.operatorList), l.renderTasks.delete(c));
}
const a = this._transport.getRenderingIntent(t, e, s, i, !0);
let l = this._intentStates.get(a.cacheKey);
l || (l = /* @__PURE__ */ Object.create(null), this._intentStates.set(a.cacheKey, l));
let c;
return l.opListReadCapability || (c = /* @__PURE__ */ Object.create(null), c.operatorListChanged = r, l.opListReadCapability = Promise.withResolvers(), (l.renderTasks || (l.renderTasks = /* @__PURE__ */ new Set())).add(c), l.operatorList = {
fnArray: [],
argsArray: [],
lastChunk: !1,
separateAnnots: null
}, (h = this._stats) == null || h.time("Page Request"), this._pumpOperatorList(a)), l.opListReadCapability.promise;
}
streamTextContent({
includeMarkedContent: t = !1,
disableNormalization: e = !1
} = {}) {
return this._transport.messageHandler.sendWithStream("GetTextContent", {
pageIndex: this._pageIndex,
includeMarkedContent: t === !0,
disableNormalization: e === !0
}, {
highWaterMark: 100,
size(i) {
return i.items.length;
}
});
}
getTextContent(t = {}) {
if (this._transport._htmlForXfa)
return this.getXfa().then((s) => rc.textContent(s));
const e = this.streamTextContent(t);
return new Promise(function(s, i) {
function r() {
a.read().then(function({
value: c,
done: h
}) {
if (h) {
s(l);
return;
}
l.lang ?? (l.lang = c.lang), Object.assign(l.styles, c.styles), l.items.push(...c.items), r();
}, i);
}
const a = e.getReader(), l = {
items: [],
styles: /* @__PURE__ */ Object.create(null),
lang: null
};
r();
});
}
getStructTree() {
return this._transport.getStructTree(this._pageIndex);
}
_destroy() {
this.destroyed = !0;
const t = [];
for (const e of this._intentStates.values())
if (this._abortOperatorList({
intentState: e,
reason: new Error("Page was destroyed."),
force: !0
}), !e.opListReadCapability)
for (const s of e.renderTasks)
t.push(s.completed), s.cancel();
return this.objs.clear(), p(this, Pi, !1), v(this, ms, iu).call(this), Promise.all(t);
}
cleanup(t = !1) {
p(this, Pi, !0);
const e = v(this, ms, Ca).call(this, !1);
return t && e && this._stats && (this._stats = new Fg()), e;
}
_startRenderPage(t, e) {
var i, r;
const s = this._intentStates.get(e);
s && ((i = this._stats) == null || i.timeEnd("Page Request"), (r = s.displayReadyCapability) == null || r.resolve(t));
}
_renderPageChunk(t, e) {
for (let s = 0, i = t.length; s < i; s++)
e.operatorList.fnArray.push(t.fnArray[s]), e.operatorList.argsArray.push(t.argsArray[s]);
e.operatorList.lastChunk = t.lastChunk, e.operatorList.separateAnnots = t.separateAnnots;
for (const s of e.renderTasks)
s.operatorListChanged();
t.lastChunk && v(this, ms, Ca).call(this, !0);
}
_pumpOperatorList({
renderingIntent: t,
cacheKey: e,
annotationStorageSerializable: s,
modifiedIds: i
}) {
const {
map: r,
transfer: a
} = s, c = this._transport.messageHandler.sendWithStream("GetOperatorList", {
pageIndex: this._pageIndex,
intent: t,
cacheKey: e,
annotationStorage: r,
modifiedIds: i
}, a).getReader(), h = this._intentStates.get(e);
h.streamReader = c;
const u = () => {
c.read().then(({
value: d,
done: f
}) => {
if (f) {
h.streamReader = null;
return;
}
this._transport.destroyed || (this._renderPageChunk(d, h), u());
}, (d) => {
if (h.streamReader = null, !this._transport.destroyed) {
if (h.operatorList) {
h.operatorList.lastChunk = !0;
for (const f of h.renderTasks)
f.operatorListChanged();
v(this, ms, Ca).call(this, !0);
}
if (h.displayReadyCapability)
h.displayReadyCapability.reject(d);
else if (h.opListReadCapability)
h.opListReadCapability.reject(d);
else
throw d;
}
});
};
u();
}
_abortOperatorList({
intentState: t,
reason: e,
force: s = !1
}) {
if (t.streamReader) {
if (t.streamReaderCancelTimeout && (clearTimeout(t.streamReaderCancelTimeout), t.streamReaderCancelTimeout = null), !s) {
if (t.renderTasks.size > 0)
return;
if (e instanceof Up) {
let i = Lx;
e.extraDelay > 0 && e.extraDelay < 1e3 && (i += e.extraDelay), t.streamReaderCancelTimeout = setTimeout(() => {
t.streamReaderCancelTimeout = null, this._abortOperatorList({
intentState: t,
reason: e,
force: !0
});
}, i);
return;
}
}
if (t.streamReader.cancel(new Bn(e.message)).catch(() => {
}), t.streamReader = null, !this._transport.destroyed) {
for (const [i, r] of this._intentStates)
if (r === t) {
this._intentStates.delete(i);
break;
}
this.cleanup();
}
}
}
get stats() {
return this._stats;
}
}
_n = new WeakMap(), Pi = new WeakMap(), ms = new WeakSet(), Ca = function(t = !1) {
if (v(this, ms, iu).call(this), !o(this, Pi) || this.destroyed)
return !1;
if (t)
return p(this, _n, setTimeout(() => {
p(this, _n, null), v(this, ms, Ca).call(this, !1);
}, Dx)), !1;
for (const {
renderTasks: e,
operatorList: s
} of this._intentStates.values())
if (e.size > 0 || !s.lastChunk)
return !1;
return this._intentStates.clear(), this.objs.clear(), p(this, Pi, !1), !0;
}, iu = function() {
o(this, _n) && (clearTimeout(o(this, _n)), p(this, _n, null));
};
var Mi, id;
class qx {
constructor() {
b(this, Mi, /* @__PURE__ */ new Map());
b(this, id, Promise.resolve());
}
postMessage(t, e) {
const s = {
data: structuredClone(t, e ? {
transfer: e
} : null)
};
o(this, id).then(() => {
for (const [i] of o(this, Mi))
i.call(this, s);
});
}
addEventListener(t, e, s = null) {
let i = null;
if ((s == null ? void 0 : s.signal) instanceof AbortSignal) {
const {
signal: r
} = s;
if (r.aborted) {
st("LoopbackPort - cannot use an `aborted` signal.");
return;
}
const a = () => this.removeEventListener(t, e);
i = () => r.removeEventListener("abort", a), r.addEventListener("abort", a);
}
o(this, Mi).set(e, i);
}
removeEventListener(t, e) {
const s = o(this, Mi).get(e);
s == null || s(), o(this, Mi).delete(e);
}
terminate() {
for (const [, t] of o(this, Mi))
t == null || t();
o(this, Mi).clear();
}
}
Mi = new WeakMap(), id = new WeakMap();
var nd, Mr, Nr, oo, nu, lo, ru;
const Pt = class Pt {
constructor({
name: t = null,
port: e = null,
verbosity: s = CE()
} = {}) {
b(this, oo);
var i;
if (this.name = t, this.destroyed = !1, this.verbosity = s, this._readyCapability = Promise.withResolvers(), this._port = null, this._webWorker = null, this._messageHandler = null, e) {
if ((i = o(Pt, Nr)) != null && i.has(e))
throw new Error("Cannot use more than one PDFWorker per port.");
(o(Pt, Nr) || p(Pt, Nr, /* @__PURE__ */ new WeakMap())).set(e, this), this._initializeFromPort(e);
return;
}
this._initialize();
}
get promise() {
return this._readyCapability.promise;
}
get port() {
return this._port;
}
get messageHandler() {
return this._messageHandler;
}
_initializeFromPort(t) {
this._port = t, this._messageHandler = new pl("main", "worker", t), this._messageHandler.on("ready", function() {
}), v(this, oo, nu).call(this);
}
_initialize() {
if (o(Pt, Mr) || o(Pt, lo, ru)) {
this._setupFakeWorker();
return;
}
let {
workerSrc: t
} = Pt;
try {
Pt._isSameOrigin(window.location.href, t) || (t = Pt._createCDNWrapper(new URL(t, window.location).href));
const e = new Worker(t, {
type: "module"
}), s = new pl("main", "worker", e), i = () => {
r.abort(), s.destroy(), e.terminate(), this.destroyed ? this._readyCapability.reject(new Error("Worker was destroyed")) : this._setupFakeWorker();
}, r = new AbortController();
e.addEventListener("error", () => {
this._webWorker || i();
}, {
signal: r.signal
}), s.on("test", (l) => {
if (r.abort(), this.destroyed || !l) {
i();
return;
}
this._messageHandler = s, this._port = e, this._webWorker = e, v(this, oo, nu).call(this);
}), s.on("ready", (l) => {
if (r.abort(), this.destroyed) {
i();
return;
}
try {
a();
} catch {
this._setupFakeWorker();
}
});
const a = () => {
const l = new Uint8Array();
s.send("test", l, [l.buffer]);
};
a();
return;
} catch {
vd("The worker has been disabled.");
}
this._setupFakeWorker();
}
_setupFakeWorker() {
o(Pt, Mr) || (st("Setting up fake worker."), p(Pt, Mr, !0)), Pt._setupFakeWorkerGlobal.then((t) => {
if (this.destroyed) {
this._readyCapability.reject(new Error("Worker was destroyed"));
return;
}
const e = new qx();
this._port = e;
const s = `fake${xe(Pt, nd)._++}`, i = new pl(s + "_worker", s, e);
t.setup(i, e), this._messageHandler = new pl(s, s + "_worker", e), v(this, oo, nu).call(this);
}).catch((t) => {
this._readyCapability.reject(new Error(`Setting up fake worker failed: "${t.message}".`));
});
}
destroy() {
var t, e, s;
this.destroyed = !0, (t = this._webWorker) == null || t.terminate(), this._webWorker = null, (e = o(Pt, Nr)) == null || e.delete(this._port), this._port = null, (s = this._messageHandler) == null || s.destroy(), this._messageHandler = null;
}
static fromPort(t) {
var s;
if (!(t != null && t.port))
throw new Error("PDFWorker.fromPort - invalid method signature.");
const e = (s = o(this, Nr)) == null ? void 0 : s.get(t.port);
if (e) {
if (e._pendingDestroy)
throw new Error("PDFWorker.fromPort - the worker is being destroyed.\nPlease remember to await `PDFDocumentLoadingTask.destroy()`-calls.");
return e;
}
return new Pt(t);
}
static get workerSrc() {
if (qi.workerSrc)
return qi.workerSrc;
throw new Error('No "GlobalWorkerOptions.workerSrc" specified.');
}
static get _setupFakeWorkerGlobal() {
return at(this, "_setupFakeWorkerGlobal", (async () => o(this, lo, ru) ? o(this, lo, ru) : (await import(
/*webpackIgnore: true*/
this.workerSrc
)).WorkerMessageHandler)());
}
};
nd = new WeakMap(), Mr = new WeakMap(), Nr = new WeakMap(), oo = new WeakSet(), nu = function() {
this._readyCapability.resolve(), this._messageHandler.send("configure", {
verbosity: this.verbosity
});
}, lo = new WeakSet(), ru = function() {
var t;
try {
return ((t = globalThis.pdfjsWorker) == null ? void 0 : t.WorkerMessageHandler) || null;
} catch {
return null;
}
}, b(Pt, lo), b(Pt, nd, 0), b(Pt, Mr, !1), b(Pt, Nr), Se && (p(Pt, Mr, !0), qi.workerSrc || (qi.workerSrc = "./pdf.worker.mjs")), Pt._isSameOrigin = (t, e) => {
let s;
try {
if (s = new URL(t), !s.origin || s.origin === "null")
return !1;
} catch {
return !1;
}
const i = new URL(e, s);
return s.origin === i.origin;
}, Pt._createCDNWrapper = (t) => {
const e = `await import("${t}");`;
return URL.createObjectURL(new Blob([e], {
type: "text/javascript"
}));
};
let La = Pt;
var Ni, si, co, ho, Oi, Or, vl;
class Wx {
constructor(t, e, s, i, r) {
b(this, Or);
b(this, Ni, /* @__PURE__ */ new Map());
b(this, si, /* @__PURE__ */ new Map());
b(this, co, /* @__PURE__ */ new Map());
b(this, ho, /* @__PURE__ */ new Map());
b(this, Oi, null);
this.messageHandler = t, this.loadingTask = e, this.commonObjs = new Bb(), this.fontLoader = new qE({
ownerDocument: i.ownerDocument,
styleElement: i.styleElement
}), this.loadingParams = i.loadingParams, this._params = i, this.canvasFactory = r.canvasFactory, this.filterFactory = r.filterFactory, this.cMapReaderFactory = r.cMapReaderFactory, this.standardFontDataFactory = r.standardFontDataFactory, this.destroyed = !1, this.destroyCapability = null, this._networkStream = s, this._fullReader = null, this._lastProgress = null, this.downloadInfoCapability = Promise.withResolvers(), this.setupMessageHandler();
}
get annotationStorage() {
return at(this, "annotationStorage", new qp());
}
getRenderingIntent(t, e = sn.ENABLE, s = null, i = !1, r = !1) {
let a = ss.DISPLAY, l = Mf;
switch (t) {
case "any":
a = ss.ANY;
break;
case "display":
break;
case "print":
a = ss.PRINT;
break;
default:
st(`getRenderingIntent - invalid intent: ${t}`);
}
const c = a & ss.PRINT && s instanceof yb ? s : this.annotationStorage;
switch (e) {
case sn.DISABLE:
a += ss.ANNOTATIONS_DISABLE;
break;
case sn.ENABLE:
break;
case sn.ENABLE_FORMS:
a += ss.ANNOTATIONS_FORMS;
break;
case sn.ENABLE_STORAGE:
a += ss.ANNOTATIONS_STORAGE, l = c.serializable;
break;
default:
st(`getRenderingIntent - invalid annotationMode: ${e}`);
}
i && (a += ss.IS_EDITING), r && (a += ss.OPLIST);
const {
ids: h,
hash: u
} = c.modifiedIds, d = [a, l.hash, u];
return {
renderingIntent: a,
cacheKey: d.join("_"),
annotationStorageSerializable: l,
modifiedIds: h
};
}
destroy() {
var s;
if (this.destroyCapability)
return this.destroyCapability.promise;
this.destroyed = !0, this.destroyCapability = Promise.withResolvers(), (s = o(this, Oi)) == null || s.reject(new Error("Worker was destroyed during onPassword callback"));
const t = [];
for (const i of o(this, si).values())
t.push(i._destroy());
o(this, si).clear(), o(this, co).clear(), o(this, ho).clear(), this.hasOwnProperty("annotationStorage") && this.annotationStorage.resetModified();
const e = this.messageHandler.sendWithPromise("Terminate", null);
return t.push(e), Promise.all(t).then(() => {
var i, r;
this.commonObjs.clear(), this.fontLoader.clear(), o(this, Ni).clear(), this.filterFactory.destroy(), nc.cleanup(), (i = this._networkStream) == null || i.cancelAllRequests(new Bn("Worker was terminated.")), (r = this.messageHandler) == null || r.destroy(), this.messageHandler = null, this.destroyCapability.resolve();
}, this.destroyCapability.reject), this.destroyCapability.promise;
}
setupMessageHandler() {
const {
messageHandler: t,
loadingTask: e
} = this;
t.on("GetReader", (s, i) => {
qt(this._networkStream, "GetReader - no `IPDFStream` instance available."), this._fullReader = this._networkStream.getFullReader(), this._fullReader.onProgress = (r) => {
this._lastProgress = {
loaded: r.loaded,
total: r.total
};
}, i.onPull = () => {
this._fullReader.read().then(function({
value: r,
done: a
}) {
if (a) {
i.close();
return;
}
qt(r instanceof ArrayBuffer, "GetReader - expected an ArrayBuffer."), i.enqueue(new Uint8Array(r), 1, [r]);
}).catch((r) => {
i.error(r);
});
}, i.onCancel = (r) => {
this._fullReader.cancel(r), i.ready.catch((a) => {
if (!this.destroyed)
throw a;
});
};
}), t.on("ReaderHeadersReady", async (s) => {
var l;
await this._fullReader.headersReady;
const {
isStreamingSupported: i,
isRangeSupported: r,
contentLength: a
} = this._fullReader;
return (!i || !r) && (this._lastProgress && ((l = e.onProgress) == null || l.call(e, this._lastProgress)), this._fullReader.onProgress = (c) => {
var h;
(h = e.onProgress) == null || h.call(e, {
loaded: c.loaded,
total: c.total
});
}), {
isStreamingSupported: i,
isRangeSupported: r,
contentLength: a
};
}), t.on("GetRangeReader", (s, i) => {
qt(this._networkStream, "GetRangeReader - no `IPDFStream` instance available.");
const r = this._networkStream.getRangeReader(s.begin, s.end);
if (!r) {
i.close();
return;
}
i.onPull = () => {
r.read().then(function({
value: a,
done: l
}) {
if (l) {
i.close();
return;
}
qt(a instanceof ArrayBuffer, "GetRangeReader - expected an ArrayBuffer."), i.enqueue(new Uint8Array(a), 1, [a]);
}).catch((a) => {
i.error(a);
});
}, i.onCancel = (a) => {
r.cancel(a), i.ready.catch((l) => {
if (!this.destroyed)
throw l;
});
};
}), t.on("GetDoc", ({
pdfInfo: s
}) => {
this._numPages = s.numPages, this._htmlForXfa = s.htmlForXfa, delete s.htmlForXfa, e._capability.resolve(new Vx(s, this));
}), t.on("DocException", (s) => {
e._capability.reject(Fe(s));
}), t.on("PasswordRequest", (s) => {
p(this, Oi, Promise.withResolvers());
try {
if (!e.onPassword)
throw Fe(s);
const i = (r) => {
r instanceof Error ? o(this, Oi).reject(r) : o(this, Oi).resolve({
password: r
});
};
e.onPassword(i, s.code);
} catch (i) {
o(this, Oi).reject(i);
}
return o(this, Oi).promise;
}), t.on("DataLoaded", (s) => {
var i;
(i = e.onProgress) == null || i.call(e, {
loaded: s.length,
total: s.length
}), this.downloadInfoCapability.resolve(s);
}), t.on("StartRenderPage", (s) => {
if (this.destroyed)
return;
o(this, si).get(s.pageIndex)._startRenderPage(s.transparency, s.cacheKey);
}), t.on("commonobj", ([s, i, r]) => {
var a;
if (this.destroyed || this.commonObjs.has(s))
return null;
switch (i) {
case "Font":
const {
disableFontFace: l,
fontExtraProperties: c,
pdfBug: h
} = this._params;
if ("error" in r) {
const g = r.error;
st(`Error during font loading: ${g}`), this.commonObjs.resolve(s, g);
break;
}
const u = h && ((a = globalThis.FontInspector) != null && a.enabled) ? (g, m) => globalThis.FontInspector.fontAdded(g, m) : null, d = new WE(r, {
disableFontFace: l,
fontExtraProperties: c,
inspectFont: u
});
this.fontLoader.bind(d).catch(() => t.sendWithPromise("FontFallback", {
id: s
})).finally(() => {
!c && d.data && (d.data = null), this.commonObjs.resolve(s, d);
});
break;
case "CopyLocalImage":
const {
imageRef: f
} = r;
qt(f, "The imageRef must be defined.");
for (const g of o(this, si).values())
for (const [, m] of g.objs)
if ((m == null ? void 0 : m.ref) === f)
return m.dataLen ? (this.commonObjs.resolve(s, structuredClone(m)), m.dataLen) : null;
break;
case "FontPath":
case "Image":
case "Pattern":
this.commonObjs.resolve(s, r);
break;
default:
throw new Error(`Got unknown common object type ${i}`);
}
return null;
}), t.on("obj", ([s, i, r, a]) => {
var c;
if (this.destroyed)
return;
const l = o(this, si).get(i);
if (!l.objs.has(s)) {
if (l._intentStates.size === 0) {
(c = a == null ? void 0 : a.bitmap) == null || c.close();
return;
}
switch (r) {
case "Image":
l.objs.resolve(s, a), (a == null ? void 0 : a.dataLen) > wE && (l._maybeCleanupAfterRender = !0);
break;
case "Pattern":
l.objs.resolve(s, a);
break;
default:
throw new Error(`Got unknown object type ${r}`);
}
}
}), t.on("DocProgress", (s) => {
var i;
this.destroyed || (i = e.onProgress) == null || i.call(e, {
loaded: s.loaded,
total: s.total
});
}), t.on("FetchBuiltInCMap", async (s) => {
if (this.destroyed)
throw new Error("Worker was destroyed.");
if (!this.cMapReaderFactory)
throw new Error("CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.");
return this.cMapReaderFactory.fetch(s);
}), t.on("FetchStandardFontData", async (s) => {
if (this.destroyed)
throw new Error("Worker was destroyed.");
if (!this.standardFontDataFactory)
throw new Error("StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.");
return this.standardFontDataFactory.fetch(s);
});
}
getData() {
return this.messageHandler.sendWithPromise("GetData", null);
}
saveDocument() {
var s;
this.annotationStorage.size <= 0 && st("saveDocument called while `annotationStorage` is empty, please use the getData-method instead.");
const {
map: t,
transfer: e
} = this.annotationStorage.serializable;
return this.messageHandler.sendWithPromise("SaveDocument", {
isPureXfa: !!this._htmlForXfa,
numPages: this._numPages,
annotationStorage: t,
filename: ((s = this._fullReader) == null ? void 0 : s.filename) ?? null
}, e).finally(() => {
this.annotationStorage.resetModified();
});
}
getPage(t) {
if (!Number.isInteger(t) || t <= 0 || t > this._numPages)
return Promise.reject(new Error("Invalid page request."));
const e = t - 1, s = o(this, co).get(e);
if (s)
return s;
const i = this.messageHandler.sendWithPromise("GetPage", {
pageIndex: e
}).then((r) => {
if (this.destroyed)
throw new Error("Transport destroyed");
r.refStr && o(this, ho).set(r.refStr, t);
const a = new Gx(e, r, this, this._params.pdfBug);
return o(this, si).set(e, a), a;
});
return o(this, co).set(e, i), i;
}
getPageIndex(t) {
return Kg(t) ? this.messageHandler.sendWithPromise("GetPageIndex", {
num: t.num,
gen: t.gen
}) : Promise.reject(new Error("Invalid pageIndex request."));
}
getAnnotations(t, e) {
return this.messageHandler.sendWithPromise("GetAnnotations", {
pageIndex: t,
intent: e
});
}
getFieldObjects() {
return v(this, Or, vl).call(this, "GetFieldObjects");
}
hasJSActions() {
return v(this, Or, vl).call(this, "HasJSActions");
}
getCalculationOrderIds() {
return this.messageHandler.sendWithPromise("GetCalculationOrderIds", null);
}
getDestinations() {
return this.messageHandler.sendWithPromise("GetDestinations", null);
}
getDestination(t) {
return typeof t != "string" ? Promise.reject(new Error("Invalid destination request.")) : this.messageHandler.sendWithPromise("GetDestination", {
id: t
});
}
getPageLabels() {
return this.messageHandler.sendWithPromise("GetPageLabels", null);
}
getPageLayout() {
return this.messageHandler.sendWithPromise("GetPageLayout", null);
}
getPageMode() {
return this.messageHandler.sendWithPromise("GetPageMode", null);
}
getViewerPreferences() {
return this.messageHandler.sendWithPromise("GetViewerPreferences", null);
}
getOpenAction() {
return this.messageHandler.sendWithPromise("GetOpenAction", null);
}
getAttachments() {
return this.messageHandler.sendWithPromise("GetAttachments", null);
}
getDocJSActions() {
return v(this, Or, vl).call(this, "GetDocJSActions");
}
getPageJSActions(t) {
return this.messageHandler.sendWithPromise("GetPageJSActions", {
pageIndex: t
});
}
getStructTree(t) {
return this.messageHandler.sendWithPromise("GetStructTree", {
pageIndex: t
});
}
getOutline() {
return this.messageHandler.sendWithPromise("GetOutline", null);
}
getOptionalContentConfig(t) {
return v(this, Or, vl).call(this, "GetOptionalContentConfig").then((e) => new gx(e, t));
}
getPermissions() {
return this.messageHandler.sendWithPromise("GetPermissions", null);
}
getMetadata() {
const t = "GetMetadata", e = o(this, Ni).get(t);
if (e)
return e;
const s = this.messageHandler.sendWithPromise(t, null).then((i) => {
var r, a;
return {
info: i[0],
metadata: i[1] ? new fx(i[1]) : null,
contentDispositionFilename: ((r = this._fullReader) == null ? void 0 : r.filename) ?? null,
contentLength: ((a = this._fullReader) == null ? void 0 : a.contentLength) ?? null
};
});
return o(this, Ni).set(t, s), s;
}
getMarkInfo() {
return this.messageHandler.sendWithPromise("GetMarkInfo", null);
}
async startCleanup(t = !1) {
if (!this.destroyed) {
await this.messageHandler.sendWithPromise("Cleanup", null);
for (const e of o(this, si).values())
if (!e.cleanup())
throw new Error(`startCleanup: Page ${e.pageNumber} is currently rendering.`);
this.commonObjs.clear(), t || this.fontLoader.clear(), o(this, Ni).clear(), this.filterFactory.destroy(!0), nc.cleanup();
}
}
cachedPageNumber(t) {
if (!Kg(t))
return null;
const e = t.gen === 0 ? `${t.num}R` : `${t.num}R${t.gen}`;
return o(this, ho).get(e) ?? null;
}
}
Ni = new WeakMap(), si = new WeakMap(), co = new WeakMap(), ho = new WeakMap(), Oi = new WeakMap(), Or = new WeakSet(), vl = function(t, e = null) {
const s = o(this, Ni).get(t);
if (s)
return s;
const i = this.messageHandler.sendWithPromise(t, e);
return o(this, Ni).set(t, i), i;
};
const al = Symbol("INITIAL_DATA");
var qe, Zc, Vf;
class Bb {
constructor() {
b(this, Zc);
b(this, qe, /* @__PURE__ */ Object.create(null));
}
get(t, e = null) {
if (e) {
const i = v(this, Zc, Vf).call(this, t);
return i.promise.then(() => e(i.data)), null;
}
const s = o(this, qe)[t];
if (!s || s.data === al)
throw new Error(`Requesting object that isn't resolved yet ${t}.`);
return s.data;
}
has(t) {
const e = o(this, qe)[t];
return !!e && e.data !== al;
}
delete(t) {
const e = o(this, qe)[t];
return !e || e.data === al ? !1 : (delete o(this, qe)[t], !0);
}
resolve(t, e = null) {
const s = v(this, Zc, Vf).call(this, t);
s.data = e, s.resolve();
}
clear() {
var t;
for (const e in o(this, qe)) {
const {
data: s
} = o(this, qe)[e];
(t = s == null ? void 0 : s.bitmap) == null || t.close();
}
p(this, qe, /* @__PURE__ */ Object.create(null));
}
*[Symbol.iterator]() {
for (const t in o(this, qe)) {
const {
data: e
} = o(this, qe)[t];
e !== al && (yield [t, e]);
}
}
}
qe = new WeakMap(), Zc = new WeakSet(), Vf = function(t) {
var e;
return (e = o(this, qe))[t] || (e[t] = {
...Promise.withResolvers(),
data: al
});
};
var An;
class Xx {
constructor(t) {
b(this, An, null);
p(this, An, t), this.onContinue = null;
}
get promise() {
return o(this, An).capability.promise;
}
cancel(t = 0) {
o(this, An).cancel(null, t);
}
get separateAnnots() {
const {
separateAnnots: t
} = o(this, An).operatorList;
if (!t)
return !1;
const {
annotationCanvasMap: e
} = o(this, An);
return t.form || t.canvas && (e == null ? void 0 : e.size) > 0;
}
}
An = new WeakMap();
var wn, Lr;
const tr = class tr {
constructor({
callback: t,
params: e,
objs: s,
commonObjs: i,
annotationCanvasMap: r,
operatorList: a,
pageIndex: l,
canvasFactory: c,
filterFactory: h,
useRequestAnimationFrame: u = !1,
pdfBug: d = !1,
pageColors: f = null
}) {
b(this, wn, null);
this.callback = t, this.params = e, this.objs = s, this.commonObjs = i, this.annotationCanvasMap = r, this.operatorListIdx = null, this.operatorList = a, this._pageIndex = l, this.canvasFactory = c, this.filterFactory = h, this._pdfBug = d, this.pageColors = f, this.running = !1, this.graphicsReadyCallback = null, this.graphicsReady = !1, this._useRequestAnimationFrame = u === !0 && typeof window < "u", this.cancelled = !1, this.capability = Promise.withResolvers(), this.task = new Xx(this), this._cancelBound = this.cancel.bind(this), this._continueBound = this._continue.bind(this), this._scheduleNextBound = this._scheduleNext.bind(this), this._nextBound = this._next.bind(this), this._canvas = e.canvasContext.canvas;
}
get completed() {
return this.capability.promise.catch(function() {
});
}
initializeGraphics({
transparency: t = !1,
optionalContentConfig: e
}) {
var l, c;
if (this.cancelled)
return;
if (this._canvas) {
if (o(tr, Lr).has(this._canvas))
throw new Error("Cannot use the same canvas during multiple render() operations. Use different canvas or ensure previous operations were cancelled or completed.");
o(tr, Lr).add(this._canvas);
}
this._pdfBug && ((l = globalThis.StepperManager) != null && l.enabled) && (this.stepper = globalThis.StepperManager.create(this._pageIndex), this.stepper.init(this.operatorList), this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint());
const {
canvasContext: s,
viewport: i,
transform: r,
background: a
} = this.params;
this.gfx = new Oa(s, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {
optionalContentConfig: e
}, this.annotationCanvasMap, this.pageColors), this.gfx.beginDrawing({
transform: r,
viewport: i,
transparency: t,
background: a
}), this.operatorListIdx = 0, this.graphicsReady = !0, (c = this.graphicsReadyCallback) == null || c.call(this);
}
cancel(t = null, e = 0) {
var s;
this.running = !1, this.cancelled = !0, (s = this.gfx) == null || s.endDrawing(), o(this, wn) && (window.cancelAnimationFrame(o(this, wn)), p(this, wn, null)), o(tr, Lr).delete(this._canvas), this.callback(t || new Up(`Rendering cancelled, page ${this._pageIndex + 1}`, e));
}
operatorListChanged() {
var t;
if (!this.graphicsReady) {
this.graphicsReadyCallback || (this.graphicsReadyCallback = this._continueBound);
return;
}
(t = this.stepper) == null || t.updateOperatorList(this.operatorList), !this.running && this._continue();
}
_continue() {
this.running = !0, !this.cancelled && (this.task.onContinue ? this.task.onContinue(this._scheduleNextBound) : this._scheduleNext());
}
_scheduleNext() {
this._useRequestAnimationFrame ? p(this, wn, window.requestAnimationFrame(() => {
p(this, wn, null), this._nextBound().catch(this._cancelBound);
})) : Promise.resolve().then(this._nextBound).catch(this._cancelBound);
}
async _next() {
this.cancelled || (this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper), this.operatorListIdx === this.operatorList.argsArray.length && (this.running = !1, this.operatorList.lastChunk && (this.gfx.endDrawing(), o(tr, Lr).delete(this._canvas), this.callback())));
}
};
wn = new WeakMap(), Lr = new WeakMap(), b(tr, Lr, /* @__PURE__ */ new WeakSet());
let Gf = tr;
const Zx = "4.10.38", Yx = "f9bea397f";
function Jg(n) {
return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, "0");
}
function ol(n) {
return Math.max(0, Math.min(255, 255 * n));
}
class Qg {
static CMYK_G([t, e, s, i]) {
return ["G", 1 - Math.min(1, 0.3 * t + 0.59 * s + 0.11 * e + i)];
}
static G_CMYK([t]) {
return ["CMYK", 0, 0, 0, 1 - t];
}
static G_RGB([t]) {
return ["RGB", t, t, t];
}
static G_rgb([t]) {
return t = ol(t), [t, t, t];
}
static G_HTML([t]) {
const e = Jg(t);
return `#${e}${e}${e}`;
}
static RGB_G([t, e, s]) {
return ["G", 0.3 * t + 0.59 * e + 0.11 * s];
}
static RGB_rgb(t) {
return t.map(ol);
}
static RGB_HTML(t) {
return `#${t.map(Jg).join("")}`;
}
static T_HTML() {
return "#00000000";
}
static T_rgb() {
return [null];
}
static CMYK_RGB([t, e, s, i]) {
return ["RGB", 1 - Math.min(1, t + i), 1 - Math.min(1, s + i), 1 - Math.min(1, e + i)];
}
static CMYK_rgb([t, e, s, i]) {
return [ol(1 - Math.min(1, t + i)), ol(1 - Math.min(1, s + i)), ol(1 - Math.min(1, e + i))];
}
static CMYK_HTML(t) {
const e = this.CMYK_RGB(t).slice(1);
return this.RGB_HTML(e);
}
static RGB_CMYK([t, e, s]) {
const i = 1 - t, r = 1 - e, a = 1 - s, l = Math.min(i, r, a);
return ["CMYK", i, r, a, l];
}
}
class Kx {
create(t, e, s = !1) {
if (t <= 0 || e <= 0)
throw new Error("Invalid SVG dimensions");
const i = this._createSVG("svg:svg");
return i.setAttribute("version", "1.1"), s || (i.setAttribute("width", `${t}px`), i.setAttribute("height", `${e}px`)), i.setAttribute("preserveAspectRatio", "none"), i.setAttribute("viewBox", `0 0 ${t} ${e}`), i;
}
createElement(t) {
if (typeof t != "string")
throw new Error("Invalid SVG element type");
return this._createSVG(t);
}
_createSVG(t) {
Et("Abstract method `_createSVG` called.");
}
}
class Xp extends Kx {
_createSVG(t) {
return document.createElementNS(gi, t);
}
}
class Hb {
static setupStorage(t, e, s, i, r) {
const a = i.getValue(e, {
value: null
});
switch (s.name) {
case "textarea":
if (a.value !== null && (t.textContent = a.value), r === "print")
break;
t.addEventListener("input", (l) => {
i.setValue(e, {
value: l.target.value
});
});
break;
case "input":
if (s.attributes.type === "radio" || s.attributes.type === "checkbox") {
if (a.value === s.attributes.xfaOn ? t.setAttribute("checked", !0) : a.value === s.attributes.xfaOff && t.removeAttribute("checked"), r === "print")
break;
t.addEventListener("change", (l) => {
i.setValue(e, {
value: l.target.checked ? l.target.getAttribute("xfaOn") : l.target.getAttribute("xfaOff")
});
});
} else {
if (a.value !== null && t.setAttribute("value", a.value), r === "print")
break;
t.addEventListener("input", (l) => {
i.setValue(e, {
value: l.target.value
});
});
}
break;
case "select":
if (a.value !== null) {
t.setAttribute("value", a.value);
for (const l of s.children)
l.attributes.value === a.value ? l.attributes.selected = !0 : l.attributes.hasOwnProperty("selected") && delete l.attributes.selected;
}
t.addEventListener("input", (l) => {
const c = l.target.options, h = c.selectedIndex === -1 ? "" : c[c.selectedIndex].value;
i.setValue(e, {
value: h
});
});
break;
}
}
static setAttributes({
html: t,
element: e,
storage: s = null,
intent: i,
linkService: r
}) {
const {
attributes: a
} = e, l = t instanceof HTMLAnchorElement;
a.type === "radio" && (a.name = `${a.name}-${i}`);
for (const [c, h] of Object.entries(a))
if (h != null)
switch (c) {
case "class":
h.length && t.setAttribute(c, h.join(" "));
break;
case "dataId":
break;
case "id":
t.setAttribute("data-element-id", h);
break;
case "style":
Object.assign(t.style, h);
break;
case "textContent":
t.textContent = h;
break;
default:
(!l || c !== "href" && c !== "newWindow") && t.setAttribute(c, h);
}
l && r.addLinkAttributes(t, a.href, a.newWindow), s && a.dataId && this.setupStorage(t, a.dataId, e, s);
}
static render(t) {
var d, f;
const e = t.annotationStorage, s = t.linkService, i = t.xfaHtml, r = t.intent || "display", a = document.createElement(i.name);
i.attributes && this.setAttributes({
html: a,
element: i,
intent: r,
linkService: s
});
const l = r !== "richText", c = t.div;
if (c.append(a), t.viewport) {
const g = `matrix(${t.viewport.transform.join(",")})`;
c.style.transform = g;
}
l && c.setAttribute("class", "xfaLayer xfaFont");
const h = [];
if (i.children.length === 0) {
if (i.value) {
const g = document.createTextNode(i.value);
a.append(g), l && rc.shouldBuildText(i.name) && h.push(g);
}
return {
textDivs: h
};
}
const u = [[i, -1, a]];
for (; u.length > 0; ) {
const [g, m, y] = u.at(-1);
if (m + 1 === g.children.length) {
u.pop();
continue;
}
const _ = g.children[++u.at(-1)[1]];
if (_ === null)
continue;
const {
name: A
} = _;
if (A === "#text") {
const E = document.createTextNode(_.value);
h.push(E), y.append(E);
continue;
}
const S = (d = _ == null ? void 0 : _.attributes) != null && d.xmlns ? document.createElementNS(_.attributes.xmlns, A) : document.createElement(A);
if (y.append(S), _.attributes && this.setAttributes({
html: S,
element: _,
storage: e,
intent: r,
linkService: s
}), ((f = _.children) == null ? void 0 : f.length) > 0)
u.push([_, -1, S]);
else if (_.value) {
const E = document.createTextNode(_.value);
l && rc.shouldBuildText(A) && h.push(E), S.append(E);
}
}
for (const g of c.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea"))
g.setAttribute("readOnly", !0);
return {
textDivs: h
};
}
static update(t) {
const e = `matrix(${t.viewport.transform.join(",")})`;
t.div.style.transform = e, t.div.hidden = !1;
}
}
const Lh = 1e3, Jx = 9, ga = /* @__PURE__ */ new WeakSet();
function Ln(n) {
return {
width: n[2] - n[0],
height: n[3] - n[1]
};
}
class Qx {
static create(t) {
switch (t.data.annotationType) {
case Xt.LINK:
return new Ub(t);
case Xt.TEXT:
return new tT(t);
case Xt.WIDGET:
switch (t.data.fieldType) {
case "Tx":
return new eT(t);
case "Btn":
return t.data.radioButton ? new Gb(t) : t.data.checkBox ? new iT(t) : new nT(t);
case "Ch":
return new rT(t);
case "Sig":
return new sT(t);
}
return new ba(t);
case Xt.POPUP:
return new Wf(t);
case Xt.FREETEXT:
return new Yb(t);
case Xt.LINE:
return new oT(t);
case Xt.SQUARE:
return new lT(t);
case Xt.CIRCLE:
return new cT(t);
case Xt.POLYLINE:
return new Kb(t);
case Xt.CARET:
return new uT(t);
case Xt.INK:
return new Zp(t);
case Xt.POLYGON:
return new hT(t);
case Xt.HIGHLIGHT:
return new Jb(t);
case Xt.UNDERLINE:
return new dT(t);
case Xt.SQUIGGLY:
return new fT(t);
case Xt.STRIKEOUT:
return new pT(t);
case Xt.STAMP:
return new Qb(t);
case Xt.FILEATTACHMENT:
return new gT(t);
default:
return new zt(t);
}
}
}
var Dr, uo, fo, Yc, qf;
const Qp = class Qp {
constructor(t, {
isRenderable: e = !1,
ignoreBorder: s = !1,
createQuadrilaterals: i = !1
} = {}) {
b(this, Yc);
b(this, Dr, null);
b(this, uo, !1);
b(this, fo, null);
this.isRenderable = e, this.data = t.data, this.layer = t.layer, this.linkService = t.linkService, this.downloadManager = t.downloadManager, this.imageResourcesPath = t.imageResourcesPath, this.renderForms = t.renderForms, this.svgFactory = t.svgFactory, this.annotationStorage = t.annotationStorage, this.enableScripting = t.enableScripting, this.hasJSActions = t.hasJSActions, this._fieldObjects = t.fieldObjects, this.parent = t.parent, e && (this.container = this._createContainer(s)), i && this._createQuadrilaterals();
}
static _hasPopupData({
titleObj: t,
contentsObj: e,
richText: s
}) {
return !!(t != null && t.str || e != null && e.str || s != null && s.str);
}
get _isEditable() {
return this.data.isEditable;
}
get hasPopupData() {
return Qp._hasPopupData(this.data);
}
updateEdited(t) {
var s;
if (!this.container)
return;
o(this, Dr) || p(this, Dr, {
rect: this.data.rect.slice(0)
});
const {
rect: e
} = t;
e && v(this, Yc, qf).call(this, e), (s = o(this, fo)) == null || s.popup.updateEdited(t);
}
resetEdited() {
var t;
o(this, Dr) && (v(this, Yc, qf).call(this, o(this, Dr).rect), (t = o(this, fo)) == null || t.popup.resetEdited(), p(this, Dr, null));
}
_createContainer(t) {
const {
data: e,
parent: {
page: s,
viewport: i
}
} = this, r = document.createElement("section");
r.setAttribute("data-annotation-id", e.id), this instanceof ba || (r.tabIndex = Lh);
const {
style: a
} = r;
if (a.zIndex = this.parent.zIndex++, e.alternativeText && (r.title = e.alternativeText), e.noRotate && r.classList.add("norotate"), !e.rect || this instanceof Wf) {
const {
rotation: y
} = e;
return !e.hasOwnCanvas && y !== 0 && this.setRotation(y, r), r;
}
const {
width: l,
height: c
} = Ln(e.rect);
if (!t && e.borderStyle.width > 0) {
a.borderWidth = `${e.borderStyle.width}px`;
const y = e.borderStyle.horizontalCornerRadius, _ = e.borderStyle.verticalCornerRadius;
if (y > 0 || _ > 0) {
const S = `calc(${y}px * var(--scale-factor)) / calc(${_}px * var(--scale-factor))`;
a.borderRadius = S;
} else if (this instanceof Gb) {
const S = `calc(${l}px * var(--scale-factor)) / calc(${c}px * var(--scale-factor))`;
a.borderRadius = S;
}
switch (e.borderStyle.style) {
case nl.SOLID:
a.borderStyle = "solid";
break;
case nl.DASHED:
a.borderStyle = "dashed";
break;
case nl.BEVELED:
st("Unimplemented border style: beveled");
break;
case nl.INSET:
st("Unimplemented border style: inset");
break;
case nl.UNDERLINE:
a.borderBottomStyle = "solid";
break;
}
const A = e.borderColor || null;
A ? (p(this, uo, !0), a.borderColor = U.makeHexColor(A[0] | 0, A[1] | 0, A[2] | 0)) : a.borderWidth = 0;
}
const h = U.normalizeRect([e.rect[0], s.view[3] - e.rect[1] + s.view[1], e.rect[2], s.view[3] - e.rect[3] + s.view[1]]), {
pageWidth: u,
pageHeight: d,
pageX: f,
pageY: g
} = i.rawDims;
a.left = `${100 * (h[0] - f) / u}%`, a.top = `${100 * (h[1] - g) / d}%`;
const {
rotation: m
} = e;
return e.hasOwnCanvas || m === 0 ? (a.width = `${100 * l / u}%`, a.height = `${100 * c / d}%`) : this.setRotation(m, r), r;
}
setRotation(t, e = this.container) {
if (!this.data.rect)
return;
const {
pageWidth: s,
pageHeight: i
} = this.parent.viewport.rawDims, {
width: r,
height: a
} = Ln(this.data.rect);
let l, c;
t % 180 === 0 ? (l = 100 * r / s, c = 100 * a / i) : (l = 100 * a / s, c = 100 * r / i), e.style.width = `${l}%`, e.style.height = `${c}%`, e.setAttribute("data-main-rotation", (360 - t) % 360);
}
get _commonActions() {
const t = (e, s, i) => {
const r = i.detail[e], a = r[0], l = r.slice(1);
i.target.style[s] = Qg[`${a}_HTML`](l), this.annotationStorage.setValue(this.data.id, {
[s]: Qg[`${a}_rgb`](l)
});
};
return at(this, "_commonActions", {
display: (e) => {
const {
display: s
} = e.detail, i = s % 2 === 1;
this.container.style.visibility = i ? "hidden" : "visible", this.annotationStorage.setValue(this.data.id, {
noView: i,
noPrint: s === 1 || s === 2
});
},
print: (e) => {
this.annotationStorage.setValue(this.data.id, {
noPrint: !e.detail.print
});
},
hidden: (e) => {
const {
hidden: s
} = e.detail;
this.container.style.visibility = s ? "hidden" : "visible", this.annotationStorage.setValue(this.data.id, {
noPrint: s,
noView: s
});
},
focus: (e) => {
setTimeout(() => e.target.focus({
preventScroll: !1
}), 0);
},
userName: (e) => {
e.target.title = e.detail.userName;
},
readonly: (e) => {
e.target.disabled = e.detail.readonly;
},
required: (e) => {
this._setRequired(e.target, e.detail.required);
},
bgColor: (e) => {
t("bgColor", "backgroundColor", e);
},
fillColor: (e) => {
t("fillColor", "backgroundColor", e);
},
fgColor: (e) => {
t("fgColor", "color", e);
},
textColor: (e) => {
t("textColor", "color", e);
},
borderColor: (e) => {
t("borderColor", "borderColor", e);
},
strokeColor: (e) => {
t("strokeColor", "borderColor", e);
},
rotation: (e) => {
const s = e.detail.rotation;
this.setRotation(s), this.annotationStorage.setValue(this.data.id, {
rotation: s
});
}
});
}
_dispatchEventFromSandbox(t, e) {
const s = this._commonActions;
for (const i of Object.keys(e.detail)) {
const r = t[i] || s[i];
r == null || r(e);
}
}
_setDefaultPropertiesFromJS(t) {
if (!this.enableScripting)
return;
const e = this.annotationStorage.getRawValue(this.data.id);
if (!e)
return;
const s = this._commonActions;
for (const [i, r] of Object.entries(e)) {
const a = s[i];
if (a) {
const l = {
detail: {
[i]: r
},
target: t
};
a(l), delete e[i];
}
}
}
_createQuadrilaterals() {
if (!this.container)
return;
const {
quadPoints: t
} = this.data;
if (!t)
return;
const [e, s, i, r] = this.data.rect.map((y) => Math.fround(y));
if (t.length === 8) {
const [y, _, A, S] = t.subarray(2, 6);
if (i === y && r === _ && e === A && s === S)
return;
}
const {
style: a
} = this.container;
let l;
if (o(this, uo)) {
const {
borderColor: y,
borderWidth: _
} = a;
a.borderWidth = 0, l = ["url('data:image/svg+xml;utf8,", '<svg xmlns="http://www.w3.org/2000/svg"', ' preserveAspectRatio="none" viewBox="0 0 1 1">', `<g fill="transparent" stroke="${y}" stroke-width="${_}">`], this.container.classList.add("hasBorder");
}
const c = i - e, h = r - s, {
svgFactory: u
} = this, d = u.createElement("svg");
d.classList.add("quadrilateralsContainer"), d.setAttribute("width", 0), d.setAttribute("height", 0);
const f = u.createElement("defs");
d.append(f);
const g = u.createElement("clipPath"), m = `clippath_${this.data.id}`;
g.setAttribute("id", m), g.setAttribute("clipPathUnits", "objectBoundingBox"), f.append(g);
for (let y = 2, _ = t.length; y < _; y += 8) {
const A = t[y], S = t[y + 1], E = t[y + 2], x = t[y + 3], T = u.createElement("rect"), k = (E - e) / c, C = (r - S) / h, P = (A - E) / c, j = (S - x) / h;
T.setAttribute("x", k), T.setAttribute("y", C), T.setAttribute("width", P), T.setAttribute("height", j), g.append(T), l == null || l.push(`<rect vector-effect="non-scaling-stroke" x="${k}" y="${C}" width="${P}" height="${j}"/>`);
}
o(this, uo) && (l.push("</g></svg>')"), a.backgroundImage = l.join("")), this.container.append(d), this.container.style.clipPath = `url(#${m})`;
}
_createPopup() {
const {
data: t
} = this, e = p(this, fo, new Wf({
data: {
color: t.color,
titleObj: t.titleObj,
modificationDate: t.modificationDate,
contentsObj: t.contentsObj,
richText: t.richText,
parentRect: t.rect,
borderStyle: 0,
id: `popup_${t.id}`,
rotation: t.rotation
},
parent: this.parent,
elements: [this]
}));
this.parent.div.append(e.render());
}
render() {
Et("Abstract method `AnnotationElement.render` called");
}
_getElementsByName(t, e = null) {
const s = [];
if (this._fieldObjects) {
const i = this._fieldObjects[t];
if (i)
for (const {
page: r,
id: a,
exportValues: l
} of i) {
if (r === -1 || a === e)
continue;
const c = typeof l == "string" ? l : null, h = document.querySelector(`[data-element-id="${a}"]`);
if (h && !ga.has(h)) {
st(`_getElementsByName - element not allowed: ${a}`);
continue;
}
s.push({
id: a,
exportValue: c,
domElement: h
});
}
return s;
}
for (const i of document.getElementsByName(t)) {
const {
exportValue: r
} = i, a = i.getAttribute("data-element-id");
a !== e && ga.has(i) && s.push({
id: a,
exportValue: r,
domElement: i
});
}
return s;
}
show() {
var t;
this.container && (this.container.hidden = !1), (t = this.popup) == null || t.maybeShow();
}
hide() {
var t;
this.container && (this.container.hidden = !0), (t = this.popup) == null || t.forceHide();
}
getElementsToTriggerPopup() {
return this.container;
}
addHighlightArea() {
const t = this.getElementsToTriggerPopup();
if (Array.isArray(t))
for (const e of t)
e.classList.add("highlightArea");
else
t.classList.add("highlightArea");
}
_editOnDoubleClick() {
if (!this._isEditable)
return;
const {
annotationEditorType: t,
data: {
id: e
}
} = this;
this.container.addEventListener("dblclick", () => {
var s;
(s = this.linkService.eventBus) == null || s.dispatch("switchannotationeditormode", {
source: this,
mode: t,
editId: e
});
});
}
};
Dr = new WeakMap(), uo = new WeakMap(), fo = new WeakMap(), Yc = new WeakSet(), qf = function(t) {
const {
container: {
style: e
},
data: {
rect: s,
rotation: i
},
parent: {
viewport: {
rawDims: {
pageWidth: r,
pageHeight: a,
pageX: l,
pageY: c
}
}
}
} = this;
s == null || s.splice(0, 4, ...t);
const {
width: h,
height: u
} = Ln(t);
e.left = `${100 * (t[0] - l) / r}%`, e.top = `${100 * (a - t[3] + c) / a}%`, i === 0 ? (e.width = `${100 * h / r}%`, e.height = `${100 * u / a}%`) : this.setRotation(i);
};
let zt = Qp;
var is, Yn, zb, Vb;
class Ub extends zt {
constructor(e, s = null) {
super(e, {
isRenderable: !0,
ignoreBorder: !!(s != null && s.ignoreBorder),
createQuadrilaterals: !0
});
b(this, is);
this.isTooltipOnly = e.data.isTooltipOnly;
}
render() {
const {
data: e,
linkService: s
} = this, i = document.createElement("a");
i.setAttribute("data-element-id", e.id);
let r = !1;
return e.url ? (s.addLinkAttributes(i, e.url, e.newWindow), r = !0) : e.action ? (this._bindNamedAction(i, e.action), r = !0) : e.attachment ? (v(this, is, zb).call(this, i, e.attachment, e.attachmentDest), r = !0) : e.setOCGState ? (v(this, is, Vb).call(this, i, e.setOCGState), r = !0) : e.dest ? (this._bindLink(i, e.dest), r = !0) : (e.actions && (e.actions.Action || e.actions["Mouse Up"] || e.actions["Mouse Down"]) && this.enableScripting && this.hasJSActions && (this._bindJSAction(i, e), r = !0), e.resetForm ? (this._bindResetFormAction(i, e.resetForm), r = !0) : this.isTooltipOnly && !r && (this._bindLink(i, ""), r = !0)), this.container.classList.add("linkAnnotation"), r && this.container.append(i), this.container;
}
_bindLink(e, s) {
e.href = this.linkService.getDestinationHash(s), e.onclick = () => (s && this.linkService.goToDestination(s), !1), (s || s === "") && v(this, is, Yn).call(this);
}
_bindNamedAction(e, s) {
e.href = this.linkService.getAnchorUrl(""), e.onclick = () => (this.linkService.executeNamedAction(s), !1), v(this, is, Yn).call(this);
}
_bindJSAction(e, s) {
e.href = this.linkService.getAnchorUrl("");
const i = /* @__PURE__ */ new Map([["Action", "onclick"], ["Mouse Up", "onmouseup"], ["Mouse Down", "onmousedown"]]);
for (const r of Object.keys(s.actions)) {
const a = i.get(r);
a && (e[a] = () => {
var l;
return (l = this.linkService.eventBus) == null || l.dispatch("dispatcheventinsandbox", {
source: this,
detail: {
id: s.id,
name: r
}
}), !1;
});
}
e.onclick || (e.onclick = () => !1), v(this, is, Yn).call(this);
}
_bindResetFormAction(e, s) {
const i = e.onclick;
if (i || (e.href = this.linkService.getAnchorUrl("")), v(this, is, Yn).call(this), !this._fieldObjects) {
st('_bindResetFormAction - "resetForm" action not supported, ensure that the `fieldObjects` parameter is provided.'), i || (e.onclick = () => !1);
return;
}
e.onclick = () => {
var d;
i == null || i();
const {
fields: r,
refs: a,
include: l
} = s, c = [];
if (r.length !== 0 || a.length !== 0) {
const f = new Set(a);
for (const g of r) {
const m = this._fieldObjects[g] || [];
for (const {
id: y
} of m)
f.add(y);
}
for (const g of Object.values(this._fieldObjects))
for (const m of g)
f.has(m.id) === l && c.push(m);
} else
for (const f of Object.values(this._fieldObjects))
c.push(...f);
const h = this.annotationStorage, u = [];
for (const f of c) {
const {
id: g
} = f;
switch (u.push(g), f.type) {
case "text": {
const y = f.defaultValue || "";
h.setValue(g, {
value: y
});
break;
}
case "checkbox":
case "radiobutton": {
const y = f.defaultValue === f.exportValues;
h.setValue(g, {
value: y
});
break;
}
case "combobox":
case "listbox": {
const y = f.defaultValue || "";
h.setValue(g, {
value: y
});
break;
}
default:
continue;
}
const m = document.querySelector(`[data-element-id="${g}"]`);
if (m) {
if (!ga.has(m)) {
st(`_bindResetFormAction - element not allowed: ${g}`);
continue;
}
} else continue;
m.dispatchEvent(new Event("resetform"));
}
return this.enableScripting && ((d = this.linkService.eventBus) == null || d.dispatch("dispatcheventinsandbox", {
source: this,
detail: {
id: "app",
ids: u,
name: "ResetForm"
}
})), !1;
};
}
}
is = new WeakSet(), Yn = function() {
this.container.setAttribute("data-internal-link", "");
}, zb = function(e, s, i = null) {
e.href = this.linkService.getAnchorUrl(""), s.description && (e.title = s.description), e.onclick = () => {
var r;
return (r = this.downloadManager) == null || r.openOrDownloadData(s.content, s.filename, i), !1;
}, v(this, is, Yn).call(this);
}, Vb = function(e, s) {
e.href = this.linkService.getAnchorUrl(""), e.onclick = () => (this.linkService.executeSetOCGState(s), !1), v(this, is, Yn).call(this);
};
class tT extends zt {
constructor(t) {
super(t, {
isRenderable: !0
});
}
render() {
this.container.classList.add("textAnnotation");
const t = document.createElement("img");
return t.src = this.imageResourcesPath + "annotation-" + this.data.name.toLowerCase() + ".svg", t.setAttribute("data-l10n-id", "pdfjs-text-annotation-type"), t.setAttribute("data-l10n-args", JSON.stringify({
type: this.data.name
})), !this.data.popupRef && this.hasPopupData && this._createPopup(), this.container.append(t), this.container;
}
}
class ba extends zt {
render() {
return this.container;
}
showElementAndHideCanvas(t) {
var e;
this.data.hasOwnCanvas && (((e = t.previousSibling) == null ? void 0 : e.nodeName) === "CANVAS" && (t.previousSibling.hidden = !0), t.hidden = !1);
}
_getKeyModifier(t) {
return Me.platform.isMac ? t.metaKey : t.ctrlKey;
}
_setEventListener(t, e, s, i, r) {
s.includes("mouse") ? t.addEventListener(s, (a) => {
var l;
(l = this.linkService.eventBus) == null || l.dispatch("dispatcheventinsandbox", {
source: this,
detail: {
id: this.data.id,
name: i,
value: r(a),
shift: a.shiftKey,
modifier: this._getKeyModifier(a)
}
});
}) : t.addEventListener(s, (a) => {
var l;
if (s === "blur") {
if (!e.focused || !a.relatedTarget)
return;
e.focused = !1;
} else if (s === "focus") {
if (e.focused)
return;
e.focused = !0;
}
r && ((l = this.linkService.eventBus) == null || l.dispatch("dispatcheventinsandbox", {
source: this,
detail: {
id: this.data.id,
name: i,
value: r(a)
}
}));
});
}
_setEventListeners(t, e, s, i) {
var r, a, l;
for (const [c, h] of s)
(h === "Action" || (r = this.data.actions) != null && r[h]) && ((h === "Focus" || h === "Blur") && (e || (e = {
focused: !1
})), this._setEventListener(t, e, c, h, i), h === "Focus" && !((a = this.data.actions) != null && a.Blur) ? this._setEventListener(t, e, "blur", "Blur", null) : h === "Blur" && !((l = this.data.actions) != null && l.Focus) && this._setEventListener(t, e, "focus", "Focus", null));
}
_setBackgroundColor(t) {
const e = this.data.backgroundColor || null;
t.style.backgroundColor = e === null ? "transparent" : U.makeHexColor(e[0], e[1], e[2]);
}
_setTextStyle(t) {
const e = ["left", "center", "right"], {
fontColor: s
} = this.data.defaultAppearanceData, i = this.data.defaultAppearanceData.fontSize || Jx, r = t.style;
let a;
const l = 2, c = (h) => Math.round(10 * h) / 10;
if (this.data.multiLine) {
const h = Math.abs(this.data.rect[3] - this.data.rect[1] - l), u = Math.round(h / (zd * i)) || 1, d = h / u;
a = Math.min(i, c(d / zd));
} else {
const h = Math.abs(this.data.rect[3] - this.data.rect[1] - l);
a = Math.min(i, c(h / zd));
}
r.fontSize = `calc(${a}px * var(--scale-factor))`, r.color = U.makeHexColor(s[0], s[1], s[2]), this.data.textAlignment !== null && (r.textAlign = e[this.data.textAlignment]);
}
_setRequired(t, e) {
e ? t.setAttribute("required", !0) : t.removeAttribute("required"), t.setAttribute("aria-required", e);
}
}
class eT extends ba {
constructor(t) {
const e = t.renderForms || t.data.hasOwnCanvas || !t.data.hasAppearance && !!t.data.fieldValue;
super(t, {
isRenderable: e
});
}
setPropertyOnSiblings(t, e, s, i) {
const r = this.annotationStorage;
for (const a of this._getElementsByName(t.name, t.id))
a.domElement && (a.domElement[e] = s), r.setValue(a.id, {
[i]: s
});
}
render() {
var i, r;
const t = this.annotationStorage, e = this.data.id;
this.container.classList.add("textWidgetAnnotation");
let s = null;
if (this.renderForms) {
const a = t.getValue(e, {
value: this.data.fieldValue
});
let l = a.value || "";
const c = t.getValue(e, {
charLimit: this.data.maxLen
}).charLimit;
c && l.length > c && (l = l.slice(0, c));
let h = a.formattedValue || ((i = this.data.textContent) == null ? void 0 : i.join(`
`)) || null;
h && this.data.comb && (h = h.replaceAll(/\s+/g, ""));
const u = {
userValue: l,
formattedValue: h,
lastCommittedValue: null,
commitKey: 1,
focused: !1
};
this.data.multiLine ? (s = document.createElement("textarea"), s.textContent = h ?? l, this.data.doNotScroll && (s.style.overflowY = "hidden")) : (s = document.createElement("input"), s.type = "text", s.setAttribute("value", h ?? l), this.data.doNotScroll && (s.style.overflowX = "hidden")), this.data.hasOwnCanvas && (s.hidden = !0), ga.add(s), s.setAttribute("data-element-id", e), s.disabled = this.data.readOnly, s.name = this.data.fieldName, s.tabIndex = Lh, this._setRequired(s, this.data.required), c && (s.maxLength = c), s.addEventListener("input", (f) => {
t.setValue(e, {
value: f.target.value
}), this.setPropertyOnSiblings(s, "value", f.target.value, "value"), u.formattedValue = null;
}), s.addEventListener("resetform", (f) => {
const g = this.data.defaultFieldValue ?? "";
s.value = u.userValue = g, u.formattedValue = null;
});
let d = (f) => {
const {
formattedValue: g
} = u;
g != null && (f.target.value = g), f.target.scrollLeft = 0;
};
if (this.enableScripting && this.hasJSActions) {
s.addEventListener("focus", (g) => {
var y;
if (u.focused)
return;
const {
target: m
} = g;
u.userValue && (m.value = u.userValue), u.lastCommittedValue = m.value, u.commitKey = 1, (y = this.data.actions) != null && y.Focus || (u.focused = !0);
}), s.addEventListener("updatefromsandbox", (g) => {
this.showElementAndHideCanvas(g.target);
const m = {
value(y) {
u.userValue = y.detail.value ?? "", t.setValue(e, {
value: u.userValue.toString()
}), y.target.value = u.userValue;
},
formattedValue(y) {
const {
formattedValue: _
} = y.detail;
u.formattedValue = _, _ != null && y.target !== document.activeElement && (y.target.value = _), t.setValue(e, {
formattedValue: _
});
},
selRange(y) {
y.target.setSelectionRange(...y.detail.selRange);
},
charLimit: (y) => {
var E;
const {
charLimit: _
} = y.detail, {
target: A
} = y;
if (_ === 0) {
A.removeAttribute("maxLength");
return;
}
A.setAttribute("maxLength", _);
let S = u.userValue;
!S || S.length <= _ || (S = S.slice(0, _), A.value = u.userValue = S, t.setValue(e, {
value: S
}), (E = this.linkService.eventBus) == null || E.dispatch("dispatcheventinsandbox", {
source: this,
detail: {
id: e,
name: "Keystroke",
value: S,
willCommit: !0,
commitKey: 1,
selStart: A.selectionStart,
selEnd: A.selectionEnd
}
}));
}
};
this._dispatchEventFromSandbox(m, g);
}), s.addEventListener("keydown", (g) => {
var _;
u.commitKey = 1;
let m = -1;
if (g.key === "Escape" ? m = 0 : g.key === "Enter" && !this.data.multiLine ? m = 2 : g.key === "Tab" && (u.commitKey = 3), m === -1)
return;
const {
value: y
} = g.target;
u.lastCommittedValue !== y && (u.lastCommittedValue = y, u.userValue = y, (_ = this.linkService.eventBus) == null || _.dispatch("dispatcheventinsandbox", {
source: this,
detail: {
id: e,
name: "Keystroke",
value: y,
willCommit: !0,
commitKey: m,
selStart: g.target.selectionStart,
selEnd: g.target.selectionEnd
}
}));
});
const f = d;
d = null, s.addEventListener("blur", (g) => {
var y, _;
if (!u.focused || !g.relatedTarget)
return;
(y = this.data.actions) != null && y.Blur || (u.focused = !1);
const {
value: m
} = g.target;
u.userValue = m, u.lastCommittedValue !== m && ((_ = this.linkService.eventBus) == null || _.dispatch("dispatcheventinsandbox", {
source: this,
detail: {
id: e,
name: "Keystroke",
value: m,
willCommit: !0,
commitKey: u.commitKey,
selStart: g.target.selectionStart,
selEnd: g.target.selectionEnd
}
})), f(g);
}), (r = this.data.actions) != null && r.Keystroke && s.addEventListener("beforeinput", (g) => {
var T;
u.lastCommittedValue = null;
const {
data: m,
target: y
} = g, {
value: _,
selectionStart: A,
selectionEnd: S
} = y;
let E = A, x = S;
switch (g.inputType) {
case "deleteWordBackward": {
const k = _.substring(0, A).match(/\w*[^\w]*$/);
k && (E -= k[0].length);
break;
}
case "deleteWordForward": {
const k = _.substring(A).match(/^[^\w]*\w*/);
k && (x += k[0].length);
break;
}
case "deleteContentBackward":
A === S && (E -= 1);
break;
case "deleteContentForward":
A === S && (x += 1);
break;
}
g.preventDefault(), (T = this.linkService.eventBus) == null || T.dispatch("dispatcheventinsandbox", {
source: this,
detail: {
id: e,
name: "Keystroke",
value: _,
change: m || "",
willCommit: !1,
selStart: E,
selEnd: x
}
});
}), this._setEventListeners(s, u, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], (g) => g.target.value);
}
if (d && s.addEventListener("blur", d), this.data.comb) {
const g = (this.data.rect[2] - this.data.rect[0]) / c;
s.classList.add("comb"), s.style.letterSpacing = `calc(${g}px * var(--scale-factor) - 1ch)`;
}
} else
s = document.createElement("div"), s.textContent = this.data.fieldValue, s.style.verticalAlign = "middle", s.style.display = "table-cell", this.data.hasOwnCanvas && (s.hidden = !0);
return this._setTextStyle(s), this._setBackgroundColor(s), this._setDefaultPropertiesFromJS(s), this.container.append(s), this.container;
}
}
class sT extends ba {
constructor(t) {
super(t, {
isRenderable: !!t.data.hasOwnCanvas
});
}
}
class iT extends ba {
constructor(t) {
super(t, {
isRenderable: t.renderForms
});
}
render() {
const t = this.annotationStorage, e = this.data, s = e.id;
let i = t.getValue(s, {
value: e.exportValue === e.fieldValue
}).value;
typeof i == "string" && (i = i !== "Off", t.setValue(s, {
value: i
})), this.container.classList.add("buttonWidgetAnnotation", "checkBox");
const r = document.createElement("input");
return ga.add(r), r.setAttribute("data-element-id", s), r.disabled = e.readOnly, this._setRequired(r, this.data.required), r.type = "checkbox", r.name = e.fieldName, i && r.setAttribute("checked", !0), r.setAttribute("exportValue", e.exportValue), r.tabIndex = Lh, r.addEventListener("change", (a) => {
const {
name: l,
checked: c
} = a.target;
for (const h of this._getElementsByName(l, s)) {
const u = c && h.exportValue === e.exportValue;
h.domElement && (h.domElement.checked = u), t.setValue(h.id, {
value: u
});
}
t.setValue(s, {
value: c
});
}), r.addEventListener("resetform", (a) => {
const l = e.defaultFieldValue || "Off";
a.target.checked = l === e.exportValue;
}), this.enableScripting && this.hasJSActions && (r.addEventListener("updatefromsandbox", (a) => {
const l = {
value(c) {
c.target.checked = c.detail.value !== "Off", t.setValue(s, {
value: c.target.checked
});
}
};
this._dispatchEventFromSandbox(l, a);
}), this._setEventListeners(r, null, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], (a) => a.target.checked)), this._setBackgroundColor(r), this._setDefaultPropertiesFromJS(r), this.container.append(r), this.container;
}
}
class Gb extends ba {
constructor(t) {
super(t, {
isRenderable: t.renderForms
});
}
render() {
this.container.classList.add("buttonWidgetAnnotation", "radioButton");
const t = this.annotationStorage, e = this.data, s = e.id;
let i = t.getValue(s, {
value: e.fieldValue === e.buttonValue
}).value;
if (typeof i == "string" && (i = i !== e.buttonValue, t.setValue(s, {
value: i
})), i)
for (const a of this._getElementsByName(e.fieldName, s))
t.setValue(a.id, {
value: !1
});
const r = document.createElement("input");
if (ga.add(r), r.setAttribute("data-element-id", s), r.disabled = e.readOnly, this._setRequired(r, this.data.required), r.type = "radio", r.name = e.fieldName, i && r.setAttribute("checked", !0), r.tabIndex = Lh, r.addEventListener("change", (a) => {
const {
name: l,
checked: c
} = a.target;
for (const h of this._getElementsByName(l, s))
t.setValue(h.id, {
value: !1
});
t.setValue(s, {
value: c
});
}), r.addEventListener("resetform", (a) => {
const l = e.defaultFieldValue;
a.target.checked = l != null && l === e.buttonValue;
}), this.enableScripting && this.hasJSActions) {
const a = e.buttonValue;
r.addEventListener("updatefromsandbox", (l) => {
const c = {
value: (h) => {
const u = a === h.detail.value;
for (const d of this._getElementsByName(h.target.name)) {
const f = u && d.id === s;
d.domElement && (d.domElement.checked = f), t.setValue(d.id, {
value: f
});
}
}
};
this._dispatchEventFromSandbox(c, l);
}), this._setEventListeners(r, null, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], (l) => l.target.checked);
}
return this._setBackgroundColor(r), this._setDefaultPropertiesFromJS(r), this.container.append(r), this.container;
}
}
class nT extends Ub {
constructor(t) {
super(t, {
ignoreBorder: t.data.hasAppearance
});
}
render() {
const t = super.render();
t.classList.add("buttonWidgetAnnotation", "pushButton");
const e = t.lastChild;
return this.enableScripting && this.hasJSActions && e && (this._setDefaultPropertiesFromJS(e), e.addEventListener("updatefromsandbox", (s) => {
this._dispatchEventFromSandbox({}, s);
})), t;
}
}
class rT extends ba {
constructor(t) {
super(t, {
isRenderable: t.renderForms
});
}
render() {
this.container.classList.add("choiceWidgetAnnotation");
const t = this.annotationStorage, e = this.data.id, s = t.getValue(e, {
value: this.data.fieldValue
}), i = document.createElement("select");
ga.add(i), i.setAttribute("data-element-id", e), i.disabled = this.data.readOnly, this._setRequired(i, this.data.required), i.name = this.data.fieldName, i.tabIndex = Lh;
let r = this.data.combo && this.data.options.length > 0;
this.data.combo || (i.size = this.data.options.length, this.data.multiSelect && (i.multiple = !0)), i.addEventListener("resetform", (u) => {
const d = this.data.defaultFieldValue;
for (const f of i.options)
f.selected = f.value === d;
});
for (const u of this.data.options) {
const d = document.createElement("option");
d.textContent = u.displayValue, d.value = u.exportValue, s.value.includes(u.exportValue) && (d.setAttribute("selected", !0), r = !1), i.append(d);
}
let a = null;
if (r) {
const u = document.createElement("option");
u.value = " ", u.setAttribute("hidden", !0), u.setAttribute("selected", !0), i.prepend(u), a = () => {
u.remove(), i.removeEventListener("input", a), a = null;
}, i.addEventListener("input", a);
}
const l = (u) => {
const d = u ? "value" : "textContent", {
options: f,
multiple: g
} = i;
return g ? Array.prototype.filter.call(f, (m) => m.selected).map((m) => m[d]) : f.selectedIndex === -1 ? null : f[f.selectedIndex][d];
};
let c = l(!1);
const h = (u) => {
const d = u.target.options;
return Array.prototype.map.call(d, (f) => ({
displayValue: f.textContent,
exportValue: f.value
}));
};
return this.enableScripting && this.hasJSActions ? (i.addEventListener("updatefromsandbox", (u) => {
const d = {
value(f) {
a == null || a();
const g = f.detail.value, m = new Set(Array.isArray(g) ? g : [g]);
for (const y of i.options)
y.selected = m.has(y.value);
t.setValue(e, {
value: l(!0)
}), c = l(!1);
},
multipleSelection(f) {
i.multiple = !0;
},
remove(f) {
const g = i.options, m = f.detail.remove;
g[m].selected = !1, i.remove(m), g.length > 0 && Array.prototype.findIndex.call(g, (_) => _.selected) === -1 && (g[0].selected = !0), t.setValue(e, {
value: l(!0),
items: h(f)
}), c = l(!1);
},
clear(f) {
for (; i.length !== 0; )
i.remove(0);
t.setValue(e, {
value: null,
items: []
}), c = l(!1);
},
insert(f) {
const {
index: g,
displayValue: m,
exportValue: y
} = f.detail.insert, _ = i.children[g], A = document.createElement("option");
A.textContent = m, A.value = y, _ ? _.before(A) : i.append(A), t.setValue(e, {
value: l(!0),
items: h(f)
}), c = l(!1);
},
items(f) {
const {
items: g
} = f.detail;
for (; i.length !== 0; )
i.remove(0);
for (const m of g) {
const {
displayValue: y,
exportValue: _
} = m, A = document.createElement("option");
A.textContent = y, A.value = _, i.append(A);
}
i.options.length > 0 && (i.options[0].selected = !0), t.setValue(e, {
value: l(!0),
items: h(f)
}), c = l(!1);
},
indices(f) {
const g = new Set(f.detail.indices);
for (const m of f.target.options)
m.selected = g.has(m.index);
t.setValue(e, {
value: l(!0)
}), c = l(!1);
},
editable(f) {
f.target.disabled = !f.detail.editable;
}
};
this._dispatchEventFromSandbox(d, u);
}), i.addEventListener("input", (u) => {
var g;
const d = l(!0), f = l(!1);
t.setValue(e, {
value: d
}), u.preventDefault(), (g = this.linkService.eventBus) == null || g.dispatch("dispatcheventinsandbox", {
source: this,
detail: {
id: e,
name: "Keystroke",
value: c,
change: f,
changeEx: d,
willCommit: !1,
commitKey: 1,
keyDown: !1
}
});
}), this._setEventListeners(i, null, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"], ["input", "Action"], ["input", "Validate"]], (u) => u.target.value)) : i.addEventListener("input", function(u) {
t.setValue(e, {
value: l(!0)
});
}), this.data.combo && this._setTextStyle(i), this._setBackgroundColor(i), this._setDefaultPropertiesFromJS(i), this.container.append(i), this.container;
}
}
class Wf extends zt {
constructor(t) {
const {
data: e,
elements: s
} = t;
super(t, {
isRenderable: zt._hasPopupData(e)
}), this.elements = s, this.popup = null;
}
render() {
this.container.classList.add("popupAnnotation");
const t = this.popup = new aT({
container: this.container,
color: this.data.color,
titleObj: this.data.titleObj,
modificationDate: this.data.modificationDate,
contentsObj: this.data.contentsObj,
richText: this.data.richText,
rect: this.data.rect,
parentRect: this.data.parentRect || null,
parent: this.parent,
elements: this.elements,
open: this.data.open
}), e = [];
for (const s of this.elements)
s.popup = t, s.container.ariaHasPopup = "dialog", e.push(s.data.id), s.addHighlightArea();
return this.container.setAttribute("aria-controls", e.map((s) => `${Hp}${s}`).join(",")), this.container;
}
}
var po, rd, ad, go, Fr, jt, Li, mo, Kc, Jc, yo, Di, ks, Fi, Qc, $i, th, $r, jr, wt, au, Xf, qb, Wb, Xb, Zb, ou, lu, Zf;
class aT {
constructor({
container: t,
color: e,
elements: s,
titleObj: i,
modificationDate: r,
contentsObj: a,
richText: l,
parent: c,
rect: h,
parentRect: u,
open: d
}) {
b(this, wt);
b(this, po, v(this, wt, Xb).bind(this));
b(this, rd, v(this, wt, Zf).bind(this));
b(this, ad, v(this, wt, lu).bind(this));
b(this, go, v(this, wt, ou).bind(this));
b(this, Fr, null);
b(this, jt, null);
b(this, Li, null);
b(this, mo, null);
b(this, Kc, null);
b(this, Jc, null);
b(this, yo, null);
b(this, Di, !1);
b(this, ks, null);
b(this, Fi, null);
b(this, Qc, null);
b(this, $i, null);
b(this, th, null);
b(this, $r, null);
b(this, jr, !1);
var f;
p(this, jt, t), p(this, th, i), p(this, Li, a), p(this, $i, l), p(this, Jc, c), p(this, Fr, e), p(this, Qc, h), p(this, yo, u), p(this, Kc, s), p(this, mo, Vp.toDateObject(r)), this.trigger = s.flatMap((g) => g.getElementsToTriggerPopup());
for (const g of this.trigger)
g.addEventListener("click", o(this, go)), g.addEventListener("mouseenter", o(this, ad)), g.addEventListener("mouseleave", o(this, rd)), g.classList.add("popupTriggerArea");
for (const g of s)
(f = g.container) == null || f.addEventListener("keydown", o(this, po));
o(this, jt).hidden = !0, d && v(this, wt, ou).call(this);
}
render() {
if (o(this, ks))
return;
const t = p(this, ks, document.createElement("div"));
if (t.className = "popup", o(this, Fr)) {
const r = t.style.outlineColor = U.makeHexColor(...o(this, Fr));
CSS.supports("background-color", "color-mix(in srgb, red 30%, white)") ? t.style.backgroundColor = `color-mix(in srgb, ${r} 30%, white)` : t.style.backgroundColor = U.makeHexColor(...o(this, Fr).map((l) => Math.floor(0.7 * (255 - l) + l)));
}
const e = document.createElement("span");
e.className = "header";
const s = document.createElement("h1");
if (e.append(s), {
dir: s.dir,
str: s.textContent
} = o(this, th), t.append(e), o(this, mo)) {
const r = document.createElement("span");
r.classList.add("popupDate"), r.setAttribute("data-l10n-id", "pdfjs-annotation-date-time-string"), r.setAttribute("data-l10n-args", JSON.stringify({
dateObj: o(this, mo).valueOf()
})), e.append(r);
}
const i = o(this, wt, au);
if (i)
Hb.render({
xfaHtml: i,
intent: "richText",
div: t
}), t.lastChild.classList.add("richText", "popupContent");
else {
const r = this._formatContents(o(this, Li));
t.append(r);
}
o(this, jt).append(t);
}
_formatContents({
str: t,
dir: e
}) {
const s = document.createElement("p");
s.classList.add("popupContent"), s.dir = e;
const i = t.split(/(?:\r\n?|\n)/);
for (let r = 0, a = i.length; r < a; ++r) {
const l = i[r];
s.append(document.createTextNode(l)), r < a - 1 && s.append(document.createElement("br"));
}
return s;
}
updateEdited({
rect: t,
popupContent: e
}) {
var s;
o(this, $r) || p(this, $r, {
contentsObj: o(this, Li),
richText: o(this, $i)
}), t && p(this, Fi, null), e && (p(this, $i, v(this, wt, Wb).call(this, e)), p(this, Li, null)), (s = o(this, ks)) == null || s.remove(), p(this, ks, null);
}
resetEdited() {
var t;
o(this, $r) && ({
contentsObj: xe(this, Li)._,
richText: xe(this, $i)._
} = o(this, $r), p(this, $r, null), (t = o(this, ks)) == null || t.remove(), p(this, ks, null), p(this, Fi, null));
}
forceHide() {
p(this, jr, this.isVisible), o(this, jr) && (o(this, jt).hidden = !0);
}
maybeShow() {
o(this, jr) && (o(this, ks) || v(this, wt, lu).call(this), p(this, jr, !1), o(this, jt).hidden = !1);
}
get isVisible() {
return o(this, jt).hidden === !1;
}
}
po = new WeakMap(), rd = new WeakMap(), ad = new WeakMap(), go = new WeakMap(), Fr = new WeakMap(), jt = new WeakMap(), Li = new WeakMap(), mo = new WeakMap(), Kc = new WeakMap(), Jc = new WeakMap(), yo = new WeakMap(), Di = new WeakMap(), ks = new WeakMap(), Fi = new WeakMap(), Qc = new WeakMap(), $i = new WeakMap(), th = new WeakMap(), $r = new WeakMap(), jr = new WeakMap(), wt = new WeakSet(), au = function() {
const t = o(this, $i), e = o(this, Li);
return t != null && t.str && (!(e != null && e.str) || e.str === t.str) && o(this, $i).html || null;
}, Xf = function() {
var t, e, s;
return ((s = (e = (t = o(this, wt, au)) == null ? void 0 : t.attributes) == null ? void 0 : e.style) == null ? void 0 : s.fontSize) || 0;
}, qb = function() {
var t, e, s;
return ((s = (e = (t = o(this, wt, au)) == null ? void 0 : t.attributes) == null ? void 0 : e.style) == null ? void 0 : s.color) || null;
}, Wb = function(t) {
const e = [], s = {
str: t,
html: {
name: "div",
attributes: {
dir: "auto"
},
children: [{
name: "p",
children: e
}]
}
}, i = {
style: {
color: o(this, wt, qb),
fontSize: o(this, wt, Xf) ? `calc(${o(this, wt, Xf)}px * var(--scale-factor))` : ""
}
};
for (const r of t.split(`
`))
e.push({
name: "span",
value: r,
attributes: i
});
return s;
}, Xb = function(t) {
t.altKey || t.shiftKey || t.ctrlKey || t.metaKey || (t.key === "Enter" || t.key === "Escape" && o(this, Di)) && v(this, wt, ou).call(this);
}, Zb = function() {
if (o(this, Fi) !== null)
return;
const {
page: {
view: t
},
viewport: {
rawDims: {
pageWidth: e,
pageHeight: s,
pageX: i,
pageY: r
}
}
} = o(this, Jc);
let a = !!o(this, yo), l = a ? o(this, yo) : o(this, Qc);
for (const m of o(this, Kc))
if (!l || U.intersect(m.data.rect, l) !== null) {
l = m.data.rect, a = !0;
break;
}
const c = U.normalizeRect([l[0], t[3] - l[1] + t[1], l[2], t[3] - l[3] + t[1]]), u = a ? l[2] - l[0] + 5 : 0, d = c[0] + u, f = c[1];
p(this, Fi, [100 * (d - i) / e, 100 * (f - r) / s]);
const {
style: g
} = o(this, jt);
g.left = `${o(this, Fi)[0]}%`, g.top = `${o(this, Fi)[1]}%`;
}, ou = function() {
p(this, Di, !o(this, Di)), o(this, Di) ? (v(this, wt, lu).call(this), o(this, jt).addEventListener("click", o(this, go)), o(this, jt).addEventListener("keydown", o(this, po))) : (v(this, wt, Zf).call(this), o(this, jt).removeEventListener("click", o(this, go)), o(this, jt).removeEventListener("keydown", o(this, po)));
}, lu = function() {
o(this, ks) || this.render(), this.isVisible ? o(this, Di) && o(this, jt).classList.add("focused") : (v(this, wt, Zb).call(this), o(this, jt).hidden = !1, o(this, jt).style.zIndex = parseInt(o(this, jt).style.zIndex) + 1e3);
}, Zf = function() {
o(this, jt).classList.remove("focused"), !(o(this, Di) || !this.isVisible) && (o(this, jt).hidden = !0, o(this, jt).style.zIndex = parseInt(o(this, jt).style.zIndex) - 1e3);
};
class Yb extends zt {
constructor(t) {
super(t, {
isRenderable: !0,
ignoreBorder: !0
}), this.textContent = t.data.textContent, this.textPosition = t.data.textPosition, this.annotationEditorType = et.FREETEXT;
}
render() {
if (this.container.classList.add("freeTextAnnotation"), this.textContent) {
const t = document.createElement("div");
t.classList.add("annotationTextContent"), t.setAttribute("role", "comment");
for (const e of this.textContent) {
const s = document.createElement("span");
s.textContent = e, t.append(s);
}
this.container.append(t);
}
return !this.data.popupRef && this.hasPopupData && this._createPopup(), this._editOnDoubleClick(), this.container;
}
}
var eh;
class oT extends zt {
constructor(e) {
super(e, {
isRenderable: !0,
ignoreBorder: !0
});
b(this, eh, null);
}
render() {
this.container.classList.add("lineAnnotation");
const e = this.data, {
width: s,
height: i
} = Ln(e.rect), r = this.svgFactory.create(s, i, !0), a = p(this, eh, this.svgFactory.createElement("svg:line"));
return a.setAttribute("x1", e.rect[2] - e.lineCoordinates[0]), a.setAttribute("y1", e.rect[3] - e.lineCoordinates[1]), a.setAttribute("x2", e.rect[2] - e.lineCoordinates[2]), a.setAttribute("y2", e.rect[3] - e.lineCoordinates[3]), a.setAttribute("stroke-width", e.borderStyle.width || 1), a.setAttribute("stroke", "transparent"), a.setAttribute("fill", "transparent"), r.append(a), this.container.append(r), !e.popupRef && this.hasPopupData && this._createPopup(), this.container;
}
getElementsToTriggerPopup() {
return o(this, eh);
}
addHighlightArea() {
this.container.classList.add("highlightArea");
}
}
eh = new WeakMap();
var sh;
class lT extends zt {
constructor(e) {
super(e, {
isRenderable: !0,
ignoreBorder: !0
});
b(this, sh, null);
}
render() {
this.container.classList.add("squareAnnotation");
const e = this.data, {
width: s,
height: i
} = Ln(e.rect), r = this.svgFactory.create(s, i, !0), a = e.borderStyle.width, l = p(this, sh, this.svgFactory.createElement("svg:rect"));
return l.setAttribute("x", a / 2), l.setAttribute("y", a / 2), l.setAttribute("width", s - a), l.setAttribute("height", i - a), l.setAttribute("stroke-width", a || 1), l.setAttribute("stroke", "transparent"), l.setAttribute("fill", "transparent"), r.append(l), this.container.append(r), !e.popupRef && this.hasPopupData && this._createPopup(), this.container;
}
getElementsToTriggerPopup() {
return o(this, sh);
}
addHighlightArea() {
this.container.classList.add("highlightArea");
}
}
sh = new WeakMap();
var ih;
class cT extends zt {
constructor(e) {
super(e, {
isRenderable: !0,
ignoreBorder: !0
});
b(this, ih, null);
}
render() {
this.container.classList.add("circleAnnotation");
const e = this.data, {
width: s,
height: i
} = Ln(e.rect), r = this.svgFactory.create(s, i, !0), a = e.borderStyle.width, l = p(this, ih, this.svgFactory.createElement("svg:ellipse"));
return l.setAttribute("cx", s / 2), l.setAttribute("cy", i / 2), l.setAttribute("rx", s / 2 - a / 2), l.setAttribute("ry", i / 2 - a / 2), l.setAttribute("stroke-width", a || 1), l.setAttribute("stroke", "transparent"), l.setAttribute("fill", "transparent"), r.append(l), this.container.append(r), !e.popupRef && this.hasPopupData && this._createPopup(), this.container;
}
getElementsToTriggerPopup() {
return o(this, ih);
}
addHighlightArea() {
this.container.classList.add("highlightArea");
}
}
ih = new WeakMap();
var nh;
class Kb extends zt {
constructor(e) {
super(e, {
isRenderable: !0,
ignoreBorder: !0
});
b(this, nh, null);
this.containerClassName = "polylineAnnotation", this.svgElementName = "svg:polyline";
}
render() {
this.container.classList.add(this.containerClassName);
const {
data: {
rect: e,
vertices: s,
borderStyle: i,
popupRef: r
}
} = this;
if (!s)
return this.container;
const {
width: a,
height: l
} = Ln(e), c = this.svgFactory.create(a, l, !0);
let h = [];
for (let d = 0, f = s.length; d < f; d += 2) {
const g = s[d] - e[0], m = e[3] - s[d + 1];
h.push(`${g},${m}`);
}
h = h.join(" ");
const u = p(this, nh, this.svgFactory.createElement(this.svgElementName));
return u.setAttribute("points", h), u.setAttribute("stroke-width", i.width || 1), u.setAttribute("stroke", "transparent"), u.setAttribute("fill", "transparent"), c.append(u), this.container.append(c), !r && this.hasPopupData && this._createPopup(), this.container;
}
getElementsToTriggerPopup() {
return o(this, nh);
}
addHighlightArea() {
this.container.classList.add("highlightArea");
}
}
nh = new WeakMap();
class hT extends Kb {
constructor(t) {
super(t), this.containerClassName = "polygonAnnotation", this.svgElementName = "svg:polygon";
}
}
class uT extends zt {
constructor(t) {
super(t, {
isRenderable: !0,
ignoreBorder: !0
});
}
render() {
return this.container.classList.add("caretAnnotation"), !this.data.popupRef && this.hasPopupData && this._createPopup(), this.container;
}
}
var rh, Br, ah, Yf;
class Zp extends zt {
constructor(e) {
super(e, {
isRenderable: !0,
ignoreBorder: !0
});
b(this, ah);
b(this, rh, null);
b(this, Br, []);
this.containerClassName = "inkAnnotation", this.svgElementName = "svg:polyline", this.annotationEditorType = this.data.it === "InkHighlight" ? et.HIGHLIGHT : et.INK;
}
render() {
this.container.classList.add(this.containerClassName);
const {
data: {
rect: e,
rotation: s,
inkLists: i,
borderStyle: r,
popupRef: a
}
} = this, {
transform: l,
width: c,
height: h
} = v(this, ah, Yf).call(this, s, e), u = this.svgFactory.create(c, h, !0), d = p(this, rh, this.svgFactory.createElement("svg:g"));
u.append(d), d.setAttribute("stroke-width", r.width || 1), d.setAttribute("stroke-linecap", "round"), d.setAttribute("stroke-linejoin", "round"), d.setAttribute("stroke-miterlimit", 10), d.setAttribute("stroke", "transparent"), d.setAttribute("fill", "transparent"), d.setAttribute("transform", l);
for (let f = 0, g = i.length; f < g; f++) {
const m = this.svgFactory.createElement(this.svgElementName);
o(this, Br).push(m), m.setAttribute("points", i[f].join(",")), d.append(m);
}
return !a && this.hasPopupData && this._createPopup(), this.container.append(u), this._editOnDoubleClick(), this.container;
}
updateEdited(e) {
super.updateEdited(e);
const {
thickness: s,
points: i,
rect: r
} = e, a = o(this, rh);
if (s >= 0 && a.setAttribute("stroke-width", s || 1), i)
for (let l = 0, c = o(this, Br).length; l < c; l++)
o(this, Br)[l].setAttribute("points", i[l].join(","));
if (r) {
const {
transform: l,
width: c,
height: h
} = v(this, ah, Yf).call(this, this.data.rotation, r);
a.parentElement.setAttribute("viewBox", `0 0 ${c} ${h}`), a.setAttribute("transform", l);
}
}
getElementsToTriggerPopup() {
return o(this, Br);
}
addHighlightArea() {
this.container.classList.add("highlightArea");
}
}
rh = new WeakMap(), Br = new WeakMap(), ah = new WeakSet(), Yf = function(e, s) {
switch (e) {
case 90:
return {
transform: `rotate(90) translate(${-s[0]},${s[1]}) scale(1,-1)`,
width: s[3] - s[1],
height: s[2] - s[0]
};
case 180:
return {
transform: `rotate(180) translate(${-s[2]},${s[1]}) scale(1,-1)`,
width: s[2] - s[0],
height: s[3] - s[1]
};
case 270:
return {
transform: `rotate(270) translate(${-s[2]},${s[3]}) scale(1,-1)`,
width: s[3] - s[1],
height: s[2] - s[0]
};
default:
return {
transform: `translate(${-s[0]},${s[3]}) scale(1,-1)`,
width: s[2] - s[0],
height: s[3] - s[1]
};
}
};
class Jb extends zt {
constructor(t) {
super(t, {
isRenderable: !0,
ignoreBorder: !0,
createQuadrilaterals: !0
}), this.annotationEditorType = et.HIGHLIGHT;
}
render() {
return !this.data.popupRef && this.hasPopupData && this._createPopup(), this.container.classList.add("highlightAnnotation"), this._editOnDoubleClick(), this.container;
}
}
class dT extends zt {
constructor(t) {
super(t, {
isRenderable: !0,
ignoreBorder: !0,
createQuadrilaterals: !0
});
}
render() {
return !this.data.popupRef && this.hasPopupData && this._createPopup(), this.container.classList.add("underlineAnnotation"), this.container;
}
}
class fT extends zt {
constructor(t) {
super(t, {
isRenderable: !0,
ignoreBorder: !0,
createQuadrilaterals: !0
});
}
render() {
return !this.data.popupRef && this.hasPopupData && this._createPopup(), this.container.classList.add("squigglyAnnotation"), this.container;
}
}
class pT extends zt {
constructor(t) {
super(t, {
isRenderable: !0,
ignoreBorder: !0,
createQuadrilaterals: !0
});
}
render() {
return !this.data.popupRef && this.hasPopupData && this._createPopup(), this.container.classList.add("strikeoutAnnotation"), this.container;
}
}
class Qb extends zt {
constructor(t) {
super(t, {
isRenderable: !0,
ignoreBorder: !0
}), this.annotationEditorType = et.STAMP;
}
render() {
return this.container.classList.add("stampAnnotation"), this.container.setAttribute("role", "img"), !this.data.popupRef && this.hasPopupData && this._createPopup(), this._editOnDoubleClick(), this.container;
}
}
var oh, lh, Kf;
class gT extends zt {
constructor(e) {
var i;
super(e, {
isRenderable: !0
});
b(this, lh);
b(this, oh, null);
const {
file: s
} = this.data;
this.filename = s.filename, this.content = s.content, (i = this.linkService.eventBus) == null || i.dispatch("fileattachmentannotation", {
source: this,
...s
});
}
render() {
this.container.classList.add("fileAttachmentAnnotation");
const {
container: e,
data: s
} = this;
let i;
s.hasAppearance || s.fillAlpha === 0 ? i = document.createElement("div") : (i = document.createElement("img"), i.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(s.name) ? "paperclip" : "pushpin"}.svg`, s.fillAlpha && s.fillAlpha < 1 && (i.style = `filter: opacity(${Math.round(s.fillAlpha * 100)}%);`)), i.addEventListener("dblclick", v(this, lh, Kf).bind(this)), p(this, oh, i);
const {
isMac: r
} = Me.platform;
return e.addEventListener("keydown", (a) => {
a.key === "Enter" && (r ? a.metaKey : a.ctrlKey) && v(this, lh, Kf).call(this);
}), !s.popupRef && this.hasPopupData ? this._createPopup() : i.classList.add("popupTriggerArea"), e.append(i), e;
}
getElementsToTriggerPopup() {
return o(this, oh);
}
addHighlightArea() {
this.container.classList.add("highlightArea");
}
}
oh = new WeakMap(), lh = new WeakSet(), Kf = function() {
var e;
(e = this.downloadManager) == null || e.openOrDownloadData(this.content, this.filename);
};
var ch, Hr, Ur, hh, ma, tv, Jf;
class mT {
constructor({
div: t,
accessibilityManager: e,
annotationCanvasMap: s,
annotationEditorUIManager: i,
page: r,
viewport: a,
structTreeLayer: l
}) {
b(this, ma);
b(this, ch, null);
b(this, Hr, null);
b(this, Ur, /* @__PURE__ */ new Map());
b(this, hh, null);
this.div = t, p(this, ch, e), p(this, Hr, s), p(this, hh, l || null), this.page = r, this.viewport = a, this.zIndex = 0, this._annotationEditorUIManager = i;
}
hasEditableAnnotations() {
return o(this, Ur).size > 0;
}
async render(t) {
var a;
const {
annotations: e
} = t, s = this.div;
fa(s, this.viewport);
const i = /* @__PURE__ */ new Map(), r = {
data: null,
layer: s,
linkService: t.linkService,
downloadManager: t.downloadManager,
imageResourcesPath: t.imageResourcesPath || "",
renderForms: t.renderForms !== !1,
svgFactory: new Xp(),
annotationStorage: t.annotationStorage || new qp(),
enableScripting: t.enableScripting === !0,
hasJSActions: t.hasJSActions,
fieldObjects: t.fieldObjects,
parent: this,
elements: null
};
for (const l of e) {
if (l.noHTML)
continue;
const c = l.annotationType === Xt.POPUP;
if (c) {
const d = i.get(l.id);
if (!d)
continue;
r.elements = d;
} else {
const {
width: d,
height: f
} = Ln(l.rect);
if (d <= 0 || f <= 0)
continue;
}
r.data = l;
const h = Qx.create(r);
if (!h.isRenderable)
continue;
if (!c && l.popupRef) {
const d = i.get(l.popupRef);
d ? d.push(h) : i.set(l.popupRef, [h]);
}
const u = h.render();
l.hidden && (u.style.visibility = "hidden"), await v(this, ma, tv).call(this, u, l.id), h._isEditable && (o(this, Ur).set(h.data.id, h), (a = this._annotationEditorUIManager) == null || a.renderAnnotationElement(h));
}
v(this, ma, Jf).call(this);
}
update({
viewport: t
}) {
const e = this.div;
this.viewport = t, fa(e, {
rotation: t.rotation
}), v(this, ma, Jf).call(this), e.hidden = !1;
}
getEditableAnnotations() {
return Array.from(o(this, Ur).values());
}
getEditableAnnotation(t) {
return o(this, Ur).get(t);
}
}
ch = new WeakMap(), Hr = new WeakMap(), Ur = new WeakMap(), hh = new WeakMap(), ma = new WeakSet(), tv = async function(t, e) {
var a, l;
const s = t.firstChild || t, i = s.id = `${Hp}${e}`, r = await ((a = o(this, hh)) == null ? void 0 : a.getAriaAttributes(i));
if (r)
for (const [c, h] of r)
s.setAttribute(c, h);
this.div.append(t), (l = o(this, ch)) == null || l.moveElementInDOM(this.div, t, s, !1);
}, Jf = function() {
if (!o(this, Hr))
return;
const t = this.div;
for (const [e, s] of o(this, Hr)) {
const i = t.querySelector(`[data-annotation-id="${e}"]`);
if (!i)
continue;
s.className = "annotationContent";
const {
firstChild: r
} = i;
r ? r.nodeName === "CANVAS" ? r.replaceWith(s) : r.classList.contains("annotationContent") ? r.after(s) : r.before(s) : i.append(s);
}
o(this, Hr).clear();
};
const Uh = /\r\n?|\n/g;
var Is, We, uh, zr, Xe, Wt, ev, sv, iv, cu, Xi, hu, uu, nv, tp, rv;
const Ct = class Ct extends Ft {
constructor(e) {
super({
...e,
name: "freeTextEditor"
});
b(this, Wt);
b(this, Is);
b(this, We, "");
b(this, uh, `${this.id}-editor`);
b(this, zr, null);
b(this, Xe);
p(this, Is, e.color || Ct._defaultColor || Ft._defaultLineColor), p(this, Xe, e.fontSize || Ct._defaultFontSize);
}
static get _keyboardManager() {
const e = Ct.prototype, s = (a) => a.isEmpty(), i = pa.TRANSLATE_SMALL, r = pa.TRANSLATE_BIG;
return at(this, "_keyboardManager", new Oh([[["ctrl+s", "mac+meta+s", "ctrl+p", "mac+meta+p"], e.commitOrRemove, {
bubbles: !0
}], [["ctrl+Enter", "mac+meta+Enter", "Escape", "mac+Escape"], e.commitOrRemove], [["ArrowLeft", "mac+ArrowLeft"], e._translateEmpty, {
args: [-i, 0],
checker: s
}], [["ctrl+ArrowLeft", "mac+shift+ArrowLeft"], e._translateEmpty, {
args: [-r, 0],
checker: s
}], [["ArrowRight", "mac+ArrowRight"], e._translateEmpty, {
args: [i, 0],
checker: s
}], [["ctrl+ArrowRight", "mac+shift+ArrowRight"], e._translateEmpty, {
args: [r, 0],
checker: s
}], [["ArrowUp", "mac+ArrowUp"], e._translateEmpty, {
args: [0, -i],
checker: s
}], [["ctrl+ArrowUp", "mac+shift+ArrowUp"], e._translateEmpty, {
args: [0, -r],
checker: s
}], [["ArrowDown", "mac+ArrowDown"], e._translateEmpty, {
args: [0, i],
checker: s
}], [["ctrl+ArrowDown", "mac+shift+ArrowDown"], e._translateEmpty, {
args: [0, r],
checker: s
}]]));
}
static initialize(e, s) {
Ft.initialize(e, s);
const i = getComputedStyle(document.documentElement);
this._internalPadding = parseFloat(i.getPropertyValue("--freetext-padding"));
}
static updateDefaultParams(e, s) {
switch (e) {
case lt.FREETEXT_SIZE:
Ct._defaultFontSize = s;
break;
case lt.FREETEXT_COLOR:
Ct._defaultColor = s;
break;
}
}
updateParams(e, s) {
switch (e) {
case lt.FREETEXT_SIZE:
v(this, Wt, ev).call(this, s);
break;
case lt.FREETEXT_COLOR:
v(this, Wt, sv).call(this, s);
break;
}
}
static get defaultPropertiesToUpdate() {
return [[lt.FREETEXT_SIZE, Ct._defaultFontSize], [lt.FREETEXT_COLOR, Ct._defaultColor || Ft._defaultLineColor]];
}
get propertiesToUpdate() {
return [[lt.FREETEXT_SIZE, o(this, Xe)], [lt.FREETEXT_COLOR, o(this, Is)]];
}
_translateEmpty(e, s) {
this._uiManager.translateSelectedEditors(e, s, !0);
}
getInitialTranslation() {
const e = this.parentScale;
return [-Ct._internalPadding * e, -(Ct._internalPadding + o(this, Xe)) * e];
}
rebuild() {
this.parent && (super.rebuild(), this.div !== null && (this.isAttachedToDOM || this.parent.add(this)));
}
enableEditMode() {
if (this.isInEditMode())
return;
this.parent.setEditingState(!1), this.parent.updateToolbar(et.FREETEXT), super.enableEditMode(), this.overlayDiv.classList.remove("enabled"), this.editorDiv.contentEditable = !0, this._isDraggable = !1, this.div.removeAttribute("aria-activedescendant"), p(this, zr, new AbortController());
const e = this._uiManager.combinedSignal(o(this, zr));
this.editorDiv.addEventListener("keydown", this.editorDivKeydown.bind(this), {
signal: e
}), this.editorDiv.addEventListener("focus", this.editorDivFocus.bind(this), {
signal: e
}), this.editorDiv.addEventListener("blur", this.editorDivBlur.bind(this), {
signal: e
}), this.editorDiv.addEventListener("input", this.editorDivInput.bind(this), {
signal: e
}), this.editorDiv.addEventListener("paste", this.editorDivPaste.bind(this), {
signal: e
});
}
disableEditMode() {
var e;
this.isInEditMode() && (this.parent.setEditingState(!0), super.disableEditMode(), this.overlayDiv.classList.add("enabled"), this.editorDiv.contentEditable = !1, this.div.setAttribute("aria-activedescendant", o(this, uh)), this._isDraggable = !0, (e = o(this, zr)) == null || e.abort(), p(this, zr, null), this.div.focus({
preventScroll: !0
}), this.isEditing = !1, this.parent.div.classList.add("freetextEditing"));
}
focusin(e) {
this._focusEventsAllowed && (super.focusin(e), e.target !== this.editorDiv && this.editorDiv.focus());
}
onceAdded(e) {
var s;
this.width || (this.enableEditMode(), e && this.editorDiv.focus(), (s = this._initialOptions) != null && s.isCentered && this.center(), this._initialOptions = null);
}
isEmpty() {
return !this.editorDiv || this.editorDiv.innerText.trim() === "";
}
remove() {
this.isEditing = !1, this.parent && (this.parent.setEditingState(!0), this.parent.div.classList.add("freetextEditing")), super.remove();
}
commit() {
if (!this.isInEditMode())
return;
super.commit(), this.disableEditMode();
const e = o(this, We), s = p(this, We, v(this, Wt, iv).call(this).trimEnd());
if (e === s)
return;
const i = (r) => {
if (p(this, We, r), !r) {
this.remove();
return;
}
v(this, Wt, uu).call(this), this._uiManager.rebuild(this), v(this, Wt, cu).call(this);
};
this.addCommands({
cmd: () => {
i(s);
},
undo: () => {
i(e);
},
mustExec: !1
}), v(this, Wt, cu).call(this);
}
shouldGetKeyboardEvents() {
return this.isInEditMode();
}
enterInEditMode() {
this.enableEditMode(), this.editorDiv.focus();
}
dblclick(e) {
this.enterInEditMode();
}
keydown(e) {
e.target === this.div && e.key === "Enter" && (this.enterInEditMode(), e.preventDefault());
}
editorDivKeydown(e) {
Ct._keyboardManager.exec(this, e);
}
editorDivFocus(e) {
this.isEditing = !0;
}
editorDivBlur(e) {
this.isEditing = !1;
}
editorDivInput(e) {
this.parent.div.classList.toggle("freetextEditing", this.isEmpty());
}
disableEditing() {
this.editorDiv.setAttribute("role", "comment"), this.editorDiv.removeAttribute("aria-multiline");
}
enableEditing() {
this.editorDiv.setAttribute("role", "textbox"), this.editorDiv.setAttribute("aria-multiline", !0);
}
render() {
if (this.div)
return this.div;
let e, s;
this.width && (e = this.x, s = this.y), super.render(), this.editorDiv = document.createElement("div"), this.editorDiv.className = "internal", this.editorDiv.setAttribute("id", o(this, uh)), this.editorDiv.setAttribute("data-l10n-id", "pdfjs-free-text2"), this.editorDiv.setAttribute("data-l10n-attrs", "default-content"), this.enableEditing(), this.editorDiv.contentEditable = !0;
const {
style: i
} = this.editorDiv;
if (i.fontSize = `calc(${o(this, Xe)}px * var(--scale-factor))`, i.color = o(this, Is), this.div.append(this.editorDiv), this.overlayDiv = document.createElement("div"), this.overlayDiv.classList.add("overlay", "enabled"), this.div.append(this.overlayDiv), ju(this, this.div, ["dblclick", "keydown"]), this.width) {
const [r, a] = this.parentDimensions;
if (this.annotationElementId) {
const {
position: l
} = this._initialData;
let [c, h] = this.getInitialTranslation();
[c, h] = this.pageTranslationToScreen(c, h);
const [u, d] = this.pageDimensions, [f, g] = this.pageTranslation;
let m, y;
switch (this.rotation) {
case 0:
m = e + (l[0] - f) / u, y = s + this.height - (l[1] - g) / d;
break;
case 90:
m = e + (l[0] - f) / u, y = s - (l[1] - g) / d, [c, h] = [h, -c];
break;
case 180:
m = e - this.width + (l[0] - f) / u, y = s - (l[1] - g) / d, [c, h] = [-c, -h];
break;
case 270:
m = e + (l[0] - f - this.height * d) / u, y = s + (l[1] - g - this.width * u) / d, [c, h] = [-h, c];
break;
}
this.setAt(m * r, y * a, c, h);
} else
this.setAt(e * r, s * a, this.width * r, this.height * a);
v(this, Wt, uu).call(this), this._isDraggable = !0, this.editorDiv.contentEditable = !1;
} else
this._isDraggable = !1, this.editorDiv.contentEditable = !0;
return this.div;
}
editorDivPaste(e) {
var m, y, _;
const s = e.clipboardData || window.clipboardData, {
types: i
} = s;
if (i.length === 1 && i[0] === "text/plain")
return;
e.preventDefault();
const r = v(m = Ct, Xi, tp).call(m, s.getData("text") || "").replaceAll(Uh, `
`);
if (!r)
return;
const a = window.getSelection();
if (!a.rangeCount)
return;
this.editorDiv.normalize(), a.deleteFromDocument();
const l = a.getRangeAt(0);
if (!r.includes(`
`)) {
l.insertNode(document.createTextNode(r)), this.editorDiv.normalize(), a.collapseToStart();
return;
}
const {
startContainer: c,
startOffset: h
} = l, u = [], d = [];
if (c.nodeType === Node.TEXT_NODE) {
const A = c.parentElement;
if (d.push(c.nodeValue.slice(h).replaceAll(Uh, "")), A !== this.editorDiv) {
let S = u;
for (const E of this.editorDiv.childNodes) {
if (E === A) {
S = d;
continue;
}
S.push(v(y = Ct, Xi, hu).call(y, E));
}
}
u.push(c.nodeValue.slice(0, h).replaceAll(Uh, ""));
} else if (c === this.editorDiv) {
let A = u, S = 0;
for (const E of this.editorDiv.childNodes)
S++ === h && (A = d), A.push(v(_ = Ct, Xi, hu).call(_, E));
}
p(this, We, `${u.join(`
`)}${r}${d.join(`
`)}`), v(this, Wt, uu).call(this);
const f = new Range();
let g = u.reduce((A, S) => A + S.length, 0);
for (const {
firstChild: A
} of this.editorDiv.childNodes)
if (A.nodeType === Node.TEXT_NODE) {
const S = A.nodeValue.length;
if (g <= S) {
f.setStart(A, g), f.setEnd(A, g);
break;
}
g -= S;
}
a.removeAllRanges(), a.addRange(f);
}
get contentDiv() {
return this.editorDiv;
}
static async deserialize(e, s, i) {
var l;
let r = null;
if (e instanceof Yb) {
const {
data: {
defaultAppearanceData: {
fontSize: c,
fontColor: h
},
rect: u,
rotation: d,
id: f,
popupRef: g
},
textContent: m,
textPosition: y,
parent: {
page: {
pageNumber: _
}
}
} = e;
if (!m || m.length === 0)
return null;
r = e = {
annotationType: et.FREETEXT,
color: Array.from(h),
fontSize: c,
value: m.join(`
`),
position: y,
pageIndex: _ - 1,
rect: u.slice(0),
rotation: d,
id: f,
deleted: !1,
popupRef: g
};
}
const a = await super.deserialize(e, s, i);
return p(a, Xe, e.fontSize), p(a, Is, U.makeHexColor(...e.color)), p(a, We, v(l = Ct, Xi, tp).call(l, e.value)), a.annotationElementId = e.id || null, a._initialData = r, a;
}
serialize(e = !1) {
if (this.isEmpty())
return null;
if (this.deleted)
return this.serializeDeleted();
const s = Ct._internalPadding * this.parentScale, i = this.getRect(s, s), r = Ft._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : o(this, Is)), a = {
annotationType: et.FREETEXT,
color: r,
fontSize: o(this, Xe),
value: v(this, Wt, nv).call(this),
pageIndex: this.pageIndex,
rect: i,
rotation: this.rotation,
structTreeParentId: this._structTreeParentId
};
return e ? a : this.annotationElementId && !v(this, Wt, rv).call(this, a) ? null : (a.id = this.annotationElementId, a);
}
renderAnnotationElement(e) {
const s = super.renderAnnotationElement(e);
if (this.deleted)
return s;
const {
style: i
} = s;
i.fontSize = `calc(${o(this, Xe)}px * var(--scale-factor))`, i.color = o(this, Is), s.replaceChildren();
for (const a of o(this, We).split(`
`)) {
const l = document.createElement("div");
l.append(a ? document.createTextNode(a) : document.createElement("br")), s.append(l);
}
const r = Ct._internalPadding * this.parentScale;
return e.updateEdited({
rect: this.getRect(r, r),
popupContent: o(this, We)
}), s;
}
resetAnnotationElement(e) {
super.resetAnnotationElement(e), e.resetEdited();
}
};
Is = new WeakMap(), We = new WeakMap(), uh = new WeakMap(), zr = new WeakMap(), Xe = new WeakMap(), Wt = new WeakSet(), ev = function(e) {
const s = (r) => {
this.editorDiv.style.fontSize = `calc(${r}px * var(--scale-factor))`, this.translate(0, -(r - o(this, Xe)) * this.parentScale), p(this, Xe, r), v(this, Wt, cu).call(this);
}, i = o(this, Xe);
this.addCommands({
cmd: s.bind(this, e),
undo: s.bind(this, i),
post: this._uiManager.updateUI.bind(this._uiManager, this),
mustExec: !0,
type: lt.FREETEXT_SIZE,
overwriteIfSameType: !0,
keepUndo: !0
});
}, sv = function(e) {
const s = (r) => {
p(this, Is, this.editorDiv.style.color = r);
}, i = o(this, Is);
this.addCommands({
cmd: s.bind(this, e),
undo: s.bind(this, i),
post: this._uiManager.updateUI.bind(this._uiManager, this),
mustExec: !0,
type: lt.FREETEXT_COLOR,
overwriteIfSameType: !0,
keepUndo: !0
});
}, iv = function() {
var i;
const e = [];
this.editorDiv.normalize();
let s = null;
for (const r of this.editorDiv.childNodes)
(s == null ? void 0 : s.nodeType) === Node.TEXT_NODE && r.nodeName === "BR" || (e.push(v(i = Ct, Xi, hu).call(i, r)), s = r);
return e.join(`
`);
}, cu = function() {
const [e, s] = this.parentDimensions;
let i;
if (this.isAttachedToDOM)
i = this.div.getBoundingClientRect();
else {
const {
currentLayer: r,
div: a
} = this, l = a.style.display, c = a.classList.contains("hidden");
a.classList.remove("hidden"), a.style.display = "hidden", r.div.append(this.div), i = a.getBoundingClientRect(), a.remove(), a.style.display = l, a.classList.toggle("hidden", c);
}
this.rotation % 180 === this.parentRotation % 180 ? (this.width = i.width / e, this.height = i.height / s) : (this.width = i.height / e, this.height = i.width / s), this.fixAndSetPosition();
}, Xi = new WeakSet(), hu = function(e) {
return (e.nodeType === Node.TEXT_NODE ? e.nodeValue : e.innerText).replaceAll(Uh, "");
}, uu = function() {
if (this.editorDiv.replaceChildren(), !!o(this, We))
for (const e of o(this, We).split(`
`)) {
const s = document.createElement("div");
s.append(e ? document.createTextNode(e) : document.createElement("br")), this.editorDiv.append(s);
}
}, nv = function() {
return o(this, We).replaceAll(" ", " ");
}, tp = function(e) {
return e.replaceAll(" ", " ");
}, rv = function(e) {
const {
value: s,
fontSize: i,
color: r,
pageIndex: a
} = this._initialData;
return this._hasBeenMoved || e.value !== s || e.fontSize !== i || e.color.some((l, c) => l !== r[c]) || e.pageIndex !== a;
}, b(Ct, Xi), G(Ct, "_freeTextDefaultContent", ""), G(Ct, "_internalPadding", 0), G(Ct, "_defaultColor", null), G(Ct, "_defaultFontSize", 10), G(Ct, "_type", "freetext"), G(Ct, "_editorType", et.FREETEXT);
let Qf = Ct;
class F {
toSVGPath() {
Et("Abstract method `toSVGPath` must be implemented.");
}
get box() {
Et("Abstract getter `box` must be implemented.");
}
serialize(t, e) {
Et("Abstract method `serialize` must be implemented.");
}
static _rescale(t, e, s, i, r, a) {
a || (a = new Float32Array(t.length));
for (let l = 0, c = t.length; l < c; l += 2)
a[l] = e + t[l] * i, a[l + 1] = s + t[l + 1] * r;
return a;
}
static _rescaleAndSwap(t, e, s, i, r, a) {
a || (a = new Float32Array(t.length));
for (let l = 0, c = t.length; l < c; l += 2)
a[l] = e + t[l + 1] * i, a[l + 1] = s + t[l] * r;
return a;
}
static _translate(t, e, s, i) {
i || (i = new Float32Array(t.length));
for (let r = 0, a = t.length; r < a; r += 2)
i[r] = e + t[r], i[r + 1] = s + t[r + 1];
return i;
}
static svgRound(t) {
return Math.round(t * 1e4);
}
static _normalizePoint(t, e, s, i, r) {
switch (r) {
case 90:
return [1 - e / s, t / i];
case 180:
return [1 - t / s, 1 - e / i];
case 270:
return [e / s, 1 - t / i];
default:
return [t / s, e / i];
}
}
static _normalizePagePoint(t, e, s) {
switch (s) {
case 90:
return [1 - e, t];
case 180:
return [1 - t, 1 - e];
case 270:
return [e, 1 - t];
default:
return [t, e];
}
}
static createBezierPoints(t, e, s, i, r, a) {
return [(t + 5 * s) / 6, (e + 5 * i) / 6, (5 * s + r) / 6, (5 * i + a) / 6, (s + r) / 2, (i + a) / 2];
}
}
G(F, "PRECISION", 1e-4);
var Ze, Rs, bo, vo, ii, rt, Vr, Gr, dh, fh, _o, Ao, Sn, ph, od, ld, Jt, _l, av, ov, lv, cv, hv, uv;
const vi = class vi {
constructor({
x: t,
y: e
}, s, i, r, a, l = 0) {
b(this, Jt);
b(this, Ze);
b(this, Rs, []);
b(this, bo);
b(this, vo);
b(this, ii, []);
b(this, rt, new Float32Array(18));
b(this, Vr);
b(this, Gr);
b(this, dh);
b(this, fh);
b(this, _o);
b(this, Ao);
b(this, Sn, []);
p(this, Ze, s), p(this, Ao, r * i), p(this, vo, a), o(this, rt).set([NaN, NaN, NaN, NaN, t, e], 6), p(this, bo, l), p(this, fh, o(vi, ph) * i), p(this, dh, o(vi, ld) * i), p(this, _o, i), o(this, Sn).push(t, e);
}
isEmpty() {
return isNaN(o(this, rt)[8]);
}
add({
x: t,
y: e
}) {
var j;
p(this, Vr, t), p(this, Gr, e);
const [s, i, r, a] = o(this, Ze);
let [l, c, h, u] = o(this, rt).subarray(8, 12);
const d = t - h, f = e - u, g = Math.hypot(d, f);
if (g < o(this, dh))
return !1;
const m = g - o(this, fh), y = m / g, _ = y * d, A = y * f;
let S = l, E = c;
l = h, c = u, h += _, u += A, (j = o(this, Sn)) == null || j.push(t, e);
const x = -A / m, T = _ / m, k = x * o(this, Ao), C = T * o(this, Ao);
return o(this, rt).set(o(this, rt).subarray(2, 8), 0), o(this, rt).set([h + k, u + C], 4), o(this, rt).set(o(this, rt).subarray(14, 18), 12), o(this, rt).set([h - k, u - C], 16), isNaN(o(this, rt)[6]) ? (o(this, ii).length === 0 && (o(this, rt).set([l + k, c + C], 2), o(this, ii).push(NaN, NaN, NaN, NaN, (l + k - s) / r, (c + C - i) / a), o(this, rt).set([l - k, c - C], 14), o(this, Rs).push(NaN, NaN, NaN, NaN, (l - k - s) / r, (c - C - i) / a)), o(this, rt).set([S, E, l, c, h, u], 6), !this.isEmpty()) : (o(this, rt).set([S, E, l, c, h, u], 6), Math.abs(Math.atan2(E - c, S - l) - Math.atan2(A, _)) < Math.PI / 2 ? ([l, c, h, u] = o(this, rt).subarray(2, 6), o(this, ii).push(NaN, NaN, NaN, NaN, ((l + h) / 2 - s) / r, ((c + u) / 2 - i) / a), [l, c, S, E] = o(this, rt).subarray(14, 18), o(this, Rs).push(NaN, NaN, NaN, NaN, ((S + l) / 2 - s) / r, ((E + c) / 2 - i) / a), !0) : ([S, E, l, c, h, u] = o(this, rt).subarray(0, 6), o(this, ii).push(((S + 5 * l) / 6 - s) / r, ((E + 5 * c) / 6 - i) / a, ((5 * l + h) / 6 - s) / r, ((5 * c + u) / 6 - i) / a, ((l + h) / 2 - s) / r, ((c + u) / 2 - i) / a), [h, u, l, c, S, E] = o(this, rt).subarray(12, 18), o(this, Rs).push(((S + 5 * l) / 6 - s) / r, ((E + 5 * c) / 6 - i) / a, ((5 * l + h) / 6 - s) / r, ((5 * c + u) / 6 - i) / a, ((l + h) / 2 - s) / r, ((c + u) / 2 - i) / a), !0));
}
toSVGPath() {
if (this.isEmpty())
return "";
const t = o(this, ii), e = o(this, Rs);
if (isNaN(o(this, rt)[6]) && !this.isEmpty())
return v(this, Jt, av).call(this);
const s = [];
s.push(`M${t[4]} ${t[5]}`);
for (let i = 6; i < t.length; i += 6)
isNaN(t[i]) ? s.push(`L${t[i + 4]} ${t[i + 5]}`) : s.push(`C${t[i]} ${t[i + 1]} ${t[i + 2]} ${t[i + 3]} ${t[i + 4]} ${t[i + 5]}`);
v(this, Jt, lv).call(this, s);
for (let i = e.length - 6; i >= 6; i -= 6)
isNaN(e[i]) ? s.push(`L${e[i + 4]} ${e[i + 5]}`) : s.push(`C${e[i]} ${e[i + 1]} ${e[i + 2]} ${e[i + 3]} ${e[i + 4]} ${e[i + 5]}`);
return v(this, Jt, ov).call(this, s), s.join(" ");
}
newFreeDrawOutline(t, e, s, i, r, a) {
return new dv(t, e, s, i, r, a);
}
getOutlines() {
var d;
const t = o(this, ii), e = o(this, Rs), s = o(this, rt), [i, r, a, l] = o(this, Ze), c = new Float32Array((((d = o(this, Sn)) == null ? void 0 : d.length) ?? 0) + 2);
for (let f = 0, g = c.length - 2; f < g; f += 2)
c[f] = (o(this, Sn)[f] - i) / a, c[f + 1] = (o(this, Sn)[f + 1] - r) / l;
if (c[c.length - 2] = (o(this, Vr) - i) / a, c[c.length - 1] = (o(this, Gr) - r) / l, isNaN(s[6]) && !this.isEmpty())
return v(this, Jt, cv).call(this, c);
const h = new Float32Array(o(this, ii).length + 24 + o(this, Rs).length);
let u = t.length;
for (let f = 0; f < u; f += 2) {
if (isNaN(t[f])) {
h[f] = h[f + 1] = NaN;
continue;
}
h[f] = t[f], h[f + 1] = t[f + 1];
}
u = v(this, Jt, uv).call(this, h, u);
for (let f = e.length - 6; f >= 6; f -= 6)
for (let g = 0; g < 6; g += 2) {
if (isNaN(e[f + g])) {
h[u] = h[u + 1] = NaN, u += 2;
continue;
}
h[u] = e[f + g], h[u + 1] = e[f + g + 1], u += 2;
}
return v(this, Jt, hv).call(this, h, u), this.newFreeDrawOutline(h, c, o(this, Ze), o(this, _o), o(this, bo), o(this, vo));
}
};
Ze = new WeakMap(), Rs = new WeakMap(), bo = new WeakMap(), vo = new WeakMap(), ii = new WeakMap(), rt = new WeakMap(), Vr = new WeakMap(), Gr = new WeakMap(), dh = new WeakMap(), fh = new WeakMap(), _o = new WeakMap(), Ao = new WeakMap(), Sn = new WeakMap(), ph = new WeakMap(), od = new WeakMap(), ld = new WeakMap(), Jt = new WeakSet(), _l = function() {
const t = o(this, rt).subarray(4, 6), e = o(this, rt).subarray(16, 18), [s, i, r, a] = o(this, Ze);
return [(o(this, Vr) + (t[0] - e[0]) / 2 - s) / r, (o(this, Gr) + (t[1] - e[1]) / 2 - i) / a, (o(this, Vr) + (e[0] - t[0]) / 2 - s) / r, (o(this, Gr) + (e[1] - t[1]) / 2 - i) / a];
}, av = function() {
const [t, e, s, i] = o(this, Ze), [r, a, l, c] = v(this, Jt, _l).call(this);
return `M${(o(this, rt)[2] - t) / s} ${(o(this, rt)[3] - e) / i} L${(o(this, rt)[4] - t) / s} ${(o(this, rt)[5] - e) / i} L${r} ${a} L${l} ${c} L${(o(this, rt)[16] - t) / s} ${(o(this, rt)[17] - e) / i} L${(o(this, rt)[14] - t) / s} ${(o(this, rt)[15] - e) / i} Z`;
}, ov = function(t) {
const e = o(this, Rs);
t.push(`L${e[4]} ${e[5]} Z`);
}, lv = function(t) {
const [e, s, i, r] = o(this, Ze), a = o(this, rt).subarray(4, 6), l = o(this, rt).subarray(16, 18), [c, h, u, d] = v(this, Jt, _l).call(this);
t.push(`L${(a[0] - e) / i} ${(a[1] - s) / r} L${c} ${h} L${u} ${d} L${(l[0] - e) / i} ${(l[1] - s) / r}`);
}, cv = function(t) {
const e = o(this, rt), [s, i, r, a] = o(this, Ze), [l, c, h, u] = v(this, Jt, _l).call(this), d = new Float32Array(36);
return d.set([NaN, NaN, NaN, NaN, (e[2] - s) / r, (e[3] - i) / a, NaN, NaN, NaN, NaN, (e[4] - s) / r, (e[5] - i) / a, NaN, NaN, NaN, NaN, l, c, NaN, NaN, NaN, NaN, h, u, NaN, NaN, NaN, NaN, (e[16] - s) / r, (e[17] - i) / a, NaN, NaN, NaN, NaN, (e[14] - s) / r, (e[15] - i) / a], 0), this.newFreeDrawOutline(d, t, o(this, Ze), o(this, _o), o(this, bo), o(this, vo));
}, hv = function(t, e) {
const s = o(this, Rs);
return t.set([NaN, NaN, NaN, NaN, s[4], s[5]], e), e += 6;
}, uv = function(t, e) {
const s = o(this, rt).subarray(4, 6), i = o(this, rt).subarray(16, 18), [r, a, l, c] = o(this, Ze), [h, u, d, f] = v(this, Jt, _l).call(this);
return t.set([NaN, NaN, NaN, NaN, (s[0] - r) / l, (s[1] - a) / c, NaN, NaN, NaN, NaN, h, u, NaN, NaN, NaN, NaN, d, f, NaN, NaN, NaN, NaN, (i[0] - r) / l, (i[1] - a) / c], e), e += 24;
}, b(vi, ph, 8), b(vi, od, 2), b(vi, ld, o(vi, ph) + o(vi, od));
let Uu = vi;
var wo, qr, ji, gh, Ye, mh, Ut, cd, fv;
class dv extends F {
constructor(e, s, i, r, a, l) {
super();
b(this, cd);
b(this, wo);
b(this, qr, new Float32Array(4));
b(this, ji);
b(this, gh);
b(this, Ye);
b(this, mh);
b(this, Ut);
p(this, Ut, e), p(this, Ye, s), p(this, wo, i), p(this, mh, r), p(this, ji, a), p(this, gh, l), this.lastPoint = [NaN, NaN], v(this, cd, fv).call(this, l);
const [c, h, u, d] = o(this, qr);
for (let f = 0, g = e.length; f < g; f += 2)
e[f] = (e[f] - c) / u, e[f + 1] = (e[f + 1] - h) / d;
for (let f = 0, g = s.length; f < g; f += 2)
s[f] = (s[f] - c) / u, s[f + 1] = (s[f + 1] - h) / d;
}
toSVGPath() {
const e = [`M${o(this, Ut)[4]} ${o(this, Ut)[5]}`];
for (let s = 6, i = o(this, Ut).length; s < i; s += 6) {
if (isNaN(o(this, Ut)[s])) {
e.push(`L${o(this, Ut)[s + 4]} ${o(this, Ut)[s + 5]}`);
continue;
}
e.push(`C${o(this, Ut)[s]} ${o(this, Ut)[s + 1]} ${o(this, Ut)[s + 2]} ${o(this, Ut)[s + 3]} ${o(this, Ut)[s + 4]} ${o(this, Ut)[s + 5]}`);
}
return e.push("Z"), e.join(" ");
}
serialize([e, s, i, r], a) {
const l = i - e, c = r - s;
let h, u;
switch (a) {
case 0:
h = F._rescale(o(this, Ut), e, r, l, -c), u = F._rescale(o(this, Ye), e, r, l, -c);
break;
case 90:
h = F._rescaleAndSwap(o(this, Ut), e, s, l, c), u = F._rescaleAndSwap(o(this, Ye), e, s, l, c);
break;
case 180:
h = F._rescale(o(this, Ut), i, s, -l, c), u = F._rescale(o(this, Ye), i, s, -l, c);
break;
case 270:
h = F._rescaleAndSwap(o(this, Ut), i, r, -l, -c), u = F._rescaleAndSwap(o(this, Ye), i, r, -l, -c);
break;
}
return {
outline: Array.from(h),
points: [Array.from(u)]
};
}
get box() {
return o(this, qr);
}
newOutliner(e, s, i, r, a, l = 0) {
return new Uu(e, s, i, r, a, l);
}
getNewOutline(e, s) {
const [i, r, a, l] = o(this, qr), [c, h, u, d] = o(this, wo), f = a * u, g = l * d, m = i * u + c, y = r * d + h, _ = this.newOutliner({
x: o(this, Ye)[0] * f + m,
y: o(this, Ye)[1] * g + y
}, o(this, wo), o(this, mh), e, o(this, gh), s ?? o(this, ji));
for (let A = 2; A < o(this, Ye).length; A += 2)
_.add({
x: o(this, Ye)[A] * f + m,
y: o(this, Ye)[A + 1] * g + y
});
return _.getOutlines();
}
}
wo = new WeakMap(), qr = new WeakMap(), ji = new WeakMap(), gh = new WeakMap(), Ye = new WeakMap(), mh = new WeakMap(), Ut = new WeakMap(), cd = new WeakSet(), fv = function(e) {
const s = o(this, Ut);
let i = s[4], r = s[5], a = i, l = r, c = i, h = r, u = i, d = r;
const f = e ? Math.max : Math.min;
for (let m = 6, y = s.length; m < y; m += 6) {
if (isNaN(s[m]))
a = Math.min(a, s[m + 4]), l = Math.min(l, s[m + 5]), c = Math.max(c, s[m + 4]), h = Math.max(h, s[m + 5]), d < s[m + 5] ? (u = s[m + 4], d = s[m + 5]) : d === s[m + 5] && (u = f(u, s[m + 4]));
else {
const _ = U.bezierBoundingBox(i, r, ...s.slice(m, m + 6));
a = Math.min(a, _[0]), l = Math.min(l, _[1]), c = Math.max(c, _[2]), h = Math.max(h, _[3]), d < _[3] ? (u = _[2], d = _[3]) : d === _[3] && (u = f(u, _[2]));
}
i = s[m + 4], r = s[m + 5];
}
const g = o(this, qr);
g[0] = a - o(this, ji), g[1] = l - o(this, ji), g[2] = c - a + 2 * o(this, ji), g[3] = h - l + 2 * o(this, ji), this.lastPoint = [u, d];
};
var yh, bh, En, Ps, Oe, pv, du, gv, mv, sp;
class ep {
constructor(t, e = 0, s = 0, i = !0) {
b(this, Oe);
b(this, yh);
b(this, bh);
b(this, En, []);
b(this, Ps, []);
let r = 1 / 0, a = -1 / 0, l = 1 / 0, c = -1 / 0;
const h = 10 ** -4;
for (const {
x: _,
y: A,
width: S,
height: E
} of t) {
const x = Math.floor((_ - e) / h) * h, T = Math.ceil((_ + S + e) / h) * h, k = Math.floor((A - e) / h) * h, C = Math.ceil((A + E + e) / h) * h, P = [x, k, C, !0], j = [T, k, C, !1];
o(this, En).push(P, j), r = Math.min(r, x), a = Math.max(a, T), l = Math.min(l, k), c = Math.max(c, C);
}
const u = a - r + 2 * s, d = c - l + 2 * s, f = r - s, g = l - s, m = o(this, En).at(i ? -1 : -2), y = [m[0], m[2]];
for (const _ of o(this, En)) {
const [A, S, E] = _;
_[0] = (A - f) / u, _[1] = (S - g) / d, _[2] = (E - g) / d;
}
p(this, yh, new Float32Array([f, g, u, d])), p(this, bh, y);
}
getOutlines() {
o(this, En).sort((e, s) => e[0] - s[0] || e[1] - s[1] || e[2] - s[2]);
const t = [];
for (const e of o(this, En))
e[3] ? (t.push(...v(this, Oe, sp).call(this, e)), v(this, Oe, gv).call(this, e)) : (v(this, Oe, mv).call(this, e), t.push(...v(this, Oe, sp).call(this, e)));
return v(this, Oe, pv).call(this, t);
}
}
yh = new WeakMap(), bh = new WeakMap(), En = new WeakMap(), Ps = new WeakMap(), Oe = new WeakSet(), pv = function(t) {
const e = [], s = /* @__PURE__ */ new Set();
for (const a of t) {
const [l, c, h] = a;
e.push([l, c, a], [l, h, a]);
}
e.sort((a, l) => a[1] - l[1] || a[0] - l[0]);
for (let a = 0, l = e.length; a < l; a += 2) {
const c = e[a][2], h = e[a + 1][2];
c.push(h), h.push(c), s.add(c), s.add(h);
}
const i = [];
let r;
for (; s.size > 0; ) {
const a = s.values().next().value;
let [l, c, h, u, d] = a;
s.delete(a);
let f = l, g = c;
for (r = [l, h], i.push(r); ; ) {
let m;
if (s.has(u))
m = u;
else if (s.has(d))
m = d;
else
break;
s.delete(m), [l, c, h, u, d] = m, f !== l && (r.push(f, g, l, g === c ? c : h), f = l), g = g === c ? h : c;
}
r.push(f, g);
}
return new yT(i, o(this, yh), o(this, bh));
}, du = function(t) {
const e = o(this, Ps);
let s = 0, i = e.length - 1;
for (; s <= i; ) {
const r = s + i >> 1, a = e[r][0];
if (a === t)
return r;
a < t ? s = r + 1 : i = r - 1;
}
return i + 1;
}, gv = function([, t, e]) {
const s = v(this, Oe, du).call(this, t);
o(this, Ps).splice(s, 0, [t, e]);
}, mv = function([, t, e]) {
const s = v(this, Oe, du).call(this, t);
for (let i = s; i < o(this, Ps).length; i++) {
const [r, a] = o(this, Ps)[i];
if (r !== t)
break;
if (r === t && a === e) {
o(this, Ps).splice(i, 1);
return;
}
}
for (let i = s - 1; i >= 0; i--) {
const [r, a] = o(this, Ps)[i];
if (r !== t)
break;
if (r === t && a === e) {
o(this, Ps).splice(i, 1);
return;
}
}
}, sp = function(t) {
const [e, s, i] = t, r = [[e, s, i]], a = v(this, Oe, du).call(this, i);
for (let l = 0; l < a; l++) {
const [c, h] = o(this, Ps)[l];
for (let u = 0, d = r.length; u < d; u++) {
const [, f, g] = r[u];
if (!(h <= f || g <= c)) {
if (f >= c) {
if (g > h)
r[u][1] = h;
else {
if (d === 1)
return [];
r.splice(u, 1), u--, d--;
}
continue;
}
r[u][2] = c, g > h && r.push([e, h, g]);
}
}
}
return r;
};
var vh, So;
class yT extends F {
constructor(e, s, i) {
super();
b(this, vh);
b(this, So);
p(this, So, e), p(this, vh, s), this.lastPoint = i;
}
toSVGPath() {
const e = [];
for (const s of o(this, So)) {
let [i, r] = s;
e.push(`M${i} ${r}`);
for (let a = 2; a < s.length; a += 2) {
const l = s[a], c = s[a + 1];
l === i ? (e.push(`V${c}`), r = c) : c === r && (e.push(`H${l}`), i = l);
}
e.push("Z");
}
return e.join(" ");
}
serialize([e, s, i, r], a) {
const l = [], c = i - e, h = r - s;
for (const u of o(this, So)) {
const d = new Array(u.length);
for (let f = 0; f < u.length; f += 2)
d[f] = e + u[f] * c, d[f + 1] = r - u[f + 1] * h;
l.push(d);
}
return l;
}
get box() {
return o(this, vh);
}
get classNamesForOutlining() {
return ["highlightOutline"];
}
}
vh = new WeakMap(), So = new WeakMap();
class ip extends Uu {
newFreeDrawOutline(t, e, s, i, r, a) {
return new bT(t, e, s, i, r, a);
}
}
class bT extends dv {
newOutliner(t, e, s, i, r, a = 0) {
return new ip(t, e, s, i, r, a);
}
}
var Ms, Wr, Eo, Kt, _h, xo, Ah, wh, xn, Ns, To, Sh, At, np, rp, ap, Kn, yv, Qi;
const $e = class $e {
constructor({
editor: t = null,
uiManager: e = null
}) {
b(this, At);
b(this, Ms, null);
b(this, Wr, null);
b(this, Eo);
b(this, Kt, null);
b(this, _h, !1);
b(this, xo, !1);
b(this, Ah, null);
b(this, wh);
b(this, xn, null);
b(this, Ns, null);
b(this, To);
var s;
t ? (p(this, xo, !1), p(this, To, lt.HIGHLIGHT_COLOR), p(this, Ah, t)) : (p(this, xo, !0), p(this, To, lt.HIGHLIGHT_DEFAULT_COLOR)), p(this, Ns, (t == null ? void 0 : t._uiManager) || e), p(this, wh, o(this, Ns)._eventBus), p(this, Eo, (t == null ? void 0 : t.color) || ((s = o(this, Ns)) == null ? void 0 : s.highlightColors.values().next().value) || "#FFFF98"), o($e, Sh) || p($e, Sh, Object.freeze({
blue: "pdfjs-editor-colorpicker-blue",
green: "pdfjs-editor-colorpicker-green",
pink: "pdfjs-editor-colorpicker-pink",
red: "pdfjs-editor-colorpicker-red",
yellow: "pdfjs-editor-colorpicker-yellow"
}));
}
static get _keyboardManager() {
return at(this, "_keyboardManager", new Oh([[["Escape", "mac+Escape"], $e.prototype._hideDropdownFromKeyboard], [[" ", "mac+ "], $e.prototype._colorSelectFromKeyboard], [["ArrowDown", "ArrowRight", "mac+ArrowDown", "mac+ArrowRight"], $e.prototype._moveToNext], [["ArrowUp", "ArrowLeft", "mac+ArrowUp", "mac+ArrowLeft"], $e.prototype._moveToPrevious], [["Home", "mac+Home"], $e.prototype._moveToBeginning], [["End", "mac+End"], $e.prototype._moveToEnd]]));
}
renderButton() {
const t = p(this, Ms, document.createElement("button"));
t.className = "colorPicker", t.tabIndex = "0", t.setAttribute("data-l10n-id", "pdfjs-editor-colorpicker-button"), t.setAttribute("aria-haspopup", !0);
const e = o(this, Ns)._signal;
t.addEventListener("click", v(this, At, Kn).bind(this), {
signal: e
}), t.addEventListener("keydown", v(this, At, ap).bind(this), {
signal: e
});
const s = p(this, Wr, document.createElement("span"));
return s.className = "swatch", s.setAttribute("aria-hidden", !0), s.style.backgroundColor = o(this, Eo), t.append(s), t;
}
renderMainDropdown() {
const t = p(this, Kt, v(this, At, np).call(this));
return t.setAttribute("aria-orientation", "horizontal"), t.setAttribute("aria-labelledby", "highlightColorPickerLabel"), t;
}
_colorSelectFromKeyboard(t) {
if (t.target === o(this, Ms)) {
v(this, At, Kn).call(this, t);
return;
}
const e = t.target.getAttribute("data-color");
e && v(this, At, rp).call(this, e, t);
}
_moveToNext(t) {
var e, s;
if (!o(this, At, Qi)) {
v(this, At, Kn).call(this, t);
return;
}
if (t.target === o(this, Ms)) {
(e = o(this, Kt).firstChild) == null || e.focus();
return;
}
(s = t.target.nextSibling) == null || s.focus();
}
_moveToPrevious(t) {
var e, s;
if (t.target === ((e = o(this, Kt)) == null ? void 0 : e.firstChild) || t.target === o(this, Ms)) {
o(this, At, Qi) && this._hideDropdownFromKeyboard();
return;
}
o(this, At, Qi) || v(this, At, Kn).call(this, t), (s = t.target.previousSibling) == null || s.focus();
}
_moveToBeginning(t) {
var e;
if (!o(this, At, Qi)) {
v(this, At, Kn).call(this, t);
return;
}
(e = o(this, Kt).firstChild) == null || e.focus();
}
_moveToEnd(t) {
var e;
if (!o(this, At, Qi)) {
v(this, At, Kn).call(this, t);
return;
}
(e = o(this, Kt).lastChild) == null || e.focus();
}
hideDropdown() {
var t, e;
(t = o(this, Kt)) == null || t.classList.add("hidden"), (e = o(this, xn)) == null || e.abort(), p(this, xn, null);
}
_hideDropdownFromKeyboard() {
var t;
if (!o(this, xo)) {
if (!o(this, At, Qi)) {
(t = o(this, Ah)) == null || t.unselect();
return;
}
this.hideDropdown(), o(this, Ms).focus({
preventScroll: !0,
focusVisible: o(this, _h)
});
}
}
updateColor(t) {
if (o(this, Wr) && (o(this, Wr).style.backgroundColor = t), !o(this, Kt))
return;
const e = o(this, Ns).highlightColors.values();
for (const s of o(this, Kt).children)
s.setAttribute("aria-selected", e.next().value === t);
}
destroy() {
var t, e;
(t = o(this, Ms)) == null || t.remove(), p(this, Ms, null), p(this, Wr, null), (e = o(this, Kt)) == null || e.remove(), p(this, Kt, null);
}
};
Ms = new WeakMap(), Wr = new WeakMap(), Eo = new WeakMap(), Kt = new WeakMap(), _h = new WeakMap(), xo = new WeakMap(), Ah = new WeakMap(), wh = new WeakMap(), xn = new WeakMap(), Ns = new WeakMap(), To = new WeakMap(), Sh = new WeakMap(), At = new WeakSet(), np = function() {
const t = document.createElement("div"), e = o(this, Ns)._signal;
t.addEventListener("contextmenu", Hs, {
signal: e
}), t.className = "dropdown", t.role = "listbox", t.setAttribute("aria-multiselectable", !1), t.setAttribute("aria-orientation", "vertical"), t.setAttribute("data-l10n-id", "pdfjs-editor-colorpicker-dropdown");
for (const [s, i] of o(this, Ns).highlightColors) {
const r = document.createElement("button");
r.tabIndex = "0", r.role = "option", r.setAttribute("data-color", i), r.title = s, r.setAttribute("data-l10n-id", o($e, Sh)[s]);
const a = document.createElement("span");
r.append(a), a.className = "swatch", a.style.backgroundColor = i, r.setAttribute("aria-selected", i === o(this, Eo)), r.addEventListener("click", v(this, At, rp).bind(this, i), {
signal: e
}), t.append(r);
}
return t.addEventListener("keydown", v(this, At, ap).bind(this), {
signal: e
}), t;
}, rp = function(t, e) {
e.stopPropagation(), o(this, wh).dispatch("switchannotationeditorparams", {
source: this,
type: o(this, To),
value: t
});
}, ap = function(t) {
$e._keyboardManager.exec(this, t);
}, Kn = function(t) {
if (o(this, At, Qi)) {
this.hideDropdown();
return;
}
if (p(this, _h, t.detail === 0), o(this, xn) || (p(this, xn, new AbortController()), window.addEventListener("pointerdown", v(this, At, yv).bind(this), {
signal: o(this, Ns).combinedSignal(o(this, xn))
})), o(this, Kt)) {
o(this, Kt).classList.remove("hidden");
return;
}
const e = p(this, Kt, v(this, At, np).call(this));
o(this, Ms).append(e);
}, yv = function(t) {
var e;
(e = o(this, Kt)) != null && e.contains(t.target) || this.hideDropdown();
}, Qi = function() {
return o(this, Kt) && !o(this, Kt).classList.contains("hidden");
}, b($e, Sh, null);
let zu = $e;
var Co, Eh, Bi, Xr, ko, He, xh, Th, Zr, ds, Ke, ue, Io, Hi, _e, Ro, fs, Ch, K, op, fu, bv, vv, _v, lp, Jn, ys, ka, Av, pu, Al, wv, Sv, Ev, xv, Tv;
const mt = class mt extends Ft {
constructor(e) {
super({
...e,
name: "highlightEditor"
});
b(this, K);
b(this, Co, null);
b(this, Eh, 0);
b(this, Bi);
b(this, Xr, null);
b(this, ko, null);
b(this, He, null);
b(this, xh, null);
b(this, Th, 0);
b(this, Zr, null);
b(this, ds, null);
b(this, Ke, null);
b(this, ue, !1);
b(this, Io, null);
b(this, Hi);
b(this, _e, null);
b(this, Ro, "");
b(this, fs);
b(this, Ch, "");
this.color = e.color || mt._defaultColor, p(this, fs, e.thickness || mt._defaultThickness), p(this, Hi, e.opacity || mt._defaultOpacity), p(this, Bi, e.boxes || null), p(this, Ch, e.methodOfCreation || ""), p(this, Ro, e.text || ""), this._isDraggable = !1, e.highlightId > -1 ? (p(this, ue, !0), v(this, K, fu).call(this, e), v(this, K, Jn).call(this)) : o(this, Bi) && (p(this, Co, e.anchorNode), p(this, Eh, e.anchorOffset), p(this, xh, e.focusNode), p(this, Th, e.focusOffset), v(this, K, op).call(this), v(this, K, Jn).call(this), this.rotate(this.rotation));
}
static get _keyboardManager() {
const e = mt.prototype;
return at(this, "_keyboardManager", new Oh([[["ArrowLeft", "mac+ArrowLeft"], e._moveCaret, {
args: [0]
}], [["ArrowRight", "mac+ArrowRight"], e._moveCaret, {
args: [1]
}], [["ArrowUp", "mac+ArrowUp"], e._moveCaret, {
args: [2]
}], [["ArrowDown", "mac+ArrowDown"], e._moveCaret, {
args: [3]
}]]));
}
get telemetryInitialData() {
return {
action: "added",
type: o(this, ue) ? "free_highlight" : "highlight",
color: this._uiManager.highlightColorNames.get(this.color),
thickness: o(this, fs),
methodOfCreation: o(this, Ch)
};
}
get telemetryFinalData() {
return {
type: "highlight",
color: this._uiManager.highlightColorNames.get(this.color)
};
}
static computeTelemetryFinalData(e) {
return {
numberOfColors: e.get("color").size
};
}
static initialize(e, s) {
var i;
Ft.initialize(e, s), mt._defaultColor || (mt._defaultColor = ((i = s.highlightColors) == null ? void 0 : i.values().next().value) || "#fff066");
}
static updateDefaultParams(e, s) {
switch (e) {
case lt.HIGHLIGHT_DEFAULT_COLOR:
mt._defaultColor = s;
break;
case lt.HIGHLIGHT_THICKNESS:
mt._defaultThickness = s;
break;
}
}
translateInPage(e, s) {
}
get toolbarPosition() {
return o(this, Io);
}
updateParams(e, s) {
switch (e) {
case lt.HIGHLIGHT_COLOR:
v(this, K, bv).call(this, s);
break;
case lt.HIGHLIGHT_THICKNESS:
v(this, K, vv).call(this, s);
break;
}
}
static get defaultPropertiesToUpdate() {
return [[lt.HIGHLIGHT_DEFAULT_COLOR, mt._defaultColor], [lt.HIGHLIGHT_THICKNESS, mt._defaultThickness]];
}
get propertiesToUpdate() {
return [[lt.HIGHLIGHT_COLOR, this.color || mt._defaultColor], [lt.HIGHLIGHT_THICKNESS, o(this, fs) || mt._defaultThickness], [lt.HIGHLIGHT_FREE, o(this, ue)]];
}
async addEditToolbar() {
const e = await super.addEditToolbar();
return e ? (this._uiManager.highlightColors && (p(this, ko, new zu({
editor: this
})), e.addColorPicker(o(this, ko))), e) : null;
}
disableEditing() {
super.disableEditing(), this.div.classList.toggle("disabled", !0);
}
enableEditing() {
super.enableEditing(), this.div.classList.toggle("disabled", !1);
}
fixAndSetPosition() {
return super.fixAndSetPosition(v(this, K, Al).call(this));
}
getBaseTranslation() {
return [0, 0];
}
getRect(e, s) {
return super.getRect(e, s, v(this, K, Al).call(this));
}
onceAdded(e) {
this.annotationElementId || this.parent.addUndoableEditor(this), e && this.div.focus();
}
remove() {
v(this, K, lp).call(this), this._reportTelemetry({
action: "deleted"
}), super.remove();
}
rebuild() {
this.parent && (super.rebuild(), this.div !== null && (v(this, K, Jn).call(this), this.isAttachedToDOM || this.parent.add(this)));
}
setParent(e) {
var i;
let s = !1;
this.parent && !e ? v(this, K, lp).call(this) : e && (v(this, K, Jn).call(this, e), s = !this.parent && ((i = this.div) == null ? void 0 : i.classList.contains("selectedEditor"))), super.setParent(e), this.show(this._isVisible), s && this.select();
}
rotate(e) {
var r, a, l;
const {
drawLayer: s
} = this.parent;
let i;
o(this, ue) ? (e = (e - this.rotation + 360) % 360, i = v(r = mt, ys, ka).call(r, o(this, ds).box, e)) : i = v(a = mt, ys, ka).call(a, [this.x, this.y, this.width, this.height], e), s.updateProperties(o(this, Ke), {
bbox: i,
root: {
"data-main-rotation": e
}
}), s.updateProperties(o(this, _e), {
bbox: v(l = mt, ys, ka).call(l, o(this, He).box, e),
root: {
"data-main-rotation": e
}
});
}
render() {
if (this.div)
return this.div;
const e = super.render();
o(this, Ro) && (e.setAttribute("aria-label", o(this, Ro)), e.setAttribute("role", "mark")), o(this, ue) ? e.classList.add("free") : this.div.addEventListener("keydown", v(this, K, Av).bind(this), {
signal: this._uiManager._signal
});
const s = p(this, Zr, document.createElement("div"));
e.append(s), s.setAttribute("aria-hidden", "true"), s.className = "internal", s.style.clipPath = o(this, Xr);
const [i, r] = this.parentDimensions;
return this.setDims(this.width * i, this.height * r), ju(this, o(this, Zr), ["pointerover", "pointerleave"]), this.enableEditing(), e;
}
pointerover() {
var e;
this.isSelected || (e = this.parent) == null || e.drawLayer.updateProperties(o(this, _e), {
rootClass: {
hovered: !0
}
});
}
pointerleave() {
var e;
this.isSelected || (e = this.parent) == null || e.drawLayer.updateProperties(o(this, _e), {
rootClass: {
hovered: !1
}
});
}
_moveCaret(e) {
switch (this.parent.unselect(this), e) {
case 0:
case 2:
v(this, K, pu).call(this, !0);
break;
case 1:
case 3:
v(this, K, pu).call(this, !1);
break;
}
}
select() {
var e;
super.select(), o(this, _e) && ((e = this.parent) == null || e.drawLayer.updateProperties(o(this, _e), {
rootClass: {
hovered: !1,
selected: !0
}
}));
}
unselect() {
var e;
super.unselect(), o(this, _e) && ((e = this.parent) == null || e.drawLayer.updateProperties(o(this, _e), {
rootClass: {
selected: !1
}
}), o(this, ue) || v(this, K, pu).call(this, !1));
}
get _mustFixPosition() {
return !o(this, ue);
}
show(e = this._isVisible) {
super.show(e), this.parent && (this.parent.drawLayer.updateProperties(o(this, Ke), {
rootClass: {
hidden: !e
}
}), this.parent.drawLayer.updateProperties(o(this, _e), {
rootClass: {
hidden: !e
}
}));
}
static startHighlighting(e, s, {
target: i,
x: r,
y: a
}) {
const {
x: l,
y: c,
width: h,
height: u
} = i.getBoundingClientRect(), d = new AbortController(), f = e.combinedSignal(d), g = (m) => {
d.abort(), v(this, ys, xv).call(this, e, m);
};
window.addEventListener("blur", g, {
signal: f
}), window.addEventListener("pointerup", g, {
signal: f
}), window.addEventListener("pointerdown", ns, {
capture: !0,
passive: !1,
signal: f
}), window.addEventListener("contextmenu", Hs, {
signal: f
}), i.addEventListener("pointermove", v(this, ys, Ev).bind(this, e), {
signal: f
}), this._freeHighlight = new ip({
x: r,
y: a
}, [l, c, h, u], e.scale, this._defaultThickness / 2, s, 1e-3), {
id: this._freeHighlightId,
clipPathId: this._freeHighlightClipId
} = e.drawLayer.draw({
bbox: [0, 0, 1, 1],
root: {
viewBox: "0 0 1 1",
fill: this._defaultColor,
"fill-opacity": this._defaultOpacity
},
rootClass: {
highlight: !0,
free: !0
},
path: {
d: this._freeHighlight.toSVGPath()
}
}, !0, !0);
}
static async deserialize(e, s, i) {
var y, _, A, S;
let r = null;
if (e instanceof Jb) {
const {
data: {
quadPoints: E,
rect: x,
rotation: T,
id: k,
color: C,
opacity: P,
popupRef: j
},
parent: {
page: {
pageNumber: Z
}
}
} = e;
r = e = {
annotationType: et.HIGHLIGHT,
color: Array.from(C),
opacity: P,
quadPoints: E,
boxes: null,
pageIndex: Z - 1,
rect: x.slice(0),
rotation: T,
id: k,
deleted: !1,
popupRef: j
};
} else if (e instanceof Zp) {
const {
data: {
inkLists: E,
rect: x,
rotation: T,
id: k,
color: C,
borderStyle: {
rawWidth: P
},
popupRef: j
},
parent: {
page: {
pageNumber: Z
}
}
} = e;
r = e = {
annotationType: et.HIGHLIGHT,
color: Array.from(C),
thickness: P,
inkLists: E,
boxes: null,
pageIndex: Z - 1,
rect: x.slice(0),
rotation: T,
id: k,
deleted: !1,
popupRef: j
};
}
const {
color: a,
quadPoints: l,
inkLists: c,
opacity: h
} = e, u = await super.deserialize(e, s, i);
u.color = U.makeHexColor(...a), p(u, Hi, h || 1), c && p(u, fs, e.thickness), u.annotationElementId = e.id || null, u._initialData = r;
const [d, f] = u.pageDimensions, [g, m] = u.pageTranslation;
if (l) {
const E = p(u, Bi, []);
for (let x = 0; x < l.length; x += 8)
E.push({
x: (l[x] - g) / d,
y: 1 - (l[x + 1] - m) / f,
width: (l[x + 2] - l[x]) / d,
height: (l[x + 1] - l[x + 5]) / f
});
v(y = u, K, op).call(y), v(_ = u, K, Jn).call(_), u.rotate(u.rotation);
} else if (c) {
p(u, ue, !0);
const E = c[0], x = {
x: E[0] - g,
y: f - (E[1] - m)
}, T = new ip(x, [0, 0, d, f], 1, o(u, fs) / 2, !0, 1e-3);
for (let P = 0, j = E.length; P < j; P += 2)
x.x = E[P] - g, x.y = f - (E[P + 1] - m), T.add(x);
const {
id: k,
clipPathId: C
} = s.drawLayer.draw({
bbox: [0, 0, 1, 1],
root: {
viewBox: "0 0 1 1",
fill: u.color,
"fill-opacity": u._defaultOpacity
},
rootClass: {
highlight: !0,
free: !0
},
path: {
d: T.toSVGPath()
}
}, !0, !0);
v(A = u, K, fu).call(A, {
highlightOutlines: T.getOutlines(),
highlightId: k,
clipPathId: C
}), v(S = u, K, Jn).call(S);
}
return u;
}
serialize(e = !1) {
if (this.isEmpty() || e)
return null;
if (this.deleted)
return this.serializeDeleted();
const s = this.getRect(0, 0), i = Ft._colorManager.convert(this.color), r = {
annotationType: et.HIGHLIGHT,
color: i,
opacity: o(this, Hi),
thickness: o(this, fs),
quadPoints: v(this, K, wv).call(this),
outlines: v(this, K, Sv).call(this, s),
pageIndex: this.pageIndex,
rect: s,
rotation: v(this, K, Al).call(this),
structTreeParentId: this._structTreeParentId
};
return this.annotationElementId && !v(this, K, Tv).call(this, r) ? null : (r.id = this.annotationElementId, r);
}
renderAnnotationElement(e) {
return e.updateEdited({
rect: this.getRect(0, 0)
}), null;
}
static canCreateNewEmptyEditor() {
return !1;
}
};
Co = new WeakMap(), Eh = new WeakMap(), Bi = new WeakMap(), Xr = new WeakMap(), ko = new WeakMap(), He = new WeakMap(), xh = new WeakMap(), Th = new WeakMap(), Zr = new WeakMap(), ds = new WeakMap(), Ke = new WeakMap(), ue = new WeakMap(), Io = new WeakMap(), Hi = new WeakMap(), _e = new WeakMap(), Ro = new WeakMap(), fs = new WeakMap(), Ch = new WeakMap(), K = new WeakSet(), op = function() {
const e = new ep(o(this, Bi), 1e-3);
p(this, ds, e.getOutlines()), [this.x, this.y, this.width, this.height] = o(this, ds).box;
const s = new ep(o(this, Bi), 25e-4, 1e-3, this._uiManager.direction === "ltr");
p(this, He, s.getOutlines());
const {
lastPoint: i
} = o(this, He);
p(this, Io, [(i[0] - this.x) / this.width, (i[1] - this.y) / this.height]);
}, fu = function({
highlightOutlines: e,
highlightId: s,
clipPathId: i
}) {
var d, f;
if (p(this, ds, e), p(this, He, e.getNewOutline(o(this, fs) / 2 + 1.5, 25e-4)), s >= 0)
p(this, Ke, s), p(this, Xr, i), this.parent.drawLayer.finalizeDraw(s, {
bbox: e.box,
path: {
d: e.toSVGPath()
}
}), p(this, _e, this.parent.drawLayer.drawOutline({
rootClass: {
highlightOutline: !0,
free: !0
},
bbox: o(this, He).box,
path: {
d: o(this, He).toSVGPath()
}
}, !0));
else if (this.parent) {
const g = this.parent.viewport.rotation;
this.parent.drawLayer.updateProperties(o(this, Ke), {
bbox: v(d = mt, ys, ka).call(d, o(this, ds).box, (g - this.rotation + 360) % 360),
path: {
d: e.toSVGPath()
}
}), this.parent.drawLayer.updateProperties(o(this, _e), {
bbox: v(f = mt, ys, ka).call(f, o(this, He).box, g),
path: {
d: o(this, He).toSVGPath()
}
});
}
const [a, l, c, h] = e.box;
switch (this.rotation) {
case 0:
this.x = a, this.y = l, this.width = c, this.height = h;
break;
case 90: {
const [g, m] = this.parentDimensions;
this.x = l, this.y = 1 - a, this.width = c * m / g, this.height = h * g / m;
break;
}
case 180:
this.x = 1 - a, this.y = 1 - l, this.width = c, this.height = h;
break;
case 270: {
const [g, m] = this.parentDimensions;
this.x = 1 - l, this.y = a, this.width = c * m / g, this.height = h * g / m;
break;
}
}
const {
lastPoint: u
} = o(this, He);
p(this, Io, [(u[0] - a) / c, (u[1] - l) / h]);
}, bv = function(e) {
const s = (a, l) => {
var c, h;
this.color = a, p(this, Hi, l), (c = this.parent) == null || c.drawLayer.updateProperties(o(this, Ke), {
root: {
fill: a,
"fill-opacity": l
}
}), (h = o(this, ko)) == null || h.updateColor(a);
}, i = this.color, r = o(this, Hi);
this.addCommands({
cmd: s.bind(this, e, mt._defaultOpacity),
undo: s.bind(this, i, r),
post: this._uiManager.updateUI.bind(this._uiManager, this),
mustExec: !0,
type: lt.HIGHLIGHT_COLOR,
overwriteIfSameType: !0,
keepUndo: !0
}), this._reportTelemetry({
action: "color_changed",
color: this._uiManager.highlightColorNames.get(e)
}, !0);
}, vv = function(e) {
const s = o(this, fs), i = (r) => {
p(this, fs, r), v(this, K, _v).call(this, r);
};
this.addCommands({
cmd: i.bind(this, e),
undo: i.bind(this, s),
post: this._uiManager.updateUI.bind(this._uiManager, this),
mustExec: !0,
type: lt.INK_THICKNESS,
overwriteIfSameType: !0,
keepUndo: !0
}), this._reportTelemetry({
action: "thickness_changed",
thickness: e
}, !0);
}, _v = function(e) {
if (!o(this, ue))
return;
v(this, K, fu).call(this, {
highlightOutlines: o(this, ds).getNewOutline(e / 2)
}), this.fixAndSetPosition();
const [s, i] = this.parentDimensions;
this.setDims(this.width * s, this.height * i);
}, lp = function() {
o(this, Ke) === null || !this.parent || (this.parent.drawLayer.remove(o(this, Ke)), p(this, Ke, null), this.parent.drawLayer.remove(o(this, _e)), p(this, _e, null));
}, Jn = function(e = this.parent) {
o(this, Ke) === null && ({
id: xe(this, Ke)._,
clipPathId: xe(this, Xr)._
} = e.drawLayer.draw({
bbox: o(this, ds).box,
root: {
viewBox: "0 0 1 1",
fill: this.color,
"fill-opacity": o(this, Hi)
},
rootClass: {
highlight: !0,
free: o(this, ue)
},
path: {
d: o(this, ds).toSVGPath()
}
}, !1, !0), p(this, _e, e.drawLayer.drawOutline({
rootClass: {
highlightOutline: !0,
free: o(this, ue)
},
bbox: o(this, He).box,
path: {
d: o(this, He).toSVGPath()
}
}, o(this, ue))), o(this, Zr) && (o(this, Zr).style.clipPath = o(this, Xr)));
}, ys = new WeakSet(), ka = function([e, s, i, r], a) {
switch (a) {
case 90:
return [1 - s - r, e, r, i];
case 180:
return [1 - e - i, 1 - s - r, i, r];
case 270:
return [s, 1 - e - i, r, i];
}
return [e, s, i, r];
}, Av = function(e) {
mt._keyboardManager.exec(this, e);
}, pu = function(e) {
if (!o(this, Co))
return;
const s = window.getSelection();
e ? s.setPosition(o(this, Co), o(this, Eh)) : s.setPosition(o(this, xh), o(this, Th));
}, Al = function() {
return o(this, ue) ? this.rotation : 0;
}, wv = function() {
if (o(this, ue))
return null;
const [e, s] = this.pageDimensions, [i, r] = this.pageTranslation, a = o(this, Bi), l = new Float32Array(a.length * 8);
let c = 0;
for (const {
x: h,
y: u,
width: d,
height: f
} of a) {
const g = h * e + i, m = (1 - u) * s + r;
l[c] = l[c + 4] = g, l[c + 1] = l[c + 3] = m, l[c + 2] = l[c + 6] = g + d * e, l[c + 5] = l[c + 7] = m - f * s, c += 8;
}
return l;
}, Sv = function(e) {
return o(this, ds).serialize(e, v(this, K, Al).call(this));
}, Ev = function(e, s) {
this._freeHighlight.add(s) && e.drawLayer.updateProperties(this._freeHighlightId, {
path: {
d: this._freeHighlight.toSVGPath()
}
});
}, xv = function(e, s) {
this._freeHighlight.isEmpty() ? e.drawLayer.remove(this._freeHighlightId) : e.createAndAddNewEditor(s, !1, {
highlightId: this._freeHighlightId,
highlightOutlines: this._freeHighlight.getOutlines(),
clipPathId: this._freeHighlightClipId,
methodOfCreation: "main_toolbar"
}), this._freeHighlightId = -1, this._freeHighlight = null, this._freeHighlightClipId = "";
}, Tv = function(e) {
const {
color: s
} = this._initialData;
return e.color.some((i, r) => i !== s[r]);
}, b(mt, ys), G(mt, "_defaultColor", null), G(mt, "_defaultOpacity", 1), G(mt, "_defaultThickness", 12), G(mt, "_type", "highlight"), G(mt, "_editorType", et.HIGHLIGHT), G(mt, "_freeHighlightId", -1), G(mt, "_freeHighlight", null), G(mt, "_freeHighlightClipId", "");
let Vu = mt;
var Yr;
class vT {
constructor() {
b(this, Yr, /* @__PURE__ */ Object.create(null));
}
updateProperty(t, e) {
this[t] = e, this.updateSVGProperty(t, e);
}
updateProperties(t) {
if (t)
for (const [e, s] of Object.entries(t))
this.updateProperty(e, s);
}
updateSVGProperty(t, e) {
o(this, Yr)[t] = e;
}
toSVGProperties() {
const t = o(this, Yr);
return p(this, Yr, /* @__PURE__ */ Object.create(null)), {
root: t
};
}
reset() {
p(this, Yr, /* @__PURE__ */ Object.create(null));
}
updateAll(t = this) {
this.updateProperties(t);
}
clone() {
Et("Not implemented");
}
}
Yr = new WeakMap();
var Je, Po, ie, Kr, Jr, Tn, Cn, kn, Qr, ut, hp, up, dp, wl, Cv, gu, Sl, Ia;
const $ = class $ extends Ft {
constructor(e) {
super(e);
b(this, ut);
b(this, Je, null);
b(this, Po);
G(this, "_drawId", null);
p(this, Po, e.mustBeCommitted || !1), e.drawOutlines && (v(this, ut, hp).call(this, e), v(this, ut, wl).call(this));
}
static _mergeSVGProperties(e, s) {
const i = new Set(Object.keys(e));
for (const [r, a] of Object.entries(s))
i.has(r) ? Object.assign(e[r], a) : e[r] = a;
return e;
}
static getDefaultDrawingOptions(e) {
Et("Not implemented");
}
static get typesMap() {
Et("Not implemented");
}
static get isDrawer() {
return !0;
}
static get supportMultipleDrawings() {
return !1;
}
static updateDefaultParams(e, s) {
const i = this.typesMap.get(e);
i && this._defaultDrawingOptions.updateProperty(i, s), this._currentParent && (o($, ie).updateProperty(i, s), this._currentParent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties()));
}
updateParams(e, s) {
const i = this.constructor.typesMap.get(e);
i && this._updateProperty(e, i, s);
}
static get defaultPropertiesToUpdate() {
const e = [], s = this._defaultDrawingOptions;
for (const [i, r] of this.typesMap)
e.push([i, s[r]]);
return e;
}
get propertiesToUpdate() {
const e = [], {
_drawingOptions: s
} = this;
for (const [i, r] of this.constructor.typesMap)
e.push([i, s[r]]);
return e;
}
_updateProperty(e, s, i) {
const r = this._drawingOptions, a = r[s], l = (c) => {
var u;
r.updateProperty(s, c);
const h = o(this, Je).updateProperty(s, c);
h && v(this, ut, Sl).call(this, h), (u = this.parent) == null || u.drawLayer.updateProperties(this._drawId, r.toSVGProperties());
};
this.addCommands({
cmd: l.bind(this, i),
undo: l.bind(this, a),
post: this._uiManager.updateUI.bind(this._uiManager, this),
mustExec: !0,
type: e,
overwriteIfSameType: !0,
keepUndo: !0
});
}
_onResizing() {
var e;
(e = this.parent) == null || e.drawLayer.updateProperties(this._drawId, $._mergeSVGProperties(o(this, Je).getPathResizingSVGProperties(v(this, ut, gu).call(this)), {
bbox: v(this, ut, Ia).call(this)
}));
}
_onResized() {
var e;
(e = this.parent) == null || e.drawLayer.updateProperties(this._drawId, $._mergeSVGProperties(o(this, Je).getPathResizedSVGProperties(v(this, ut, gu).call(this)), {
bbox: v(this, ut, Ia).call(this)
}));
}
_onTranslating(e, s) {
var i;
(i = this.parent) == null || i.drawLayer.updateProperties(this._drawId, {
bbox: v(this, ut, Ia).call(this, e, s)
});
}
_onTranslated() {
var e;
(e = this.parent) == null || e.drawLayer.updateProperties(this._drawId, $._mergeSVGProperties(o(this, Je).getPathTranslatedSVGProperties(v(this, ut, gu).call(this), this.parentDimensions), {
bbox: v(this, ut, Ia).call(this)
}));
}
_onStartDragging() {
var e;
(e = this.parent) == null || e.drawLayer.updateProperties(this._drawId, {
rootClass: {
moving: !0
}
});
}
_onStopDragging() {
var e;
(e = this.parent) == null || e.drawLayer.updateProperties(this._drawId, {
rootClass: {
moving: !1
}
});
}
commit() {
super.commit(), this.disableEditMode(), this.disableEditing();
}
disableEditing() {
super.disableEditing(), this.div.classList.toggle("disabled", !0);
}
enableEditing() {
super.enableEditing(), this.div.classList.toggle("disabled", !1);
}
getBaseTranslation() {
return [0, 0];
}
get isResizable() {
return !0;
}
onceAdded(e) {
this.annotationElementId || this.parent.addUndoableEditor(this), this._isDraggable = !0, o(this, Po) && (p(this, Po, !1), this.commit(), this.parent.setSelected(this), e && this.isOnScreen && this.div.focus());
}
remove() {
v(this, ut, dp).call(this), super.remove();
}
rebuild() {
this.parent && (super.rebuild(), this.div !== null && (v(this, ut, wl).call(this), v(this, ut, Sl).call(this, o(this, Je).box), this.isAttachedToDOM || this.parent.add(this)));
}
setParent(e) {
var i;
let s = !1;
this.parent && !e ? (this._uiManager.removeShouldRescale(this), v(this, ut, dp).call(this)) : e && (this._uiManager.addShouldRescale(this), v(this, ut, wl).call(this, e), s = !this.parent && ((i = this.div) == null ? void 0 : i.classList.contains("selectedEditor"))), super.setParent(e), s && this.select();
}
rotate() {
this.parent && this.parent.drawLayer.updateProperties(this._drawId, $._mergeSVGProperties({
bbox: v(this, ut, Ia).call(this)
}, o(this, Je).updateRotation((this.parentRotation - this.rotation + 360) % 360)));
}
onScaleChanging() {
this.parent && v(this, ut, Sl).call(this, o(this, Je).updateParentDimensions(this.parentDimensions, this.parent.scale));
}
static onScaleChangingWhenDrawing() {
}
render() {
if (this.div)
return this.div;
const e = super.render();
e.classList.add("draw");
const s = document.createElement("div");
e.append(s), s.setAttribute("aria-hidden", "true"), s.className = "internal";
const [i, r] = this.parentDimensions;
return this.setDims(this.width * i, this.height * r), this._uiManager.addShouldRescale(this), this.disableEditing(), e;
}
static createDrawerInstance(e, s, i, r, a) {
Et("Not implemented");
}
static startDrawing(e, s, i, r) {
var _;
const {
target: a,
offsetX: l,
offsetY: c,
pointerId: h,
pointerType: u
} = r;
if (o($, Cn) && o($, Cn) !== u)
return;
const {
viewport: {
rotation: d
}
} = e, {
width: f,
height: g
} = a.getBoundingClientRect(), m = p($, Kr, new AbortController()), y = e.combinedSignal(m);
if (o($, Tn) || p($, Tn, h), o($, Cn) ?? p($, Cn, u), window.addEventListener("pointerup", (A) => {
var S;
o($, Tn) === A.pointerId ? this._endDraw(A) : (S = o($, kn)) == null || S.delete(A.pointerId);
}, {
signal: y
}), window.addEventListener("pointercancel", (A) => {
var S;
o($, Tn) === A.pointerId ? this._currentParent.endDrawingSession() : (S = o($, kn)) == null || S.delete(A.pointerId);
}, {
signal: y
}), window.addEventListener("pointerdown", (A) => {
o($, Cn) === A.pointerType && ((o($, kn) || p($, kn, /* @__PURE__ */ new Set())).add(A.pointerId), o($, ie).isCancellable() && (o($, ie).removeLastElement(), o($, ie).isEmpty() ? this._currentParent.endDrawingSession(!0) : this._endDraw(null)));
}, {
capture: !0,
passive: !1,
signal: y
}), window.addEventListener("contextmenu", Hs, {
signal: y
}), a.addEventListener("pointermove", this._drawMove.bind(this), {
signal: y
}), a.addEventListener("touchmove", (A) => {
A.timeStamp === o($, Qr) && ns(A);
}, {
signal: y
}), e.toggleDrawing(), (_ = s._editorUndoBar) == null || _.hide(), o($, ie)) {
e.drawLayer.updateProperties(this._currentDrawId, o($, ie).startNew(l, c, f, g, d));
return;
}
s.updateUIForDefaultProperties(this), p($, ie, this.createDrawerInstance(l, c, f, g, d)), p($, Jr, this.getDefaultDrawingOptions()), this._currentParent = e, {
id: this._currentDrawId
} = e.drawLayer.draw(this._mergeSVGProperties(o($, Jr).toSVGProperties(), o($, ie).defaultSVGProperties), !0, !1);
}
static _drawMove(e) {
var a;
if (p($, Qr, -1), !o($, ie))
return;
const {
offsetX: s,
offsetY: i,
pointerId: r
} = e;
if (o($, Tn) === r) {
if (((a = o($, kn)) == null ? void 0 : a.size) >= 1) {
this._endDraw(e);
return;
}
this._currentParent.drawLayer.updateProperties(this._currentDrawId, o($, ie).add(s, i)), p($, Qr, e.timeStamp), ns(e);
}
}
static _cleanup(e) {
e && (this._currentDrawId = -1, this._currentParent = null, p($, ie, null), p($, Jr, null), p($, Cn, null), p($, Qr, NaN)), o($, Kr) && (o($, Kr).abort(), p($, Kr, null), p($, Tn, NaN), p($, kn, null));
}
static _endDraw(e) {
const s = this._currentParent;
if (s) {
if (s.toggleDrawing(!0), this._cleanup(!1), e && s.drawLayer.updateProperties(this._currentDrawId, o($, ie).end(e.offsetX, e.offsetY)), this.supportMultipleDrawings) {
const i = o($, ie), r = this._currentDrawId, a = i.getLastElement();
s.addCommands({
cmd: () => {
s.drawLayer.updateProperties(r, i.setLastElement(a));
},
undo: () => {
s.drawLayer.updateProperties(r, i.removeLastElement());
},
mustExec: !1,
type: lt.DRAW_STEP
});
return;
}
this.endDrawing(!1);
}
}
static endDrawing(e) {
const s = this._currentParent;
if (!s)
return null;
if (s.toggleDrawing(!0), s.cleanUndoStack(lt.DRAW_STEP), !o($, ie).isEmpty()) {
const {
pageDimensions: [i, r],
scale: a
} = s, l = s.createAndAddNewEditor({
offsetX: 0,
offsetY: 0
}, !1, {
drawId: this._currentDrawId,
drawOutlines: o($, ie).getOutlines(i * a, r * a, a, this._INNER_MARGIN),
drawingOptions: o($, Jr),
mustBeCommitted: !e
});
return this._cleanup(!0), l;
}
return s.drawLayer.remove(this._currentDrawId), this._cleanup(!0), null;
}
createDrawingOptions(e) {
}
static deserializeDraw(e, s, i, r, a, l) {
Et("Not implemented");
}
static async deserialize(e, s, i) {
var d, f;
const {
rawDims: {
pageWidth: r,
pageHeight: a,
pageX: l,
pageY: c
}
} = s.viewport, h = this.deserializeDraw(l, c, r, a, this._INNER_MARGIN, e), u = await super.deserialize(e, s, i);
return u.createDrawingOptions(e), v(d = u, ut, hp).call(d, {
drawOutlines: h
}), v(f = u, ut, wl).call(f), u.onScaleChanging(), u.rotate(), u;
}
serializeDraw(e) {
const [s, i] = this.pageTranslation, [r, a] = this.pageDimensions;
return o(this, Je).serialize([s, i, r, a], e);
}
renderAnnotationElement(e) {
return e.updateEdited({
rect: this.getRect(0, 0)
}), null;
}
static canCreateNewEmptyEditor() {
return !1;
}
};
Je = new WeakMap(), Po = new WeakMap(), ie = new WeakMap(), Kr = new WeakMap(), Jr = new WeakMap(), Tn = new WeakMap(), Cn = new WeakMap(), kn = new WeakMap(), Qr = new WeakMap(), ut = new WeakSet(), hp = function({
drawOutlines: e,
drawId: s,
drawingOptions: i
}) {
p(this, Je, e), this._drawingOptions || (this._drawingOptions = i), s >= 0 ? (this._drawId = s, this.parent.drawLayer.finalizeDraw(s, e.defaultProperties)) : this._drawId = v(this, ut, up).call(this, e, this.parent), v(this, ut, Sl).call(this, e.box);
}, up = function(e, s) {
const {
id: i
} = s.drawLayer.draw($._mergeSVGProperties(this._drawingOptions.toSVGProperties(), e.defaultSVGProperties), !1, !1);
return i;
}, dp = function() {
this._drawId === null || !this.parent || (this.parent.drawLayer.remove(this._drawId), this._drawId = null, this._drawingOptions.reset());
}, wl = function(e = this.parent) {
if (!(this._drawId !== null && this.parent === e)) {
if (this._drawId !== null) {
this.parent.drawLayer.updateParent(this._drawId, e.drawLayer);
return;
}
this._drawingOptions.updateAll(), this._drawId = v(this, ut, up).call(this, o(this, Je), e);
}
}, Cv = function([e, s, i, r]) {
const {
parentDimensions: [a, l],
rotation: c
} = this;
switch (c) {
case 90:
return [s, 1 - e, i * (l / a), r * (a / l)];
case 180:
return [1 - e, 1 - s, i, r];
case 270:
return [1 - s, e, i * (l / a), r * (a / l)];
default:
return [e, s, i, r];
}
}, gu = function() {
const {
x: e,
y: s,
width: i,
height: r,
parentDimensions: [a, l],
rotation: c
} = this;
switch (c) {
case 90:
return [1 - s, e, i * (a / l), r * (l / a)];
case 180:
return [1 - e, 1 - s, i, r];
case 270:
return [s, 1 - e, i * (a / l), r * (l / a)];
default:
return [e, s, i, r];
}
}, Sl = function(e) {
if ([this.x, this.y, this.width, this.height] = v(this, ut, Cv).call(this, e), this.div) {
this.fixAndSetPosition();
const [s, i] = this.parentDimensions;
this.setDims(this.width * s, this.height * i);
}
this._onResized();
}, Ia = function() {
const {
x: e,
y: s,
width: i,
height: r,
rotation: a,
parentRotation: l,
parentDimensions: [c, h]
} = this;
switch ((a * 4 + l) / 90) {
case 1:
return [1 - s - r, e, r, i];
case 2:
return [1 - e - i, 1 - s - r, i, r];
case 3:
return [s, 1 - e - i, r, i];
case 4:
return [e, s - i * (c / h), r * (h / c), i * (c / h)];
case 5:
return [1 - s, e, i * (c / h), r * (h / c)];
case 6:
return [1 - e - r * (h / c), 1 - s, r * (h / c), i * (c / h)];
case 7:
return [s - i * (c / h), 1 - e - r * (h / c), i * (c / h), r * (h / c)];
case 8:
return [e - i, s - r, i, r];
case 9:
return [1 - s, e - i, r, i];
case 10:
return [1 - e, 1 - s, i, r];
case 11:
return [s - r, 1 - e, r, i];
case 12:
return [e - r * (h / c), s, r * (h / c), i * (c / h)];
case 13:
return [1 - s - i * (c / h), e - r * (h / c), i * (c / h), r * (h / c)];
case 14:
return [1 - e, 1 - s - i * (c / h), r * (h / c), i * (c / h)];
case 15:
return [s, 1 - e, i * (c / h), r * (h / c)];
default:
return [e, s, i, r];
}
}, G($, "_currentDrawId", -1), G($, "_currentParent", null), b($, ie, null), b($, Kr, null), b($, Jr, null), b($, Tn, NaN), b($, Cn, null), b($, kn, null), b($, Qr, NaN), G($, "_INNER_MARGIN", 3);
let cp = $;
var ni, ne, re, ta, Mo, Ie, de, ps, ea, sa, ia, No, mu;
class _T {
constructor(t, e, s, i, r, a) {
b(this, No);
b(this, ni, new Float64Array(6));
b(this, ne);
b(this, re);
b(this, ta);
b(this, Mo);
b(this, Ie);
b(this, de, "");
b(this, ps, 0);
b(this, ea, new Gu());
b(this, sa);
b(this, ia);
p(this, sa, s), p(this, ia, i), p(this, ta, r), p(this, Mo, a), [t, e] = v(this, No, mu).call(this, t, e);
const l = p(this, ne, [NaN, NaN, NaN, NaN, t, e]);
p(this, Ie, [t, e]), p(this, re, [{
line: l,
points: o(this, Ie)
}]), o(this, ni).set(l, 0);
}
updateProperty(t, e) {
t === "stroke-width" && p(this, Mo, e);
}
isEmpty() {
return !o(this, re) || o(this, re).length === 0;
}
isCancellable() {
return o(this, Ie).length <= 10;
}
add(t, e) {
[t, e] = v(this, No, mu).call(this, t, e);
const [s, i, r, a] = o(this, ni).subarray(2, 6), l = t - r, c = e - a;
return Math.hypot(o(this, sa) * l, o(this, ia) * c) <= 2 ? null : (o(this, Ie).push(t, e), isNaN(s) ? (o(this, ni).set([r, a, t, e], 2), o(this, ne).push(NaN, NaN, NaN, NaN, t, e), {
path: {
d: this.toSVGPath()
}
}) : (isNaN(o(this, ni)[0]) && o(this, ne).splice(6, 6), o(this, ni).set([s, i, r, a, t, e], 0), o(this, ne).push(...F.createBezierPoints(s, i, r, a, t, e)), {
path: {
d: this.toSVGPath()
}
}));
}
end(t, e) {
const s = this.add(t, e);
return s || (o(this, Ie).length === 2 ? {
path: {
d: this.toSVGPath()
}
} : null);
}
startNew(t, e, s, i, r) {
p(this, sa, s), p(this, ia, i), p(this, ta, r), [t, e] = v(this, No, mu).call(this, t, e);
const a = p(this, ne, [NaN, NaN, NaN, NaN, t, e]);
p(this, Ie, [t, e]);
const l = o(this, re).at(-1);
return l && (l.line = new Float32Array(l.line), l.points = new Float32Array(l.points)), o(this, re).push({
line: a,
points: o(this, Ie)
}), o(this, ni).set(a, 0), p(this, ps, 0), this.toSVGPath(), null;
}
getLastElement() {
return o(this, re).at(-1);
}
setLastElement(t) {
return o(this, re) ? (o(this, re).push(t), p(this, ne, t.line), p(this, Ie, t.points), p(this, ps, 0), {
path: {
d: this.toSVGPath()
}
}) : o(this, ea).setLastElement(t);
}
removeLastElement() {
if (!o(this, re))
return o(this, ea).removeLastElement();
o(this, re).pop(), p(this, de, "");
for (let t = 0, e = o(this, re).length; t < e; t++) {
const {
line: s,
points: i
} = o(this, re)[t];
p(this, ne, s), p(this, Ie, i), p(this, ps, 0), this.toSVGPath();
}
return {
path: {
d: o(this, de)
}
};
}
toSVGPath() {
const t = F.svgRound(o(this, ne)[4]), e = F.svgRound(o(this, ne)[5]);
if (o(this, Ie).length === 2)
return p(this, de, `${o(this, de)} M ${t} ${e} Z`), o(this, de);
if (o(this, Ie).length <= 6) {
const i = o(this, de).lastIndexOf("M");
p(this, de, `${o(this, de).slice(0, i)} M ${t} ${e}`), p(this, ps, 6);
}
if (o(this, Ie).length === 4) {
const i = F.svgRound(o(this, ne)[10]), r = F.svgRound(o(this, ne)[11]);
return p(this, de, `${o(this, de)} L ${i} ${r}`), p(this, ps, 12), o(this, de);
}
const s = [];
o(this, ps) === 0 && (s.push(`M ${t} ${e}`), p(this, ps, 6));
for (let i = o(this, ps), r = o(this, ne).length; i < r; i += 6) {
const [a, l, c, h, u, d] = o(this, ne).slice(i, i + 6).map(F.svgRound);
s.push(`C${a} ${l} ${c} ${h} ${u} ${d}`);
}
return p(this, de, o(this, de) + s.join(" ")), p(this, ps, o(this, ne).length), o(this, de);
}
getOutlines(t, e, s, i) {
const r = o(this, re).at(-1);
return r.line = new Float32Array(r.line), r.points = new Float32Array(r.points), o(this, ea).build(o(this, re), t, e, s, o(this, ta), o(this, Mo), i), p(this, ni, null), p(this, ne, null), p(this, re, null), p(this, de, null), o(this, ea);
}
get defaultSVGProperties() {
return {
root: {
viewBox: "0 0 10000 10000"
},
rootClass: {
draw: !0
},
bbox: [0, 0, 1, 1]
};
}
}
ni = new WeakMap(), ne = new WeakMap(), re = new WeakMap(), ta = new WeakMap(), Mo = new WeakMap(), Ie = new WeakMap(), de = new WeakMap(), ps = new WeakMap(), ea = new WeakMap(), sa = new WeakMap(), ia = new WeakMap(), No = new WeakSet(), mu = function(t, e) {
return F._normalizePoint(t, e, o(this, sa), o(this, ia), o(this, ta));
};
var Re, kh, Ih, Qe, ri, ai, Oo, Lo, Do, pe, yi, kv, Iv, Rv;
const tg = class tg extends F {
constructor() {
super(...arguments);
b(this, pe);
b(this, Re);
b(this, kh, 0);
b(this, Ih);
b(this, Qe);
b(this, ri);
b(this, ai);
b(this, Oo);
b(this, Lo);
b(this, Do);
}
build(e, s, i, r, a, l, c) {
p(this, ri, s), p(this, ai, i), p(this, Oo, r), p(this, Lo, a), p(this, Do, l), p(this, Ih, c ?? 0), p(this, Qe, e), v(this, pe, Iv).call(this);
}
setLastElement(e) {
return o(this, Qe).push(e), {
path: {
d: this.toSVGPath()
}
};
}
removeLastElement() {
return o(this, Qe).pop(), {
path: {
d: this.toSVGPath()
}
};
}
toSVGPath() {
const e = [];
for (const {
line: s
} of o(this, Qe)) {
if (e.push(`M${F.svgRound(s[4])} ${F.svgRound(s[5])}`), s.length === 6) {
e.push("Z");
continue;
}
if (s.length === 12) {
e.push(`L${F.svgRound(s[10])} ${F.svgRound(s[11])}`);
continue;
}
for (let i = 6, r = s.length; i < r; i += 6) {
const [a, l, c, h, u, d] = s.subarray(i, i + 6).map(F.svgRound);
e.push(`C${a} ${l} ${c} ${h} ${u} ${d}`);
}
}
return e.join("");
}
serialize([e, s, i, r], a) {
const l = [], c = [], [h, u, d, f] = v(this, pe, kv).call(this);
let g, m, y, _, A, S, E, x, T;
switch (o(this, Lo)) {
case 0:
T = F._rescale, g = e, m = s + r, y = i, _ = -r, A = e + h * i, S = s + (1 - u - f) * r, E = e + (h + d) * i, x = s + (1 - u) * r;
break;
case 90:
T = F._rescaleAndSwap, g = e, m = s, y = i, _ = r, A = e + u * i, S = s + h * r, E = e + (u + f) * i, x = s + (h + d) * r;
break;
case 180:
T = F._rescale, g = e + i, m = s, y = -i, _ = r, A = e + (1 - h - d) * i, S = s + u * r, E = e + (1 - h) * i, x = s + (u + f) * r;
break;
case 270:
T = F._rescaleAndSwap, g = e + i, m = s + r, y = -i, _ = -r, A = e + (1 - u - f) * i, S = s + (1 - h - d) * r, E = e + (1 - u) * i, x = s + (1 - h) * r;
break;
}
for (const {
line: k,
points: C
} of o(this, Qe))
l.push(T(k, g, m, y, _, a ? new Array(k.length) : null)), c.push(T(C, g, m, y, _, a ? new Array(C.length) : null));
return {
lines: l,
points: c,
rect: [A, S, E, x]
};
}
static deserialize(e, s, i, r, a, {
paths: {
lines: l,
points: c
},
rotation: h,
thickness: u
}) {
const d = [];
let f, g, m, y, _;
switch (h) {
case 0:
_ = F._rescale, f = -e / i, g = s / r + 1, m = 1 / i, y = -1 / r;
break;
case 90:
_ = F._rescaleAndSwap, f = -s / r, g = -e / i, m = 1 / r, y = 1 / i;
break;
case 180:
_ = F._rescale, f = e / i + 1, g = -s / r, m = -1 / i, y = 1 / r;
break;
case 270:
_ = F._rescaleAndSwap, f = s / r + 1, g = e / i + 1, m = -1 / r, y = -1 / i;
break;
}
if (!l) {
l = [];
for (const S of c) {
const E = S.length;
if (E === 2) {
l.push(new Float32Array([NaN, NaN, NaN, NaN, S[0], S[1]]));
continue;
}
if (E === 4) {
l.push(new Float32Array([NaN, NaN, NaN, NaN, S[0], S[1], NaN, NaN, NaN, NaN, S[2], S[3]]));
continue;
}
const x = new Float32Array(3 * (E - 2));
l.push(x);
let [T, k, C, P] = S.subarray(0, 4);
x.set([NaN, NaN, NaN, NaN, T, k], 0);
for (let j = 4; j < E; j += 2) {
const Z = S[j], V = S[j + 1];
x.set(F.createBezierPoints(T, k, C, P, Z, V), (j - 2) * 3), [T, k, C, P] = [C, P, Z, V];
}
}
}
for (let S = 0, E = l.length; S < E; S++)
d.push({
line: _(l[S].map((x) => x ?? NaN), f, g, m, y),
points: _(c[S].map((x) => x ?? NaN), f, g, m, y)
});
const A = new tg();
return A.build(d, i, r, 1, h, u, a), A;
}
get box() {
return o(this, Re);
}
updateProperty(e, s) {
return e === "stroke-width" ? v(this, pe, Rv).call(this, s) : null;
}
updateParentDimensions([e, s], i) {
const [r, a] = v(this, pe, yi).call(this);
p(this, ri, e), p(this, ai, s), p(this, Oo, i);
const [l, c] = v(this, pe, yi).call(this), h = l - r, u = c - a, d = o(this, Re);
return d[0] -= h, d[1] -= u, d[2] += 2 * h, d[3] += 2 * u, d;
}
updateRotation(e) {
return p(this, kh, e), {
path: {
transform: this.rotationTransform
}
};
}
get viewBox() {
return o(this, Re).map(F.svgRound).join(" ");
}
get defaultProperties() {
const [e, s] = o(this, Re);
return {
root: {
viewBox: this.viewBox
},
path: {
"transform-origin": `${F.svgRound(e)} ${F.svgRound(s)}`
}
};
}
get rotationTransform() {
const [, , e, s] = o(this, Re);
let i = 0, r = 0, a = 0, l = 0, c = 0, h = 0;
switch (o(this, kh)) {
case 90:
r = s / e, a = -e / s, c = e;
break;
case 180:
i = -1, l = -1, c = e, h = s;
break;
case 270:
r = -s / e, a = e / s, h = s;
break;
default:
return "";
}
return `matrix(${i} ${r} ${a} ${l} ${F.svgRound(c)} ${F.svgRound(h)})`;
}
getPathResizingSVGProperties([e, s, i, r]) {
const [a, l] = v(this, pe, yi).call(this), [c, h, u, d] = o(this, Re);
if (Math.abs(u - a) <= F.PRECISION || Math.abs(d - l) <= F.PRECISION) {
const _ = e + i / 2 - (c + u / 2), A = s + r / 2 - (h + d / 2);
return {
path: {
"transform-origin": `${F.svgRound(e)} ${F.svgRound(s)}`,
transform: `${this.rotationTransform} translate(${_} ${A})`
}
};
}
const f = (i - 2 * a) / (u - 2 * a), g = (r - 2 * l) / (d - 2 * l), m = u / i, y = d / r;
return {
path: {
"transform-origin": `${F.svgRound(c)} ${F.svgRound(h)}`,
transform: `${this.rotationTransform} scale(${m} ${y}) translate(${F.svgRound(a)} ${F.svgRound(l)}) scale(${f} ${g}) translate(${F.svgRound(-a)} ${F.svgRound(-l)})`
}
};
}
getPathResizedSVGProperties([e, s, i, r]) {
const [a, l] = v(this, pe, yi).call(this), c = o(this, Re), [h, u, d, f] = c;
if (c[0] = e, c[1] = s, c[2] = i, c[3] = r, Math.abs(d - a) <= F.PRECISION || Math.abs(f - l) <= F.PRECISION) {
const A = e + i / 2 - (h + d / 2), S = s + r / 2 - (u + f / 2);
for (const {
line: E,
points: x
} of o(this, Qe))
F._translate(E, A, S, E), F._translate(x, A, S, x);
return {
root: {
viewBox: this.viewBox
},
path: {
"transform-origin": `${F.svgRound(e)} ${F.svgRound(s)}`,
transform: this.rotationTransform || null,
d: this.toSVGPath()
}
};
}
const g = (i - 2 * a) / (d - 2 * a), m = (r - 2 * l) / (f - 2 * l), y = -g * (h + a) + e + a, _ = -m * (u + l) + s + l;
if (g !== 1 || m !== 1 || y !== 0 || _ !== 0)
for (const {
line: A,
points: S
} of o(this, Qe))
F._rescale(A, y, _, g, m, A), F._rescale(S, y, _, g, m, S);
return {
root: {
viewBox: this.viewBox
},
path: {
"transform-origin": `${F.svgRound(e)} ${F.svgRound(s)}`,
transform: this.rotationTransform || null,
d: this.toSVGPath()
}
};
}
getPathTranslatedSVGProperties([e, s], i) {
const [r, a] = i, l = o(this, Re), c = e - l[0], h = s - l[1];
if (o(this, ri) === r && o(this, ai) === a)
for (const {
line: u,
points: d
} of o(this, Qe))
F._translate(u, c, h, u), F._translate(d, c, h, d);
else {
const u = o(this, ri) / r, d = o(this, ai) / a;
p(this, ri, r), p(this, ai, a);
for (const {
line: f,
points: g
} of o(this, Qe))
F._rescale(f, c, h, u, d, f), F._rescale(g, c, h, u, d, g);
l[2] *= u, l[3] *= d;
}
return l[0] = e, l[1] = s, {
root: {
viewBox: this.viewBox
},
path: {
d: this.toSVGPath(),
"transform-origin": `${F.svgRound(e)} ${F.svgRound(s)}`
}
};
}
get defaultSVGProperties() {
const e = o(this, Re);
return {
root: {
viewBox: this.viewBox
},
rootClass: {
draw: !0
},
path: {
d: this.toSVGPath(),
"transform-origin": `${F.svgRound(e[0])} ${F.svgRound(e[1])}`,
transform: this.rotationTransform || null
},
bbox: e
};
}
};
Re = new WeakMap(), kh = new WeakMap(), Ih = new WeakMap(), Qe = new WeakMap(), ri = new WeakMap(), ai = new WeakMap(), Oo = new WeakMap(), Lo = new WeakMap(), Do = new WeakMap(), pe = new WeakSet(), yi = function(e = o(this, Do)) {
const s = o(this, Ih) + e / 2 * o(this, Oo);
return o(this, Lo) % 180 === 0 ? [s / o(this, ri), s / o(this, ai)] : [s / o(this, ai), s / o(this, ri)];
}, kv = function() {
const [e, s, i, r] = o(this, Re), [a, l] = v(this, pe, yi).call(this, 0);
return [e + a, s + l, i - 2 * a, r - 2 * l];
}, Iv = function() {
const e = p(this, Re, new Float32Array([1 / 0, 1 / 0, -1 / 0, -1 / 0]));
for (const {
line: r
} of o(this, Qe)) {
if (r.length <= 12) {
for (let c = 4, h = r.length; c < h; c += 6) {
const [u, d] = r.subarray(c, c + 2);
e[0] = Math.min(e[0], u), e[1] = Math.min(e[1], d), e[2] = Math.max(e[2], u), e[3] = Math.max(e[3], d);
}
continue;
}
let a = r[4], l = r[5];
for (let c = 6, h = r.length; c < h; c += 6) {
const [u, d, f, g, m, y] = r.subarray(c, c + 6);
U.bezierBoundingBox(a, l, u, d, f, g, m, y, e), a = m, l = y;
}
}
const [s, i] = v(this, pe, yi).call(this);
e[0] = Math.min(1, Math.max(0, e[0] - s)), e[1] = Math.min(1, Math.max(0, e[1] - i)), e[2] = Math.min(1, Math.max(0, e[2] + s)), e[3] = Math.min(1, Math.max(0, e[3] + i)), e[2] -= e[0], e[3] -= e[1];
}, Rv = function(e) {
const [s, i] = v(this, pe, yi).call(this);
p(this, Do, e);
const [r, a] = v(this, pe, yi).call(this), [l, c] = [r - s, a - i], h = o(this, Re);
return h[0] -= l, h[1] -= c, h[2] += 2 * l, h[3] += 2 * c, h;
};
let Gu = tg;
var Fo;
const eg = class eg extends vT {
constructor(e) {
super();
b(this, Fo);
p(this, Fo, e), super.updateProperties({
fill: "none",
stroke: Ft._defaultLineColor,
"stroke-opacity": 1,
"stroke-width": 1,
"stroke-linecap": "round",
"stroke-linejoin": "round",
"stroke-miterlimit": 10
});
}
updateSVGProperty(e, s) {
e === "stroke-width" && (s ?? (s = this["stroke-width"]), s *= o(this, Fo).realScale), super.updateSVGProperty(e, s);
}
clone() {
const e = new eg(o(this, Fo));
return e.updateAll(this), e;
}
};
Fo = new WeakMap();
let fp = eg;
var hd, Pv;
const Ma = class Ma extends cp {
constructor(e) {
super({
...e,
name: "inkEditor"
});
b(this, hd);
this._willKeepAspectRatio = !0;
}
static initialize(e, s) {
Ft.initialize(e, s), this._defaultDrawingOptions = new fp(s.viewParameters);
}
static getDefaultDrawingOptions(e) {
const s = this._defaultDrawingOptions.clone();
return s.updateProperties(e), s;
}
static get supportMultipleDrawings() {
return !0;
}
static get typesMap() {
return at(this, "typesMap", /* @__PURE__ */ new Map([[lt.INK_THICKNESS, "stroke-width"], [lt.INK_COLOR, "stroke"], [lt.INK_OPACITY, "stroke-opacity"]]));
}
static createDrawerInstance(e, s, i, r, a) {
return new _T(e, s, i, r, a, this._defaultDrawingOptions["stroke-width"]);
}
static deserializeDraw(e, s, i, r, a, l) {
return Gu.deserialize(e, s, i, r, a, l);
}
static async deserialize(e, s, i) {
let r = null;
if (e instanceof Zp) {
const {
data: {
inkLists: l,
rect: c,
rotation: h,
id: u,
color: d,
opacity: f,
borderStyle: {
rawWidth: g
},
popupRef: m
},
parent: {
page: {
pageNumber: y
}
}
} = e;
r = e = {
annotationType: et.INK,
color: Array.from(d),
thickness: g,
opacity: f,
paths: {
points: l
},
boxes: null,
pageIndex: y - 1,
rect: c.slice(0),
rotation: h,
id: u,
deleted: !1,
popupRef: m
};
}
const a = await super.deserialize(e, s, i);
return a.annotationElementId = e.id || null, a._initialData = r, a;
}
onScaleChanging() {
if (!this.parent)
return;
super.onScaleChanging();
const {
_drawId: e,
_drawingOptions: s,
parent: i
} = this;
s.updateSVGProperty("stroke-width"), i.drawLayer.updateProperties(e, s.toSVGProperties());
}
static onScaleChangingWhenDrawing() {
const e = this._currentParent;
e && (super.onScaleChangingWhenDrawing(), this._defaultDrawingOptions.updateSVGProperty("stroke-width"), e.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties()));
}
createDrawingOptions({
color: e,
thickness: s,
opacity: i
}) {
this._drawingOptions = Ma.getDefaultDrawingOptions({
stroke: U.makeHexColor(...e),
"stroke-width": s,
"stroke-opacity": i
});
}
serialize(e = !1) {
if (this.isEmpty())
return null;
if (this.deleted)
return this.serializeDeleted();
const {
lines: s,
points: i,
rect: r
} = this.serializeDraw(e), {
_drawingOptions: {
stroke: a,
"stroke-opacity": l,
"stroke-width": c
}
} = this, h = {
annotationType: et.INK,
color: Ft._colorManager.convert(a),
opacity: l,
thickness: c,
paths: {
lines: s,
points: i
},
pageIndex: this.pageIndex,
rect: r,
rotation: this.rotation,
structTreeParentId: this._structTreeParentId
};
return e ? h : this.annotationElementId && !v(this, hd, Pv).call(this, h) ? null : (h.id = this.annotationElementId, h);
}
renderAnnotationElement(e) {
const {
points: s,
rect: i
} = this.serializeDraw(!1);
return e.updateEdited({
rect: i,
thickness: this._drawingOptions["stroke-width"],
points: s
}), null;
}
};
hd = new WeakSet(), Pv = function(e) {
const {
color: s,
thickness: i,
opacity: r,
pageIndex: a
} = this._initialData;
return this._hasBeenMoved || this._hasBeenResized || e.color.some((l, c) => l !== s[c]) || e.thickness !== i || e.opacity !== r || e.pageIndex !== a;
}, G(Ma, "_type", "ink"), G(Ma, "_editorType", et.INK), G(Ma, "_defaultDrawingOptions", null);
let pp = Ma;
var Lt, fe, In, Ui, Rn, $o, oi, li, ts, jo, pt, El, xl, yu, mp, bu, yp, vu, Mv;
const Pl = class Pl extends Ft {
constructor(e) {
super({
...e,
name: "stampEditor"
});
b(this, pt);
b(this, Lt, null);
b(this, fe, null);
b(this, In, null);
b(this, Ui, null);
b(this, Rn, null);
b(this, $o, "");
b(this, oi, null);
b(this, li, null);
b(this, ts, !1);
b(this, jo, !1);
p(this, Ui, e.bitmapUrl), p(this, Rn, e.bitmapFile);
}
static initialize(e, s) {
Ft.initialize(e, s);
}
static get supportedTypes() {
return at(this, "supportedTypes", ["apng", "avif", "bmp", "gif", "jpeg", "png", "svg+xml", "webp", "x-icon"].map((s) => `image/${s}`));
}
static get supportedTypesStr() {
return at(this, "supportedTypesStr", this.supportedTypes.join(","));
}
static isHandlingMimeForPasting(e) {
return this.supportedTypes.includes(e);
}
static paste(e, s) {
s.pasteEditor(et.STAMP, {
bitmapFile: e.getAsFile()
});
}
altTextFinish() {
this._uiManager.useNewAltTextFlow && (this.div.hidden = !1), super.altTextFinish();
}
get telemetryFinalData() {
var e;
return {
type: "stamp",
hasAltText: !!((e = this.altTextData) != null && e.altText)
};
}
static computeTelemetryFinalData(e) {
const s = e.get("hasAltText");
return {
hasAltText: s.get(!0) ?? 0,
hasNoAltText: s.get(!1) ?? 0
};
}
async mlGuessAltText(e = null, s = !0) {
if (this.hasAltTextData())
return null;
const {
mlManager: i
} = this._uiManager;
if (!i)
throw new Error("No ML.");
if (!await i.isEnabledFor("altText"))
throw new Error("ML isn't enabled for alt text.");
const {
data: r,
width: a,
height: l
} = e || this.copyCanvas(null, null, !0).imageData, c = await i.guess({
name: "altText",
request: {
data: r,
width: a,
height: l,
channels: r.length / (a * l)
}
});
if (!c)
throw new Error("No response from the AI service.");
if (c.error)
throw new Error("Error from the AI service.");
if (c.cancel)
return null;
if (!c.output)
throw new Error("No valid response from the AI service.");
const h = c.output;
return await this.setGuessedAltText(h), s && !this.hasAltTextData() && (this.altTextData = {
alt: h,
decorative: !1
}), h;
}
remove() {
var e;
o(this, fe) && (p(this, Lt, null), this._uiManager.imageManager.deleteId(o(this, fe)), (e = o(this, oi)) == null || e.remove(), p(this, oi, null), o(this, li) && (clearTimeout(o(this, li)), p(this, li, null))), super.remove();
}
rebuild() {
if (!this.parent) {
o(this, fe) && v(this, pt, yu).call(this);
return;
}
super.rebuild(), this.div !== null && (o(this, fe) && o(this, oi) === null && v(this, pt, yu).call(this), this.isAttachedToDOM || this.parent.add(this));
}
onceAdded(e) {
this._isDraggable = !0, e && this.div.focus();
}
isEmpty() {
return !(o(this, In) || o(this, Lt) || o(this, Ui) || o(this, Rn) || o(this, fe));
}
get isResizable() {
return !0;
}
render() {
if (this.div)
return this.div;
let e, s;
if (this.width && (e = this.x, s = this.y), super.render(), this.div.hidden = !0, this.div.setAttribute("role", "figure"), this.addAltTextButton(), o(this, Lt) ? v(this, pt, mp).call(this) : v(this, pt, yu).call(this), this.width && !this.annotationElementId) {
const [i, r] = this.parentDimensions;
this.setAt(e * i, s * r, this.width * i, this.height * r);
}
return this._uiManager.addShouldRescale(this), this.div;
}
_onResized() {
this.onScaleChanging();
}
onScaleChanging() {
if (!this.parent)
return;
o(this, li) !== null && clearTimeout(o(this, li)), p(this, li, setTimeout(() => {
p(this, li, null), v(this, pt, yp).call(this);
}, 200));
}
copyCanvas(e, s, i = !1) {
var g;
e || (e = 224);
const {
width: r,
height: a
} = o(this, Lt), l = new ff();
let c = o(this, Lt), h = r, u = a, d = null;
if (s) {
if (r > s || a > s) {
const P = Math.min(s / r, s / a);
h = Math.floor(r * P), u = Math.floor(a * P);
}
d = document.createElement("canvas");
const m = d.width = Math.ceil(h * l.sx), y = d.height = Math.ceil(u * l.sy);
o(this, ts) || (c = v(this, pt, bu).call(this, m, y));
const _ = d.getContext("2d");
_.filter = this._uiManager.hcmFilter;
let A = "white", S = "#cfcfd8";
this._uiManager.hcmFilter !== "none" ? S = "black" : (g = window.matchMedia) != null && g.call(window, "(prefers-color-scheme: dark)").matches && (A = "#8f8f9d", S = "#42414d");
const E = 15, x = E * l.sx, T = E * l.sy, k = new OffscreenCanvas(x * 2, T * 2), C = k.getContext("2d");
C.fillStyle = A, C.fillRect(0, 0, x * 2, T * 2), C.fillStyle = S, C.fillRect(0, 0, x, T), C.fillRect(x, T, x, T), _.fillStyle = _.createPattern(k, "repeat"), _.fillRect(0, 0, m, y), _.drawImage(c, 0, 0, c.width, c.height, 0, 0, m, y);
}
let f = null;
if (i) {
let m, y;
if (l.symmetric && c.width < e && c.height < e)
m = c.width, y = c.height;
else if (c = o(this, Lt), r > e || a > e) {
const S = Math.min(e / r, e / a);
m = Math.floor(r * S), y = Math.floor(a * S), o(this, ts) || (c = v(this, pt, bu).call(this, m, y));
}
const A = new OffscreenCanvas(m, y).getContext("2d", {
willReadFrequently: !0
});
A.drawImage(c, 0, 0, c.width, c.height, 0, 0, m, y), f = {
width: m,
height: y,
data: A.getImageData(0, 0, m, y).data
};
}
return {
canvas: d,
width: h,
height: u,
imageData: f
};
}
getImageForAltText() {
return o(this, oi);
}
static async deserialize(e, s, i) {
var y;
let r = null;
if (e instanceof Qb) {
const {
data: {
rect: _,
rotation: A,
id: S,
structParent: E,
popupRef: x
},
container: T,
parent: {
page: {
pageNumber: k
}
}
} = e, C = T.querySelector("canvas"), P = i.imageManager.getFromCanvas(T.id, C);
C.remove();
const j = ((y = await s._structTree.getAriaAttributes(`${Hp}${S}`)) == null ? void 0 : y.get("aria-label")) || "";
r = e = {
annotationType: et.STAMP,
bitmapId: P.id,
bitmap: P.bitmap,
pageIndex: k - 1,
rect: _.slice(0),
rotation: A,
id: S,
deleted: !1,
accessibilityData: {
decorative: !1,
altText: j
},
isSvg: !1,
structParent: E,
popupRef: x
};
}
const a = await super.deserialize(e, s, i), {
rect: l,
bitmap: c,
bitmapUrl: h,
bitmapId: u,
isSvg: d,
accessibilityData: f
} = e;
u && i.imageManager.isValidId(u) ? (p(a, fe, u), c && p(a, Lt, c)) : p(a, Ui, h), p(a, ts, d);
const [g, m] = a.pageDimensions;
return a.width = (l[2] - l[0]) / g, a.height = (l[3] - l[1]) / m, a.annotationElementId = e.id || null, f && (a.altTextData = f), a._initialData = r, p(a, jo, !!r), a;
}
serialize(e = !1, s = null) {
if (this.isEmpty())
return null;
if (this.deleted)
return this.serializeDeleted();
const i = {
annotationType: et.STAMP,
bitmapId: o(this, fe),
pageIndex: this.pageIndex,
rect: this.getRect(0, 0),
rotation: this.rotation,
isSvg: o(this, ts),
structTreeParentId: this._structTreeParentId
};
if (e)
return i.bitmapUrl = v(this, pt, vu).call(this, !0), i.accessibilityData = this.serializeAltText(!0), i;
const {
decorative: r,
altText: a
} = this.serializeAltText(!1);
if (!r && a && (i.accessibilityData = {
type: "Figure",
alt: a
}), this.annotationElementId) {
const c = v(this, pt, Mv).call(this, i);
if (c.isSame)
return null;
c.isSameAltText ? delete i.accessibilityData : i.accessibilityData.structParent = this._initialData.structParent ?? -1;
}
if (i.id = this.annotationElementId, s === null)
return i;
s.stamps || (s.stamps = /* @__PURE__ */ new Map());
const l = o(this, ts) ? (i.rect[2] - i.rect[0]) * (i.rect[3] - i.rect[1]) : null;
if (!s.stamps.has(o(this, fe)))
s.stamps.set(o(this, fe), {
area: l,
serialized: i
}), i.bitmap = v(this, pt, vu).call(this, !1);
else if (o(this, ts)) {
const c = s.stamps.get(o(this, fe));
l > c.area && (c.area = l, c.serialized.bitmap.close(), c.serialized.bitmap = v(this, pt, vu).call(this, !1));
}
return i;
}
renderAnnotationElement(e) {
return e.updateEdited({
rect: this.getRect(0, 0)
}), null;
}
};
Lt = new WeakMap(), fe = new WeakMap(), In = new WeakMap(), Ui = new WeakMap(), Rn = new WeakMap(), $o = new WeakMap(), oi = new WeakMap(), li = new WeakMap(), ts = new WeakMap(), jo = new WeakMap(), pt = new WeakSet(), El = function(e, s = !1) {
if (!e) {
this.remove();
return;
}
p(this, Lt, e.bitmap), s || (p(this, fe, e.id), p(this, ts, e.isSvg)), e.file && p(this, $o, e.file.name), v(this, pt, mp).call(this);
}, xl = function() {
if (p(this, In, null), this._uiManager.enableWaiting(!1), !!o(this, oi)) {
if (this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && o(this, Lt)) {
this._editToolbar.hide(), this._uiManager.editAltText(this, !0);
return;
}
if (!this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && o(this, Lt)) {
this._reportTelemetry({
action: "pdfjs.image.image_added",
data: {
alt_text_modal: !1,
alt_text_type: "empty"
}
});
try {
this.mlGuessAltText();
} catch {
}
}
this.div.focus();
}
}, yu = function() {
if (o(this, fe)) {
this._uiManager.enableWaiting(!0), this._uiManager.imageManager.getFromId(o(this, fe)).then((i) => v(this, pt, El).call(this, i, !0)).finally(() => v(this, pt, xl).call(this));
return;
}
if (o(this, Ui)) {
const i = o(this, Ui);
p(this, Ui, null), this._uiManager.enableWaiting(!0), p(this, In, this._uiManager.imageManager.getFromUrl(i).then((r) => v(this, pt, El).call(this, r)).finally(() => v(this, pt, xl).call(this)));
return;
}
if (o(this, Rn)) {
const i = o(this, Rn);
p(this, Rn, null), this._uiManager.enableWaiting(!0), p(this, In, this._uiManager.imageManager.getFromFile(i).then((r) => v(this, pt, El).call(this, r)).finally(() => v(this, pt, xl).call(this)));
return;
}
const e = document.createElement("input");
e.type = "file", e.accept = Pl.supportedTypesStr;
const s = this._uiManager._signal;
p(this, In, new Promise((i) => {
e.addEventListener("change", async () => {
if (!e.files || e.files.length === 0)
this.remove();
else {
this._uiManager.enableWaiting(!0);
const r = await this._uiManager.imageManager.getFromFile(e.files[0]);
this._reportTelemetry({
action: "pdfjs.image.image_selected",
data: {
alt_text_modal: this._uiManager.useNewAltTextFlow
}
}), v(this, pt, El).call(this, r);
}
i();
}, {
signal: s
}), e.addEventListener("cancel", () => {
this.remove(), i();
}, {
signal: s
});
}).finally(() => v(this, pt, xl).call(this))), e.click();
}, mp = function() {
var d;
const {
div: e
} = this;
let {
width: s,
height: i
} = o(this, Lt);
const [r, a] = this.pageDimensions, l = 0.75;
if (this.width)
s = this.width * r, i = this.height * a;
else if (s > l * r || i > l * a) {
const f = Math.min(l * r / s, l * a / i);
s *= f, i *= f;
}
const [c, h] = this.parentDimensions;
this.setDims(s * c / r, i * h / a), this._uiManager.enableWaiting(!1);
const u = p(this, oi, document.createElement("canvas"));
u.setAttribute("role", "img"), this.addContainer(u), this.width = s / r, this.height = i / a, (d = this._initialOptions) != null && d.isCentered ? this.center() : this.fixAndSetPosition(), this._initialOptions = null, (!this._uiManager.useNewAltTextWhenAddingImage || !this._uiManager.useNewAltTextFlow || this.annotationElementId) && (e.hidden = !1), v(this, pt, yp).call(this), o(this, jo) || (this.parent.addUndoableEditor(this), p(this, jo, !0)), this._reportTelemetry({
action: "inserted_image"
}), o(this, $o) && u.setAttribute("aria-label", o(this, $o));
}, bu = function(e, s) {
const {
width: i,
height: r
} = o(this, Lt);
let a = i, l = r, c = o(this, Lt);
for (; a > 2 * e || l > 2 * s; ) {
const h = a, u = l;
a > 2 * e && (a = a >= 16384 ? Math.floor(a / 2) - 1 : Math.ceil(a / 2)), l > 2 * s && (l = l >= 16384 ? Math.floor(l / 2) - 1 : Math.ceil(l / 2));
const d = new OffscreenCanvas(a, l);
d.getContext("2d").drawImage(c, 0, 0, h, u, 0, 0, a, l), c = d.transferToImageBitmap();
}
return c;
}, yp = function() {
const [e, s] = this.parentDimensions, {
width: i,
height: r
} = this, a = new ff(), l = Math.ceil(i * e * a.sx), c = Math.ceil(r * s * a.sy), h = o(this, oi);
if (!h || h.width === l && h.height === c)
return;
h.width = l, h.height = c;
const u = o(this, ts) ? o(this, Lt) : v(this, pt, bu).call(this, l, c), d = h.getContext("2d");
d.filter = this._uiManager.hcmFilter, d.drawImage(u, 0, 0, u.width, u.height, 0, 0, l, c);
}, vu = function(e) {
if (e) {
if (o(this, ts)) {
const r = this._uiManager.imageManager.getSvgUrl(o(this, fe));
if (r)
return r;
}
const s = document.createElement("canvas");
return {
width: s.width,
height: s.height
} = o(this, Lt), s.getContext("2d").drawImage(o(this, Lt), 0, 0), s.toDataURL();
}
if (o(this, ts)) {
const [s, i] = this.pageDimensions, r = Math.round(this.width * s * Hn.PDF_TO_CSS_UNITS), a = Math.round(this.height * i * Hn.PDF_TO_CSS_UNITS), l = new OffscreenCanvas(r, a);
return l.getContext("2d").drawImage(o(this, Lt), 0, 0, o(this, Lt).width, o(this, Lt).height, 0, 0, r, a), l.transferToImageBitmap();
}
return structuredClone(o(this, Lt));
}, Mv = function(e) {
var l;
const {
pageIndex: s,
accessibilityData: {
altText: i
}
} = this._initialData, r = e.pageIndex === s, a = (((l = e.accessibilityData) == null ? void 0 : l.alt) || "") === i;
return {
isSame: !this._hasBeenMoved && !this._hasBeenResized && r && a,
isSameAltText: a
};
}, G(Pl, "_type", "stamp"), G(Pl, "_editorType", et.STAMP);
let gp = Pl;
var na, Bo, ci, Pn, zi, gs, Mn, Ho, ra, Os, Vi, Ae, Gi, H, Nn, Nt, Nv, qs, vp, _p, _u;
const ws = class ws {
constructor({
uiManager: t,
pageIndex: e,
div: s,
structTreeLayer: i,
accessibilityManager: r,
annotationLayer: a,
drawLayer: l,
textLayer: c,
viewport: h,
l10n: u
}) {
b(this, Nt);
b(this, na);
b(this, Bo, !1);
b(this, ci, null);
b(this, Pn, null);
b(this, zi, null);
b(this, gs, /* @__PURE__ */ new Map());
b(this, Mn, !1);
b(this, Ho, !1);
b(this, ra, !1);
b(this, Os, null);
b(this, Vi, null);
b(this, Ae, null);
b(this, Gi, null);
b(this, H);
const d = [...o(ws, Nn).values()];
if (!ws._initialized) {
ws._initialized = !0;
for (const f of d)
f.initialize(u, t);
}
t.registerEditorTypes(d), p(this, H, t), this.pageIndex = e, this.div = s, p(this, na, r), p(this, ci, a), this.viewport = h, p(this, Ae, c), this.drawLayer = l, this._structTree = i, o(this, H).addLayer(this);
}
get isEmpty() {
return o(this, gs).size === 0;
}
get isInvisible() {
return this.isEmpty && o(this, H).getMode() === et.NONE;
}
updateToolbar(t) {
o(this, H).updateToolbar(t);
}
updateMode(t = o(this, H).getMode()) {
switch (v(this, Nt, _u).call(this), t) {
case et.NONE:
this.disableTextSelection(), this.togglePointerEvents(!1), this.toggleAnnotationLayerPointerEvents(!0), this.disableClick();
return;
case et.INK:
this.disableTextSelection(), this.togglePointerEvents(!0), this.enableClick();
break;
case et.HIGHLIGHT:
this.enableTextSelection(), this.togglePointerEvents(!1), this.disableClick();
break;
default:
this.disableTextSelection(), this.togglePointerEvents(!0), this.enableClick();
}
this.toggleAnnotationLayerPointerEvents(!1);
const {
classList: e
} = this.div;
for (const s of o(ws, Nn).values())
e.toggle(`${s._type}Editing`, t === s._editorType);
this.div.hidden = !1;
}
hasTextLayer(t) {
var e;
return t === ((e = o(this, Ae)) == null ? void 0 : e.div);
}
setEditingState(t) {
o(this, H).setEditingState(t);
}
addCommands(t) {
o(this, H).addCommands(t);
}
cleanUndoStack(t) {
o(this, H).cleanUndoStack(t);
}
toggleDrawing(t = !1) {
this.div.classList.toggle("drawing", !t);
}
togglePointerEvents(t = !1) {
this.div.classList.toggle("disabled", !t);
}
toggleAnnotationLayerPointerEvents(t = !1) {
var e;
(e = o(this, ci)) == null || e.div.classList.toggle("disabled", !t);
}
async enable() {
p(this, ra, !0), this.div.tabIndex = 0, this.togglePointerEvents(!0);
const t = /* @__PURE__ */ new Set();
for (const s of o(this, gs).values())
s.enableEditing(), s.show(!0), s.annotationElementId && (o(this, H).removeChangedExistingAnnotation(s), t.add(s.annotationElementId));
if (!o(this, ci)) {
p(this, ra, !1);
return;
}
const e = o(this, ci).getEditableAnnotations();
for (const s of e) {
if (s.hide(), o(this, H).isDeletedAnnotationElement(s.data.id) || t.has(s.data.id))
continue;
const i = await this.deserialize(s);
i && (this.addOrRebuild(i), i.enableEditing());
}
p(this, ra, !1);
}
disable() {
var i;
p(this, Ho, !0), this.div.tabIndex = -1, this.togglePointerEvents(!1);
const t = /* @__PURE__ */ new Map(), e = /* @__PURE__ */ new Map();
for (const r of o(this, gs).values())
if (r.disableEditing(), !!r.annotationElementId) {
if (r.serialize() !== null) {
t.set(r.annotationElementId, r);
continue;
} else
e.set(r.annotationElementId, r);
(i = this.getEditableAnnotation(r.annotationElementId)) == null || i.show(), r.remove();
}
if (o(this, ci)) {
const r = o(this, ci).getEditableAnnotations();
for (const a of r) {
const {
id: l
} = a.data;
if (o(this, H).isDeletedAnnotationElement(l))
continue;
let c = e.get(l);
if (c) {
c.resetAnnotationElement(a), c.show(!1), a.show();
continue;
}
c = t.get(l), c && (o(this, H).addChangedExistingAnnotation(c), c.renderAnnotationElement(a) && c.show(!1)), a.show();
}
}
v(this, Nt, _u).call(this), this.isEmpty && (this.div.hidden = !0);
const {
classList: s
} = this.div;
for (const r of o(ws, Nn).values())
s.remove(`${r._type}Editing`);
this.disableTextSelection(), this.toggleAnnotationLayerPointerEvents(!0), p(this, Ho, !1);
}
getEditableAnnotation(t) {
var e;
return ((e = o(this, ci)) == null ? void 0 : e.getEditableAnnotation(t)) || null;
}
setActiveEditor(t) {
o(this, H).getActive() !== t && o(this, H).setActiveEditor(t);
}
enableTextSelection() {
var t;
if (this.div.tabIndex = -1, (t = o(this, Ae)) != null && t.div && !o(this, Gi)) {
p(this, Gi, new AbortController());
const e = o(this, H).combinedSignal(o(this, Gi));
o(this, Ae).div.addEventListener("pointerdown", v(this, Nt, Nv).bind(this), {
signal: e
}), o(this, Ae).div.classList.add("highlighting");
}
}
disableTextSelection() {
var t;
this.div.tabIndex = 0, (t = o(this, Ae)) != null && t.div && o(this, Gi) && (o(this, Gi).abort(), p(this, Gi, null), o(this, Ae).div.classList.remove("highlighting"));
}
enableClick() {
if (o(this, Pn))
return;
p(this, Pn, new AbortController());
const t = o(this, H).combinedSignal(o(this, Pn));
this.div.addEventListener("pointerdown", this.pointerdown.bind(this), {
signal: t
});
const e = this.pointerup.bind(this);
this.div.addEventListener("pointerup", e, {
signal: t
}), this.div.addEventListener("pointercancel", e, {
signal: t
});
}
disableClick() {
var t;
(t = o(this, Pn)) == null || t.abort(), p(this, Pn, null);
}
attach(t) {
o(this, gs).set(t.id, t);
const {
annotationElementId: e
} = t;
e && o(this, H).isDeletedAnnotationElement(e) && o(this, H).removeDeletedAnnotationElement(t);
}
detach(t) {
var e;
o(this, gs).delete(t.id), (e = o(this, na)) == null || e.removePointerInTextLayer(t.contentDiv), !o(this, Ho) && t.annotationElementId && o(this, H).addDeletedAnnotationElement(t);
}
remove(t) {
this.detach(t), o(this, H).removeEditor(t), t.div.remove(), t.isAttachedToDOM = !1;
}
changeParent(t) {
var e;
t.parent !== this && (t.parent && t.annotationElementId && (o(this, H).addDeletedAnnotationElement(t.annotationElementId), Ft.deleteAnnotationElement(t), t.annotationElementId = null), this.attach(t), (e = t.parent) == null || e.detach(t), t.setParent(this), t.div && t.isAttachedToDOM && (t.div.remove(), this.div.append(t.div)));
}
add(t) {
if (!(t.parent === this && t.isAttachedToDOM)) {
if (this.changeParent(t), o(this, H).addEditor(t), this.attach(t), !t.isAttachedToDOM) {
const e = t.render();
this.div.append(e), t.isAttachedToDOM = !0;
}
t.fixAndSetPosition(), t.onceAdded(!o(this, ra)), o(this, H).addToAnnotationStorage(t), t._reportTelemetry(t.telemetryInitialData);
}
}
moveEditorInDOM(t) {
var s;
if (!t.isAttachedToDOM)
return;
const {
activeElement: e
} = document;
t.div.contains(e) && !o(this, zi) && (t._focusEventsAllowed = !1, p(this, zi, setTimeout(() => {
p(this, zi, null), t.div.contains(document.activeElement) ? t._focusEventsAllowed = !0 : (t.div.addEventListener("focusin", () => {
t._focusEventsAllowed = !0;
}, {
once: !0,
signal: o(this, H)._signal
}), e.focus());
}, 0))), t._structTreeParentId = (s = o(this, na)) == null ? void 0 : s.moveElementInDOM(this.div, t.div, t.contentDiv, !0);
}
addOrRebuild(t) {
t.needsToBeRebuilt() ? (t.parent || (t.parent = this), t.rebuild(), t.show()) : this.add(t);
}
addUndoableEditor(t) {
const e = () => t._uiManager.rebuild(t), s = () => {
t.remove();
};
this.addCommands({
cmd: e,
undo: s,
mustExec: !1
});
}
getNextId() {
return o(this, H).getId();
}
combinedSignal(t) {
return o(this, H).combinedSignal(t);
}
canCreateNewEmptyEditor() {
var t;
return (t = o(this, Nt, qs)) == null ? void 0 : t.canCreateNewEmptyEditor();
}
pasteEditor(t, e) {
o(this, H).updateToolbar(t), o(this, H).updateMode(t);
const {
offsetX: s,
offsetY: i
} = v(this, Nt, _p).call(this), r = this.getNextId(), a = v(this, Nt, vp).call(this, {
parent: this,
id: r,
x: s,
y: i,
uiManager: o(this, H),
isCentered: !0,
...e
});
a && this.add(a);
}
async deserialize(t) {
var e;
return await ((e = o(ws, Nn).get(t.annotationType ?? t.annotationEditorType)) == null ? void 0 : e.deserialize(t, this, o(this, H))) || null;
}
createAndAddNewEditor(t, e, s = {}) {
const i = this.getNextId(), r = v(this, Nt, vp).call(this, {
parent: this,
id: i,
x: t.offsetX,
y: t.offsetY,
uiManager: o(this, H),
isCentered: e,
...s
});
return r && this.add(r), r;
}
addNewEditor() {
this.createAndAddNewEditor(v(this, Nt, _p).call(this), !0);
}
setSelected(t) {
o(this, H).setSelected(t);
}
toggleSelected(t) {
o(this, H).toggleSelected(t);
}
unselect(t) {
o(this, H).unselect(t);
}
pointerup(t) {
var s;
const {
isMac: e
} = Me.platform;
if (!(t.button !== 0 || t.ctrlKey && e) && t.target === this.div && o(this, Mn) && (p(this, Mn, !1), !((s = o(this, Nt, qs)) != null && s.isDrawer && o(this, Nt, qs).supportMultipleDrawings))) {
if (!o(this, Bo)) {
p(this, Bo, !0);
return;
}
if (o(this, H).getMode() === et.STAMP) {
o(this, H).unselectAll();
return;
}
this.createAndAddNewEditor(t, !1);
}
}
pointerdown(t) {
var i;
if (o(this, H).getMode() === et.HIGHLIGHT && this.enableTextSelection(), o(this, Mn)) {
p(this, Mn, !1);
return;
}
const {
isMac: e
} = Me.platform;
if (t.button !== 0 || t.ctrlKey && e || t.target !== this.div)
return;
if (p(this, Mn, !0), (i = o(this, Nt, qs)) != null && i.isDrawer) {
this.startDrawingSession(t);
return;
}
const s = o(this, H).getActive();
p(this, Bo, !s || s.isEmpty());
}
startDrawingSession(t) {
if (this.div.focus(), o(this, Os)) {
o(this, Nt, qs).startDrawing(this, o(this, H), !1, t);
return;
}
o(this, H).setCurrentDrawingSession(this), p(this, Os, new AbortController());
const e = o(this, H).combinedSignal(o(this, Os));
this.div.addEventListener("blur", ({
relatedTarget: s
}) => {
s && !this.div.contains(s) && (p(this, Vi, null), this.commitOrRemove());
}, {
signal: e
}), o(this, Nt, qs).startDrawing(this, o(this, H), !1, t);
}
pause(t) {
if (t) {
const {
activeElement: e
} = document;
this.div.contains(e) && p(this, Vi, e);
return;
}
o(this, Vi) && setTimeout(() => {
var e;
(e = o(this, Vi)) == null || e.focus(), p(this, Vi, null);
}, 0);
}
endDrawingSession(t = !1) {
return o(this, Os) ? (o(this, H).setCurrentDrawingSession(null), o(this, Os).abort(), p(this, Os, null), p(this, Vi, null), o(this, Nt, qs).endDrawing(t)) : null;
}
findNewParent(t, e, s) {
const i = o(this, H).findParent(e, s);
return i === null || i === this ? !1 : (i.changeParent(t), !0);
}
commitOrRemove() {
return o(this, Os) ? (this.endDrawingSession(), !0) : !1;
}
onScaleChanging() {
o(this, Os) && o(this, Nt, qs).onScaleChangingWhenDrawing(this);
}
destroy() {
var t, e;
this.commitOrRemove(), ((t = o(this, H).getActive()) == null ? void 0 : t.parent) === this && (o(this, H).commitOrRemove(), o(this, H).setActiveEditor(null)), o(this, zi) && (clearTimeout(o(this, zi)), p(this, zi, null));
for (const s of o(this, gs).values())
(e = o(this, na)) == null || e.removePointerInTextLayer(s.contentDiv), s.setParent(null), s.isAttachedToDOM = !1, s.div.remove();
this.div = null, o(this, gs).clear(), o(this, H).removeLayer(this);
}
render({
viewport: t
}) {
this.viewport = t, fa(this.div, t);
for (const e of o(this, H).getEditors(this.pageIndex))
this.add(e), e.rebuild();
this.updateMode();
}
update({
viewport: t
}) {
o(this, H).commitOrRemove(), v(this, Nt, _u).call(this);
const e = this.viewport.rotation, s = t.rotation;
if (this.viewport = t, fa(this.div, {
rotation: s
}), e !== s)
for (const i of o(this, gs).values())
i.rotate(s);
}
get pageDimensions() {
const {
pageWidth: t,
pageHeight: e
} = this.viewport.rawDims;
return [t, e];
}
get scale() {
return o(this, H).viewParameters.realScale;
}
};
na = new WeakMap(), Bo = new WeakMap(), ci = new WeakMap(), Pn = new WeakMap(), zi = new WeakMap(), gs = new WeakMap(), Mn = new WeakMap(), Ho = new WeakMap(), ra = new WeakMap(), Os = new WeakMap(), Vi = new WeakMap(), Ae = new WeakMap(), Gi = new WeakMap(), H = new WeakMap(), Nn = new WeakMap(), Nt = new WeakSet(), Nv = function(t) {
o(this, H).unselectAll();
const {
target: e
} = t;
if (e === o(this, Ae).div || (e.getAttribute("role") === "img" || e.classList.contains("endOfContent")) && o(this, Ae).div.contains(e)) {
const {
isMac: s
} = Me.platform;
if (t.button !== 0 || t.ctrlKey && s)
return;
o(this, H).showAllEditors("highlight", !0, !0), o(this, Ae).div.classList.add("free"), this.toggleDrawing(), Vu.startHighlighting(this, o(this, H).direction === "ltr", {
target: o(this, Ae).div,
x: t.x,
y: t.y
}), o(this, Ae).div.addEventListener("pointerup", () => {
o(this, Ae).div.classList.remove("free"), this.toggleDrawing(!0);
}, {
once: !0,
signal: o(this, H)._signal
}), t.preventDefault();
}
}, qs = function() {
return o(ws, Nn).get(o(this, H).getMode());
}, vp = function(t) {
const e = o(this, Nt, qs);
return e ? new e.prototype.constructor(t) : null;
}, _p = function() {
const {
x: t,
y: e,
width: s,
height: i
} = this.div.getBoundingClientRect(), r = Math.max(0, t), a = Math.max(0, e), l = Math.min(window.innerWidth, t + s), c = Math.min(window.innerHeight, e + i), h = (r + l) / 2 - t, u = (a + c) / 2 - e, [d, f] = this.viewport.rotation % 180 === 0 ? [h, u] : [u, h];
return {
offsetX: d,
offsetY: f
};
}, _u = function() {
for (const t of o(this, gs).values())
t.isEmpty() && t.remove();
}, G(ws, "_initialized", !1), b(ws, Nn, new Map([Qf, pp, gp, Vu].map((t) => [t._editorType, t])));
let bp = ws;
var Ls, Rh, Pe, aa, ud, Ov, fi, wp, Lv, Sp;
const ye = class ye {
constructor({
pageIndex: t
}) {
b(this, fi);
b(this, Ls, null);
b(this, Rh, 0);
b(this, Pe, /* @__PURE__ */ new Map());
b(this, aa, /* @__PURE__ */ new Map());
this.pageIndex = t;
}
setParent(t) {
if (!o(this, Ls)) {
p(this, Ls, t);
return;
}
if (o(this, Ls) !== t) {
if (o(this, Pe).size > 0)
for (const e of o(this, Pe).values())
e.remove(), t.append(e);
p(this, Ls, t);
}
}
static get _svgFactory() {
return at(this, "_svgFactory", new Xp());
}
draw(t, e = !1, s = !1) {
const i = xe(this, Rh)._++, r = v(this, fi, wp).call(this), a = ye._svgFactory.createElement("defs");
r.append(a);
const l = ye._svgFactory.createElement("path");
a.append(l);
const c = `path_p${this.pageIndex}_${i}`;
l.setAttribute("id", c), l.setAttribute("vector-effect", "non-scaling-stroke"), e && o(this, aa).set(i, l);
const h = s ? v(this, fi, Lv).call(this, a, c) : null, u = ye._svgFactory.createElement("use");
return r.append(u), u.setAttribute("href", `#${c}`), this.updateProperties(r, t), o(this, Pe).set(i, r), {
id: i,
clipPathId: `url(#${h})`
};
}
drawOutline(t, e) {
const s = xe(this, Rh)._++, i = v(this, fi, wp).call(this), r = ye._svgFactory.createElement("defs");
i.append(r);
const a = ye._svgFactory.createElement("path");
r.append(a);
const l = `path_p${this.pageIndex}_${s}`;
a.setAttribute("id", l), a.setAttribute("vector-effect", "non-scaling-stroke");
let c;
if (e) {
const d = ye._svgFactory.createElement("mask");
r.append(d), c = `mask_p${this.pageIndex}_${s}`, d.setAttribute("id", c), d.setAttribute("maskUnits", "objectBoundingBox");
const f = ye._svgFactory.createElement("rect");
d.append(f), f.setAttribute("width", "1"), f.setAttribute("height", "1"), f.setAttribute("fill", "white");
const g = ye._svgFactory.createElement("use");
d.append(g), g.setAttribute("href", `#${l}`), g.setAttribute("stroke", "none"), g.setAttribute("fill", "black"), g.setAttribute("fill-rule", "nonzero"), g.classList.add("mask");
}
const h = ye._svgFactory.createElement("use");
i.append(h), h.setAttribute("href", `#${l}`), c && h.setAttribute("mask", `url(#${c})`);
const u = h.cloneNode();
return i.append(u), h.classList.add("mainOutline"), u.classList.add("secondaryOutline"), this.updateProperties(i, t), o(this, Pe).set(s, i), s;
}
finalizeDraw(t, e) {
o(this, aa).delete(t), this.updateProperties(t, e);
}
updateProperties(t, e) {
var c;
if (!e)
return;
const {
root: s,
bbox: i,
rootClass: r,
path: a
} = e, l = typeof t == "number" ? o(this, Pe).get(t) : t;
if (l) {
if (s && v(this, fi, Sp).call(this, l, s), i && v(c = ye, ud, Ov).call(c, l, i), r) {
const {
classList: h
} = l;
for (const [u, d] of Object.entries(r))
h.toggle(u, d);
}
if (a) {
const u = l.firstChild.firstChild;
v(this, fi, Sp).call(this, u, a);
}
}
}
updateParent(t, e) {
if (e === this)
return;
const s = o(this, Pe).get(t);
s && (o(e, Ls).append(s), o(this, Pe).delete(t), o(e, Pe).set(t, s));
}
remove(t) {
o(this, aa).delete(t), o(this, Ls) !== null && (o(this, Pe).get(t).remove(), o(this, Pe).delete(t));
}
destroy() {
p(this, Ls, null);
for (const t of o(this, Pe).values())
t.remove();
o(this, Pe).clear(), o(this, aa).clear();
}
};
Ls = new WeakMap(), Rh = new WeakMap(), Pe = new WeakMap(), aa = new WeakMap(), ud = new WeakSet(), Ov = function(t, [e, s, i, r]) {
const {
style: a
} = t;
a.top = `${100 * s}%`, a.left = `${100 * e}%`, a.width = `${100 * i}%`, a.height = `${100 * r}%`;
}, fi = new WeakSet(), wp = function() {
const t = ye._svgFactory.create(1, 1, !0);
return o(this, Ls).append(t), t.setAttribute("aria-hidden", !0), t;
}, Lv = function(t, e) {
const s = ye._svgFactory.createElement("clipPath");
t.append(s);
const i = `clip_${e}`;
s.setAttribute("id", i), s.setAttribute("clipPathUnits", "objectBoundingBox");
const r = ye._svgFactory.createElement("use");
return s.append(r), r.setAttribute("href", `#${e}`), r.classList.add("clip"), i;
}, Sp = function(t, e) {
for (const [s, i] of Object.entries(e))
i === null ? t.removeAttribute(s) : t.setAttribute(s, i);
}, b(ye, ud);
let Ap = ye;
globalThis.pdfjsTestingUtils = {
HighlightOutliner: ep
};
X.AbortException;
X.AnnotationEditorLayer;
X.AnnotationEditorParamsType;
X.AnnotationEditorType;
X.AnnotationEditorUIManager;
X.AnnotationLayer;
X.AnnotationMode;
X.ColorPicker;
X.DOMSVGFactory;
X.DrawLayer;
X.FeatureTest;
var AT = X.GlobalWorkerOptions;
X.ImageKind;
X.InvalidPDFException;
X.MissingPDFException;
X.OPS;
X.OutputScale;
X.PDFDataRangeTransport;
X.PDFDateString;
X.PDFWorker;
X.PasswordResponses;
X.PermissionFlag;
X.PixelsPerInch;
X.RenderingCancelledException;
X.TextLayer;
X.TouchManager;
X.UnexpectedResponseException;
X.Util;
X.VerbosityLevel;
X.XfaLayer;
X.build;
X.createValidAbsoluteUrl;
X.fetchData;
var wT = X.getDocument;
X.getFilenameFromUrl;
X.getPdfFilenameFromUrl;
X.getXfaPageViewport;
X.isDataScheme;
X.isPdfFile;
X.noContextMenu;
X.normalizeUnicode;
X.setLayerDimensions;
X.shadow;
X.stopEvent;
X.version;
function ST(n) {
return new Worker(
"/assets/pdf.worker-BcRfCWcj.js",
{
name: n == null ? void 0 : n.name
}
);
}
const ET = w.object({
fullName: w.string(),
email: w.string().email(),
phone: w.string(),
location: w.object({
city: w.string(),
country: w.string(),
postalCode: w.string().optional()
}),
socialProfiles: w.object({
linkedin: w.string().url().optional(),
github: w.string().url().optional(),
personalWebsite: w.string().url().optional()
}).optional()
}), xT = w.object({
institution: w.string(),
degree: w.string(),
fieldOfStudy: w.string(),
startDate: w.string(),
endDate: w.string().optional(),
gpa: w.any().optional(),
honors: w.array(w.string()).optional()
}), TT = w.object({
company: w.string(),
position: w.string(),
startDate: w.string(),
endDate: w.string().optional(),
isCurrentRole: w.boolean(),
responsibilities: w.array(w.string()),
achievements: w.array(w.string()).optional(),
technologies: w.array(w.string()).optional()
}), CT = w.object({
category: w.string(),
skills: w.array(w.string())
}), kT = w.object({
contactInfo: ET,
summary: w.string(),
education: w.array(xT),
workExperience: w.array(TT),
skills: w.array(CT),
languages: w.array(
w.object({
language: w.string(),
proficiency: w.enum(["Native", "Fluent", "Intermediate", "Basic"])
})
).optional(),
certifications: w.array(
w.object({
name: w.string(),
issuingOrganization: w.string(),
date: w.string()
})
).optional(),
projects: w.array(
w.object({
name: w.string(),
description: w.string(),
technologies: w.array(w.string()),
link: w.string().url().optional()
})
).optional()
});
var IT = Object.defineProperty, RT = Object.getOwnPropertyDescriptor, Dv = (n, t, e, s) => {
for (var i = s > 1 ? void 0 : s ? RT(t, e) : t, r = n.length - 1, a; r >= 0; r--)
(a = n[r]) && (i = (s ? a(t, e, i) : a(i)) || i);
return s && i && IT(t, e, i), i;
};
AT.workerPort = new ST();
let qu = class extends kl {
constructor() {
super(...arguments), this.label = "Upload your CV";
}
render() {
return Jv` <button @click="${this._onClick}">${this.label}</button> `;
}
_onClick() {
const n = document.createElement("input");
n.type = "file", n.accept = "application/pdf", n.multiple = !0, n.style.display = "none", n.addEventListener("change", async () => {
const t = await new Promise((s) => {
const i = Array.from(n.files || []).filter(
(r) => r.type === "application/pdf"
);
s(i);
}), e = [];
for (const s of t) {
const i = [], r = await s.arrayBuffer(), a = await wT(r).promise, l = a.numPages;
for (let c = 1; c <= l; c++) {
const d = (await (await a.getPage(c)).getTextContent()).items.map((f) => f.hasEOL ? `
` : f.str).join("");
i.push(d);
}
e.push({
filename: s.name,
content: i.join(`
`),
parsed: await PT(i.join(`
`))
});
}
this.dispatchEvent(
new CustomEvent("cv-parsed", {
detail: e
})
);
}), n.click();
}
};
qu.styles = Bv``;
Dv([
c_()
], qu.prototype, "label", 2);
qu = Dv([
a_("succefy-cv-button")
], qu);
async function PT(n) {
const t = Fy({
baseURL: "https://text.pollinations.ai/openai",
apiKey: "pollinations"
});
return await qS({
model: t("gpt-4o-mini"),
prompt: `Using this CV information of the candidate give me a JSON object of the candidate's CV.
${n}`,
schema: kT
});
}
export {
qu as MyElement
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment