/**
* TinyMCE version 7.1.0 (2024-05-08)
*/
!(function () {
"use strict";
var e = function (e) {
if (null === e) return "null";
if (void 0 === e) return "undefined";
var t = typeof e;
return "object" === t && (Array.prototype.isPrototypeOf(e) || (e.constructor && "Array" === e.constructor.name))
? "array"
: "object" === t && (String.prototype.isPrototypeOf(e) || (e.constructor && "String" === e.constructor.name))
? "string"
: t;
},
t = function (e) {
return {eq: e};
},
n = t(function (e, t) {
return e === t;
}),
o = function (e) {
return t(function (t, n) {
if (t.length !== n.length) return !1;
for (var o = t.length, r = 0; r < o; r++) if (!e.eq(t[r], n[r])) return !1;
return !0;
});
},
r = function (e) {
return t(function (r, s) {
var a = Object.keys(r),
i = Object.keys(s);
if (
!(function (e, n) {
return (function (e, n) {
return t(function (t, o) {
return e.eq(n(t), n(o));
});
})(o(e), function (e) {
return (function (e, t) {
return Array.prototype.slice.call(e).sort(t);
})(e, n);
});
})(n).eq(a, i)
)
return !1;
for (var l = a.length, d = 0; d < l; d++) {
var c = a[d];
if (!e.eq(r[c], s[c])) return !1;
}
return !0;
});
},
s = t(function (t, n) {
if (t === n) return !0;
var a = e(t);
return (
a === e(n) &&
((function (e) {
return -1 !== ["undefined", "boolean", "number", "string", "function", "xml", "null"].indexOf(e);
})(a)
? t === n
: "array" === a
? o(s).eq(t, n)
: "object" === a && r(s).eq(t, n))
);
});
const a = Object.getPrototypeOf,
i = (e, t, n) => {
var o;
return !!n(e, t.prototype) || (null === (o = e.constructor) || void 0 === o ? void 0 : o.name) === t.name;
},
l = e => t =>
(e => {
const t = typeof e;
return null === e
? "null"
: "object" === t && Array.isArray(e)
? "array"
: "object" === t && i(e, String, (e, t) => t.isPrototypeOf(e))
? "string"
: t;
})(t) === e,
d = e => t => typeof t === e,
c = e => t => e === t,
u = (e, t) => f(e) && i(e, t, (e, t) => a(e) === t),
m = l("string"),
f = l("object"),
g = e => u(e, Object),
p = l("array"),
h = c(null),
b = d("boolean"),
v = c(void 0),
y = e => null == e,
C = e => !y(e),
w = d("function"),
x = d("number"),
E = (e, t) => {
if (p(e)) {
for (let n = 0, o = e.length; n < o; ++n) if (!t(e[n])) return !1;
return !0;
}
return !1;
},
k = () => {},
_ =
(e, t) =>
(...n) =>
e(t.apply(null, n)),
S = (e, t) => n => e(t(n)),
N = e => () => e,
R = e => e,
A = (e, t) => e === t;
function T(e, ...t) {
return (...n) => {
const o = t.concat(n);
return e.apply(null, o);
};
}
const O = e => t => !e(t),
B = e => () => {
throw new Error(e);
},
P = e => e(),
D = e => {
e();
},
L = N(!1),
M = N(!0);
class I {
constructor(e, t) {
(this.tag = e), (this.value = t);
}
static some(e) {
return new I(!0, e);
}
static none() {
return I.singletonNone;
}
fold(e, t) {
return this.tag ? t(this.value) : e();
}
isSome() {
return this.tag;
}
isNone() {
return !this.tag;
}
map(e) {
return this.tag ? I.some(e(this.value)) : I.none();
}
bind(e) {
return this.tag ? e(this.value) : I.none();
}
exists(e) {
return this.tag && e(this.value);
}
forall(e) {
return !this.tag || e(this.value);
}
filter(e) {
return !this.tag || e(this.value) ? this : I.none();
}
getOr(e) {
return this.tag ? this.value : e;
}
or(e) {
return this.tag ? this : e;
}
getOrThunk(e) {
return this.tag ? this.value : e();
}
orThunk(e) {
return this.tag ? this : e();
}
getOrDie(e) {
if (this.tag) return this.value;
throw new Error(null != e ? e : "Called getOrDie on None");
}
static from(e) {
return C(e) ? I.some(e) : I.none();
}
getOrNull() {
return this.tag ? this.value : null;
}
getOrUndefined() {
return this.value;
}
each(e) {
this.tag && e(this.value);
}
toArray() {
return this.tag ? [this.value] : [];
}
toString() {
return this.tag ? `some(${this.value})` : "none()";
}
}
I.singletonNone = new I(!1);
const F = Array.prototype.slice,
U = Array.prototype.indexOf,
z = Array.prototype.push,
j = (e, t) => U.call(e, t),
H = (e, t) => j(e, t) > -1,
$ = (e, t) => {
for (let n = 0, o = e.length; n < o; n++) if (t(e[n], n)) return !0;
return !1;
},
V = (e, t) => {
const n = e.length,
o = new Array(n);
for (let r = 0; r < n; r++) {
const n = e[r];
o[r] = t(n, r);
}
return o;
},
q = (e, t) => {
for (let n = 0, o = e.length; n < o; n++) t(e[n], n);
},
W = (e, t) => {
for (let n = e.length - 1; n >= 0; n--) t(e[n], n);
},
K = (e, t) => {
const n = [],
o = [];
for (let r = 0, s = e.length; r < s; r++) {
const s = e[r];
(t(s, r) ? n : o).push(s);
}
return {pass: n, fail: o};
},
Y = (e, t) => {
const n = [];
for (let o = 0, r = e.length; o < r; o++) {
const r = e[o];
t(r, o) && n.push(r);
}
return n;
},
G = (e, t, n) => (
W(e, (e, o) => {
n = t(n, e, o);
}),
n
),
X = (e, t, n) => (
q(e, (e, o) => {
n = t(n, e, o);
}),
n
),
Z = (e, t, n) => {
for (let o = 0, r = e.length; o < r; o++) {
const r = e[o];
if (t(r, o)) return I.some(r);
if (n(r, o)) break;
}
return I.none();
},
Q = (e, t) => Z(e, t, L),
J = (e, t) => {
for (let n = 0, o = e.length; n < o; n++) if (t(e[n], n)) return I.some(n);
return I.none();
},
ee = e => {
const t = [];
for (let n = 0, o = e.length; n < o; ++n) {
if (!p(e[n])) throw new Error("Arr.flatten item " + n + " was not an array, input: " + e);
z.apply(t, e[n]);
}
return t;
},
te = (e, t) => ee(V(e, t)),
ne = (e, t) => {
for (let n = 0, o = e.length; n < o; ++n) if (!0 !== t(e[n], n)) return !1;
return !0;
},
oe = e => {
const t = F.call(e, 0);
return t.reverse(), t;
},
re = (e, t) => Y(e, e => !H(t, e)),
se = (e, t) => {
const n = {};
for (let o = 0, r = e.length; o < r; o++) {
const r = e[o];
n[String(r)] = t(r, o);
}
return n;
},
ae = (e, t) => {
const n = F.call(e, 0);
return n.sort(t), n;
},
ie = (e, t) => (t >= 0 && t < e.length ? I.some(e[t]) : I.none()),
le = e => ie(e, 0),
de = e => ie(e, e.length - 1),
ce = w(Array.from) ? Array.from : e => F.call(e),
ue = (e, t) => {
for (let n = 0; n < e.length; n++) {
const o = t(e[n], n);
if (o.isSome()) return o;
}
return I.none();
},
me = (e, t) => {
const n = [],
o = w(t) ? e => $(n, n => t(n, e)) : e => H(n, e);
for (let t = 0, r = e.length; t < r; t++) {
const r = e[t];
o(r) || n.push(r);
}
return n;
},
fe = Object.keys,
ge = Object.hasOwnProperty,
pe = (e, t) => {
const n = fe(e);
for (let o = 0, r = n.length; o < r; o++) {
const r = n[o];
t(e[r], r);
}
},
he = (e, t) => be(e, (e, n) => ({k: n, v: t(e, n)})),
be = (e, t) => {
const n = {};
return (
pe(e, (e, o) => {
const r = t(e, o);
n[r.k] = r.v;
}),
n
);
},
ve = e => (t, n) => {
e[n] = t;
},
ye = (e, t, n, o) => {
pe(e, (e, r) => {
(t(e, r) ? n : o)(e, r);
});
},
Ce = (e, t) => {
const n = {};
return ye(e, t, ve(n), k), n;
},
we = (e, t) => {
const n = [];
return (
pe(e, (e, o) => {
n.push(t(e, o));
}),
n
);
},
xe = e => we(e, R),
Ee = (e, t) => (ke(e, t) ? I.from(e[t]) : I.none()),
ke = (e, t) => ge.call(e, t),
_e = (e, t) => ke(e, t) && void 0 !== e[t] && null !== e[t],
Se = e => {
const t = {};
return (
q(e, e => {
t[e] = {};
}),
fe(t)
);
},
Ne = e => void 0 !== e.length,
Re = Array.isArray,
Ae = (e, t, n) => {
if (!e) return !1;
if (((n = n || e), Ne(e))) {
for (let o = 0, r = e.length; o < r; o++) if (!1 === t.call(n, e[o], o, e)) return !1;
} else for (const o in e) if (ke(e, o) && !1 === t.call(n, e[o], o, e)) return !1;
return !0;
},
Te = (e, t) => {
const n = [];
return (
Ae(e, (o, r) => {
n.push(t(o, r, e));
}),
n
);
},
Oe = (e, t) => {
const n = [];
return (
Ae(e, (o, r) => {
(t && !t(o, r, e)) || n.push(o);
}),
n
);
},
Be = (e, t, n, o) => {
let r = v(n) ? e[0] : n;
for (let n = 0; n < e.length; n++) r = t.call(o, r, e[n], n);
return r;
},
Pe = (e, t, n) => {
for (let o = 0, r = e.length; o < r; o++) if (t.call(n, e[o], o, e)) return o;
return -1;
},
De = e => e[e.length - 1],
Le = e => {
let t,
n = !1;
return (...o) => (n || ((n = !0), (t = e.apply(null, o))), t);
},
Me = () => Ie(0, 0),
Ie = (e, t) => ({major: e, minor: t}),
Fe = {
nu: Ie,
detect: (e, t) => {
const n = String(t).toLowerCase();
return 0 === e.length
? Me()
: ((e, t) => {
const n = ((e, t) => {
for (let n = 0; n < e.length; n++) {
const o = e[n];
if (o.test(t)) return o;
}
})(e, t);
if (!n) return {major: 0, minor: 0};
const o = e => Number(t.replace(n, "$" + e));
return Ie(o(1), o(2));
})(e, n);
},
unknown: Me
},
Ue = (e, t) => {
const n = String(t).toLowerCase();
return Q(e, e => e.search(n));
},
ze = (e, t, n) => "" === t || (e.length >= t.length && e.substr(n, n + t.length) === t),
je = (e, t) => ($e(e, t) ? ((e, t) => e.substring(t))(e, t.length) : e),
He = (e, t, n = 0, o) => {
const r = e.indexOf(t, n);
return -1 !== r && (!!v(o) || r + t.length <= o);
},
$e = (e, t) => ze(e, t, 0),
Ve = (e, t) => ze(e, t, e.length - t.length),
qe = e => t => t.replace(e, ""),
We = qe(/^\s+|\s+$/g),
Ke = qe(/^\s+/g),
Ye = qe(/\s+$/g),
Ge = e => e.length > 0,
Xe = e => !Ge(e),
Ze = (e, t = 10) => {
const n = parseInt(e, t);
return isNaN(n) ? I.none() : I.some(n);
},
Qe = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/,
Je = e => t => He(t, e),
et = [
{
name: "Edge",
versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],
search: e => He(e, "edge/") && He(e, "chrome") && He(e, "safari") && He(e, "applewebkit")
},
{
name: "Chromium",
brand: "Chromium",
versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/, Qe],
search: e => He(e, "chrome") && !He(e, "chromeframe")
},
{
name: "IE",
versionRegexes: [/.*?msie\ ?([0-9]+)\.([0-9]+).*/, /.*?rv:([0-9]+)\.([0-9]+).*/],
search: e => He(e, "msie") || He(e, "trident")
},
{name: "Opera", versionRegexes: [Qe, /.*?opera\/([0-9]+)\.([0-9]+).*/], search: Je("opera")},
{name: "Firefox", versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/], search: Je("firefox")},
{
name: "Safari",
versionRegexes: [Qe, /.*?cpu os ([0-9]+)_([0-9]+).*/],
search: e => (He(e, "safari") || He(e, "mobile/")) && He(e, "applewebkit")
}
],
tt = [
{name: "Windows", search: Je("win"), versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},
{
name: "iOS",
search: e => He(e, "iphone") || He(e, "ipad"),
versionRegexes: [
/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,
/.*cpu os ([0-9]+)_([0-9]+).*/,
/.*cpu iphone os ([0-9]+)_([0-9]+).*/
]
},
{name: "Android", search: Je("android"), versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/]},
{name: "macOS", search: Je("mac os x"), versionRegexes: [/.*?mac\ os\ x\ ?([0-9]+)_([0-9]+).*/]},
{name: "Linux", search: Je("linux"), versionRegexes: []},
{name: "Solaris", search: Je("sunos"), versionRegexes: []},
{name: "FreeBSD", search: Je("freebsd"), versionRegexes: []},
{name: "ChromeOS", search: Je("cros"), versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/]}
],
nt = {browsers: N(et), oses: N(tt)},
ot = "Edge",
rt = "Chromium",
st = "Opera",
at = "Firefox",
it = "Safari",
lt = e => {
const t = e.current,
n = e.version,
o = e => () => t === e;
return {
current: t,
version: n,
isEdge: o(ot),
isChromium: o(rt),
isIE: o("IE"),
isOpera: o(st),
isFirefox: o(at),
isSafari: o(it)
};
},
dt = () => lt({current: void 0, version: Fe.unknown()}),
ct = lt,
ut = (N(ot), N(rt), N("IE"), N(st), N(at), N(it), "Windows"),
mt = "Android",
ft = "Linux",
gt = "macOS",
pt = "Solaris",
ht = "FreeBSD",
bt = "ChromeOS",
vt = e => {
const t = e.current,
n = e.version,
o = e => () => t === e;
return {
current: t,
version: n,
isWindows: o(ut),
isiOS: o("iOS"),
isAndroid: o(mt),
isMacOS: o(gt),
isLinux: o(ft),
isSolaris: o(pt),
isFreeBSD: o(ht),
isChromeOS: o(bt)
};
},
yt = () => vt({current: void 0, version: Fe.unknown()}),
Ct = vt,
wt = (N(ut), N("iOS"), N(mt), N(ft), N(gt), N(pt), N(ht), N(bt), e => window.matchMedia(e).matches);
let xt = Le(() =>
((e, t, n) => {
const o = nt.browsers(),
r = nt.oses(),
s = t
.bind(e =>
((e, t) =>
ue(t.brands, t => {
const n = t.brand.toLowerCase();
return Q(e, e => {
var t;
return n === (null === (t = e.brand) || void 0 === t ? void 0 : t.toLowerCase());
}).map(e => ({current: e.name, version: Fe.nu(parseInt(t.version, 10), 0)}));
}))(o, e)
)
.orThunk(() =>
((e, t) =>
Ue(e, t).map(e => {
const n = Fe.detect(e.versionRegexes, t);
return {current: e.name, version: n};
}))(o, e)
)
.fold(dt, ct),
a = ((e, t) =>
Ue(e, t).map(e => {
const n = Fe.detect(e.versionRegexes, t);
return {current: e.name, version: n};
}))(r, e).fold(yt, Ct),
i = ((e, t, n, o) => {
const r = e.isiOS() && !0 === /ipad/i.test(n),
s = e.isiOS() && !r,
a = e.isiOS() || e.isAndroid(),
i = a || o("(pointer:coarse)"),
l = r || (!s && a && o("(min-device-width:768px)")),
d = s || (a && !l),
c = t.isSafari() && e.isiOS() && !1 === /safari/i.test(n),
u = !d && !l && !c;
return {
isiPad: N(r),
isiPhone: N(s),
isTablet: N(l),
isPhone: N(d),
isTouch: N(i),
isAndroid: e.isAndroid,
isiOS: e.isiOS,
isWebView: N(c),
isDesktop: N(u)
};
})(a, s, e, n);
return {browser: s, os: a, deviceType: i};
})(navigator.userAgent, I.from(navigator.userAgentData), wt)
);
const Et = () => xt(),
kt = navigator.userAgent,
_t = Et(),
St = _t.browser,
Nt = _t.os,
Rt = _t.deviceType,
At = -1 !== kt.indexOf("Windows Phone"),
Tt = {
transparentSrc: "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",
documentMode: St.isIE() ? document.documentMode || 7 : 10,
cacheSuffix: null,
container: null,
canHaveCSP: !St.isIE(),
windowsPhone: At,
browser: {
current: St.current,
version: St.version,
isChromium: St.isChromium,
isEdge: St.isEdge,
isFirefox: St.isFirefox,
isIE: St.isIE,
isOpera: St.isOpera,
isSafari: St.isSafari
},
os: {
current: Nt.current,
version: Nt.version,
isAndroid: Nt.isAndroid,
isChromeOS: Nt.isChromeOS,
isFreeBSD: Nt.isFreeBSD,
isiOS: Nt.isiOS,
isLinux: Nt.isLinux,
isMacOS: Nt.isMacOS,
isSolaris: Nt.isSolaris,
isWindows: Nt.isWindows
},
deviceType: {
isDesktop: Rt.isDesktop,
isiPad: Rt.isiPad,
isiPhone: Rt.isiPhone,
isPhone: Rt.isPhone,
isTablet: Rt.isTablet,
isTouch: Rt.isTouch,
isWebView: Rt.isWebView
}
},
Ot = /^\s*|\s*$/g,
Bt = e => (y(e) ? "" : ("" + e).replace(Ot, "")),
Pt = function (e, t, n, o) {
(o = o || this), e && (n && (e = e[n]), Ae(e, (e, r) => !1 !== t.call(o, e, r, n) && (Pt(e, t, n, o), !0)));
},
Dt = {
trim: Bt,
isArray: Re,
is: (e, t) => (t ? !("array" !== t || !Re(e)) || typeof e === t : void 0 !== e),
toArray: e => {
if (Re(e)) return e;
{
const t = [];
for (let n = 0, o = e.length; n < o; n++) t[n] = e[n];
return t;
}
},
makeMap: (e, t, n = {}) => {
const o = m(e) ? e.split(t || ",") : e || [];
let r = o.length;
for (; r--; ) n[o[r]] = {};
return n;
},
each: Ae,
map: Te,
grep: Oe,
inArray: (e, t) => {
if (e) for (let n = 0, o = e.length; n < o; n++) if (e[n] === t) return n;
return -1;
},
hasOwn: ke,
extend: (e, ...t) => {
for (let n = 0; n < t.length; n++) {
const o = t[n];
for (const t in o)
if (ke(o, t)) {
const n = o[t];
void 0 !== n && (e[t] = n);
}
}
return e;
},
walk: Pt,
resolve: (e, t = window) => {
const n = e.split(".");
for (let e = 0, o = n.length; e < o && (t = t[n[e]]); e++);
return t;
},
explode: (e, t) => (p(e) ? e : "" === e ? [] : Te(e.split(t || ","), Bt)),
_addCacheSuffix: e => {
const t = Tt.cacheSuffix;
return t && (e += (-1 === e.indexOf("?") ? "?" : "&") + t), e;
}
},
Lt = (e, t, n = A) => e.exists(e => n(e, t)),
Mt = (e, t, n = A) => It(e, t, n).getOr(e.isNone() && t.isNone()),
It = (e, t, n) => (e.isSome() && t.isSome() ? I.some(n(e.getOrDie(), t.getOrDie())) : I.none()),
Ft = (e, t) => (e ? I.some(t) : I.none()),
Ut = "undefined" != typeof window ? window : Function("return this;")(),
zt = (e, t) =>
((e, t) => {
let n = null != t ? t : Ut;
for (let t = 0; t < e.length && null != n; ++t) n = n[e[t]];
return n;
})(e.split("."), t),
jt = Object.getPrototypeOf,
Ht = e => {
const t = zt("ownerDocument.defaultView", e);
return (
f(e) &&
((e =>
((e, t) => {
const n = ((e, t) => zt(e, t))(e, t);
if (null == n) throw new Error(e + " not available on this browser");
return n;
})("HTMLElement", e))(t).prototype.isPrototypeOf(e) ||
/^HTML\w*Element$/.test(jt(e).constructor.name))
);
},
$t = e => e.dom.nodeName.toLowerCase(),
Vt = e => e.dom.nodeType,
qt = e => t => Vt(t) === e,
Wt = e => Kt(e) && Ht(e.dom),
Kt = qt(1),
Yt = qt(3),
Gt = qt(9),
Xt = qt(11),
Zt = e => t => Kt(t) && $t(t) === e,
Qt = (e, t, n) => {
if (!(m(n) || b(n) || x(n)))
throw (
(console.error("Invalid call to Attribute.set. Key ", t, ":: Value ", n, ":: Element ", e),
new Error("Attribute value was not simple"))
);
e.setAttribute(t, n + "");
},
Jt = (e, t, n) => {
Qt(e.dom, t, n);
},
en = (e, t) => {
const n = e.dom;
pe(t, (e, t) => {
Qt(n, t, e);
});
},
tn = (e, t) => {
const n = e.dom.getAttribute(t);
return null === n ? void 0 : n;
},
nn = (e, t) => I.from(tn(e, t)),
on = (e, t) => {
const n = e.dom;
return !(!n || !n.hasAttribute) && n.hasAttribute(t);
},
rn = (e, t) => {
e.dom.removeAttribute(t);
},
sn = e => X(e.dom.attributes, (e, t) => ((e[t.name] = t.value), e), {}),
an = (e, t) => {
const n = tn(e, t);
return void 0 === n || "" === n ? [] : n.split(" ");
},
ln = e => void 0 !== e.dom.classList,
dn = e => an(e, "class"),
cn = (e, t) =>
((e, t, n) => {
const o = an(e, t).concat([n]);
return Jt(e, t, o.join(" ")), !0;
})(e, "class", t),
un = (e, t) =>
((e, t, n) => {
const o = Y(an(e, t), e => e !== n);
return o.length > 0 ? Jt(e, t, o.join(" ")) : rn(e, t), !1;
})(e, "class", t),
mn = (e, t) => {
ln(e) ? e.dom.classList.add(t) : cn(e, t);
},
fn = e => {
0 === (ln(e) ? e.dom.classList : dn(e)).length && rn(e, "class");
},
gn = (e, t) => {
ln(e) ? e.dom.classList.remove(t) : un(e, t), fn(e);
},
pn = (e, t) => ln(e) && e.dom.classList.contains(t),
hn = e => {
if (null == e) throw new Error("Node cannot be null or undefined");
return {dom: e};
},
bn = (e, t) => {
const n = (t || document).createElement("div");
if (((n.innerHTML = e), !n.hasChildNodes() || n.childNodes.length > 1)) {
const t = "HTML does not have a single root node";
throw (console.error(t, e), new Error(t));
}
return hn(n.childNodes[0]);
},
vn = (e, t) => {
const n = (t || document).createElement(e);
return hn(n);
},
yn = (e, t) => {
const n = (t || document).createTextNode(e);
return hn(n);
},
Cn = hn,
wn = (e, t, n) => I.from(e.dom.elementFromPoint(t, n)).map(hn),
xn = (e, t) => {
const n = [],
o = e => (n.push(e), t(e));
let r = t(e);
do {
r = r.bind(o);
} while (r.isSome());
return n;
},
En = (e, t) => {
const n = e.dom;
if (1 !== n.nodeType) return !1;
{
const e = n;
if (void 0 !== e.matches) return e.matches(t);
if (void 0 !== e.msMatchesSelector) return e.msMatchesSelector(t);
if (void 0 !== e.webkitMatchesSelector) return e.webkitMatchesSelector(t);
if (void 0 !== e.mozMatchesSelector) return e.mozMatchesSelector(t);
throw new Error("Browser lacks native selectors");
}
},
kn = e => (1 !== e.nodeType && 9 !== e.nodeType && 11 !== e.nodeType) || 0 === e.childElementCount,
_n = (e, t) => e.dom === t.dom,
Sn = (e, t) => {
const n = e.dom,
o = t.dom;
return n !== o && n.contains(o);
},
Nn = e => Cn(e.dom.ownerDocument),
Rn = e => (Gt(e) ? e : Nn(e)),
An = e => Cn(Rn(e).dom.defaultView),
Tn = e => I.from(e.dom.parentNode).map(Cn),
On = e => I.from(e.dom.parentElement).map(Cn),
Bn = (e, t) => {
const n = w(t) ? t : L;
let o = e.dom;
const r = [];
for (; null !== o.parentNode && void 0 !== o.parentNode; ) {
const e = o.parentNode,
t = Cn(e);
if ((r.push(t), !0 === n(t))) break;
o = e;
}
return r;
},
Pn = e => I.from(e.dom.previousSibling).map(Cn),
Dn = e => I.from(e.dom.nextSibling).map(Cn),
Ln = e => oe(xn(e, Pn)),
Mn = e => xn(e, Dn),
In = e => V(e.dom.childNodes, Cn),
Fn = (e, t) => {
const n = e.dom.childNodes;
return I.from(n[t]).map(Cn);
},
Un = e => Fn(e, 0),
zn = e => Fn(e, e.dom.childNodes.length - 1),
jn = e => e.dom.childNodes.length,
Hn = e => Xt(e) && C(e.dom.host),
$n = w(Element.prototype.attachShadow) && w(Node.prototype.getRootNode),
Vn = N($n),
qn = $n ? e => Cn(e.dom.getRootNode()) : Rn,
Wn = e =>
Hn(e)
? e
: (e => {
const t = e.dom.head;
if (null == t) throw new Error("Head is not available yet");
return Cn(t);
})(Rn(e)),
Kn = e => Cn(e.dom.host),
Yn = e => {
if (Vn() && C(e.target)) {
const t = Cn(e.target);
if (Kt(t) && Gn(t) && e.composed && e.composedPath) {
const t = e.composedPath();
if (t) return le(t);
}
}
return I.from(e.target);
},
Gn = e => C(e.dom.shadowRoot),
Xn = e => {
const t = Yt(e) ? e.dom.parentNode : e.dom;
if (null == t || null === t.ownerDocument) return !1;
const n = t.ownerDocument;
return (e => {
const t = qn(e);
return Hn(t) ? I.some(t) : I.none();
})(Cn(t)).fold(() => n.body.contains(t), S(Xn, Kn));
};
var Zn = (e, t, n, o, r) => (e(n, o) ? I.some(n) : w(r) && r(n) ? I.none() : t(n, o, r));
const Qn = (e, t, n) => {
let o = e.dom;
const r = w(n) ? n : L;
for (; o.parentNode; ) {
o = o.parentNode;
const e = Cn(o);
if (t(e)) return I.some(e);
if (r(e)) break;
}
return I.none();
},
Jn = (e, t, n) => Zn((e, t) => t(e), Qn, e, t, n),
eo = (e, t) => {
const n = e => {
for (let o = 0; o < e.childNodes.length; o++) {
const r = Cn(e.childNodes[o]);
if (t(r)) return I.some(r);
const s = n(e.childNodes[o]);
if (s.isSome()) return s;
}
return I.none();
};
return n(e.dom);
},
to = (e, t, n) => Qn(e, e => En(e, t), n),
no = (e, t) =>
((e, t) => {
const n = void 0 === t ? document : t.dom;
return kn(n) ? I.none() : I.from(n.querySelector(e)).map(Cn);
})(t, e),
oo = (e, t, n) => Zn((e, t) => En(e, t), to, e, t, n),
ro = (e, t = !1) => {
return Xn(e) ? e.dom.isContentEditable : ((n = e), oo(n, "[contenteditable]")).fold(N(t), e => "true" === so(e));
var n;
},
so = e => e.dom.contentEditable,
ao = e => void 0 !== e.style && w(e.style.getPropertyValue),
io = (e, t, n) => {
if (!m(n))
throw (
(console.error("Invalid call to CSS.set. Property ", t, ":: Value ", n, ":: Element ", e),
new Error("CSS value must be a string: " + n))
);
ao(e) && e.style.setProperty(t, n);
},
lo = (e, t, n) => {
const o = e.dom;
io(o, t, n);
},
co = (e, t) => {
const n = e.dom;
pe(t, (e, t) => {
io(n, t, e);
});
},
uo = (e, t) => {
const n = e.dom,
o = window.getComputedStyle(n).getPropertyValue(t);
return "" !== o || Xn(e) ? o : mo(n, t);
},
mo = (e, t) => (ao(e) ? e.style.getPropertyValue(t) : ""),
fo = (e, t) => {
const n = e.dom,
o = mo(n, t);
return I.from(o).filter(e => e.length > 0);
},
go = e => {
const t = {},
n = e.dom;
if (ao(n))
for (let e = 0; e < n.style.length; e++) {
const o = n.style.item(e);
t[o] = n.style[o];
}
return t;
},
po = (e, t) => {
((e, t) => {
ao(e) && e.style.removeProperty(t);
})(e.dom, t),
Lt(nn(e, "style").map(We), "") && rn(e, "style");
},
ho = (e, t) => {
Tn(e).each(n => {
n.dom.insertBefore(t.dom, e.dom);
});
},
bo = (e, t) => {
Dn(e).fold(
() => {
Tn(e).each(e => {
yo(e, t);
});
},
e => {
ho(e, t);
}
);
},
vo = (e, t) => {
Un(e).fold(
() => {
yo(e, t);
},
n => {
e.dom.insertBefore(t.dom, n.dom);
}
);
},
yo = (e, t) => {
e.dom.appendChild(t.dom);
},
Co = (e, t) => {
ho(e, t), yo(t, e);
},
wo = (e, t) => {
q(t, t => {
yo(e, t);
});
},
xo = e => {
(e.dom.textContent = ""),
q(In(e), e => {
Eo(e);
});
},
Eo = e => {
const t = e.dom;
null !== t.parentNode && t.parentNode.removeChild(t);
},
ko = e => {
const t = In(e);
var n, o;
t.length > 0 &&
((n = e),
q((o = t), (e, t) => {
const r = 0 === t ? n : o[t - 1];
bo(r, e);
})),
Eo(e);
},
_o = e => V(e, Cn),
So = e => e.dom.innerHTML,
No = (e, t) => {
const n = Nn(e).dom,
o = Cn(n.createDocumentFragment()),
r = ((e, t) => {
const n = (t || document).createElement("div");
return (n.innerHTML = e), In(Cn(n));
})(t, n);
wo(o, r), xo(e), yo(e, o);
},
Ro = (e, t, n, o) =>
((e, t, n, o, r) => {
const s = ((e, t) => n => {
e(n) &&
t(
(e => {
const t = Cn(Yn(e).getOr(e.target)),
n = () => e.stopPropagation(),
o = () => e.preventDefault(),
r = _(o, n);
return ((e, t, n, o, r, s, a) => ({target: e, x: t, y: n, stop: o, prevent: r, kill: s, raw: a}))(
t,
e.clientX,
e.clientY,
n,
o,
r,
e
);
})(n)
);
})(n, o);
return e.dom.addEventListener(t, s, false), {unbind: T(Ao, e, t, s, false)};
})(e, t, n, o),
Ao = (e, t, n, o) => {
e.dom.removeEventListener(t, n, o);
},
To = (e, t) => ({left: e, top: t, translate: (n, o) => To(e + n, t + o)}),
Oo = To,
Bo = (e, t) => (void 0 !== e ? e : void 0 !== t ? t : 0),
Po = e => {
const t = e.dom,
n = t.ownerDocument.body;
return n === t
? Oo(n.offsetLeft, n.offsetTop)
: Xn(e)
? (e => {
const t = e.getBoundingClientRect();
return Oo(t.left, t.top);
})(t)
: Oo(0, 0);
},
Do = e => {
const t = void 0 !== e ? e.dom : document,
n = t.body.scrollLeft || t.documentElement.scrollLeft,
o = t.body.scrollTop || t.documentElement.scrollTop;
return Oo(n, o);
},
Lo = (e, t, n) => {
const o = (void 0 !== n ? n.dom : document).defaultView;
o && o.scrollTo(e, t);
},
Mo = (e, t) => {
Et().browser.isSafari() && w(e.dom.scrollIntoViewIfNeeded)
? e.dom.scrollIntoViewIfNeeded(!1)
: e.dom.scrollIntoView(t);
},
Io = (e, t, n, o) => ({x: e, y: t, width: n, height: o, right: e + n, bottom: t + o}),
Fo = e => {
const t = void 0 === e ? window : e,
n = t.document,
o = Do(Cn(n));
return (e => {
const t = void 0 === e ? window : e;
return Et().browser.isFirefox() ? I.none() : I.from(t.visualViewport);
})(t).fold(
() => {
const e = t.document.documentElement,
n = e.clientWidth,
r = e.clientHeight;
return Io(o.left, o.top, n, r);
},
e => Io(Math.max(e.pageLeft, o.left), Math.max(e.pageTop, o.top), e.width, e.height)
);
},
Uo = (e, t) => {
let n = [];
return (
q(In(e), e => {
t(e) && (n = n.concat([e])), (n = n.concat(Uo(e, t)));
}),
n
);
},
zo = (e, t) =>
((e, t) => {
const n = void 0 === t ? document : t.dom;
return kn(n) ? [] : V(n.querySelectorAll(e), Cn);
})(t, e),
jo = (e, t, n) => Qn(e, t, n).isSome(),
Ho = (e, t) =>
((e, t) => {
const n = e.dom;
return n.parentNode
? ((e, t) => Q(e.dom.childNodes, e => t(Cn(e))).map(Cn))(Cn(n.parentNode), n => !_n(e, n) && t(n))
: I.none();
})(e, t).isSome(),
$o = (e, t) => eo(e, t).isSome();
class Vo {
constructor(e, t) {
(this.node = e),
(this.rootNode = t),
(this.current = this.current.bind(this)),
(this.next = this.next.bind(this)),
(this.prev = this.prev.bind(this)),
(this.prev2 = this.prev2.bind(this));
}
current() {
return this.node;
}
next(e) {
return (this.node = this.findSibling(this.node, "firstChild", "nextSibling", e)), this.node;
}
prev(e) {
return (this.node = this.findSibling(this.node, "lastChild", "previousSibling", e)), this.node;
}
prev2(e) {
return (this.node = this.findPreviousNode(this.node, e)), this.node;
}
findSibling(e, t, n, o) {
if (e) {
if (!o && e[t]) return e[t];
if (e !== this.rootNode) {
let t = e[n];
if (t) return t;
for (let o = e.parentNode; o && o !== this.rootNode; o = o.parentNode) if (((t = o[n]), t)) return t;
}
}
}
findPreviousNode(e, t) {
if (e) {
const n = e.previousSibling;
if (this.rootNode && n === this.rootNode) return;
if (n) {
if (!t) for (let e = n.lastChild; e; e = e.lastChild) if (!e.lastChild) return e;
return n;
}
const o = e.parentNode;
if (o && o !== this.rootNode) return o;
}
}
}
const qo = "\ufeff",
Wo = "\xa0",
Ko = e => e === qo,
Yo = /^[ \t\r\n]*$/,
Go = e => Yo.test(e),
Xo = e => "\n" === e || "\r" === e,
Zo = (e, t = 4, n = !0, o = !0) => {
const r = ((e, t) => (t <= 0 ? "" : new Array(t + 1).join(" ")))(0, t),
s = e.replace(/\t/g, r),
a = X(
s,
(e, t) =>
(e => -1 !== " \f\t\v".indexOf(e))(t) || t === Wo
? e.pcIsSpace ||
("" === e.str && n) ||
(e.str.length === s.length - 1 && o) ||
((e, t) => t < e.length && t >= 0 && Xo(e[t]))(s, e.str.length + 1)
? {pcIsSpace: !1, str: e.str + Wo}
: {pcIsSpace: !0, str: e.str + " "}
: {pcIsSpace: Xo(t), str: e.str + t},
{pcIsSpace: !1, str: ""}
);
return a.str;
},
Qo = e => t => !!t && t.nodeType === e,
Jo = e => !!e && !Object.getPrototypeOf(e),
er = Qo(1),
tr = e => er(e) && Wt(Cn(e)),
nr = e => {
const t = e.toLowerCase();
return e => C(e) && e.nodeName.toLowerCase() === t;
},
or = e => {
const t = e.map(e => e.toLowerCase());
return e => {
if (e && e.nodeName) {
const n = e.nodeName.toLowerCase();
return H(t, n);
}
return !1;
};
},
rr = (e, t) => {
const n = t.toLowerCase().split(" ");
return t => {
if (er(t)) {
const o = t.ownerDocument.defaultView;
if (o)
for (let r = 0; r < n.length; r++) {
const s = o.getComputedStyle(t, null);
if ((s ? s.getPropertyValue(e) : null) === n[r]) return !0;
}
}
return !1;
};
},
sr = e => er(e) && e.hasAttribute("data-mce-bogus"),
ar = e => er(e) && "TABLE" === e.tagName,
ir = e => t => {
if (tr(t)) {
if (t.contentEditable === e) return !0;
if (t.getAttribute("data-mce-contenteditable") === e) return !0;
}
return !1;
},
lr = or(["textarea", "input"]),
dr = Qo(3),
cr = Qo(4),
ur = Qo(7),
mr = Qo(8),
fr = Qo(9),
gr = Qo(11),
pr = nr("br"),
hr = nr("img"),
br = ir("true"),
vr = ir("false"),
yr = or(["td", "th"]),
Cr = or(["td", "th", "caption"]),
wr = or(["video", "audio", "object", "embed"]),
xr = nr("li"),
Er = nr("details"),
kr = nr("summary"),
_r = {skipBogus: !0, includeZwsp: !1, checkRootAsContent: !1},
Sr = ("data-mce-bookmark", e => er(e) && e.hasAttribute("data-mce-bookmark"));
const Nr = (e, t, n, o) =>
dr(e) &&
!((e, t, n) =>
Go(e.data) &&
!((e, t, n) => {
const o = Cn(t),
r = Cn(e),
s = n.getWhitespaceElements();
return jo(r, e => ke(s, $t(e)), T(_n, o));
})(e, t, n))(e, t, n) &&
(!o.includeZwsp ||
!(e => {
for (const t of e) if (!Ko(t)) return !1;
return !0;
})(e.data)),
Rr = (e, t, n, o) =>
(w(o.isContent) && o.isContent(t)) ||
((e, t) => er(e) && ke(t.getNonEmptyElements(), e.nodeName))(t, e) ||
Sr(t) ||
(e => er(e) && "A" === e.nodeName && !e.hasAttribute("href") && (e.hasAttribute("name") || e.hasAttribute("id")))(
t
) ||
Nr(t, n, e, o) ||
vr(t) ||
(br(t) && (e => On(Cn(e)).exists(e => !ro(e)))(t)),
Ar = (e, t, n) => {
const o = {..._r, ...n};
if (o.checkRootAsContent && Rr(e, t, t, o)) return !1;
let r = t.firstChild,
s = 0;
if (!r) return !0;
const a = new Vo(r, t);
do {
if (o.skipBogus && er(r)) {
const e = r.getAttribute("data-mce-bogus");
if (e) {
r = a.next("all" === e);
continue;
}
}
if (mr(r)) r = a.next(!0);
else if (pr(r)) s++, (r = a.next());
else {
if (Rr(e, r, t, o)) return !1;
r = a.next();
}
} while (r);
return s <= 1;
},
Tr = (e, t, n) => Ar(e, t.dom, {checkRootAsContent: !0, ...n}),
Or = (e, t, n) => Rr(e, t, t, {includeZwsp: _r.includeZwsp, ...n}),
Br = e => {
let t = e;
return {
get: () => t,
set: e => {
t = e;
}
};
},
Pr = e => {
const t = Br(I.none()),
n = () => t.get().each(e => clearInterval(e));
return {
clear: () => {
n(), t.set(I.none());
},
isSet: () => t.get().isSome(),
get: () => t.get(),
set: o => {
n(), t.set(I.some(setInterval(o, e)));
}
};
},
Dr = () => {
const e = (e => {
const t = Br(I.none()),
n = () => t.get().each(e);
return {
clear: () => {
n(), t.set(I.none());
},
isSet: () => t.get().isSome(),
get: () => t.get(),
set: e => {
n(), t.set(I.some(e));
}
};
})(k);
return {...e, on: t => e.get().each(t)};
},
Lr = e => {
const t = e.toLowerCase();
return "svg" === t ? "svg" : "math" === t ? "math" : "html";
},
Mr = e => "html" !== Lr(e),
Ir = e => Mr(e.nodeName),
Fr = e => Lr(e.nodeName),
Ur = ["svg", "math"],
zr = "data-mce-block",
jr = e =>
V((e => Y(fe(e), e => !/[A-Z]/.test(e)))(e), e => {
const t = CSS.escape(e);
return `${t}:` + V(Ur, e => `not(${e} ${t})`).join(":");
}).join(","),
Hr = (e, t) =>
C(t.querySelector(e))
? (t.setAttribute(zr, "true"),
"inline-boundary" === t.getAttribute("data-mce-selected") && t.removeAttribute("data-mce-selected"),
!0)
: (t.removeAttribute(zr), !1),
$r = (e, t) => {
const n = jr(e.getTransparentElements()),
o = jr(e.getBlockElements());
return Y(t.querySelectorAll(n), e => Hr(o, e));
},
Vr = (e, t, n) => {
var o;
const r = n ? "lastChild" : "firstChild";
for (let n = t[r]; n; n = n[r])
if (Ar(e, n, {checkRootAsContent: !0}))
return void (null === (o = n.parentNode) || void 0 === o || o.removeChild(n));
},
qr = (e, t, n) => {
const o = e.getBlockElements(),
r = Cn(t),
s = e => $t(e) in o,
a = e => _n(e, r);
q(_o(n), t => {
Qn(t, s, a).each(n => {
const o = ((t, o) => Y(In(t), t => s(t) && !e.isValidChild($t(n), $t(t))))(t);
if (o.length > 0) {
const t = On(n);
q(o, t => {
Qn(t, s, a).each(n => {
((e, t, n) => {
const o = document.createRange(),
r = t.parentNode;
if (r) {
o.setStartBefore(t), o.setEndBefore(n);
const s = o.extractContents();
Vr(e, s, !0), o.setStartAfter(n), o.setEndAfter(t);
const a = o.extractContents();
Vr(e, a, !1),
Ar(e, s, {checkRootAsContent: !0}) || r.insertBefore(s, t),
Ar(e, n, {checkRootAsContent: !0}) || r.insertBefore(n, t),
Ar(e, a, {checkRootAsContent: !0}) || r.insertBefore(a, t),
r.removeChild(t);
}
})(e, n.dom, t.dom);
});
}),
t.each(t => $r(e, t.dom));
}
});
});
},
Wr = (e, t) => {
const n = $r(e, t);
qr(e, t, n),
((e, t, n) => {
q([...n, ...(Zr(e, t) ? [t] : [])], t =>
q(zo(Cn(t), t.nodeName.toLowerCase()), t => {
Qr(e, t.dom) && ko(t);
})
);
})(e, t, n);
},
Kr = (e, t) => {
if (Xr(e, t)) {
const n = jr(e.getBlockElements());
Hr(n, t);
}
},
Yr = e => e.hasAttribute(zr),
Gr = (e, t) => ke(e.getTransparentElements(), t),
Xr = (e, t) => er(t) && Gr(e, t.nodeName),
Zr = (e, t) => Xr(e, t) && Yr(t),
Qr = (e, t) => Xr(e, t) && !Yr(t),
Jr = (e, t) => 1 === t.type && Gr(e, t.name) && m(t.attr(zr)),
es = Et().browser,
ts = e => Q(e, Kt),
ns = (e, t) => e.children && H(e.children, t),
os = (e, t = {}) => {
let n = 0;
const o = {},
r = Cn(e),
s = Rn(r),
a = e => {
yo(Wn(r), e);
},
i = e => {
const t = Wn(r);
no(t, "#" + e).each(Eo);
},
l = e => Ee(o, e).getOrThunk(() => ({id: "mce-u" + n++, passed: [], failed: [], count: 0})),
d = e =>
new Promise((n, r) => {
let i;
const d = Dt._addCacheSuffix(e),
c = l(d);
(o[d] = c), c.count++;
const u = (e, t) => {
q(e, D),
(c.status = t),
(c.passed = []),
(c.failed = []),
i && ((i.onload = null), (i.onerror = null), (i = null));
},
m = () => u(c.passed, 2),
f = () => u(c.failed, 3);
if ((n && c.passed.push(n), r && c.failed.push(r), 1 === c.status)) return;
if (2 === c.status) return void m();
if (3 === c.status) return void f();
c.status = 1;
const g = vn("link", s.dom);
en(g, {rel: "stylesheet", type: "text/css", id: c.id}),
t.contentCssCors && Jt(g, "crossOrigin", "anonymous"),
t.referrerPolicy && Jt(g, "referrerpolicy", t.referrerPolicy),
(i = g.dom),
(i.onload = m),
(i.onerror = f),
a(g),
Jt(g, "href", d);
}),
c = e => {
const t = Dt._addCacheSuffix(e);
Ee(o, t).each(e => {
0 == --e.count && (delete o[t], i(e.id));
});
};
return {
load: d,
loadRawCss: (e, t) => {
const n = l(e);
(o[e] = n), n.count++;
const r = vn("style", s.dom);
en(r, {rel: "stylesheet", type: "text/css", id: n.id}), (r.dom.innerHTML = t), a(r);
},
loadAll: e =>
Promise.allSettled(V(e, e => d(e).then(N(e)))).then(e => {
const t = K(e, e => "fulfilled" === e.status);
return t.fail.length > 0 ? Promise.reject(V(t.fail, e => e.reason)) : V(t.pass, e => e.value);
}),
unload: c,
unloadRawCss: e => {
Ee(o, e).each(t => {
0 == --t.count && (delete o[e], i(t.id));
});
},
unloadAll: e => {
q(e, e => {
c(e);
});
},
_setReferrerPolicy: e => {
t.referrerPolicy = e;
},
_setContentCssCors: e => {
t.contentCssCors = e;
}
};
},
rs = (() => {
const e = new WeakMap();
return {
forElement: (t, n) => {
const o = qn(t).dom;
return I.from(e.get(o)).getOrThunk(() => {
const t = os(o, n);
return e.set(o, t), t;
});
}
};
})(),
ss = (e, t) => C(e) && (Or(t, e) || t.isInline(e.nodeName.toLowerCase())),
as = e => (e => "span" === e.nodeName.toLowerCase())(e) && "bookmark" === e.getAttribute("data-mce-type"),
is = (e, t, n, o) => {
var r;
const s = o || t;
if (er(t) && as(t)) return t;
const a = t.childNodes;
for (let t = a.length - 1; t >= 0; t--) is(e, a[t], n, s);
if (er(t)) {
const e = t.childNodes;
1 === e.length && as(e[0]) && (null === (r = t.parentNode) || void 0 === r || r.insertBefore(e[0], t));
}
return (
(e => gr(e) || fr(e))(t) ||
Or(n, t) ||
(e => !!er(e) && e.childNodes.length > 0)(t) ||
((e, t, n) =>
dr(e) &&
e.data.length > 0 &&
((e, t, n) => {
const o = new Vo(e, t).prev(!1),
r = new Vo(e, t).next(!1),
s = v(o) || ss(o, n),
a = v(r) || ss(r, n);
return s && a;
})(e, t, n))(t, s, n) ||
e.remove(t),
t
);
},
ls = Dt.makeMap,
ds = /[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
cs = /[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
us = /[<>&\"\']/g,
ms = /([a-z0-9]+);?|&([a-z0-9]+);/gi,
fs = {
128: "\u20ac",
130: "\u201a",
131: "\u0192",
132: "\u201e",
133: "\u2026",
134: "\u2020",
135: "\u2021",
136: "\u02c6",
137: "\u2030",
138: "\u0160",
139: "\u2039",
140: "\u0152",
142: "\u017d",
145: "\u2018",
146: "\u2019",
147: "\u201c",
148: "\u201d",
149: "\u2022",
150: "\u2013",
151: "\u2014",
152: "\u02dc",
153: "\u2122",
154: "\u0161",
155: "\u203a",
156: "\u0153",
158: "\u017e",
159: "\u0178"
},
gs = {'"': """, "'": "'", "<": "<", ">": ">", "&": "&", "`": "`"},
ps = {"<": "<", ">": ">", "&": "&", """: '"', "'": "'"},
hs = (e, t) => {
const n = {};
if (e) {
const o = e.split(",");
t = t || 10;
for (let e = 0; e < o.length; e += 2) {
const r = String.fromCharCode(parseInt(o[e], t));
if (!gs[r]) {
const t = "&" + o[e + 1] + ";";
(n[r] = t), (n[t] = r);
}
}
return n;
}
},
bs = hs(
"50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",
32
),
vs = (e, t) => e.replace(t ? ds : cs, e => gs[e] || e),
ys = (e, t) =>
e.replace(t ? ds : cs, e =>
e.length > 1
? "" + (1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320) + 65536) + ";"
: gs[e] || "" + e.charCodeAt(0) + ";"
),
Cs = (e, t, n) => {
const o = n || bs;
return e.replace(t ? ds : cs, e => gs[e] || o[e] || e);
},
ws = {
encodeRaw: vs,
encodeAllRaw: e => ("" + e).replace(us, e => gs[e] || e),
encodeNumeric: ys,
encodeNamed: Cs,
getEncodeFunc: (e, t) => {
const n = hs(t) || bs,
o = ls(e.replace(/\+/g, ","));
return o.named && o.numeric
? (e, t) =>
e.replace(t ? ds : cs, e =>
void 0 !== gs[e]
? gs[e]
: void 0 !== n[e]
? n[e]
: e.length > 1
? "" + (1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320) + 65536) + ";"
: "" + e.charCodeAt(0) + ";"
)
: o.named
? t
? (e, t) => Cs(e, t, n)
: Cs
: o.numeric
? ys
: vs;
},
decode: e =>
e.replace(ms, (e, t) =>
t
? (t = "x" === t.charAt(0).toLowerCase() ? parseInt(t.substr(1), 16) : parseInt(t, 10)) > 65535
? ((t -= 65536), String.fromCharCode(55296 + (t >> 10), 56320 + (1023 & t)))
: fs[t] || String.fromCharCode(t)
: ps[e] ||
bs[e] ||
(e => {
const t = vn("div").dom;
return (t.innerHTML = e), t.textContent || t.innerText || e;
})(e)
)
},
xs = (e, t) => ((e = Dt.trim(e)) ? e.split(t || " ") : []),
Es = e => new RegExp("^" + e.replace(/([?+*])/g, ".$1") + "$"),
ks = e =>
Object.freeze([
"id",
"accesskey",
"class",
"dir",
"lang",
"style",
"tabindex",
"title",
"role",
...("html4" !== e
? [
"contenteditable",
"contextmenu",
"draggable",
"dropzone",
"hidden",
"spellcheck",
"translate",
"itemprop",
"itemscope",
"itemtype"
]
: []),
...("html5-strict" !== e ? ["xml:lang"] : [])
]),
_s = e => {
let t, n;
(t = "address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul"),
(n =
"a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd label map noscript object q s samp script select small span strong sub sup textarea u var #text #comment"),
"html4" !== e &&
((t += " article aside details dialog figure main header footer hgroup section nav a ins del canvas map"),
(n +=
" audio canvas command data datalist mark meter output picture progress time wbr video ruby bdi keygen svg")),
"html5-strict" !== e &&
((n = [n, "acronym applet basefont big font strike tt"].join(" ")),
(t = [t, "center dir isindex noframes"].join(" ")));
const o = [t, n].join(" ");
return {blockContent: t, phrasingContent: n, flowContent: o};
},
Ss = e => {
const {blockContent: t, phrasingContent: n, flowContent: o} = _s(e),
r = e => Object.freeze(e.split(" "));
return Object.freeze({blockContent: r(t), phrasingContent: r(n), flowContent: r(o)});
},
Ns = {html4: Le(() => Ss("html4")), html5: Le(() => Ss("html5")), "html5-strict": Le(() => Ss("html5-strict"))},
Rs = (e, t) => {
const {blockContent: n, phrasingContent: o, flowContent: r} = Ns[e]();
return "blocks" === t ? I.some(n) : "phrasing" === t ? I.some(o) : "flow" === t ? I.some(r) : I.none();
},
As = e =>
I.from(
/^(@?)([A-Za-z0-9_\-.\u00b7\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u037d\u037f-\u1fff\u200c-\u200d\u203f-\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]+)$/.exec(
e
)
).map(e => ({preset: "@" === e[1], name: e[2]})),
Ts = {},
Os = Dt.makeMap,
Bs = Dt.each,
Ps = Dt.extend,
Ds = Dt.explode,
Ls = (e, t = {}) => {
const n = Os(e, " ", Os(e.toUpperCase(), " "));
return Ps(n, t);
},
Ms = e => Ls("td th li dt dd figcaption caption details summary", e.getTextBlockElements()),
Is = (e, t) => {
if (e) {
const n = {};
return (
m(e) && (e = {"*": e}),
Bs(e, (e, o) => {
n[o] = n[o.toUpperCase()] = "map" === t ? Os(e, /[, ]/) : Ds(e, /[, ]/);
}),
n
);
}
},
Fs = (e = {}) => {
var t;
const n = {},
o = {};
let r = [];
const s = {},
a = {},
i = (t, n, o) => {
const r = e[t];
if (r) return Os(r, /[, ]/, Os(r.toUpperCase(), /[, ]/));
{
let e = Ts[t];
return e || ((e = Ls(n, o)), (Ts[t] = e)), e;
}
},
l = null !== (t = e.schema) && void 0 !== t ? t : "html5",
d = (e => {
const t = ks(e),
{phrasingContent: n, flowContent: o} = _s(e),
r = {},
s = (e, t, n) => {
r[e] = {attributes: se(t, N({})), attributesOrder: t, children: se(n, N({}))};
},
a = (e, n = "", o = "") => {
const r = xs(o),
a = xs(e);
let i = a.length;
const l = [...t, ...xs(n)];
for (; i--; ) s(a[i], l.slice(), r);
},
i = (e, t) => {
const n = xs(e),
o = xs(t);
let s = n.length;
for (; s--; ) {
const e = r[n[s]];
for (let t = 0, n = o.length; t < n; t++) (e.attributes[o[t]] = {}), e.attributesOrder.push(o[t]);
}
};
return (
"html5-strict" !== e &&
(q(xs("acronym applet basefont big font strike tt"), e => {
a(e, "", n);
}),
q(xs("center dir isindex noframes"), e => {
a(e, "", o);
})),
a("html", "manifest", "head body"),
a("head", "", "base command link meta noscript script style title"),
a("title hr noscript br"),
a("base", "href target"),
a("link", "href rel media hreflang type sizes hreflang"),
a("meta", "name http-equiv content charset"),
a("style", "media type scoped"),
a("script", "src async defer type charset"),
a(
"body",
"onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload",
o
),
a("dd div", "", o),
a("address dt caption", "", "html4" === e ? n : o),
a(
"h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn",
"",
n
),
a("blockquote", "cite", o),
a("ol", "reversed start type", "li"),
a("ul", "", "li"),
a("li", "value", o),
a("dl", "", "dt dd"),
a("a", "href target rel media hreflang type", "html4" === e ? n : o),
a("q", "cite", n),
a("ins del", "cite datetime", o),
a("img", "src sizes srcset alt usemap ismap width height"),
a("iframe", "src name width height", o),
a("embed", "src type width height"),
a("object", "data type typemustmatch name usemap form width height", [o, "param"].join(" ")),
a("param", "name value"),
a("map", "name", [o, "area"].join(" ")),
a("area", "alt coords shape href target rel media hreflang type"),
a("table", "border", "caption colgroup thead tfoot tbody tr" + ("html4" === e ? " col" : "")),
a("colgroup", "span", "col"),
a("col", "span"),
a("tbody thead tfoot", "", "tr"),
a("tr", "", "td th"),
a("td", "colspan rowspan headers", o),
a("th", "colspan rowspan headers scope abbr", o),
a("form", "accept-charset action autocomplete enctype method name novalidate target", o),
a("fieldset", "disabled form name", [o, "legend"].join(" ")),
a("label", "form for", n),
a(
"input",
"accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate formtarget height list max maxlength min multiple name pattern readonly required size src step type value width"
),
a(
"button",
"disabled form formaction formenctype formmethod formnovalidate formtarget name type value",
"html4" === e ? o : n
),
a("select", "disabled form multiple name required size", "option optgroup"),
a("optgroup", "disabled label", "option"),
a("option", "disabled label selected value"),
a("textarea", "cols dirname disabled form maxlength name readonly required rows wrap"),
a("menu", "type label", [o, "li"].join(" ")),
a("noscript", "", o),
"html4" !== e &&
(a("wbr"),
a("ruby", "", [n, "rt rp"].join(" ")),
a("figcaption", "", o),
a("mark rt rp bdi", "", n),
a("summary", "", [n, "h1 h2 h3 h4 h5 h6"].join(" ")),
a("canvas", "width height", o),
a("data", "value", n),
a(
"video",
"src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered",
[o, "track source"].join(" ")
),
a(
"audio",
"src crossorigin preload autoplay mediagroup loop muted controls buffered volume",
[o, "track source"].join(" ")
),
a("picture", "", "img source"),
a("source", "src srcset type media sizes"),
a("track", "kind src srclang label default"),
a("datalist", "", [n, "option"].join(" ")),
a("article section nav aside main header footer", "", o),
a("hgroup", "", "h1 h2 h3 h4 h5 h6"),
a("figure", "", [o, "figcaption"].join(" ")),
a("time", "datetime", n),
a("dialog", "open", o),
a("command", "type label icon disabled checked radiogroup command"),
a("output", "for form name", n),
a("progress", "value max", n),
a("meter", "value min max low high optimum", n),
a("details", "open", [o, "summary"].join(" ")),
a("keygen", "autofocus challenge disabled form keytype name"),
s(
"svg",
"id tabindex lang xml:space class style x y width height viewBox preserveAspectRatio zoomAndPan transform".split(
" "
),
[]
)),
"html5-strict" !== e &&
(i("script", "language xml:space"),
i("style", "xml:space"),
i("object", "declare classid code codebase codetype archive standby align border hspace vspace"),
i("embed", "align name hspace vspace"),
i("param", "valuetype type"),
i("a", "charset name rev shape coords"),
i("br", "clear"),
i("applet", "codebase archive code object alt name width height align hspace vspace"),
i("img", "name longdesc align border hspace vspace"),
i("iframe", "longdesc frameborder marginwidth marginheight scrolling align"),
i("font basefont", "size color face"),
i("input", "usemap align"),
i("select"),
i("textarea"),
i("h1 h2 h3 h4 h5 h6 div p legend caption", "align"),
i("ul", "type compact"),
i("li", "type"),
i("ol dl menu dir", "compact"),
i("pre", "width xml:space"),
i("hr", "align noshade size width"),
i("isindex", "prompt"),
i("table", "summary width frame rules cellspacing cellpadding align bgcolor"),
i("col", "width align char charoff valign"),
i("colgroup", "width align char charoff valign"),
i("thead", "align char charoff valign"),
i("tr", "align char charoff valign bgcolor"),
i("th", "axis align char charoff valign nowrap bgcolor width height"),
i("form", "accept"),
i("td", "abbr axis scope align char charoff valign nowrap bgcolor width height"),
i("tfoot", "align char charoff valign"),
i("tbody", "align char charoff valign"),
i("area", "nohref"),
i("body", "background bgcolor text link vlink alink")),
"html4" !== e &&
(i("input button select textarea", "autofocus"),
i("input textarea", "placeholder"),
i("a", "download"),
i("link script img", "crossorigin"),
i("img", "loading"),
i("iframe", "sandbox seamless allow allowfullscreen loading")),
"html4" !== e &&
q([r.video, r.audio], e => {
delete e.children.audio, delete e.children.video;
}),
q(xs("a form meter progress dfn"), e => {
r[e] && delete r[e].children[e];
}),
delete r.caption.children.table,
delete r.script,
r
);
})(l);
!1 === e.verify_html && (e.valid_elements = "*[*]");
const c = Is(e.valid_styles),
u = Is(e.invalid_styles, "map"),
g = Is(e.valid_classes, "map"),
h = i("whitespace_elements", "pre script noscript style textarea video audio iframe object code"),
v = i("self_closing_elements", "colgroup dd dt li option p td tfoot th thead tr"),
y = i(
"void_elements",
"area base basefont br col frame hr img input isindex link meta param embed source wbr track"
),
C = i(
"boolean_attributes",
"checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls allowfullscreen"
),
w = "td th iframe video audio object script code",
x = i("non_empty_elements", w + " pre svg textarea summary", y),
E = i("move_caret_before_on_enter_elements", w + " table", y),
k = "h1 h2 h3 h4 h5 h6",
_ = i(
"text_block_elements",
k +
" p div address pre form blockquote center dir fieldset header footer article section hgroup aside main nav figure"
),
S = i(
"block_elements",
"hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup figcaption details summary html body multicol listing",
_
),
R = i("text_inline_elements", "span strong b em i font s strike u var cite dfn code mark q sup sub samp"),
A = i("transparent_elements", "a ins del canvas map"),
T = i("wrap_block_elements", "pre " + k);
Bs("script noscript iframe noframes noembed title style textarea xmp plaintext".split(" "), e => {
a[e] = new RegExp("" + e + "[^>]*>", "gi");
});
const O = e => {
const t = I.from(n["@"]),
o = /[*?+]/;
q(
((e, t) => {
const n = /^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)])?$/;
return te(xs(t, ","), t => {
const o = n.exec(t);
if (o) {
const t = o[1],
n = o[2],
r = o[3],
s = o[4],
a = o[5],
i = {attributes: {}, attributesOrder: []};
if (
(e.each(e =>
((e, t) => {
pe(e.attributes, (e, n) => {
t.attributes[n] = e;
}),
t.attributesOrder.push(...e.attributesOrder);
})(e, i)
),
"#" === t ? (i.paddEmpty = !0) : "-" === t && (i.removeEmpty = !0),
"!" === s && (i.removeEmptyAttrs = !0),
a &&
((e, t) => {
const n = /^([!\-])?(\w+[\\:]:\w+|[^=~<]+)?(?:([=~<])(.*))?$/,
o = /[*?+]/,
{attributes: r, attributesOrder: s} = t;
q(xs(e, "|"), e => {
const a = n.exec(e);
if (a) {
const e = {},
n = a[1],
i = a[2].replace(/[\\:]:/g, ":"),
l = a[3],
d = a[4];
if (
("!" === n &&
((t.attributesRequired = t.attributesRequired || []),
t.attributesRequired.push(i),
(e.required = !0)),
"-" === n)
)
return delete r[i], void s.splice(Dt.inArray(s, i), 1);
if (
(l &&
("=" === l
? ((t.attributesDefault = t.attributesDefault || []),
t.attributesDefault.push({name: i, value: d}),
(e.defaultValue = d))
: "~" === l
? ((t.attributesForced = t.attributesForced || []),
t.attributesForced.push({name: i, value: d}),
(e.forcedValue = d))
: "<" === l && (e.validValues = Dt.makeMap(d, "?"))),
o.test(i))
) {
const n = e;
(t.attributePatterns = t.attributePatterns || []),
(n.pattern = Es(i)),
t.attributePatterns.push(n);
} else r[i] || s.push(i), (r[i] = e);
}
});
})(a, i),
r && (i.outputName = n),
"@" === n)
) {
if (!e.isNone()) return [];
e = I.some(i);
}
return [r ? {name: n, element: i, aliasName: r} : {name: n, element: i}];
}
return [];
});
})(t, null != e ? e : ""),
({name: e, element: t, aliasName: s}) => {
if ((s && (n[s] = t), o.test(e))) {
const n = t;
(n.pattern = Es(e)), r.push(n);
} else n[e] = t;
}
);
},
B = e => {
(r = []),
q(fe(n), e => {
delete n[e];
}),
O(e);
},
P = (e, t) => {
var r, a;
delete Ts.text_block_elements, delete Ts.block_elements;
const i = !!t.extends && !oe(t.extends),
d = t.extends;
if (
((o[e] = d ? o[d] : {}),
(s[e] = null != d ? d : e),
(x[e.toUpperCase()] = {}),
(x[e] = {}),
i || ((S[e.toUpperCase()] = {}), (S[e] = {})),
d && !n[e] && n[d])
) {
const t = (e => {
const t = e =>
p(e)
? V(e, t)
: (e => f(e) && e.source && "[object RegExp]" === Object.prototype.toString.call(e))(e)
? new RegExp(e.source, e.flags)
: f(e)
? he(e, t)
: e;
return t(e);
})(n[d]);
delete t.removeEmptyAttrs, delete t.removeEmpty, (n[e] = t);
} else n[e] = {attributesOrder: [], attributes: {}};
if (p(t.attributes)) {
const o = e => {
s.attributesOrder.push(e), (s.attributes[e] = {});
},
s = null !== (r = n[e]) && void 0 !== r ? r : {};
delete s.attributesDefault,
delete s.attributesForced,
delete s.attributePatterns,
delete s.attributesRequired,
(s.attributesOrder = []),
(s.attributes = {}),
q(t.attributes, e => {
const t = ks(l);
As(e).each(({preset: e, name: n}) => {
e ? "global" === n && q(t, o) : o(n);
});
}),
(n[e] = s);
}
if (b(t.padEmpty)) {
const o = null !== (a = n[e]) && void 0 !== a ? a : {};
(o.paddEmpty = t.padEmpty), (n[e] = o);
}
if (p(t.children)) {
const n = {},
r = e => {
n[e] = {};
},
s = e => {
Rs(l, e).each(e => {
q(e, r);
});
};
q(t.children, e => {
As(e).each(({preset: e, name: t}) => {
e ? s(t) : r(t);
});
}),
(o[e] = n);
}
d &&
pe(o, (t, n) => {
t[d] && ((o[n] = t = Ps({}, o[n])), (t[e] = t[d]));
});
},
D = e => {
f(e)
? pe(e, (e, t) => P(t, e))
: m(e) &&
(e => {
q(
(e => {
const t = /^(~)?(.+)$/;
return te(xs(e, ","), e => {
const n = t.exec(e);
return n ? [{cloneName: "~" === n[1] ? "span" : "div", name: n[2]}] : [];
});
})(null != e ? e : ""),
({name: e, cloneName: t}) => {
P(e, {extends: t});
}
);
})(e);
},
L = e => {
q(
(e => {
const t =
/^([+\-]?)([A-Za-z0-9_\-.\u00b7\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u037d\u037f-\u1fff\u200c-\u200d\u203f-\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]+)\[([^\]]+)]$/;
return te(xs(e, ","), e => {
const n = t.exec(e);
if (n) {
const e = n[1],
t = e ? (e => ("-" === e ? "remove" : "add"))(e) : "replace";
return [{operation: t, name: n[2], validChildren: te(xs(n[3], "|"), e => As(e).toArray())}];
}
return [];
});
})(null != e ? e : ""),
({operation: e, name: t, validChildren: n}) => {
const r = "replace" === e ? {"#comment": {}} : o[t],
s = t => {
"remove" === e ? delete r[t] : (r[t] = {});
};
q(n, ({preset: e, name: t}) => {
e
? (e => {
Rs(l, e).each(e => {
q(e, s);
});
})(t)
: s(t);
}),
(o[t] = r);
}
);
},
M = e => {
const t = n[e];
if (t) return t;
let o = r.length;
for (; o--; ) {
const t = r[o];
if (t.pattern.test(e)) return t;
}
},
F = N(c),
U = N(u),
z = N(g),
j = N(C),
H = N(S),
$ = N(_),
W = N(R),
K = N(Object.seal(y)),
Y = N(v),
G = N(x),
X = N(E),
Z = N(h),
Q = N(A),
J = N(T),
ee = N(Object.seal(a)),
ne = (e, t) => {
const n = M(e);
if (n) {
if (!t) return !0;
{
if (n.attributes[t]) return !0;
const e = n.attributePatterns;
if (e) {
let n = e.length;
for (; n--; ) if (e[n].pattern.test(t)) return !0;
}
}
}
return !1;
},
oe = e => ke(H(), e),
re = e => !$e(e, "#") && ne(e) && !oe(e),
ae = N(s);
return (
e.valid_elements
? (B(e.valid_elements),
Bs(d, (e, t) => {
o[t] = e.children;
}))
: (Bs(d, (e, t) => {
(n[t] = {attributes: e.attributes, attributesOrder: e.attributesOrder}), (o[t] = e.children);
}),
Bs(xs("strong/b em/i"), e => {
const t = xs(e, "/");
n[t[1]].outputName = t[0];
}),
Bs(R, (t, o) => {
n[o] && (e.padd_empty_block_inline_children && (n[o].paddInEmptyBlock = !0), (n[o].removeEmpty = !0));
}),
Bs(xs("ol ul blockquote a table tbody"), e => {
n[e] && (n[e].removeEmpty = !0);
}),
Bs(xs("p h1 h2 h3 h4 h5 h6 th td pre div address caption li summary"), e => {
n[e] && (n[e].paddEmpty = !0);
}),
Bs(xs("span"), e => {
n[e].removeEmptyAttrs = !0;
})),
delete n.svg,
D(e.custom_elements),
L(e.valid_children),
O(e.extended_valid_elements),
L("+ol[ul|ol],+ul[ul|ol]"),
Bs(
{
dd: "dl",
dt: "dl",
li: "ul ol",
td: "tr",
th: "tr",
tr: "tbody thead tfoot",
tbody: "table",
thead: "table",
tfoot: "table",
legend: "fieldset",
area: "map",
param: "video audio object"
},
(e, t) => {
n[t] && (n[t].parentsRequired = xs(e));
}
),
e.invalid_elements &&
Bs(Ds(e.invalid_elements), e => {
n[e] && delete n[e];
}),
M("span") || O("span[!data-mce-type|*]"),
{
type: l,
children: o,
elements: n,
getValidStyles: F,
getValidClasses: z,
getBlockElements: H,
getInvalidStyles: U,
getVoidElements: K,
getTextBlockElements: $,
getTextInlineElements: W,
getBoolAttrs: j,
getElementRule: M,
getSelfClosingElements: Y,
getNonEmptyElements: G,
getMoveCaretBeforeOnEnterElements: X,
getWhitespaceElements: Z,
getTransparentElements: Q,
getSpecialElements: ee,
isValidChild: (e, t) => {
const n = o[e.toLowerCase()];
return !(!n || !n[t.toLowerCase()]);
},
isValid: ne,
isBlock: oe,
isInline: re,
isWrapper: e => ke(J(), e) || re(e),
getCustomElements: ae,
addValidElements: O,
setValidElements: B,
addCustomElements: D,
addValidChildren: L
}
);
},
Us = e => {
const t = e.toString(16);
return (1 === t.length ? "0" + t : t).toUpperCase();
},
zs = e =>
(e => {
return {value: ((t = e), je(t, "#").toUpperCase())};
var t;
})(Us(e.red) + Us(e.green) + Us(e.blue)),
js = /^\s*rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)\s*$/i,
Hs = /^\s*rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d?(?:\.\d+)?)\s*\)\s*$/i,
$s = (e, t, n, o) => ({red: e, green: t, blue: n, alpha: o}),
Vs = (e, t, n, o) => {
const r = parseInt(e, 10),
s = parseInt(t, 10),
a = parseInt(n, 10),
i = parseFloat(o);
return $s(r, s, a, i);
},
qs = e => {
if ("transparent" === e) return I.some($s(0, 0, 0, 0));
const t = js.exec(e);
if (null !== t) return I.some(Vs(t[1], t[2], t[3], "1"));
const n = Hs.exec(e);
return null !== n ? I.some(Vs(n[1], n[2], n[3], n[4])) : I.none();
},
Ws = e => `rgba(${e.red},${e.green},${e.blue},${e.alpha})`,
Ks = e =>
qs(e)
.map(zs)
.map(e => "#" + e.value)
.getOr(e),
Ys = (e = {}, t) => {
const n =
/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,
o = /\s*([^:]+):\s*([^;]+);?/g,
r = /\s+$/,
s = /rgba *\(/i,
a = {};
let i, l;
const d = qo;
t && ((i = t.getValidStyles()), (l = t.getInvalidStyles()));
const c = "\\\" \\' \\; \\: ; : \ufeff".split(" ");
for (let e = 0; e < c.length; e++) (a[c[e]] = d + e), (a[d + e] = c[e]);
const u = {
parse: t => {
const i = {};
let l = !1;
const c = e.url_converter,
m = e.url_converter_scope || u,
f = (e, t, n) => {
const o = i[e + "-top" + t];
if (!o) return;
const r = i[e + "-right" + t];
if (!r) return;
const s = i[e + "-bottom" + t];
if (!s) return;
const a = i[e + "-left" + t];
if (!a) return;
const l = [o, r, s, a];
let d = l.length - 1;
for (; d-- && l[d] === l[d + 1]; );
(d > -1 && n) ||
((i[e + t] = -1 === d ? l[0] : l.join(" ")),
delete i[e + "-top" + t],
delete i[e + "-right" + t],
delete i[e + "-bottom" + t],
delete i[e + "-left" + t]);
},
g = e => {
const t = i[e];
if (!t) return;
const n = t.indexOf(",") > -1 ? [t] : t.split(" ");
let o = n.length;
for (; o--; ) if (n[o] !== n[0]) return !1;
return (i[e] = n[0]), !0;
},
p = e => ((l = !0), a[e]),
h = (e, t) => (
l && (e = e.replace(/\uFEFF[0-9]/g, e => a[e])), t || (e = e.replace(/\\([\'\";:])/g, "$1")), e
),
b = e => String.fromCharCode(parseInt(e.slice(1), 16)),
v = e => e.replace(/\\[0-9a-f]+/gi, b),
y = (t, n, o, r, s, a) => {
if ((s = s || a)) return "'" + (s = h(s)).replace(/\'/g, "\\'") + "'";
if (((n = h(n || o || r || "")), !e.allow_script_urls)) {
const t = n.replace(/[\s\r\n]+/g, "");
if (/(java|vb)script:/i.test(t)) return "";
if (!e.allow_svg_data_urls && /^data:image\/svg/i.test(t)) return "";
}
return c && (n = c.call(m, n, "style")), "url('" + n.replace(/\'/g, "\\'") + "')";
};
if (t) {
let a;
for (
t = (t = t.replace(/[\u0000-\u001F]/g, ""))
.replace(/\\[\"\';:\uFEFF]/g, p)
.replace(/\"[^\"]+\"|\'[^\']+\'/g, e => e.replace(/[;:]/g, p));
(a = o.exec(t));
) {
o.lastIndex = a.index + a[0].length;
let t = a[1].replace(r, "").toLowerCase(),
c = a[2].replace(r, "");
if (t && c) {
if (((t = v(t)), (c = v(c)), -1 !== t.indexOf(d) || -1 !== t.indexOf('"'))) continue;
if (!e.allow_script_urls && ("behavior" === t || /expression\s*\(|\/\*|\*\//.test(c))) continue;
"font-weight" === t && "700" === c
? (c = "bold")
: ("color" !== t && "background-color" !== t) || (c = c.toLowerCase()),
s.test(c) ||
qs(c).each(e => {
c = Ks(Ws(e)).toLowerCase();
}),
(c = c.replace(n, y)),
(i[t] = l ? h(c, !0) : c);
}
}
f("border", "", !0),
f("border", "-width"),
f("border", "-color"),
f("border", "-style"),
f("padding", ""),
f("margin", ""),
"border",
(w = "border-style"),
(x = "border-color"),
g((C = "border-width")) &&
g(w) &&
g(x) &&
((i.border = i[C] + " " + i[w] + " " + i[x]), delete i[C], delete i[w], delete i[x]),
"medium none" === i.border && delete i.border,
"none" === i["border-image"] && delete i["border-image"];
}
var C, w, x;
return i;
},
serialize: (e, t) => {
let n = "";
const o = (t, o) => {
const r = o[t];
if (r)
for (let t = 0, o = r.length; t < o; t++) {
const o = r[t],
s = e[o];
s && (n += (n.length > 0 ? " " : "") + o + ": " + s + ";");
}
};
return (
t && i
? (o("*", i), o(t, i))
: pe(e, (e, o) => {
e &&
((e, t) => {
if (!l || !t) return !0;
let n = l["*"];
return !((n && n[e]) || ((n = l[t]), n && n[e]));
})(o, t) &&
(n += (n.length > 0 ? " " : "") + o + ": " + e + ";");
}),
n
);
}
};
return u;
},
Gs = {
keyLocation: !0,
layerX: !0,
layerY: !0,
returnValue: !0,
webkitMovementX: !0,
webkitMovementY: !0,
keyIdentifier: !0,
mozPressure: !0
},
Xs = (e, t) => {
const n = null != t ? t : {};
for (const t in e) ke(Gs, t) || (n[t] = e[t]);
return (
C(e.composedPath) && (n.composedPath = () => e.composedPath()),
C(e.getModifierState) && (n.getModifierState = t => e.getModifierState(t)),
C(e.getTargetRanges) && (n.getTargetRanges = () => e.getTargetRanges()),
n
);
},
Zs = (e, t, n, o) => {
var r;
const s = Xs(t, o);
return (
(s.type = e),
y(s.target) && (s.target = null !== (r = s.srcElement) && void 0 !== r ? r : n),
(e => y(e.preventDefault) || (e => e instanceof Event || w(e.initEvent))(e))(t) &&
((s.preventDefault = () => {
(s.defaultPrevented = !0), (s.isDefaultPrevented = M), w(t.preventDefault) && t.preventDefault();
}),
(s.stopPropagation = () => {
(s.cancelBubble = !0), (s.isPropagationStopped = M), w(t.stopPropagation) && t.stopPropagation();
}),
(s.stopImmediatePropagation = () => {
(s.isImmediatePropagationStopped = M), s.stopPropagation();
}),
(e => e.isDefaultPrevented === M || e.isDefaultPrevented === L)(s) ||
((s.isDefaultPrevented = !0 === s.defaultPrevented ? M : L),
(s.isPropagationStopped = !0 === s.cancelBubble ? M : L),
(s.isImmediatePropagationStopped = L))),
s
);
},
Qs = /^(?:mouse|contextmenu)|click/,
Js = (e, t, n, o) => {
e.addEventListener(t, n, o || !1);
},
ea = (e, t, n, o) => {
e.removeEventListener(t, n, o || !1);
},
ta = (e, t) => {
const n = Zs(e.type, e, document, t);
if ((e => C(e) && Qs.test(e.type))(e) && v(e.pageX) && !v(e.clientX)) {
const t = n.target.ownerDocument || document,
o = t.documentElement,
r = t.body,
s = n;
(s.pageX =
e.clientX +
((o && o.scrollLeft) || (r && r.scrollLeft) || 0) -
((o && o.clientLeft) || (r && r.clientLeft) || 0)),
(s.pageY =
e.clientY +
((o && o.scrollTop) || (r && r.scrollTop) || 0) -
((o && o.clientTop) || (r && r.clientTop) || 0));
}
return n;
},
na = (e, t, n) => {
const o = e.document,
r = {type: "ready"};
if (n.domLoaded) return void t(r);
const s = () => {
ea(e, "DOMContentLoaded", s), ea(e, "load", s), n.domLoaded || ((n.domLoaded = !0), t(r)), (e = null);
};
"complete" === o.readyState || ("interactive" === o.readyState && o.body) ? s() : Js(e, "DOMContentLoaded", s),
n.domLoaded || Js(e, "load", s);
};
class oa {
constructor() {
(this.domLoaded = !1),
(this.events = {}),
(this.count = 1),
(this.expando = "mce-data-" + (+new Date()).toString(32)),
(this.hasFocusIn = "onfocusin" in document.documentElement),
(this.count = 1);
}
bind(e, t, n, o) {
const r = this;
let s;
const a = window,
i = e => {
r.executeHandlers(ta(e || a.event), l);
};
if (!e || dr(e) || mr(e)) return n;
let l;
e[r.expando] ? (l = e[r.expando]) : ((l = r.count++), (e[r.expando] = l), (r.events[l] = {})), (o = o || e);
const d = t.split(" ");
let c = d.length;
for (; c--; ) {
let t = d[c],
u = i,
m = !1,
f = !1;
"DOMContentLoaded" === t && (t = "ready"),
r.domLoaded && "ready" === t && "complete" === e.readyState
? n.call(o, ta({type: t}))
: (r.hasFocusIn ||
("focusin" !== t && "focusout" !== t) ||
((m = !0),
(f = "focusin" === t ? "focus" : "blur"),
(u = e => {
const t = ta(e || a.event);
(t.type = "focus" === t.type ? "focusin" : "focusout"), r.executeHandlers(t, l);
})),
(s = r.events[l][t]),
s
? "ready" === t && r.domLoaded
? n(ta({type: t}))
: s.push({func: n, scope: o})
: ((r.events[l][t] = s = [{func: n, scope: o}]),
(s.fakeName = f),
(s.capture = m),
(s.nativeHandler = u),
"ready" === t ? na(e, u, r) : Js(e, f || t, u, m)));
}
return (e = s = null), n;
}
unbind(e, t, n) {
if (!e || dr(e) || mr(e)) return this;
const o = e[this.expando];
if (o) {
let r = this.events[o];
if (t) {
const o = t.split(" ");
let s = o.length;
for (; s--; ) {
const t = o[s],
a = r[t];
if (a) {
if (n) {
let e = a.length;
for (; e--; )
if (a[e].func === n) {
const n = a.nativeHandler,
o = a.fakeName,
s = a.capture,
i = a.slice(0, e).concat(a.slice(e + 1));
(i.nativeHandler = n), (i.fakeName = o), (i.capture = s), (r[t] = i);
}
}
(n && 0 !== a.length) || (delete r[t], ea(e, a.fakeName || t, a.nativeHandler, a.capture));
}
}
} else
pe(r, (t, n) => {
ea(e, t.fakeName || n, t.nativeHandler, t.capture);
}),
(r = {});
for (const e in r) if (ke(r, e)) return this;
delete this.events[o];
try {
delete e[this.expando];
} catch (t) {
e[this.expando] = null;
}
}
return this;
}
fire(e, t, n) {
return this.dispatch(e, t, n);
}
dispatch(e, t, n) {
if (!e || dr(e) || mr(e)) return this;
const o = ta({type: t, target: e}, n);
do {
const t = e[this.expando];
t && this.executeHandlers(o, t), (e = e.parentNode || e.ownerDocument || e.defaultView || e.parentWindow);
} while (e && !o.isPropagationStopped());
return this;
}
clean(e) {
if (!e || dr(e) || mr(e)) return this;
if (
(e[this.expando] && this.unbind(e), e.getElementsByTagName || (e = e.document), e && e.getElementsByTagName)
) {
this.unbind(e);
const t = e.getElementsByTagName("*");
let n = t.length;
for (; n--; ) (e = t[n])[this.expando] && this.unbind(e);
}
return this;
}
destroy() {
this.events = {};
}
cancel(e) {
return e && (e.preventDefault(), e.stopImmediatePropagation()), !1;
}
executeHandlers(e, t) {
const n = this.events[t],
o = n && n[e.type];
if (o)
for (let t = 0, n = o.length; t < n; t++) {
const n = o[t];
if ((n && !1 === n.func.call(n.scope, e) && e.preventDefault(), e.isImmediatePropagationStopped())) return;
}
}
}
oa.Event = new oa();
const ra = Dt.each,
sa = Dt.grep,
aa = "data-mce-style",
ia = Dt.makeMap("fill-opacity font-weight line-height opacity orphans widows z-index zoom", " "),
la = (e, t, n) => {
y(n) || "" === n ? rn(e, t) : Jt(e, t, n);
},
da = e => e.replace(/[A-Z]/g, e => "-" + e.toLowerCase()),
ca = (e, t) => {
let n = 0;
if (e)
for (let o = e.nodeType, r = e.previousSibling; r; r = r.previousSibling) {
const e = r.nodeType;
(!t || !dr(r) || (e !== o && r.data.length)) && (n++, (o = e));
}
return n;
},
ua = (e, t) => {
const n = tn(t, "style"),
o = e.serialize(e.parse(n), $t(t));
la(t, aa, o);
},
ma = (e, t, n) => {
const o = da(t);
y(n) || "" === n ? po(e, o) : lo(e, o, ((e, t) => (x(e) ? (ke(ia, t) ? e + "" : e + "px") : e))(n, o));
},
fa = (e, t = {}) => {
const n = {},
o = window,
r = {};
let s = 0;
const a = rs.forElement(Cn(e), {contentCssCors: t.contentCssCors, referrerPolicy: t.referrerPolicy}),
i = [],
l = t.schema ? t.schema : Fs({}),
d = Ys({url_converter: t.url_converter, url_converter_scope: t.url_converter_scope}, t.schema),
c = t.ownEvents ? new oa() : oa.Event,
u = l.getBlockElements(),
f = t => (t && e && m(t) ? e.getElementById(t) : t),
h = e => {
const t = f(e);
return C(t) ? Cn(t) : null;
},
b = (e, t, n = "") => {
let o;
const r = h(e);
if (C(r) && Kt(r)) {
const e = G[t];
o = e && e.get ? e.get(r.dom, t) : tn(r, t);
}
return C(o) ? o : n;
},
v = e => {
const t = f(e);
return y(t) ? [] : t.attributes;
},
x = (e, n, o) => {
B(e, e => {
if (er(e)) {
const r = Cn(e),
s = "" === o ? null : o,
a = tn(r, n),
i = G[n];
i && i.set ? i.set(r.dom, s, n) : la(r, n, s),
a !== s && t.onSetAttrib && t.onSetAttrib({attrElm: r.dom, attrName: n, attrValue: s});
}
});
},
E = () => t.root_element || e.body,
_ = (t, n) =>
((e, t, n) => {
let o = 0,
r = 0;
const s = e.ownerDocument;
if (((n = n || e), t)) {
if (n === e && t.getBoundingClientRect && "static" === uo(Cn(e), "position")) {
const n = t.getBoundingClientRect();
return (
(o = n.left + (s.documentElement.scrollLeft || e.scrollLeft) - s.documentElement.clientLeft),
(r = n.top + (s.documentElement.scrollTop || e.scrollTop) - s.documentElement.clientTop),
{x: o, y: r}
);
}
let a = t;
for (; a && a !== n && a.nodeType && !ns(a, n); ) {
const e = a;
(o += e.offsetLeft || 0), (r += e.offsetTop || 0), (a = e.offsetParent);
}
for (a = t.parentNode; a && a !== n && a.nodeType && !ns(a, n); )
(o -= a.scrollLeft || 0), (r -= a.scrollTop || 0), (a = a.parentNode);
r += (e =>
es.isFirefox() && "table" === $t(e)
? ts(In(e))
.filter(e => "caption" === $t(e))
.bind(e =>
ts(Mn(e)).map(t => {
const n = t.dom.offsetTop,
o = e.dom.offsetTop,
r = e.dom.offsetHeight;
return n <= o ? -r : 0;
})
)
.getOr(0)
: 0)(Cn(t));
}
return {x: o, y: r};
})(e.body, f(t), n),
S = (e, t, n) => {
const o = f(e);
var r;
if (!y(o) && (tr(o) || (er((r = o)) && "http://www.w3.org/2000/svg" === r.namespaceURI)))
return n
? uo(Cn(o), da(t))
: ("float" === (t = t.replace(/-(\D)/g, (e, t) => t.toUpperCase())) && (t = "cssFloat"),
o.style ? o.style[t] : void 0);
},
R = e => {
const t = f(e);
if (!t) return {w: 0, h: 0};
let n = S(t, "width"),
o = S(t, "height");
return (
(n && -1 !== n.indexOf("px")) || (n = "0"),
(o && -1 !== o.indexOf("px")) || (o = "0"),
{
w: parseInt(n, 10) || t.offsetWidth || t.clientWidth,
h: parseInt(o, 10) || t.offsetHeight || t.clientHeight
}
);
},
A = (e, t) => {
if (!e) return !1;
const n = p(e) ? e : [e];
return $(n, e => En(Cn(e), t));
},
T = (e, t, n, o) => {
const r = [];
let s = f(e);
o = void 0 === o;
const a = n || ("BODY" !== E().nodeName ? E().parentNode : null);
if (m(t))
if ("*" === t) t = er;
else {
const e = t;
t = t => A(t, e);
}
for (; s && !(s === a || y(s.nodeType) || fr(s) || gr(s)); ) {
if (!t || t(s)) {
if (!o) return [s];
r.push(s);
}
s = s.parentNode;
}
return o ? r : null;
},
O = (e, t, n) => {
let o = t;
if (e) {
m(t) && (o = e => A(e, t));
for (let t = e[n]; t; t = t[n]) if (w(o) && o(t)) return t;
}
return null;
},
B = function (e, t, n) {
const o = null != n ? n : this;
if (p(e)) {
const n = [];
return (
ra(e, (e, r) => {
const s = f(e);
s && n.push(t.call(o, s, r));
}),
n
);
}
{
const n = f(e);
return !!n && t.call(o, n);
}
},
P = (e, t) => {
B(e, e => {
pe(t, (t, n) => {
x(e, n, t);
});
});
},
D = (e, t) => {
B(e, e => {
const n = Cn(e);
No(n, t);
});
},
L = (t, n, o, r, s) =>
B(t, t => {
const a = m(n) ? e.createElement(n) : n;
return (
C(o) && P(a, o), r && (!m(r) && r.nodeType ? a.appendChild(r) : m(r) && D(a, r)), s ? a : t.appendChild(a)
);
}),
M = (t, n, o) => L(e.createElement(t), t, n, o, !0),
I = ws.encodeAllRaw,
F = (e, t) =>
B(e, e => {
const n = Cn(e);
return (
t &&
q(In(n), e => {
Yt(e) && 0 === e.dom.length ? Eo(e) : ho(n, e);
}),
Eo(n),
n.dom
);
}),
U = (e, t, n) => {
B(e, e => {
if (er(e)) {
const o = Cn(e),
r = t.split(" ");
q(r, e => {
C(n)
? (n ? mn : gn)(o, e)
: ((e, t) => {
const n = ln(e)
? e.dom.classList.toggle(t)
: ((e, t) => (H(dn(e), t) ? un(e, t) : cn(e, t)))(e, t);
fn(e);
})(o, e);
});
}
});
},
z = (e, t, n) =>
B(t, o => {
var r;
const s = p(t) ? e.cloneNode(!0) : e;
return (
n &&
ra(sa(o.childNodes), e => {
s.appendChild(e);
}),
null === (r = o.parentNode) || void 0 === r || r.replaceChild(s, o),
o
);
}),
j = () => e.createRange(),
V = (n, r, s, a) => {
if (p(n)) {
let e = n.length;
const t = [];
for (; e--; ) t[e] = V(n[e], r, s, a);
return t;
}
return !t.collect || (n !== e && n !== o) || i.push([n, r, s, a]), c.bind(n, r, s, a || Y);
},
W = (t, n, r) => {
if (p(t)) {
let e = t.length;
const o = [];
for (; e--; ) o[e] = W(t[e], n, r);
return o;
}
if (i.length > 0 && (t === e || t === o)) {
let e = i.length;
for (; e--; ) {
const [o, s, a] = i[e];
t !== o || (n && n !== s) || (r && r !== a) || c.unbind(o, s, a);
}
}
return c.unbind(t, n, r);
},
K = e => {
if (e && tr(e)) {
const t = e.getAttribute("data-mce-contenteditable");
return t && "inherit" !== t ? t : "inherit" !== e.contentEditable ? e.contentEditable : null;
}
return null;
},
Y = {
doc: e,
settings: t,
win: o,
files: r,
stdMode: !0,
boxModel: !0,
styleSheetLoader: a,
boundEvents: i,
styles: d,
schema: l,
events: c,
isBlock: e => (m(e) ? ke(u, e) : er(e) && (ke(u, e.nodeName) || Zr(l, e))),
root: null,
clone: (e, t) => e.cloneNode(t),
getRoot: E,
getViewPort: e => {
const t = Fo(e);
return {x: t.x, y: t.y, w: t.width, h: t.height};
},
getRect: e => {
const t = f(e),
n = _(t),
o = R(t);
return {x: n.x, y: n.y, w: o.w, h: o.h};
},
getSize: R,
getParent: (e, t, n) => {
const o = T(e, t, n, !1);
return o && o.length > 0 ? o[0] : null;
},
getParents: T,
get: f,
getNext: (e, t) => O(e, t, "nextSibling"),
getPrev: (e, t) => O(e, t, "previousSibling"),
select: (n, o) => {
var r, s;
const a = null !== (s = null !== (r = f(o)) && void 0 !== r ? r : t.root_element) && void 0 !== s ? s : e;
return w(a.querySelectorAll) ? ce(a.querySelectorAll(n)) : [];
},
is: A,
add: L,
create: M,
createHTML: (e, t, n = "") => {
let o = "<" + e;
for (const e in t) _e(t, e) && (o += " " + e + '="' + I(t[e]) + '"');
return Xe(n) && ke(l.getVoidElements(), e) ? o + " />" : o + ">" + n + "" + e + ">";
},
createFragment: t => {
const n = e.createElement("div"),
o = e.createDocumentFragment();
let r;
for (o.appendChild(n), t && (n.innerHTML = t); (r = n.firstChild); ) o.appendChild(r);
return o.removeChild(n), o;
},
remove: F,
setStyle: (e, n, o) => {
B(e, e => {
const r = Cn(e);
ma(r, n, o), t.update_styles && ua(d, r);
});
},
getStyle: S,
setStyles: (e, n) => {
B(e, e => {
const o = Cn(e);
pe(n, (e, t) => {
ma(o, t, e);
}),
t.update_styles && ua(d, o);
});
},
removeAllAttribs: e =>
B(e, e => {
const t = e.attributes;
for (let n = t.length - 1; n >= 0; n--) e.removeAttributeNode(t.item(n));
}),
setAttrib: x,
setAttribs: P,
getAttrib: b,
getPos: _,
parseStyle: e => d.parse(e),
serializeStyle: (e, t) => d.serialize(e, t),
addStyle: t => {
if (Y !== fa.DOM && e === document) {
if (n[t]) return;
n[t] = !0;
}
let o = e.getElementById("mceDefaultStyles");
if (!o) {
(o = e.createElement("style")), (o.id = "mceDefaultStyles"), (o.type = "text/css");
const t = e.head;
t.firstChild ? t.insertBefore(o, t.firstChild) : t.appendChild(o);
}
o.styleSheet ? (o.styleSheet.cssText += t) : o.appendChild(e.createTextNode(t));
},
loadCSS: e => {
e || (e = ""),
q(e.split(","), e => {
(r[e] = !0), a.load(e).catch(k);
});
},
addClass: (e, t) => {
U(e, t, !0);
},
removeClass: (e, t) => {
U(e, t, !1);
},
hasClass: (e, t) => {
const n = h(e),
o = t.split(" ");
return C(n) && ne(o, e => pn(n, e));
},
toggleClass: U,
show: e => {
B(e, e => po(Cn(e), "display"));
},
hide: e => {
B(e, e => lo(Cn(e), "display", "none"));
},
isHidden: e => {
const t = h(e);
return C(t) && Lt(fo(t, "display"), "none");
},
uniqueId: e => (e || "mce_") + s++,
setHTML: D,
getOuterHTML: e => {
const t = h(e);
return C(t)
? er(t.dom)
? t.dom.outerHTML
: (e => {
const t = vn("div"),
n = Cn(e.dom.cloneNode(!0));
return yo(t, n), So(t);
})(t)
: "";
},
setOuterHTML: (e, t) => {
B(e, e => {
er(e) && (e.outerHTML = t);
});
},
decode: ws.decode,
encode: I,
insertAfter: (e, t) => {
const n = f(t);
return B(e, e => {
const t = null == n ? void 0 : n.parentNode,
o = null == n ? void 0 : n.nextSibling;
return t && (o ? t.insertBefore(e, o) : t.appendChild(e)), e;
});
},
replace: z,
rename: (e, t) => {
if (e.nodeName !== t.toUpperCase()) {
const n = M(t);
return (
ra(v(e), t => {
x(n, t.nodeName, b(e, t.nodeName));
}),
z(n, e, !0),
n
);
}
return e;
},
findCommonAncestor: (e, t) => {
let n = e;
for (; n; ) {
let e = t;
for (; e && n !== e; ) e = e.parentNode;
if (n === e) break;
n = n.parentNode;
}
return !n && e.ownerDocument ? e.ownerDocument.documentElement : n;
},
run: B,
getAttribs: v,
isEmpty: (e, t, n) => {
if (g(t)) {
const o = e => {
const n = e.nodeName.toLowerCase();
return Boolean(t[n]);
};
return Ar(l, e, {...n, isContent: o});
}
return Ar(l, e, n);
},
createRng: j,
nodeIndex: ca,
split: (e, t, n) => {
let o,
r,
s = j();
if (e && t && e.parentNode && t.parentNode) {
const a = e.parentNode;
return (
s.setStart(a, ca(e)),
s.setEnd(t.parentNode, ca(t)),
(o = s.extractContents()),
(s = j()),
s.setStart(t.parentNode, ca(t) + 1),
s.setEnd(a, ca(e) + 1),
(r = s.extractContents()),
a.insertBefore(is(Y, o, l), e),
n ? a.insertBefore(n, e) : a.insertBefore(t, e),
a.insertBefore(is(Y, r, l), e),
F(e),
n || t
);
}
},
bind: V,
unbind: W,
fire: (e, t, n) => c.dispatch(e, t, n),
dispatch: (e, t, n) => c.dispatch(e, t, n),
getContentEditable: K,
getContentEditableParent: e => {
const t = E();
let n = null;
for (let o = e; o && o !== t && ((n = K(o)), null === n); o = o.parentNode);
return n;
},
isEditable: e => {
if (C(e)) {
const t = er(e) ? e : e.parentElement;
return C(t) && tr(t) && ro(Cn(t));
}
return !1;
},
destroy: () => {
if (i.length > 0) {
let e = i.length;
for (; e--; ) {
const [t, n, o] = i[e];
c.unbind(t, n, o);
}
}
pe(r, (e, t) => {
a.unload(t), delete r[t];
});
},
isChildOf: (e, t) => e === t || t.contains(e),
dumpRng: e =>
"startContainer: " +
e.startContainer.nodeName +
", startOffset: " +
e.startOffset +
", endContainer: " +
e.endContainer.nodeName +
", endOffset: " +
e.endOffset
},
G = ((e, t, n) => {
const o = t.keep_values,
r = {
set: (e, o, r) => {
const s = Cn(e);
w(t.url_converter) && C(o) && (o = t.url_converter.call(t.url_converter_scope || n(), String(o), r, e)),
la(s, "data-mce-" + r, o),
la(s, r, o);
},
get: (e, t) => {
const n = Cn(e);
return tn(n, "data-mce-" + t) || tn(n, t);
}
},
s = {
style: {
set: (t, n) => {
const r = Cn(t);
o && la(r, aa, n), rn(r, "style"), m(n) && co(r, e.parse(n));
},
get: t => {
const n = Cn(t),
o = tn(n, aa) || tn(n, "style");
return e.serialize(e.parse(o), $t(n));
}
}
};
return o && (s.href = s.src = r), s;
})(d, t, N(Y));
return Y;
};
(fa.DOM = fa(document)), (fa.nodeIndex = ca);
const ga = fa.DOM;
class pa {
constructor(e = {}) {
(this.states = {}),
(this.queue = []),
(this.scriptLoadedCallbacks = {}),
(this.queueLoadedCallbacks = []),
(this.loading = !1),
(this.settings = e);
}
_setReferrerPolicy(e) {
this.settings.referrerPolicy = e;
}
loadScript(e) {
return new Promise((t, n) => {
const o = ga;
let r;
const s = () => {
o.remove(a), r && (r.onerror = r.onload = r = null);
},
a = o.uniqueId();
(r = document.createElement("script")),
(r.id = a),
(r.type = "text/javascript"),
(r.src = Dt._addCacheSuffix(e)),
this.settings.referrerPolicy && o.setAttrib(r, "referrerpolicy", this.settings.referrerPolicy),
(r.onload = () => {
s(), t();
}),
(r.onerror = () => {
s(), n("Failed to load script: " + e);
}),
(document.getElementsByTagName("head")[0] || document.body).appendChild(r);
});
}
isDone(e) {
return 2 === this.states[e];
}
markDone(e) {
this.states[e] = 2;
}
add(e) {
const t = this;
return (
t.queue.push(e),
void 0 === t.states[e] && (t.states[e] = 0),
new Promise((n, o) => {
t.scriptLoadedCallbacks[e] || (t.scriptLoadedCallbacks[e] = []),
t.scriptLoadedCallbacks[e].push({resolve: n, reject: o});
})
);
}
load(e) {
return this.add(e);
}
remove(e) {
delete this.states[e], delete this.scriptLoadedCallbacks[e];
}
loadQueue() {
const e = this.queue;
return (this.queue = []), this.loadScripts(e);
}
loadScripts(e) {
const t = this,
n = (e, n) => {
Ee(t.scriptLoadedCallbacks, n).each(t => {
q(t, t => t[e](n));
}),
delete t.scriptLoadedCallbacks[n];
},
o = e => {
const t = Y(e, e => "rejected" === e.status);
return t.length > 0 ? Promise.reject(te(t, ({reason: e}) => (p(e) ? e : [e]))) : Promise.resolve();
},
r = e =>
Promise.allSettled(
V(e, e =>
2 === t.states[e]
? (n("resolve", e), Promise.resolve())
: 3 === t.states[e]
? (n("reject", e), Promise.reject(e))
: ((t.states[e] = 1),
t.loadScript(e).then(
() => {
(t.states[e] = 2), n("resolve", e);
const s = t.queue;
return s.length > 0 ? ((t.queue = []), r(s).then(o)) : Promise.resolve();
},
() => ((t.states[e] = 3), n("reject", e), Promise.reject(e))
))
)
),
s = e => (
(t.loading = !0),
r(e).then(e => {
t.loading = !1;
const n = t.queueLoadedCallbacks.shift();
return I.from(n).each(D), o(e);
})
),
a = Se(e);
return t.loading
? new Promise((e, n) => {
t.queueLoadedCallbacks.push(() => {
s(a).then(e, n);
});
})
: s(a);
}
}
pa.ScriptLoader = new pa();
const ha = {},
ba = Br("en"),
va = () => Ee(ha, ba.get()),
ya = {
getData: () => he(ha, e => ({...e})),
setCode: e => {
e && ba.set(e);
},
getCode: () => ba.get(),
add: (e, t) => {
let n = ha[e];
n || (ha[e] = n = {});
const o = V(fe(t), e => e.toLowerCase());
pe(t, (e, r) => {
const s = r.toLowerCase();
s !== r &&
((e, t) => {
const n = e.indexOf(t);
return -1 !== n && e.indexOf(t, n + 1) > n;
})(o, s)
? (ke(t, s) || (n[s] = e), (n[r] = e))
: (n[s] = e);
});
},
translate: e => {
const t = va().getOr({}),
n = e => (w(e) ? Object.prototype.toString.call(e) : o(e) ? "" : "" + e),
o = e => "" === e || null == e,
r = e => {
const o = n(e);
return ke(t, o) ? n(t[o]) : Ee(t, o.toLowerCase()).map(n).getOr(o);
},
s = e => e.replace(/{context:\w+}$/, "");
if (o(e)) return "";
if (f((a = e)) && ke(a, "raw")) return n(e.raw);
var a;
if ((e => p(e) && e.length > 1)(e)) {
const t = e.slice(1);
return s(r(e[0]).replace(/\{([0-9]+)\}/g, (e, o) => (ke(t, o) ? n(t[o]) : e)));
}
return s(r(e));
},
isRtl: () =>
va()
.bind(e => Ee(e, "_dir"))
.exists(e => "rtl" === e),
hasCode: e => ke(ha, e)
},
Ca = () => {
const e = [],
t = {},
n = {},
o = [],
r = (e, t) => {
const n = Y(o, n => n.name === e && n.state === t);
q(n, e => e.resolve());
},
s = e => ke(t, e),
a = (e, n) => {
const o = ya.getCode();
!o ||
(n && -1 === ("," + (n || "") + ",").indexOf("," + o + ",")) ||
pa.ScriptLoader.add(t[e] + "/langs/" + o + ".min.js");
},
i = (e, t = "added") =>
("added" === t && (e => ke(n, e))(e)) || ("loaded" === t && s(e))
? Promise.resolve()
: new Promise(n => {
o.push({name: e, state: t, resolve: n});
});
return {
items: e,
urls: t,
lookup: n,
get: e => {
if (n[e]) return n[e].instance;
},
requireLangPack: (e, t) => {
!1 !== Ca.languageLoad && (s(e) ? a(e, t) : i(e, "loaded").then(() => a(e, t)));
},
add: (t, o) => (e.push(o), (n[t] = {instance: o}), r(t, "added"), o),
remove: e => {
delete t[e], delete n[e];
},
createUrl: (e, t) =>
m(t) ? (m(e) ? {prefix: "", resource: t, suffix: ""} : {prefix: e.prefix, resource: t, suffix: e.suffix}) : t,
load: (e, o) => {
if (t[e]) return Promise.resolve();
let s = m(o) ? o : o.prefix + o.resource + o.suffix;
0 !== s.indexOf("/") && -1 === s.indexOf("://") && (s = Ca.baseURL + "/" + s),
(t[e] = s.substring(0, s.lastIndexOf("/")));
const a = () => (r(e, "loaded"), Promise.resolve());
return n[e] ? a() : pa.ScriptLoader.add(s).then(a);
},
waitFor: i
};
};
(Ca.languageLoad = !0),
(Ca.baseURL = ""),
(Ca.PluginManager = Ca()),
(Ca.ThemeManager = Ca()),
(Ca.ModelManager = Ca());
const wa = (e, t) => {
let n = null;
return {
cancel: () => {
h(n) || (clearTimeout(n), (n = null));
},
throttle: (...o) => {
h(n) &&
(n = setTimeout(() => {
(n = null), e.apply(null, o);
}, t));
}
};
},
xa = (e, t) => {
let n = null;
const o = () => {
h(n) || (clearTimeout(n), (n = null));
};
return {
cancel: o,
throttle: (...r) => {
o(),
(n = setTimeout(() => {
(n = null), e.apply(null, r);
}, t));
}
};
},
Ea = N("mce-annotation"),
ka = N("data-mce-annotation"),
_a = N("data-mce-annotation-uid"),
Sa = N("data-mce-annotation-active"),
Na = N("data-mce-annotation-classes"),
Ra = N("data-mce-annotation-attrs"),
Aa = e => t => _n(t, e),
Ta = (e, t) => {
const n = e.selection.getRng(),
o = Cn(n.startContainer),
r = Cn(e.getBody()),
s = t.fold(
() => "." + Ea(),
e => `[${ka()}="${e}"]`
),
a = Fn(o, n.startOffset).getOr(o);
return oo(a, s, Aa(r)).bind(t =>
nn(t, `${_a()}`).bind(n =>
nn(t, `${ka()}`).map(t => {
const o = Ba(e, n);
return {uid: n, name: t, elements: o};
})
)
);
},
Oa = (e, t) => on(e, "data-mce-bogus") || ((e, t, n) => to(e, '[data-mce-bogus="all"]', n).isSome())(e, 0, Aa(t)),
Ba = (e, t) => {
const n = Cn(e.getBody()),
o = zo(n, `[${_a()}="${t}"]`);
return Y(o, e => !Oa(e, n));
},
Pa = (e, t) => {
const n = Cn(e.getBody()),
o = zo(n, `[${ka()}="${t}"]`),
r = {};
return (
q(o, e => {
if (!Oa(e, n)) {
const t = tn(e, _a()),
n = Ee(r, t).getOr([]);
r[t] = n.concat([e]);
}
}),
r
);
};
let Da = 0;
const La = e => {
const t = new Date().getTime(),
n = Math.floor(1e9 * Math.random());
return Da++, e + "_" + n + Da + String(t);
},
Ma = (e, t) => Cn(e.dom.cloneNode(t)),
Ia = e => Ma(e, !1),
Fa = e => Ma(e, !0),
Ua = (e, t, n = L) => {
const o = new Vo(e, t),
r = e => {
let t;
do {
t = o[e]();
} while (t && !dr(t) && !n(t));
return I.from(t).filter(dr);
};
return {
current: () => I.from(o.current()).filter(dr),
next: () => r("next"),
prev: () => r("prev"),
prev2: () => r("prev2")
};
},
za = (e, t) => {
const n = t || (t => e.isBlock(t) || pr(t) || vr(t)),
o = (e, t, n, r) => {
if (dr(e)) {
const n = r(e, t, e.data);
if (-1 !== n) return I.some({container: e, offset: n});
}
return n().bind(e => o(e.container, e.offset, n, r));
};
return {
backwards: (t, r, s, a) => {
const i = Ua(t, null != a ? a : e.getRoot(), n);
return o(t, r, () => i.prev().map(e => ({container: e, offset: e.length})), s).getOrNull();
},
forwards: (t, r, s, a) => {
const i = Ua(t, null != a ? a : e.getRoot(), n);
return o(t, r, () => i.next().map(e => ({container: e, offset: 0})), s).getOrNull();
}
};
},
ja = ((e, t) => {
const n = t => (e(t) ? I.from(t.dom.nodeValue) : I.none());
return {
get: t => {
if (!e(t)) throw new Error("Can only get text value of a text node");
return n(t).getOr("");
},
getOption: n,
set: (t, n) => {
if (!e(t)) throw new Error("Can only set raw text value of a text node");
t.dom.nodeValue = n;
}
};
})(Yt),
Ha = e => ja.get(e),
$a = e => {
let t;
return n => ((t = t || se(e, M)), ke(t, $t(n)));
},
Va = e => Kt(e) && "br" === $t(e),
qa = $a([
"h1",
"h2",
"h3",
"h4",
"h5",
"h6",
"p",
"div",
"address",
"pre",
"form",
"blockquote",
"center",
"dir",
"fieldset",
"header",
"footer",
"article",
"section",
"hgroup",
"aside",
"nav",
"figure"
]),
Wa = $a(["ul", "ol", "dl"]),
Ka = $a(["li", "dd", "dt"]),
Ya = $a(["thead", "tbody", "tfoot"]),
Ga = $a(["td", "th"]),
Xa = $a(["pre", "script", "textarea", "style"]),
Za = () => {
const e = vn("br");
return Jt(e, "data-mce-bogus", "1"), e;
},
Qa = e => {
xo(e), yo(e, Za());
},
Ja = qo,
ei = Ko,
ti = e => e.replace(/\uFEFF/g, ""),
ni = er,
oi = dr,
ri = e => (oi(e) && (e = e.parentNode), ni(e) && e.hasAttribute("data-mce-caret")),
si = e => oi(e) && ei(e.data),
ai = e => ri(e) || si(e),
ii = e => e.firstChild !== e.lastChild || !pr(e.firstChild),
li = e => {
const t = e.container();
return !!dr(t) && (t.data.charAt(e.offset()) === Ja || (e.isAtStart() && si(t.previousSibling)));
},
di = e => {
const t = e.container();
return !!dr(t) && (t.data.charAt(e.offset() - 1) === Ja || (e.isAtEnd() && si(t.nextSibling)));
},
ci = e => oi(e) && e.data[0] === Ja,
ui = e => oi(e) && e.data[e.data.length - 1] === Ja,
mi = e =>
e && e.hasAttribute("data-mce-caret")
? ((e => {
var t;
const n = e.getElementsByTagName("br"),
o = n[n.length - 1];
sr(o) && (null === (t = o.parentNode) || void 0 === t || t.removeChild(o));
})(e),
e.removeAttribute("data-mce-caret"),
e.removeAttribute("data-mce-bogus"),
e.removeAttribute("style"),
e.removeAttribute("data-mce-style"),
e.removeAttribute("_moz_abspos"),
e)
: null,
fi = e => ri(e.startContainer),
gi = Math.round,
pi = e =>
e
? {
left: gi(e.left),
top: gi(e.top),
bottom: gi(e.bottom),
right: gi(e.right),
width: gi(e.width),
height: gi(e.height)
}
: {left: 0, top: 0, bottom: 0, right: 0, width: 0, height: 0},
hi = (e, t) => ((e = pi(e)), t || (e.left = e.left + e.width), (e.right = e.left), (e.width = 0), e),
bi = (e, t, n) => e >= 0 && e <= Math.min(t.height, n.height) / 2,
vi = (e, t) => {
const n = Math.min(t.height / 2, e.height / 2);
return e.bottom - n < t.top || (!(e.top > t.bottom) && bi(t.top - e.bottom, e, t));
},
yi = (e, t) => e.top > t.bottom || (!(e.bottom < t.top) && bi(t.bottom - e.top, e, t)),
Ci = (e, t, n) => {
const o = Math.max(Math.min(t, e.left + e.width), e.left),
r = Math.max(Math.min(n, e.top + e.height), e.top);
return Math.sqrt((t - o) * (t - o) + (n - r) * (n - r));
},
wi = e => {
const t = e.startContainer,
n = e.startOffset;
return t === e.endContainer && t.hasChildNodes() && e.endOffset === n + 1 ? t.childNodes[n] : null;
},
xi = (e, t) => {
if (er(e) && e.hasChildNodes()) {
const n = e.childNodes,
o = ((e, t, n) => Math.min(Math.max(e, 0), n))(t, 0, n.length - 1);
return n[o];
}
return e;
},
Ei = new RegExp(
"[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e3-\u0902\u093a\u093c\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2-\u09e3\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62-\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62-\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1abe\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20dd-\u20e0\u20e1\u20e2-\u20e4\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\ua670-\ua672\ua674-\ua67d\ua69e-\ua69f\ua6f0-\ua6f1\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\uff9e-\uff9f]"
),
ki = e => m(e) && e.charCodeAt(0) >= 768 && Ei.test(e),
_i = br,
Si = vr,
Ni = pr,
Ri = dr,
Ai = or(["script", "style", "textarea"]),
Ti = or(["img", "input", "textarea", "hr", "iframe", "video", "audio", "object", "embed"]),
Oi = or(["table"]),
Bi = ai,
Pi = e => !Bi(e) && (Ri(e) ? !Ai(e.parentNode) : Ti(e) || Ni(e) || Oi(e) || Di(e)),
Di = e => !(e => er(e) && "true" === e.getAttribute("unselectable"))(e) && Si(e),
Li = (e, t) =>
Pi(e) &&
((e, t) => {
for (let n = e.parentNode; n && n !== t; n = n.parentNode) {
if (Di(n)) return !1;
if (_i(n)) return !0;
}
return !0;
})(e, t),
Mi = er,
Ii = Pi,
Fi = rr("display", "block table"),
Ui = rr("float", "left right"),
zi = (
(...e) =>
t => {
for (let n = 0; n < e.length; n++) if (!e[n](t)) return !1;
return !0;
}
)(Mi, Ii, O(Ui)),
ji = O(rr("white-space", "pre pre-line pre-wrap")),
Hi = dr,
$i = pr,
Vi = fa.nodeIndex,
qi = (e, t) => (t < 0 && er(e) && e.hasChildNodes() ? void 0 : xi(e, t)),
Wi = e => (e ? e.createRange() : fa.DOM.createRng()),
Ki = e => m(e) && /[\r\n\t ]/.test(e),
Yi = e => !!e.setStart && !!e.setEnd,
Gi = e => {
const t = e.startContainer,
n = e.startOffset;
if (Ki(e.toString()) && ji(t.parentNode) && dr(t)) {
const e = t.data;
if (Ki(e[n - 1]) || Ki(e[n + 1])) return !0;
}
return !1;
},
Xi = e => 0 === e.left && 0 === e.right && 0 === e.top && 0 === e.bottom,
Zi = e => {
var t;
let n;
const o = e.getClientRects();
return (
(n = o.length > 0 ? pi(o[0]) : pi(e.getBoundingClientRect())),
!Yi(e) && $i(e) && Xi(n)
? (e => {
const t = e.ownerDocument,
n = Wi(t),
o = t.createTextNode(Wo),
r = e.parentNode;
r.insertBefore(o, e), n.setStart(o, 0), n.setEnd(o, 1);
const s = pi(n.getBoundingClientRect());
return r.removeChild(o), s;
})(e)
: Xi(n) &&
Yi(e) &&
null !==
(t = (e => {
const t = e.startContainer,
n = e.endContainer,
o = e.startOffset,
r = e.endOffset;
if (t === n && dr(n) && 0 === o && 1 === r) {
const t = e.cloneRange();
return t.setEndAfter(n), Zi(t);
}
return null;
})(e)) &&
void 0 !== t
? t
: n
);
},
Qi = (e, t) => {
const n = hi(e, t);
return (n.width = 1), (n.right = n.left + 1), n;
},
Ji = (e, t, n) => {
const o = () => (
n ||
(n = (e => {
const t = [],
n = e => {
var n, o;
0 !== e.height &&
((t.length > 0 &&
((n = e),
(o = t[t.length - 1]),
n.left === o.left && n.top === o.top && n.bottom === o.bottom && n.right === o.right)) ||
t.push(e));
},
o = (e, t) => {
const o = Wi(e.ownerDocument);
if (t < e.data.length) {
if (ki(e.data[t])) return;
if (ki(e.data[t - 1]) && (o.setStart(e, t), o.setEnd(e, t + 1), !Gi(o))) return void n(Qi(Zi(o), !1));
}
t > 0 && (o.setStart(e, t - 1), o.setEnd(e, t), Gi(o) || n(Qi(Zi(o), !1))),
t < e.data.length && (o.setStart(e, t), o.setEnd(e, t + 1), Gi(o) || n(Qi(Zi(o), !0)));
},
r = e.container(),
s = e.offset();
if (Hi(r)) return o(r, s), t;
if (Mi(r))
if (e.isAtEnd()) {
const e = qi(r, s);
Hi(e) && o(e, e.data.length), zi(e) && !$i(e) && n(Qi(Zi(e), !1));
} else {
const a = qi(r, s);
if ((Hi(a) && o(a, 0), zi(a) && e.isAtEnd())) return n(Qi(Zi(a), !1)), t;
const i = qi(e.container(), e.offset() - 1);
zi(i) && !$i(i) && (Fi(i) || Fi(a) || !zi(a)) && n(Qi(Zi(i), !1)), zi(a) && n(Qi(Zi(a), !0));
}
return t;
})(Ji(e, t))),
n
);
return {
container: N(e),
offset: N(t),
toRange: () => {
const n = Wi(e.ownerDocument);
return n.setStart(e, t), n.setEnd(e, t), n;
},
getClientRects: o,
isVisible: () => o().length > 0,
isAtStart: () => (Hi(e), 0 === t),
isAtEnd: () => (Hi(e) ? t >= e.data.length : t >= e.childNodes.length),
isEqual: n => n && e === n.container() && t === n.offset(),
getNode: n => qi(e, n ? t - 1 : t)
};
};
(Ji.fromRangeStart = e => Ji(e.startContainer, e.startOffset)),
(Ji.fromRangeEnd = e => Ji(e.endContainer, e.endOffset)),
(Ji.after = e => Ji(e.parentNode, Vi(e) + 1)),
(Ji.before = e => Ji(e.parentNode, Vi(e))),
(Ji.isAbove = (e, t) => It(le(t.getClientRects()), de(e.getClientRects()), vi).getOr(!1)),
(Ji.isBelow = (e, t) => It(de(t.getClientRects()), le(e.getClientRects()), yi).getOr(!1)),
(Ji.isAtStart = e => !!e && e.isAtStart()),
(Ji.isAtEnd = e => !!e && e.isAtEnd()),
(Ji.isTextPosition = e => !!e && dr(e.container())),
(Ji.isElementPosition = e => !Ji.isTextPosition(e));
const el = (e, t) => {
dr(t) && 0 === t.data.length && e.remove(t);
},
tl = (e, t, n) => {
gr(n)
? ((e, t, n) => {
const o = I.from(n.firstChild),
r = I.from(n.lastChild);
t.insertNode(n), o.each(t => el(e, t.previousSibling)), r.each(t => el(e, t.nextSibling));
})(e, t, n)
: ((e, t, n) => {
t.insertNode(n), el(e, n.previousSibling), el(e, n.nextSibling);
})(e, t, n);
},
nl = dr,
ol = sr,
rl = fa.nodeIndex,
sl = e => {
const t = e.parentNode;
return ol(t) ? sl(t) : t;
},
al = e =>
e ? Be(e.childNodes, (e, t) => (ol(t) && "BR" !== t.nodeName ? (e = e.concat(al(t))) : e.push(t), e), []) : [],
il = e => t => e === t,
ll = e =>
(nl(e) ? "text()" : e.nodeName.toLowerCase()) +
"[" +
(e => {
let t, n;
(t = al(sl(e))), (n = Pe(t, il(e), e)), (t = t.slice(0, n + 1));
const o = Be(t, (e, n, o) => (nl(n) && nl(t[o - 1]) && e++, e), 0);
return (t = Oe(t, or([e.nodeName]))), (n = Pe(t, il(e), e)), n - o;
})(e) +
"]",
dl = (e, t) => {
let n,
o = [],
r = t.container(),
s = t.offset();
if (nl(r))
n = ((e, t) => {
let n = e;
for (; (n = n.previousSibling) && nl(n); ) t += n.data.length;
return t;
})(r, s);
else {
const e = r.childNodes;
s >= e.length ? ((n = "after"), (s = e.length - 1)) : (n = "before"), (r = e[s]);
}
o.push(ll(r));
let a = ((e, t, n) => {
const o = [];
for (let n = t.parentNode; n && n !== e; n = n.parentNode) o.push(n);
return o;
})(e, r);
return (a = Oe(a, O(sr))), (o = o.concat(Te(a, e => ll(e)))), o.reverse().join("/") + "," + n;
},
cl = (e, t) => {
if (!t) return null;
const n = t.split(","),
o = n[0].split("/"),
r = n.length > 1 ? n[1] : "before",
s = Be(
o,
(e, t) => {
const n = /([\w\-\(\)]+)\[([0-9]+)\]/.exec(t);
return n
? ("text()" === n[1] && (n[1] = "#text"),
((e, t, n) => {
let o = al(e);
return (o = Oe(o, (e, t) => !nl(e) || !nl(o[t - 1]))), (o = Oe(o, or([t]))), o[n];
})(e, n[1], parseInt(n[2], 10)))
: null;
},
e
);
if (!s) return null;
if (!nl(s) && s.parentNode) {
let e;
return (e = "after" === r ? rl(s) + 1 : rl(s)), Ji(s.parentNode, e);
}
return ((e, t) => {
let n = e,
o = 0;
for (; nl(n); ) {
const r = n.data.length;
if (t >= o && t <= o + r) {
(e = n), (t -= o);
break;
}
if (!nl(n.nextSibling)) {
(e = n), (t = r);
break;
}
(o += r), (n = n.nextSibling);
}
return nl(e) && t > e.data.length && (t = e.data.length), Ji(e, t);
})(s, parseInt(r, 10));
},
ul = vr,
ml = (e, t, n, o, r) => {
const s = r ? o.startContainer : o.endContainer;
let a = r ? o.startOffset : o.endOffset;
const i = [],
l = e.getRoot();
if (dr(s))
i.push(
n
? ((e, t, n) => {
let o = e(t.data.slice(0, n)).length;
for (let n = t.previousSibling; n && dr(n); n = n.previousSibling) o += e(n.data).length;
return o;
})(t, s, a)
: a
);
else {
let t = 0;
const o = s.childNodes;
a >= o.length && o.length && ((t = 1), (a = Math.max(0, o.length - 1))), i.push(e.nodeIndex(o[a], n) + t);
}
for (let t = s; t && t !== l; t = t.parentNode) i.push(e.nodeIndex(t, n));
return i;
},
fl = (e, t, n) => {
let o = 0;
return Dt.each(e.select(t), e => ("all" === e.getAttribute("data-mce-bogus") ? void 0 : e !== n && void o++)), o;
},
gl = (e, t) => {
let n = t ? e.startContainer : e.endContainer,
o = t ? e.startOffset : e.endOffset;
if (er(n) && "TR" === n.nodeName) {
const r = n.childNodes;
(n = r[Math.min(t ? o : o - 1, r.length - 1)]),
n && ((o = t ? 0 : n.childNodes.length), t ? e.setStart(n, o) : e.setEnd(n, o));
}
},
pl = e => (gl(e, !0), gl(e, !1), e),
hl = (e, t) => {
if (er(e) && ((e = xi(e, t)), ul(e))) return e;
if (ai(e)) {
dr(e) && ri(e) && (e = e.parentNode);
let t = e.previousSibling;
if (ul(t)) return t;
if (((t = e.nextSibling), ul(t))) return t;
}
},
bl = (e, t, n) => {
const o = n.getNode(),
r = n.getRng();
if ("IMG" === o.nodeName || ul(o)) {
const e = o.nodeName;
return {name: e, index: fl(n.dom, e, o)};
}
const s = (e => hl(e.startContainer, e.startOffset) || hl(e.endContainer, e.endOffset))(r);
if (s) {
const e = s.tagName;
return {name: e, index: fl(n.dom, e, s)};
}
return ((e, t, n, o) => {
const r = t.dom,
s = ml(r, e, n, o, !0),
a = t.isForward(),
i = fi(o) ? {isFakeCaret: !0} : {};
return t.isCollapsed() ? {start: s, forward: a, ...i} : {start: s, end: ml(r, e, n, o, !1), forward: a, ...i};
})(e, n, t, r);
},
vl = (e, t, n) => {
const o = {"data-mce-type": "bookmark", id: t, style: "overflow:hidden;line-height:0px"};
return n ? e.create("span", o, "") : e.create("span", o);
},
yl = (e, t) => {
const n = e.dom;
let o = e.getRng();
const r = n.uniqueId(),
s = e.isCollapsed(),
a = e.getNode(),
i = a.nodeName,
l = e.isForward();
if ("IMG" === i) return {name: i, index: fl(n, i, a)};
const d = pl(o.cloneRange());
if (!s) {
d.collapse(!1);
const e = vl(n, r + "_end", t);
tl(n, d, e);
}
(o = pl(o)), o.collapse(!0);
const c = vl(n, r + "_start", t);
return tl(n, o, c), e.moveToBookmark({id: r, keep: !0, forward: l}), {id: r, forward: l};
},
Cl = T(bl, R, !0),
wl = e => {
const t = t => t(e),
n = N(e),
o = () => r,
r = {
tag: !0,
inner: e,
fold: (t, n) => n(e),
isValue: M,
isError: L,
map: t => El.value(t(e)),
mapError: o,
bind: t,
exists: t,
forall: t,
getOr: n,
or: o,
getOrThunk: n,
orThunk: o,
getOrDie: n,
each: t => {
t(e);
},
toOptional: () => I.some(e)
};
return r;
},
xl = e => {
const t = () => n,
n = {
tag: !1,
inner: e,
fold: (t, n) => t(e),
isValue: L,
isError: M,
map: t,
mapError: t => El.error(t(e)),
bind: t,
exists: L,
forall: M,
getOr: R,
or: R,
getOrThunk: P,
orThunk: P,
getOrDie: B(String(e)),
each: k,
toOptional: I.none
};
return n;
},
El = {value: wl, error: xl, fromOption: (e, t) => e.fold(() => xl(t), wl)},
kl = e => {
if (!p(e)) throw new Error("cases must be an array");
if (0 === e.length) throw new Error("there must be at least one case");
const t = [],
n = {};
return (
q(e, (o, r) => {
const s = fe(o);
if (1 !== s.length) throw new Error("one and only one name per case");
const a = s[0],
i = o[a];
if (void 0 !== n[a]) throw new Error("duplicate key detected:" + a);
if ("cata" === a) throw new Error("cannot have a case named cata (sorry)");
if (!p(i)) throw new Error("case arguments must be an array");
t.push(a),
(n[a] = (...n) => {
const o = n.length;
if (o !== i.length)
throw new Error(
"Wrong number of arguments to case " + a + ". Expected " + i.length + " (" + i + "), got " + o
);
return {
fold: (...t) => {
if (t.length !== e.length)
throw new Error("Wrong number of arguments to fold. Expected " + e.length + ", got " + t.length);
return t[r].apply(null, n);
},
match: e => {
const o = fe(e);
if (t.length !== o.length)
throw new Error(
"Wrong number of arguments to match. Expected: " + t.join(",") + "\nActual: " + o.join(",")
);
if (!ne(t, e => H(o, e)))
throw new Error(
"Not all branches were specified when using match. Specified: " +
o.join(", ") +
"\nRequired: " +
t.join(", ")
);
return e[a].apply(null, n);
},
log: e => {
console.log(e, {constructors: t, constructor: a, params: n});
}
};
});
}),
n
);
};
kl([
{bothErrors: ["error1", "error2"]},
{firstError: ["error1", "value2"]},
{secondError: ["value1", "error2"]},
{bothValues: ["value1", "value2"]}
]);
const _l = e => "inline-command" === e.type || "inline-format" === e.type,
Sl = e => "block-command" === e.type || "block-format" === e.type,
Nl = e => {
var t;
const n = t => El.error({message: t, pattern: e}),
o = (t, o, r) => {
if (void 0 !== e.format) {
let r;
if (p(e.format)) {
if (!ne(e.format, m)) return n(t + " pattern has non-string items in the `format` array");
r = e.format;
} else {
if (!m(e.format)) return n(t + " pattern has non-string `format` parameter");
r = [e.format];
}
return El.value(o(r));
}
return void 0 !== e.cmd
? m(e.cmd)
? El.value(r(e.cmd, e.value))
: n(t + " pattern has non-string `cmd` parameter")
: n(t + " pattern is missing both `format` and `cmd` parameters");
};
if (!f(e)) return n("Raw pattern is not an object");
if (!m(e.start)) return n("Raw pattern is missing `start` parameter");
if (void 0 !== e.end) {
if (!m(e.end)) return n("Inline pattern has non-string `end` parameter");
if (0 === e.start.length && 0 === e.end.length)
return n("Inline pattern has empty `start` and `end` parameters");
let t = e.start,
r = e.end;
return (
0 === r.length && ((r = t), (t = "")),
o(
"Inline",
e => ({type: "inline-format", start: t, end: r, format: e}),
(e, n) => ({type: "inline-command", start: t, end: r, cmd: e, value: n})
)
);
}
if (void 0 !== e.replacement)
return m(e.replacement)
? 0 === e.start.length
? n("Replacement pattern has empty `start` parameter")
: El.value({type: "inline-command", start: "", end: e.start, cmd: "mceInsertContent", value: e.replacement})
: n("Replacement pattern has non-string `replacement` parameter");
{
const r = null !== (t = e.trigger) && void 0 !== t ? t : "space";
return 0 === e.start.length
? n("Block pattern has empty `start` parameter")
: o(
"Block",
t => ({type: "block-format", start: e.start, format: t[0], trigger: r}),
(t, n) => ({type: "block-command", start: e.start, cmd: t, value: n, trigger: r})
);
}
},
Rl = e => Y(e, Sl),
Al = e => Y(e, _l),
Tl = (e, t) => ({
...e,
blockPatterns: Y(e.blockPatterns, e =>
((e, t) => ("block-command" === e.type || "block-format" === e.type) && e.trigger === t)(e, t)
)
}),
Ol = e => {
const t = (e => {
const t = [],
n = [];
return (
q(e, e => {
e.fold(
e => {
t.push(e);
},
e => {
n.push(e);
}
);
}),
{errors: t, values: n}
);
})(V(e, Nl));
return q(t.errors, e => console.error(e.message, e.pattern)), t.values;
},
Bl = Et().deviceType,
Pl = Bl.isTouch(),
Dl = fa.DOM,
Ll = e => u(e, RegExp),
Ml = e => t => t.options.get(e),
Il = e => m(e) || f(e),
Fl =
(e, t = "") =>
n => {
const o = m(n);
if (o) {
if (-1 !== n.indexOf("=")) {
const r = (e => {
const t = e.indexOf("=") > 0 ? e.split(/[;,](?![^=;,]*(?:[;,]|$))/) : e.split(",");
return X(
t,
(e, t) => {
const n = t.split("="),
o = n[0],
r = n.length > 1 ? n[1] : o;
return (e[We(o)] = We(r)), e;
},
{}
);
})(n);
return {value: Ee(r, e.id).getOr(t), valid: o};
}
return {value: n, valid: o};
}
return {valid: !1, message: "Must be a string."};
},
Ul = Ml("iframe_attrs"),
zl = Ml("doctype"),
jl = Ml("document_base_url"),
Hl = Ml("body_id"),
$l = Ml("body_class"),
Vl = Ml("content_security_policy"),
ql = Ml("br_in_pre"),
Wl = Ml("forced_root_block"),
Kl = Ml("forced_root_block_attrs"),
Yl = Ml("newline_behavior"),
Gl = Ml("br_newline_selector"),
Xl = Ml("no_newline_selector"),
Zl = Ml("keep_styles"),
Ql = Ml("end_container_on_empty_block"),
Jl = Ml("automatic_uploads"),
ed = Ml("images_reuse_filename"),
td = Ml("images_replace_blob_uris"),
nd = Ml("icons"),
od = Ml("icons_url"),
rd = Ml("images_upload_url"),
sd = Ml("images_upload_base_path"),
ad = Ml("images_upload_credentials"),
id = Ml("images_upload_handler"),
ld = Ml("content_css_cors"),
dd = Ml("referrer_policy"),
cd = Ml("language"),
ud = Ml("language_url"),
md = Ml("indent_use_margin"),
fd = Ml("indentation"),
gd = Ml("content_css"),
pd = Ml("content_style"),
hd = Ml("font_css"),
bd = Ml("directionality"),
vd = Ml("inline_boundaries_selector"),
yd = Ml("object_resizing"),
Cd = Ml("resize_img_proportional"),
wd = Ml("placeholder"),
xd = Ml("event_root"),
Ed = Ml("service_message"),
kd = Ml("theme"),
_d = Ml("theme_url"),
Sd = Ml("model"),
Nd = Ml("model_url"),
Rd = Ml("inline_boundaries"),
Ad = Ml("formats"),
Td = Ml("preview_styles"),
Od = Ml("format_empty_lines"),
Bd = Ml("format_noneditable_selector"),
Pd = Ml("custom_ui_selector"),
Dd = Ml("inline"),
Ld = Ml("hidden_input"),
Md = Ml("submit_patch"),
Id = Ml("add_form_submit_trigger"),
Fd = Ml("add_unload_trigger"),
Ud = Ml("custom_undo_redo_levels"),
zd = Ml("disable_nodechange"),
jd = Ml("readonly"),
Hd = Ml("editable_root"),
$d = Ml("content_css_cors"),
Vd = Ml("plugins"),
qd = Ml("external_plugins"),
Wd = Ml("block_unsupported_drop"),
Kd = Ml("visual"),
Yd = Ml("visual_table_class"),
Gd = Ml("visual_anchor_class"),
Xd = Ml("iframe_aria_text"),
Zd = Ml("setup"),
Qd = Ml("init_instance_callback"),
Jd = Ml("urlconverter_callback"),
ec = Ml("auto_focus"),
tc = Ml("browser_spellcheck"),
nc = Ml("protect"),
oc = Ml("paste_block_drop"),
rc = Ml("paste_data_images"),
sc = Ml("paste_preprocess"),
ac = Ml("paste_postprocess"),
ic = Ml("newdocument_content"),
lc = Ml("paste_webkit_styles"),
dc = Ml("paste_remove_styles_if_webkit"),
cc = Ml("paste_merge_formats"),
uc = Ml("smart_paste"),
mc = Ml("paste_as_text"),
fc = Ml("paste_tab_spaces"),
gc = Ml("allow_html_data_urls"),
pc = Ml("text_patterns"),
hc = Ml("text_patterns_lookup"),
bc = Ml("noneditable_class"),
vc = Ml("editable_class"),
yc = Ml("noneditable_regexp"),
Cc = Ml("preserve_cdata"),
wc = Ml("highlight_on_focus"),
xc = Ml("xss_sanitization"),
Ec = Ml("init_content_sync"),
kc = e => Dt.explode(e.options.get("images_file_types")),
_c = Ml("table_tab_navigation"),
Sc = Ml("details_initial_state"),
Nc = Ml("details_serialized_state"),
Rc = Ml("sandbox_iframes"),
Ac = e => e.options.get("sandbox_iframes_exclusions"),
Tc = Ml("convert_unsafe_embeds"),
Oc = Ml("license_key"),
Bc = Ml("api_key"),
Pc = er,
Dc = dr,
Lc = e => {
const t = e.parentNode;
t && t.removeChild(e);
},
Mc = e => {
const t = ti(e);
return {count: e.length - t.length, text: t};
},
Ic = e => {
let t;
for (; -1 !== (t = e.data.lastIndexOf(Ja)); ) e.deleteData(t, 1);
},
Fc = (e, t) => (zc(e), t),
Uc = (e, t) =>
Ji.isTextPosition(t)
? ((e, t) =>
Dc(e) && t.container() === e
? ((e, t) => {
const n = Mc(e.data.substr(0, t.offset())),
o = Mc(e.data.substr(t.offset()));
return (n.text + o.text).length > 0 ? (Ic(e), Ji(e, t.offset() - n.count)) : t;
})(e, t)
: Fc(e, t))(e, t)
: ((e, t) =>
t.container() === e.parentNode
? ((e, t) => {
const n = t.container(),
o = ((e, t) => {
const n = j(e, t);
return -1 === n ? I.none() : I.some(n);
})(ce(n.childNodes), e)
.map(e => (e < t.offset() ? Ji(n, t.offset() - 1) : t))
.getOr(t);
return zc(e), o;
})(e, t)
: Fc(e, t))(e, t),
zc = e => {
Pc(e) && ai(e) && (ii(e) ? e.removeAttribute("data-mce-caret") : Lc(e)),
Dc(e) && (Ic(e), 0 === e.data.length && Lc(e));
},
jc = vr,
Hc = wr,
$c = yr,
Vc = (e, t, n) => {
const o = hi(t.getBoundingClientRect(), n);
let r, s;
if ("BODY" === e.tagName) {
const t = e.ownerDocument.documentElement;
(r = e.scrollLeft || t.scrollLeft), (s = e.scrollTop || t.scrollTop);
} else {
const t = e.getBoundingClientRect();
(r = e.scrollLeft - t.left), (s = e.scrollTop - t.top);
}
(o.left += r), (o.right += r), (o.top += s), (o.bottom += s), (o.width = 1);
let a = t.offsetWidth - t.clientWidth;
return a > 0 && (n && (a *= -1), (o.left += a), (o.right += a)), o;
},
qc = (e, t, n, o) => {
const r = Dr();
let s, a;
const i = Wl(e),
l = e.dom,
d = () => {
(e => {
var t, n;
const o = zo(Cn(e), "*[contentEditable=false],video,audio,embed,object");
for (let e = 0; e < o.length; e++) {
const r = o[e].dom;
let s = r.previousSibling;
if (ui(s)) {
const e = s.data;
1 === e.length
? null === (t = s.parentNode) || void 0 === t || t.removeChild(s)
: s.deleteData(e.length - 1, 1);
}
(s = r.nextSibling),
ci(s) &&
(1 === s.data.length
? null === (n = s.parentNode) || void 0 === n || n.removeChild(s)
: s.deleteData(0, 1));
}
})(t),
a && (zc(a), (a = null)),
r.on(e => {
l.remove(e.caret), r.clear();
}),
s && (clearInterval(s), (s = void 0));
};
return {
show: (e, c) => {
let u;
if ((d(), $c(c))) return null;
if (!n(c))
return (
(a = ((e, t) => {
var n;
const o = (null !== (n = e.ownerDocument) && void 0 !== n ? n : document).createTextNode(Ja),
r = e.parentNode;
if (t) {
const t = e.previousSibling;
if (oi(t)) {
if (ai(t)) return t;
if (ui(t)) return t.splitText(t.data.length - 1);
}
null == r || r.insertBefore(o, e);
} else {
const t = e.nextSibling;
if (oi(t)) {
if (ai(t)) return t;
if (ci(t)) return t.splitText(1), t;
}
e.nextSibling ? null == r || r.insertBefore(o, e.nextSibling) : null == r || r.appendChild(o);
}
return o;
})(c, e)),
(u = c.ownerDocument.createRange()),
Kc(a.nextSibling) ? (u.setStart(a, 0), u.setEnd(a, 0)) : (u.setStart(a, 1), u.setEnd(a, 1)),
u
);
{
const n = ((e, t, n) => {
var o;
const r = (null !== (o = t.ownerDocument) && void 0 !== o ? o : document).createElement(e);
r.setAttribute("data-mce-caret", n ? "before" : "after"),
r.setAttribute("data-mce-bogus", "all"),
r.appendChild(Za().dom);
const s = t.parentNode;
return (
n
? null == s || s.insertBefore(r, t)
: t.nextSibling
? null == s || s.insertBefore(r, t.nextSibling)
: null == s || s.appendChild(r),
r
);
})(i, c, e),
d = Vc(t, c, e);
l.setStyle(n, "top", d.top), l.setStyle(n, "caret-color", "transparent"), (a = n);
const m = l.create("div", {class: "mce-visual-caret", "data-mce-bogus": "all"});
l.setStyles(m, {...d}),
l.add(t, m),
r.set({caret: m, element: c, before: e}),
e && l.addClass(m, "mce-visual-caret-before"),
(s = setInterval(() => {
r.on(e => {
o()
? l.toggleClass(e.caret, "mce-visual-caret-hidden")
: l.addClass(e.caret, "mce-visual-caret-hidden");
});
}, 500)),
(u = c.ownerDocument.createRange()),
u.setStart(n, 0),
u.setEnd(n, 0);
}
return u;
},
hide: d,
getCss: () =>
".mce-visual-caret {position: absolute;background-color: black;background-color: currentcolor;}.mce-visual-caret-hidden {display: none;}*[data-mce-caret] {position: absolute;left: -1000px;right: auto;top: 0;margin: 0;padding: 0;}",
reposition: () => {
r.on(e => {
const n = Vc(t, e.element, e.before);
l.setStyles(e.caret, {...n});
});
},
destroy: () => clearInterval(s)
};
},
Wc = () => Tt.browser.isFirefox(),
Kc = e => jc(e) || Hc(e),
Yc = e => (Kc(e) || (ar(e) && Wc())) && On(Cn(e)).exists(ro),
Gc = br,
Xc = vr,
Zc = wr,
Qc = rr("display", "block table table-cell table-caption list-item"),
Jc = ai,
eu = ri,
tu = er,
nu = dr,
ou = Pi,
ru = e => e > 0,
su = e => e < 0,
au = (e, t) => {
let n;
for (; (n = e(t)); ) if (!eu(n)) return n;
return null;
},
iu = (e, t, n, o, r) => {
const s = new Vo(e, o),
a = Xc(e) || eu(e);
let i;
if (su(t)) {
if (a && ((i = au(s.prev.bind(s), !0)), n(i))) return i;
for (; (i = au(s.prev.bind(s), r)); ) if (n(i)) return i;
}
if (ru(t)) {
if (a && ((i = au(s.next.bind(s), !0)), n(i))) return i;
for (; (i = au(s.next.bind(s), r)); ) if (n(i)) return i;
}
return null;
},
lu = (e, t) => {
for (; e && e !== t; ) {
if (Qc(e)) return e;
e = e.parentNode;
}
return null;
},
du = (e, t, n) => lu(e.container(), n) === lu(t.container(), n),
cu = (e, t) => {
if (!t) return I.none();
const n = t.container(),
o = t.offset();
return tu(n) ? I.from(n.childNodes[o + e]) : I.none();
},
uu = (e, t) => {
var n;
const o = (null !== (n = t.ownerDocument) && void 0 !== n ? n : document).createRange();
return e ? (o.setStartBefore(t), o.setEndBefore(t)) : (o.setStartAfter(t), o.setEndAfter(t)), o;
},
mu = (e, t, n) => lu(t, e) === lu(n, e),
fu = (e, t, n) => {
const o = e ? "previousSibling" : "nextSibling";
let r = n;
for (; r && r !== t; ) {
let e = r[o];
if ((e && Jc(e) && (e = e[o]), Xc(e) || Zc(e))) {
if (mu(t, e, r)) return e;
break;
}
if (ou(e)) break;
r = r.parentNode;
}
return null;
},
gu = T(uu, !0),
pu = T(uu, !1),
hu = (e, t, n) => {
let o;
const r = T(fu, !0, t),
s = T(fu, !1, t),
a = n.startContainer,
i = n.startOffset;
if (ri(a)) {
const e = nu(a) ? a.parentNode : a,
t = e.getAttribute("data-mce-caret");
if ("before" === t && ((o = e.nextSibling), Yc(o))) return gu(o);
if ("after" === t && ((o = e.previousSibling), Yc(o))) return pu(o);
}
if (!n.collapsed) return n;
if (dr(a)) {
if (Jc(a)) {
if (1 === e) {
if (((o = s(a)), o)) return gu(o);
if (((o = r(a)), o)) return pu(o);
}
if (-1 === e) {
if (((o = r(a)), o)) return pu(o);
if (((o = s(a)), o)) return gu(o);
}
return n;
}
if (ui(a) && i >= a.data.length - 1) return 1 === e && ((o = s(a)), o) ? gu(o) : n;
if (ci(a) && i <= 1) return -1 === e && ((o = r(a)), o) ? pu(o) : n;
if (i === a.data.length) return (o = s(a)), o ? gu(o) : n;
if (0 === i) return (o = r(a)), o ? pu(o) : n;
}
return n;
},
bu = (e, t) => cu(e ? 0 : -1, t).filter(Xc),
vu = (e, t, n) => {
const o = hu(e, t, n);
return -1 === e ? Ji.fromRangeStart(o) : Ji.fromRangeEnd(o);
},
yu = e => I.from(e.getNode()).map(Cn),
Cu = (e, t) => {
let n = t;
for (; (n = e(n)); ) if (n.isVisible()) return n;
return n;
},
wu = (e, t) => {
const n = du(e, t);
return !(n || !pr(e.getNode())) || n;
};
var xu;
!(function (e) {
(e[(e.Backwards = -1)] = "Backwards"), (e[(e.Forwards = 1)] = "Forwards");
})(xu || (xu = {}));
const Eu = vr,
ku = dr,
_u = er,
Su = pr,
Nu = Pi,
Ru = e => Ti(e) || (e => !!Di(e) && !X(ce(e.getElementsByTagName("*")), (e, t) => e || _i(t), !1))(e),
Au = Li,
Tu = (e, t) => (e.hasChildNodes() && t < e.childNodes.length ? e.childNodes[t] : null),
Ou = (e, t) => {
if (ru(e)) {
if (Nu(t.previousSibling) && !ku(t.previousSibling)) return Ji.before(t);
if (ku(t)) return Ji(t, 0);
}
if (su(e)) {
if (Nu(t.nextSibling) && !ku(t.nextSibling)) return Ji.after(t);
if (ku(t)) return Ji(t, t.data.length);
}
return su(e) ? (Su(t) ? Ji.before(t) : Ji.after(t)) : Ji.before(t);
},
Bu = (e, t, n) => {
let o, r, s, a;
if (!_u(n) || !t) return null;
if (t.isEqual(Ji.after(n)) && n.lastChild) {
if (((a = Ji.after(n.lastChild)), su(e) && Nu(n.lastChild) && _u(n.lastChild)))
return Su(n.lastChild) ? Ji.before(n.lastChild) : a;
} else a = t;
const i = a.container();
let l = a.offset();
if (ku(i)) {
if (su(e) && l > 0) return Ji(i, --l);
if (ru(e) && l < i.length) return Ji(i, ++l);
o = i;
} else {
if (su(e) && l > 0 && ((r = Tu(i, l - 1)), Nu(r)))
return !Ru(r) && ((s = iu(r, e, Au, r)), s)
? ku(s)
? Ji(s, s.data.length)
: Ji.after(s)
: ku(r)
? Ji(r, r.data.length)
: Ji.before(r);
if (ru(e) && l < i.childNodes.length && ((r = Tu(i, l)), Nu(r)))
return Su(r)
? ((e, t) => {
const n = t.nextSibling;
return n && Nu(n) ? (ku(n) ? Ji(n, 0) : Ji.before(n)) : Bu(xu.Forwards, Ji.after(t), e);
})(n, r)
: !Ru(r) && ((s = iu(r, e, Au, r)), s)
? ku(s)
? Ji(s, 0)
: Ji.before(s)
: ku(r)
? Ji(r, 0)
: Ji.after(r);
o = r || a.getNode();
}
if (o && ((ru(e) && a.isAtEnd()) || (su(e) && a.isAtStart())) && ((o = iu(o, e, M, n, !0)), Au(o, n)))
return Ou(e, o);
r = o ? iu(o, e, Au, n) : o;
const d = De(
Y(
((e, t) => {
const n = [];
let o = e;
for (; o && o !== t; ) n.push(o), (o = o.parentNode);
return n;
})(i, n),
Eu
)
);
return !d || (r && d.contains(r)) ? (r ? Ou(e, r) : null) : ((a = ru(e) ? Ji.after(d) : Ji.before(d)), a);
},
Pu = e => ({next: t => Bu(xu.Forwards, t, e), prev: t => Bu(xu.Backwards, t, e)}),
Du = e => (Ji.isTextPosition(e) ? 0 === e.offset() : Pi(e.getNode())),
Lu = e => {
if (Ji.isTextPosition(e)) {
const t = e.container();
return e.offset() === t.data.length;
}
return Pi(e.getNode(!0));
},
Mu = (e, t) => !Ji.isTextPosition(e) && !Ji.isTextPosition(t) && e.getNode() === t.getNode(!0),
Iu = (e, t, n) => {
const o = Pu(t);
return I.from(e ? o.next(n) : o.prev(n));
},
Fu = (e, t, n) =>
Iu(e, t, n).bind(o =>
du(n, o, t) &&
((e, t, n) => {
return e
? !Mu(t, n) && ((o = t), !(!Ji.isTextPosition(o) && pr(o.getNode()))) && Lu(t) && Du(n)
: !Mu(n, t) && Du(t) && Lu(n);
var o;
})(e, n, o)
? Iu(e, t, o)
: I.some(o)
),
Uu = (e, t, n, o) => Fu(e, t, n).bind(n => (o(n) ? Uu(e, t, n, o) : I.some(n))),
zu = (e, t) => {
const n = e ? t.firstChild : t.lastChild;
return dr(n)
? I.some(Ji(n, e ? 0 : n.data.length))
: n
? Pi(n)
? I.some(e ? Ji.before(n) : pr((o = n)) ? Ji.before(o) : Ji.after(o))
: ((e, t, n) => {
const o = e ? Ji.before(n) : Ji.after(n);
return Iu(e, t, o);
})(e, t, n)
: I.none();
var o;
},
ju = T(Iu, !0),
Hu = T(Iu, !1),
$u = T(zu, !0),
Vu = T(zu, !1),
qu = "_mce_caret",
Wu = e => er(e) && e.id === qu,
Ku = (e, t) => {
let n = t;
for (; n && n !== e; ) {
if (Wu(n)) return n;
n = n.parentNode;
}
return null;
},
Yu = e => ke(e, "name"),
Gu = e => Dt.isArray(e.start),
Xu = e => !(!Yu(e) && b(e.forward)) || e.forward,
Zu = (e, t) => (er(t) && e.isBlock(t) && !t.innerHTML && (t.innerHTML = '
'), t),
Qu = (e, t) => Vu(e).fold(L, e => (t.setStart(e.container(), e.offset()), t.setEnd(e.container(), e.offset()), !0)),
Ju = (e, t, n) =>
!(
!(e => !e.hasChildNodes())(t) ||
!Ku(e, t) ||
(((e, t) => {
var n;
const o = (null !== (n = e.ownerDocument) && void 0 !== n ? n : document).createTextNode(Ja);
e.appendChild(o), t.setStart(o, 0), t.setEnd(o, 0);
})(t, n),
0)
),
em = (e, t, n, o) => {
const r = n[t ? "start" : "end"],
s = e.getRoot();
if (r) {
let e = s,
n = r[0];
for (let t = r.length - 1; e && t >= 1; t--) {
const n = e.childNodes;
if (Ju(s, e, o)) return !0;
if (r[t] > n.length - 1) return !!Ju(s, e, o) || Qu(e, o);
e = n[r[t]];
}
dr(e) && (n = Math.min(r[0], e.data.length)),
er(e) && (n = Math.min(r[0], e.childNodes.length)),
t ? o.setStart(e, n) : o.setEnd(e, n);
}
return !0;
},
tm = e => dr(e) && e.data.length > 0,
nm = (e, t, n) => {
const o = e.get(n.id + "_" + t),
r = null == o ? void 0 : o.parentNode,
s = n.keep;
if (o && r) {
let a, i;
if (
("start" === t
? s
? o.hasChildNodes()
? ((a = o.firstChild), (i = 1))
: tm(o.nextSibling)
? ((a = o.nextSibling), (i = 0))
: tm(o.previousSibling)
? ((a = o.previousSibling), (i = o.previousSibling.data.length))
: ((a = r), (i = e.nodeIndex(o) + 1))
: ((a = r), (i = e.nodeIndex(o)))
: s
? o.hasChildNodes()
? ((a = o.firstChild), (i = 1))
: tm(o.previousSibling)
? ((a = o.previousSibling), (i = o.previousSibling.data.length))
: ((a = r), (i = e.nodeIndex(o)))
: ((a = r), (i = e.nodeIndex(o))),
!s)
) {
const r = o.previousSibling,
s = o.nextSibling;
let l;
for (
Dt.each(Dt.grep(o.childNodes), e => {
dr(e) && (e.data = e.data.replace(/\uFEFF/g, ""));
});
(l = e.get(n.id + "_" + t));
)
e.remove(l, !0);
if (dr(s) && dr(r) && !Tt.browser.isOpera()) {
const t = r.data.length;
r.appendData(s.data), e.remove(s), (a = r), (i = t);
}
}
return I.some(Ji(a, i));
}
return I.none();
},
om = (e, t, n) =>
((e, t, n = !1) =>
2 === t
? bl(ti, n, e)
: 3 === t
? (e => {
const t = e.getRng();
return {
start: dl(e.dom.getRoot(), Ji.fromRangeStart(t)),
end: dl(e.dom.getRoot(), Ji.fromRangeEnd(t)),
forward: e.isForward()
};
})(e)
: t
? (e => ({rng: e.getRng(), forward: e.isForward()}))(e)
: yl(e, !1))(e, t, n),
rm = (e, t) => {
((e, t) => {
const n = e.dom;
if (t) {
if (Gu(t))
return ((e, t) => {
const n = e.createRng();
return em(e, !0, t, n) && em(e, !1, t, n) ? I.some({range: n, forward: Xu(t)}) : I.none();
})(n, t);
if ((e => m(e.start))(t))
return ((e, t) => {
const n = I.from(cl(e.getRoot(), t.start)),
o = I.from(cl(e.getRoot(), t.end));
return It(n, o, (n, o) => {
const r = e.createRng();
return (
r.setStart(n.container(), n.offset()), r.setEnd(o.container(), o.offset()), {range: r, forward: Xu(t)}
);
});
})(n, t);
if ((e => ke(e, "id"))(t))
return ((e, t) => {
const n = nm(e, "start", t),
o = nm(e, "end", t);
return It(n, o.or(n), (n, o) => {
const r = e.createRng();
return (
r.setStart(Zu(e, n.container()), n.offset()),
r.setEnd(Zu(e, o.container()), o.offset()),
{range: r, forward: Xu(t)}
);
});
})(n, t);
if (Yu(t))
return ((e, t) =>
I.from(e.select(t.name)[t.index]).map(t => {
const n = e.createRng();
return n.selectNode(t), {range: n, forward: !0};
}))(n, t);
if ((e => ke(e, "rng"))(t)) return I.some({range: t.rng, forward: Xu(t)});
}
return I.none();
})(e, t).each(({range: t, forward: n}) => {
e.setRng(t, n);
});
},
sm = e => er(e) && "SPAN" === e.tagName && "bookmark" === e.getAttribute("data-mce-type"),
am = ((im = Wo), e => im === e);
var im;
const lm = e => "" !== e && -1 !== " \f\n\r\t\v".indexOf(e),
dm = e => !lm(e) && !am(e) && !Ko(e),
cm = e => {
const t = [];
if (e) for (let n = 0; n < e.rangeCount; n++) t.push(e.getRangeAt(n));
return t;
},
um = (e, t) => {
const n = zo(t, "td[data-mce-selected],th[data-mce-selected]");
return n.length > 0
? n
: (e =>
Y(
(e =>
te(e, e => {
const t = wi(e);
return t ? [Cn(t)] : [];
}))(e),
Ga
))(e);
},
mm = e => um(cm(e.selection.getSel()), Cn(e.getBody())),
fm = (e, t) => to(e, "table", t),
gm = e => Un(e).fold(N([e]), t => [e].concat(gm(t))),
pm = e =>
zn(e).fold(N([e]), t =>
"br" === $t(t)
? Pn(t)
.map(t => [e].concat(pm(t)))
.getOr([])
: [e].concat(pm(t))
),
hm = (e, t) =>
It(
(e => {
const t = e.startContainer,
n = e.startOffset;
return dr(t) ? (0 === n ? I.some(Cn(t)) : I.none()) : I.from(t.childNodes[n]).map(Cn);
})(t),
(e => {
const t = e.endContainer,
n = e.endOffset;
return dr(t) ? (n === t.data.length ? I.some(Cn(t)) : I.none()) : I.from(t.childNodes[n - 1]).map(Cn);
})(t),
(t, n) => {
const o = Q(gm(e), T(_n, t)),
r = Q(pm(e), T(_n, n));
return o.isSome() && r.isSome();
}
).getOr(!1),
bm = (e, t, n, o) => {
const r = n,
s = new Vo(n, r),
a = Ce(e.schema.getMoveCaretBeforeOnEnterElements(), (e, t) => !H(["td", "th", "table"], t.toLowerCase()));
let i = n;
do {
if (dr(i) && 0 !== Dt.trim(i.data).length) return void (o ? t.setStart(i, 0) : t.setEnd(i, i.data.length));
if (a[i.nodeName])
return void (o ? t.setStartBefore(i) : "BR" === i.nodeName ? t.setEndBefore(i) : t.setEndAfter(i));
} while ((i = o ? s.next() : s.prev()));
"BODY" === r.nodeName && (o ? t.setStart(r, 0) : t.setEnd(r, r.childNodes.length));
},
vm = e => {
const t = e.selection.getSel();
return C(t) && t.rangeCount > 0;
},
ym = (e, t) => {
const n = mm(e);
n.length > 0
? q(n, n => {
const o = n.dom,
r = e.dom.createRng();
r.setStartBefore(o), r.setEndAfter(o), t(r, !0);
})
: t(e.selection.getRng(), !1);
},
Cm = (e, t, n) => {
const o = yl(e, t);
n(o), e.moveToBookmark(o);
},
wm = e => x(null == e ? void 0 : e.nodeType),
xm = e => er(e) && !sm(e) && !Wu(e) && !sr(e),
Em = (e, t, n) => {
const {selection: o, dom: r} = e,
s = o.getNode(),
a = vr(s);
Cm(o, !0, () => {
t();
}),
a && vr(s) && r.isChildOf(s, e.getBody()) ? e.selection.select(s) : n(o.getStart()) && km(r, o);
},
km = (e, t) => {
var n, o;
const r = t.getRng(),
{startContainer: s, startOffset: a} = r;
if (
!((e, t) => {
if (xm(t) && !/^(TD|TH)$/.test(t.nodeName)) {
const n = e.getAttrib(t, "data-mce-selected"),
o = parseInt(n, 10);
return !isNaN(o) && o > 0;
}
return !1;
})(e, t.getNode()) &&
er(s)
) {
const i = s.childNodes,
l = e.getRoot();
let d;
if (a < i.length) {
const t = i[a];
d = new Vo(t, null !== (n = e.getParent(t, e.isBlock)) && void 0 !== n ? n : l);
} else {
const t = i[i.length - 1];
(d = new Vo(t, null !== (o = e.getParent(t, e.isBlock)) && void 0 !== o ? o : l)), d.next(!0);
}
for (let n = d.current(); n; n = d.next()) {
if ("false" === e.getContentEditable(n)) return;
if (dr(n) && !Rm(n)) return r.setStart(n, 0), void t.setRng(r);
}
}
},
_m = (e, t, n) => {
if (e) {
const o = t ? "nextSibling" : "previousSibling";
for (e = n ? e : e[o]; e; e = e[o]) if (er(e) || !Rm(e)) return e;
}
},
Sm = (e, t) => !!e.getTextBlockElements()[t.nodeName.toLowerCase()] || Zr(e, t),
Nm = (e, t, n) => e.schema.isValidChild(t, n),
Rm = (e, t = !1) => {
if (C(e) && dr(e)) {
const n = t ? e.data.replace(/ /g, "\xa0") : e.data;
return Go(n);
}
return !1;
},
Am = (e, t) => {
const n = e.dom;
return (
xm(t) &&
"false" === n.getContentEditable(t) &&
((e, t) => {
const n = "[data-mce-cef-wrappable]",
o = Bd(e),
r = Xe(o) ? n : `${n},${o}`;
return En(Cn(t), r);
})(e, t) &&
0 === n.select('[contenteditable="true"]', t).length
);
},
Tm = (e, t) => (w(e) ? e(t) : (C(t) && (e = e.replace(/%(\w+)/g, (e, n) => t[n] || e)), e)),
Om = (e, t) => (
(t = t || ""),
(e = "" + ((e = e || "").nodeName || e)),
(t = "" + (t.nodeName || t)),
e.toLowerCase() === t.toLowerCase()
),
Bm = (e, t) => {
if (y(e)) return null;
{
let n = String(e);
return (
("color" !== t && "backgroundColor" !== t) || (n = Ks(n)),
"fontWeight" === t && 700 === e && (n = "bold"),
"fontFamily" === t && (n = n.replace(/[\'\"]/g, "").replace(/,\s+/g, ",")),
n
);
}
},
Pm = (e, t, n) => {
const o = e.getStyle(t, n);
return Bm(o, n);
},
Dm = (e, t) => {
let n;
return e.getParent(t, t => !!er(t) && ((n = e.getStyle(t, "text-decoration")), !!n && "none" !== n)), n;
},
Lm = (e, t, n) => e.getParents(t, n, e.getRoot()),
Mm = (e, t, n) => {
const o = e.formatter.get(t);
return C(o) && $(o, n);
},
Im = e => _e(e, "block"),
Fm = e => _e(e, "selector"),
Um = e => _e(e, "inline"),
zm = e => Fm(e) && !1 !== e.expand && !Um(e),
jm = e =>
(e => {
const t = [];
let n = e;
for (; n; ) {
if ((dr(n) && n.data !== Ja) || n.childNodes.length > 1) return [];
er(n) && t.push(n), (n = n.firstChild);
}
return t;
})(e).length > 0,
Hm = e => Wu(e.dom) && jm(e.dom),
$m = sm,
Vm = Lm,
qm = Rm,
Wm = Sm,
Km = (e, t) => {
let n = t;
for (; n; ) {
if (er(n) && e.getContentEditable(n)) return "false" === e.getContentEditable(n) ? n : t;
n = n.parentNode;
}
return t;
},
Ym = (e, t, n, o) => {
const r = t.data;
if (e) {
for (let e = n; e > 0; e--) if (o(r.charAt(e - 1))) return e;
} else for (let e = n; e < r.length; e++) if (o(r.charAt(e))) return e;
return -1;
},
Gm = (e, t, n) => Ym(e, t, n, e => am(e) || lm(e)),
Xm = (e, t, n) => Ym(e, t, n, dm),
Zm = (e, t, n, o, r, s) => {
let a;
const i = e.getParent(n, e.isBlock) || t,
l = (t, n, o) => {
const s = za(e),
l = r ? s.backwards : s.forwards;
return I.from(l(t, n, (e, t) => ($m(e.parentNode) ? -1 : ((a = e), o(r, e, t))), i));
};
return l(n, o, Gm)
.bind(e => (s ? l(e.container, e.offset + (r ? -1 : 0), Xm) : I.some(e)))
.orThunk(() => (a ? I.some({container: a, offset: r ? 0 : a.length}) : I.none()));
},
Qm = (e, t, n, o, r) => {
const s = o[r];
dr(o) && Xe(o.data) && s && (o = s);
const a = Vm(e, o);
for (let o = 0; o < a.length; o++)
for (let r = 0; r < t.length; r++) {
const s = t[r];
if ((!C(s.collapsed) || s.collapsed === n.collapsed) && Fm(s) && e.is(a[o], s.selector)) return a[o];
}
return o;
},
Jm = (e, t, n, o) => {
var r;
let s = n;
const a = e.getRoot(),
i = t[0];
if ((Im(i) && (s = i.wrapper ? null : e.getParent(n, i.block, a)), !s)) {
const t = null !== (r = e.getParent(n, "LI,TD,TH,SUMMARY")) && void 0 !== r ? r : a;
s = e.getParent(dr(n) ? n.parentNode : n, t => t !== a && Wm(e.schema, t), t);
}
if ((s && Im(i) && i.wrapper && (s = Vm(e, s, "ul,ol").reverse()[0] || s), !s))
for (s = n; s && s[o] && !e.isBlock(s[o]) && ((s = s[o]), !Om(s, "br")); );
return s || n;
},
ef = (e, t, n, o) => {
const r = n.parentNode;
return !C(n[o]) && (!(r !== t && !y(r) && !e.isBlock(r)) || ef(e, t, r, o));
},
tf = (e, t, n, o, r) => {
let s = n;
const a = r ? "previousSibling" : "nextSibling",
i = e.getRoot();
if (dr(n) && !qm(n) && (r ? o > 0 : o < n.data.length)) return n;
for (; s; ) {
if (!t[0].block_expand && e.isBlock(s)) return s;
for (let t = s[a]; t; t = t[a]) {
const n = dr(t) && !ef(e, i, t, a);
if (!$m(t) && (!pr((l = t)) || !l.getAttribute("data-mce-bogus") || l.nextSibling) && !qm(t, n)) return s;
}
if (s === i || s.parentNode === i) {
n = s;
break;
}
s = s.parentNode;
}
var l;
return n;
},
nf = e => $m(e.parentNode) || $m(e),
of = (e, t, n, o = !1) => {
let {startContainer: r, startOffset: s, endContainer: a, endOffset: i} = t;
const l = n[0];
return (
er(r) && r.hasChildNodes() && ((r = xi(r, s)), dr(r) && (s = 0)),
er(a) && a.hasChildNodes() && ((a = xi(a, t.collapsed ? i : i - 1)), dr(a) && (i = a.data.length)),
(r = Km(e, r)),
(a = Km(e, a)),
nf(r) &&
((r = $m(r) ? r : r.parentNode),
(r = t.collapsed ? r.previousSibling || r : r.nextSibling || r),
dr(r) && (s = t.collapsed ? r.length : 0)),
nf(a) &&
((a = $m(a) ? a : a.parentNode),
(a = t.collapsed ? a.nextSibling || a : a.previousSibling || a),
dr(a) && (i = t.collapsed ? 0 : a.length)),
t.collapsed &&
(Zm(e, e.getRoot(), r, s, !0, o).each(({container: e, offset: t}) => {
(r = e), (s = t);
}),
Zm(e, e.getRoot(), a, i, !1, o).each(({container: e, offset: t}) => {
(a = e), (i = t);
})),
(Um(l) || l.block_expand) &&
((Um(l) && dr(r) && 0 !== s) || (r = tf(e, n, r, s, !0)),
(Um(l) && dr(a) && i !== a.data.length) || (a = tf(e, n, a, i, !1))),
zm(l) && ((r = Qm(e, n, t, r, "previousSibling")), (a = Qm(e, n, t, a, "nextSibling"))),
(Im(l) || Fm(l)) &&
((r = Jm(e, n, r, "previousSibling")),
(a = Jm(e, n, a, "nextSibling")),
Im(l) &&
(e.isBlock(r) || ((r = tf(e, n, r, s, !0)), dr(r) && (s = 0)),
e.isBlock(a) || ((a = tf(e, n, a, i, !1)), dr(a) && (i = a.data.length)))),
er(r) && r.parentNode && ((s = e.nodeIndex(r)), (r = r.parentNode)),
er(a) && a.parentNode && ((i = e.nodeIndex(a) + 1), (a = a.parentNode)),
{startContainer: r, startOffset: s, endContainer: a, endOffset: i}
);
},
rf = (e, t, n) => {
var o;
const r = t.startOffset,
s = xi(t.startContainer, r),
a = t.endOffset,
i = xi(t.endContainer, a - 1),
l = e => {
const t = e[0];
dr(t) && t === s && r >= t.data.length && e.splice(0, 1);
const n = e[e.length - 1];
return 0 === a && e.length > 0 && n === i && dr(n) && e.splice(e.length - 1, 1), e;
},
d = (e, t, n) => {
const o = [];
for (; e && e !== n; e = e[t]) o.push(e);
return o;
},
c = (t, n) => e.getParent(t, e => e.parentNode === n, n),
u = (e, t, o) => {
const r = o ? "nextSibling" : "previousSibling";
for (let s = e, a = s.parentNode; s && s !== t; s = a) {
a = s.parentNode;
const t = d(s === e ? s : s[r], r);
t.length && (o || t.reverse(), n(l(t)));
}
};
if (s === i) return n(l([s]));
const m = null !== (o = e.findCommonAncestor(s, i)) && void 0 !== o ? o : e.getRoot();
if (e.isChildOf(s, i)) return u(s, m, !0);
if (e.isChildOf(i, s)) return u(i, m);
const f = c(s, m) || s,
g = c(i, m) || i;
u(s, f, !0);
const p = d(f === s ? f : f.nextSibling, "nextSibling", g === i ? g.nextSibling : g);
p.length && n(l(p)), u(i, g);
},
sf = [
'pre[class*=language-][contenteditable="false"]',
"figure.image",
"div[data-ephox-embed-iri]",
"div.tiny-pageembed",
"div.mce-toc",
"div[data-mce-toc]"
],
af = (e, t, n, o, r, s) => {
const {uid: a = t, ...i} = n;
mn(e, Ea()), Jt(e, `${_a()}`, a), Jt(e, `${ka()}`, o);
const {attributes: l = {}, classes: d = []} = r(a, i);
if (
(en(e, l),
((e, t) => {
q(t, t => {
mn(e, t);
});
})(e, d),
s)
) {
d.length > 0 && Jt(e, `${Na()}`, d.join(","));
const t = fe(l);
t.length > 0 && Jt(e, `${Ra()}`, t.join(","));
}
},
lf = (e, t, n, o, r) => {
const s = vn("span", e);
return af(s, t, n, o, r, !1), s;
},
df = (e, t, n, o, r, s) => {
const a = [],
i = lf(e.getDoc(), n, s, o, r),
l = Dr(),
d = () => {
l.clear();
},
c = e => {
q(e, u);
},
u = t => {
switch (
((e, t, n, o) =>
Tn(t).fold(
() => "skipping",
r =>
"br" === o || (e => Yt(e) && Ha(e) === Ja)(t)
? "valid"
: (e => Kt(e) && pn(e, Ea()))(t)
? "existing"
: Wu(t.dom)
? "caret"
: $(sf, e => En(t, e))
? "valid-block"
: Nm(e, n, o) && Nm(e, $t(r), n)
? "valid"
: "invalid-child"
))(e, t, "span", $t(t))
) {
case "invalid-child": {
d();
const e = In(t);
c(e), d();
break;
}
case "valid-block":
d(), af(t, n, s, o, r, !0);
break;
case "valid": {
const e = l.get().getOrThunk(() => {
const e = Ia(i);
return a.push(e), l.set(e), e;
});
Co(t, e);
break;
}
}
};
return (
rf(e.dom, t, e => {
d(),
(e => {
const t = V(e, Cn);
c(t);
})(e);
}),
a
);
},
cf = e => {
const t = (() => {
const e = {};
return {
register: (t, n) => {
e[t] = {name: t, settings: n};
},
lookup: t => Ee(e, t).map(e => e.settings),
getNames: () => fe(e)
};
})();
((e, t) => {
const n = ka(),
o = e => I.from(e.attr(n)).bind(t.lookup),
r = e => {
var t, n;
e.attr(_a(), null), e.attr(ka(), null), e.attr(Sa(), null);
const o = I.from(e.attr(Ra()))
.map(e => e.split(","))
.getOr([]),
r = I.from(e.attr(Na()))
.map(e => e.split(","))
.getOr([]);
q(o, t => e.attr(t, null));
const s =
null !== (n = null === (t = e.attr("class")) || void 0 === t ? void 0 : t.split(" ")) && void 0 !== n
? n
: [],
a = re(s, [Ea()].concat(r));
e.attr("class", a.length > 0 ? a.join(" ") : null), e.attr(Na(), null), e.attr(Ra(), null);
};
e.serializer.addTempAttr(Sa()),
e.serializer.addAttributeFilter(n, e => {
for (const t of e)
o(t).each(e => {
!1 === e.persistent && ("span" === t.name ? t.unwrap() : r(t));
});
});
})(e, t);
const n = ((e, t) => {
const n = Br({}),
o = () => ({listeners: [], previous: Dr()}),
r = (e, t) => {
s(e, e => (t(e), e));
},
s = (e, t) => {
const r = n.get(),
s = t(Ee(r, e).getOrThunk(o));
(r[e] = s), n.set(r);
},
a = (t, n) => {
q(Ba(e, t), e => {
n ? Jt(e, Sa(), "true") : rn(e, Sa());
});
},
i = xa(() => {
const n = ae(t.getNames());
q(n, t => {
s(t, n => {
const o = n.previous.get();
return (
Ta(e, I.some(t)).fold(
() => {
o.each(e => {
(e => {
r(e, t => {
q(t.listeners, t => t(!1, e));
});
})(t),
n.previous.clear(),
a(e, !1);
});
},
({uid: e, name: t, elements: s}) => {
Lt(o, e) ||
(o.each(e => a(e, !1)),
((e, t, n) => {
r(e, o => {
q(o.listeners, o => o(!0, e, {uid: t, nodes: V(n, e => e.dom)}));
});
})(t, e, s),
n.previous.set(e),
a(e, !0));
}
),
{previous: n.previous, listeners: n.listeners}
);
});
});
}, 30);
return (
e.on("remove", () => {
i.cancel();
}),
e.on("NodeChange", () => {
i.throttle();
}),
{
addListener: (e, t) => {
s(e, e => ({previous: e.previous, listeners: e.listeners.concat([t])}));
}
}
);
})(e, t),
o = Zt("span"),
r = e => {
q(e, e => {
o(e)
? ko(e)
: (e => {
gn(e, Ea()), rn(e, `${_a()}`), rn(e, `${ka()}`), rn(e, `${Sa()}`);
const t = nn(e, `${Ra()}`)
.map(e => e.split(","))
.getOr([]),
n = nn(e, `${Na()}`)
.map(e => e.split(","))
.getOr([]);
var o;
q(t, t => rn(e, t)),
(o = e),
q(n, e => {
gn(o, e);
}),
rn(e, `${Na()}`),
rn(e, `${Ra()}`);
})(e);
});
};
return {
register: (e, n) => {
t.register(e, n);
},
annotate: (n, o) => {
t.lookup(n).each(t => {
((e, t, n, o) => {
e.undoManager.transact(() => {
const r = e.selection,
s = r.getRng(),
a = mm(e).length > 0,
i = La("mce-annotation");
if (
(s.collapsed &&
!a &&
((e, t) => {
const n = of(e.dom, t, [{inline: "span"}]);
t.setStart(n.startContainer, n.startOffset),
t.setEnd(n.endContainer, n.endOffset),
e.selection.setRng(t);
})(e, s),
r.getRng().collapsed && !a)
) {
const s = lf(e.getDoc(), i, o, t, n.decorate);
No(s, Wo), r.getRng().insertNode(s.dom), r.select(s.dom);
} else
Cm(r, !1, () => {
ym(e, r => {
df(e, r, i, t, n.decorate, o);
});
});
});
})(e, n, t, o);
});
},
annotationChanged: (e, t) => {
n.addListener(e, t);
},
remove: t => {
Ta(e, I.some(t)).each(({elements: t}) => {
const n = e.selection.getBookmark();
r(t), e.selection.moveToBookmark(n);
});
},
removeAll: t => {
const n = e.selection.getBookmark();
pe(Pa(e, t), (e, t) => {
r(e);
}),
e.selection.moveToBookmark(n);
},
getAll: t => {
const n = Pa(e, t);
return he(n, e => V(e, e => e.dom));
}
};
},
uf = e => ({getBookmark: T(om, e), moveToBookmark: T(rm, e)});
uf.isBookmarkNode = sm;
const mf = (e, t, n) =>
!n.collapsed &&
$(n.getClientRects(), n => ((e, t, n) => t >= e.left && t <= e.right && n >= e.top && n <= e.bottom)(n, e, t)),
ff = (e, t, n) => {
e.dispatch(t, n);
},
gf = (e, t, n, o) => {
e.dispatch("FormatApply", {format: t, node: n, vars: o});
},
pf = (e, t, n, o) => {
e.dispatch("FormatRemove", {format: t, node: n, vars: o});
},
hf = (e, t) => e.dispatch("SetContent", t),
bf = (e, t) => e.dispatch("GetContent", t),
vf = (e, t) => {
e.dispatch("AutocompleterUpdateActiveRange", t);
},
yf = (e, t) => e.dispatch("PastePlainTextToggle", {state: t}),
Cf = {
BACKSPACE: 8,
DELETE: 46,
DOWN: 40,
ENTER: 13,
ESC: 27,
LEFT: 37,
RIGHT: 39,
SPACEBAR: 32,
TAB: 9,
UP: 38,
PAGE_UP: 33,
PAGE_DOWN: 34,
END: 35,
HOME: 36,
modifierPressed: e => e.shiftKey || e.ctrlKey || e.altKey || Cf.metaKeyPressed(e),
metaKeyPressed: e => (Tt.os.isMacOS() || Tt.os.isiOS() ? e.metaKey : e.ctrlKey && !e.altKey)
},
wf = "data-mce-selected",
xf = Math.abs,
Ef = Math.round,
kf = {nw: [0, 0, -1, -1], ne: [1, 0, 1, -1], se: [1, 1, 1, 1], sw: [0, 1, -1, 1]},
_f = (e, t) => {
const n = t.dom,
o = t.getDoc(),
r = document,
s = t.getBody();
let a, i, l, d, c, u, m, f, g, p, h, b, v, y, w;
const x = e => C(e) && (hr(e) || n.is(e, "figure.image")),
E = e => wr(e) || n.hasClass(e, "mce-preview-object"),
k = e => {
const n = e.target;
((e, t) => {
if ((e => "longpress" === e.type || 0 === e.type.indexOf("touch"))(e)) {
const n = e.touches[0];
return x(e.target) && !mf(n.clientX, n.clientY, t);
}
return x(e.target) && !mf(e.clientX, e.clientY, t);
})(e, t.selection.getRng()) &&
!e.isDefaultPrevented() &&
t.selection.select(n);
},
_ = e =>
n.hasClass(e, "mce-preview-object") && C(e.firstElementChild)
? [e, e.firstElementChild]
: n.is(e, "figure.image")
? [e.querySelector("img")]
: [e],
S = e => {
const o = yd(t);
return (
!!o &&
"false" !== e.getAttribute("data-mce-resize") &&
e !== t.getBody() &&
(n.hasClass(e, "mce-preview-object") && C(e.firstElementChild)
? En(Cn(e.firstElementChild), o)
: En(Cn(e), o))
);
},
N = (e, o, r) => {
if (C(r)) {
const s = _(e);
q(s, e => {
e.style[o] || !t.schema.isValid(e.nodeName.toLowerCase(), o)
? n.setStyle(e, o, r)
: n.setAttrib(e, o, "" + r);
});
}
},
R = (e, t, n) => {
N(e, "width", t), N(e, "height", n);
},
A = e => {
let o, r, c, C, k;
(o = e.screenX - u),
(r = e.screenY - m),
(b = o * d[2] + f),
(v = r * d[3] + g),
(b = b < 5 ? 5 : b),
(v = v < 5 ? 5 : v),
(c = (x(a) || E(a)) && !1 !== Cd(t) ? !Cf.modifierPressed(e) : Cf.modifierPressed(e)),
c && (xf(o) > xf(r) ? ((v = Ef(b * p)), (b = Ef(v / p))) : ((b = Ef(v / p)), (v = Ef(b * p)))),
R(i, b, v),
(C = d.startPos.x + o),
(k = d.startPos.y + r),
(C = C > 0 ? C : 0),
(k = k > 0 ? k : 0),
n.setStyles(l, {left: C, top: k, display: "block"}),
(l.innerHTML = b + " × " + v),
d[2] < 0 && i.clientWidth <= b && n.setStyle(i, "left", void 0 + (f - b)),
d[3] < 0 && i.clientHeight <= v && n.setStyle(i, "top", void 0 + (g - v)),
(o = s.scrollWidth - y),
(r = s.scrollHeight - w),
o + r !== 0 && n.setStyles(l, {left: C - o, top: k - r}),
h ||
(((e, t, n, o, r) => {
e.dispatch("ObjectResizeStart", {target: t, width: n, height: o, origin: r});
})(t, a, f, g, "corner-" + d.name),
(h = !0));
},
T = () => {
const e = h;
(h = !1),
e && (N(a, "width", b), N(a, "height", v)),
n.unbind(o, "mousemove", A),
n.unbind(o, "mouseup", T),
r !== o && (n.unbind(r, "mousemove", A), n.unbind(r, "mouseup", T)),
n.remove(i),
n.remove(l),
n.remove(c),
O(a),
e &&
(((e, t, n, o, r) => {
e.dispatch("ObjectResized", {target: t, width: n, height: o, origin: r});
})(t, a, b, v, "corner-" + d.name),
n.setAttrib(a, "style", n.getAttrib(a, "style"))),
t.nodeChanged();
},
O = e => {
M();
const h = n.getPos(e, s),
C = h.x,
x = h.y,
k = e.getBoundingClientRect(),
N = k.width || k.right - k.left,
O = k.height || k.bottom - k.top;
a !== e && (P(), (a = e), (b = v = 0));
const B = t.dispatch("ObjectSelected", {target: e});
S(e) && !B.isDefaultPrevented()
? pe(kf, (e, t) => {
let h = n.get("mceResizeHandle" + t);
h && n.remove(h),
(h = n.add(s, "div", {
id: "mceResizeHandle" + t,
"data-mce-bogus": "all",
class: "mce-resizehandle",
unselectable: !0,
style: "cursor:" + t + "-resize; margin:0; padding:0"
})),
n.bind(h, "mousedown", h => {
h.stopImmediatePropagation(),
h.preventDefault(),
(h => {
const b = _(a)[0];
(u = h.screenX),
(m = h.screenY),
(f = b.clientWidth),
(g = b.clientHeight),
(p = g / f),
(d = e),
(d.name = t),
(d.startPos = {x: N * e[0] + C, y: O * e[1] + x}),
(y = s.scrollWidth),
(w = s.scrollHeight),
(c = n.add(s, "div", {class: "mce-resize-backdrop", "data-mce-bogus": "all"})),
n.setStyles(c, {position: "fixed", left: "0", top: "0", width: "100%", height: "100%"}),
(i = ((e, t) => {
if (E(t)) return e.create("img", {src: Tt.transparentSrc});
if (ar(t)) {
const n = $e(d.name, "n") ? le : de,
o = t.cloneNode(!0);
return (
n(e.select("tr", o)).each(t => {
const n = e.select("td,th", t);
e.setStyle(t, "height", null), q(n, t => e.setStyle(t, "height", null));
}),
o
);
}
return t.cloneNode(!0);
})(n, a)),
n.addClass(i, "mce-clonedresizable"),
n.setAttrib(i, "data-mce-bogus", "all"),
(i.contentEditable = "false"),
n.setStyles(i, {left: C, top: x, margin: 0}),
R(i, N, O),
i.removeAttribute(wf),
s.appendChild(i),
n.bind(o, "mousemove", A),
n.bind(o, "mouseup", T),
r !== o && (n.bind(r, "mousemove", A), n.bind(r, "mouseup", T)),
(l = n.add(
s,
"div",
{class: "mce-resize-helper", "data-mce-bogus": "all"},
f + " × " + g
));
})(h);
}),
(e.elm = h),
n.setStyles(h, {left: N * e[0] + C - h.offsetWidth / 2, top: O * e[1] + x - h.offsetHeight / 2});
})
: P(!1);
},
B = wa(O, 0),
P = (e = !0) => {
B.cancel(),
M(),
a && e && a.removeAttribute(wf),
pe(kf, (e, t) => {
const o = n.get("mceResizeHandle" + t);
o && (n.unbind(o), n.remove(o));
});
},
D = (e, t) => n.isChildOf(e, t),
L = o => {
if (h || t.removed || t.composing) return;
const r = "mousedown" === o.type ? o.target : e.getNode(),
a = oo(Cn(r), "table,img,figure.image,hr,video,span.mce-preview-object,details")
.map(e => e.dom)
.filter(e => n.isEditable(e.parentElement) || ("IMG" === e.nodeName && n.isEditable(e)))
.getOrUndefined(),
i = C(a) ? n.getAttrib(a, wf, "1") : "1";
if (
(q(n.select(`img[${wf}],hr[${wf}]`), e => {
e.removeAttribute(wf);
}),
C(a) && D(a, s) && t.hasFocus())
) {
I();
const t = e.getStart(!0);
if (D(t, a) && D(e.getEnd(!0), a)) return n.setAttrib(a, wf, i), void B.throttle(a);
}
P();
},
M = () => {
pe(kf, e => {
e.elm && (n.unbind(e.elm), delete e.elm);
});
},
I = () => {
try {
t.getDoc().execCommand("enableObjectResizing", !1, "false");
} catch (e) {}
};
return (
t.on("init", () => {
I(),
t.on("NodeChange ResizeEditor ResizeWindow ResizeContent drop", L),
t.on("keyup compositionend", e => {
a && "TABLE" === a.nodeName && L(e);
}),
t.on("hide blur", P),
t.on("contextmenu longpress", k, !0);
}),
t.on("remove", M),
{
isResizable: S,
showResizeRect: O,
hideResizeRect: P,
updateResizeRect: L,
destroy: () => {
B.cancel(), (a = i = c = null);
}
}
);
},
Sf = (e, t, n) => {
const o = e.document.createRange();
var r;
return (
(r = o),
t.fold(
e => {
r.setStartBefore(e.dom);
},
(e, t) => {
r.setStart(e.dom, t);
},
e => {
r.setStartAfter(e.dom);
}
),
((e, t) => {
t.fold(
t => {
e.setEndBefore(t.dom);
},
(t, n) => {
e.setEnd(t.dom, n);
},
t => {
e.setEndAfter(t.dom);
}
);
})(o, n),
o
);
},
Nf = (e, t, n, o, r) => {
const s = e.document.createRange();
return s.setStart(t.dom, n), s.setEnd(o.dom, r), s;
},
Rf = kl([{ltr: ["start", "soffset", "finish", "foffset"]}, {rtl: ["start", "soffset", "finish", "foffset"]}]),
Af = (e, t, n) => t(Cn(n.startContainer), n.startOffset, Cn(n.endContainer), n.endOffset);
Rf.ltr, Rf.rtl;
const Tf = (e, t, n, o) => ({start: e, soffset: t, finish: n, foffset: o}),
Of = document.caretPositionFromPoint
? (e, t, n) => {
var o, r;
return I.from(
null === (r = (o = e.dom).caretPositionFromPoint) || void 0 === r ? void 0 : r.call(o, t, n)
).bind(t => {
if (null === t.offsetNode) return I.none();
const n = e.dom.createRange();
return n.setStart(t.offsetNode, t.offset), n.collapse(), I.some(n);
});
}
: document.caretRangeFromPoint
? (e, t, n) => {
var o, r;
return I.from(null === (r = (o = e.dom).caretRangeFromPoint) || void 0 === r ? void 0 : r.call(o, t, n));
}
: I.none,
Bf = kl([{before: ["element"]}, {on: ["element", "offset"]}, {after: ["element"]}]),
Pf = {
before: Bf.before,
on: Bf.on,
after: Bf.after,
cata: (e, t, n, o) => e.fold(t, n, o),
getStart: e => e.fold(R, R, R)
},
Df = kl([
{domRange: ["rng"]},
{relative: ["startSitu", "finishSitu"]},
{exact: ["start", "soffset", "finish", "foffset"]}
]),
Lf = {
domRange: Df.domRange,
relative: Df.relative,
exact: Df.exact,
exactFromRange: e => Df.exact(e.start, e.soffset, e.finish, e.foffset),
getWin: e => {
const t = (e =>
e.match({domRange: e => Cn(e.startContainer), relative: (e, t) => Pf.getStart(e), exact: (e, t, n, o) => e}))(
e
);
return An(t);
},
range: Tf
},
Mf = (e, t) => {
const n = $t(e);
return "input" === n ? Pf.after(e) : H(["br", "img"], n) ? (0 === t ? Pf.before(e) : Pf.after(e)) : Pf.on(e, t);
},
If = (e, t) => {
const n = e.fold(Pf.before, Mf, Pf.after),
o = t.fold(Pf.before, Mf, Pf.after);
return Lf.relative(n, o);
},
Ff = (e, t, n, o) => {
const r = Mf(e, t),
s = Mf(n, o);
return Lf.relative(r, s);
},
Uf = (e, t) => {
const n = (t || document).createDocumentFragment();
return (
q(e, e => {
n.appendChild(e.dom);
}),
Cn(n)
);
},
zf = e => {
const t = Lf.getWin(e).dom,
n = (e, n, o, r) => Nf(t, e, n, o, r),
o = (e =>
e.match({
domRange: e => {
const t = Cn(e.startContainer),
n = Cn(e.endContainer);
return Ff(t, e.startOffset, n, e.endOffset);
},
relative: If,
exact: Ff
}))(e);
return ((e, t) => {
const n = ((e, t) =>
t.match({
domRange: e => ({ltr: N(e), rtl: I.none}),
relative: (t, n) => ({ltr: Le(() => Sf(e, t, n)), rtl: Le(() => I.some(Sf(e, n, t)))}),
exact: (t, n, o, r) => ({ltr: Le(() => Nf(e, t, n, o, r)), rtl: Le(() => I.some(Nf(e, o, r, t, n)))})
}))(e, t);
return ((e, t) => {
const n = t.ltr();
return n.collapsed
? t
.rtl()
.filter(e => !1 === e.collapsed)
.map(e => Rf.rtl(Cn(e.endContainer), e.endOffset, Cn(e.startContainer), e.startOffset))
.getOrThunk(() => Af(0, Rf.ltr, n))
: Af(0, Rf.ltr, n);
})(0, n);
})(t, o).match({ltr: n, rtl: n});
},
jf = (e, t, n) =>
((e, t, n) =>
((e, t, n) => {
const o = Cn(e.document);
return Of(o, t, n).map(e => Tf(Cn(e.startContainer), e.startOffset, Cn(e.endContainer), e.endOffset));
})(e, t, n))(An(Cn(n)).dom, e, t)
.map(e => {
const t = n.createRange();
return t.setStart(e.start.dom, e.soffset), t.setEnd(e.finish.dom, e.foffset), t;
})
.getOrUndefined(),
Hf = (e, t) =>
C(e) &&
C(t) &&
e.startContainer === t.startContainer &&
e.startOffset === t.startOffset &&
e.endContainer === t.endContainer &&
e.endOffset === t.endOffset,
$f = (e, t, n) =>
null !==
((e, t, n) => {
let o = e;
for (; o && o !== t; ) {
if (n(o)) return o;
o = o.parentNode;
}
return null;
})(e, t, n),
Vf = (e, t, n) => $f(e, t, e => e.nodeName === n),
qf = (e, t) => ai(e) && !$f(e, t, Wu),
Wf = (e, t, n) => {
const o = t.parentNode;
if (o) {
const r = new Vo(t, e.getParent(o, e.isBlock) || e.getRoot());
let s;
for (; (s = r[n ? "prev" : "next"]()); ) if (pr(s)) return !0;
}
return !1;
},
Kf = (e, t, n, o, r) => {
const s = e.getRoot(),
a = e.schema.getNonEmptyElements(),
i = r.parentNode;
let l, d;
if (!i) return I.none();
const c = e.getParent(i, e.isBlock) || s;
if (o && pr(r) && t && e.isEmpty(c)) return I.some(Ji(i, e.nodeIndex(r)));
const u = new Vo(r, c);
for (; (d = u[o ? "prev" : "next"]()); ) {
if ("false" === e.getContentEditableParent(d) || qf(d, s)) return I.none();
if (dr(d) && d.data.length > 0) return Vf(d, s, "A") ? I.none() : I.some(Ji(d, o ? d.data.length : 0));
if (e.isBlock(d) || a[d.nodeName.toLowerCase()]) return I.none();
l = d;
}
return mr(l) ? I.none() : n && l ? I.some(Ji(l, 0)) : I.none();
},
Yf = (e, t, n, o) => {
const r = e.getRoot();
let s,
a = !1,
i = n ? o.startContainer : o.endContainer,
l = n ? o.startOffset : o.endOffset;
const d = er(i) && l === i.childNodes.length,
c = e.schema.getNonEmptyElements();
let u = n;
if (ai(i)) return I.none();
if ((er(i) && l > i.childNodes.length - 1 && (u = !1), fr(i) && ((i = r), (l = 0)), i === r)) {
if (u && ((s = i.childNodes[l > 0 ? l - 1 : 0]), s)) {
if (ai(s)) return I.none();
if (c[s.nodeName] || ar(s)) return I.none();
}
if (i.hasChildNodes()) {
if (
((l = Math.min(!u && l > 0 ? l - 1 : l, i.childNodes.length - 1)),
(i = i.childNodes[l]),
(l = dr(i) && d ? i.data.length : 0),
!t && i === r.lastChild && ar(i))
)
return I.none();
if (
((e, t) => {
let n = t;
for (; n && n !== e; ) {
if (vr(n)) return !0;
n = n.parentNode;
}
return !1;
})(r, i) ||
ai(i)
)
return I.none();
if (Er(i)) return I.none();
if (i.hasChildNodes() && !ar(i)) {
s = i;
const t = new Vo(i, r);
do {
if (vr(s) || ai(s)) {
a = !1;
break;
}
if (dr(s) && s.data.length > 0) {
(l = u ? 0 : s.data.length), (i = s), (a = !0);
break;
}
if (c[s.nodeName.toLowerCase()] && !Cr(s)) {
(l = e.nodeIndex(s)), (i = s.parentNode), u || l++, (a = !0);
break;
}
} while ((s = u ? t.next() : t.prev()));
}
}
}
return (
t &&
(dr(i) &&
0 === l &&
Kf(e, d, t, !0, i).each(e => {
(i = e.container()), (l = e.offset()), (a = !0);
}),
er(i) &&
((s = i.childNodes[l]),
s || (s = i.childNodes[l - 1]),
!s ||
!pr(s) ||
((e, t) => {
var n;
return "A" === (null === (n = e.previousSibling) || void 0 === n ? void 0 : n.nodeName);
})(s) ||
Wf(e, s, !1) ||
Wf(e, s, !0) ||
Kf(e, d, t, !0, s).each(e => {
(i = e.container()), (l = e.offset()), (a = !0);
}))),
u &&
!t &&
dr(i) &&
l === i.data.length &&
Kf(e, d, t, !1, i).each(e => {
(i = e.container()), (l = e.offset()), (a = !0);
}),
a && i ? I.some(Ji(i, l)) : I.none()
);
},
Gf = (e, t) => {
const n = t.collapsed,
o = t.cloneRange(),
r = Ji.fromRangeStart(t);
return (
Yf(e, n, !0, o).each(e => {
(n && Ji.isAbove(r, e)) || o.setStart(e.container(), e.offset());
}),
n ||
Yf(e, n, !1, o).each(e => {
o.setEnd(e.container(), e.offset());
}),
n && o.collapse(!0),
Hf(t, o) ? I.none() : I.some(o)
);
},
Xf = (e, t) => e.splitText(t),
Zf = e => {
let t = e.startContainer,
n = e.startOffset,
o = e.endContainer,
r = e.endOffset;
if (t === o && dr(t)) {
if (n > 0 && n < t.data.length)
if (((o = Xf(t, n)), (t = o.previousSibling), r > n)) {
r -= n;
const e = Xf(o, r).previousSibling;
(t = o = e), (r = e.data.length), (n = 0);
} else r = 0;
} else if (
(dr(t) && n > 0 && n < t.data.length && ((t = Xf(t, n)), (n = 0)), dr(o) && r > 0 && r < o.data.length)
) {
const e = Xf(o, r).previousSibling;
(o = e), (r = e.data.length);
}
return {startContainer: t, startOffset: n, endContainer: o, endOffset: r};
},
Qf = e => ({
walk: (t, n) => rf(e, t, n),
split: Zf,
expand: (t, n = {type: "word"}) => {
if ("word" === n.type) {
const n = of(e, t, [{inline: "span"}]),
o = e.createRng();
return o.setStart(n.startContainer, n.startOffset), o.setEnd(n.endContainer, n.endOffset), o;
}
return t;
},
normalize: t =>
Gf(e, t).fold(L, e => (t.setStart(e.startContainer, e.startOffset), t.setEnd(e.endContainer, e.endOffset), !0))
});
(Qf.compareRanges = Hf), (Qf.getCaretRangeFromPoint = jf), (Qf.getSelectedNode = wi), (Qf.getNode = xi);
const Jf = ((e, t) => {
const n = t => {
const n = (e => {
const t = e.dom;
return Xn(e) ? t.getBoundingClientRect().height : t.offsetHeight;
})(t);
if (n <= 0 || null === n) {
const n = uo(t, e);
return parseFloat(n) || 0;
}
return n;
},
o = (e, t) =>
X(
t,
(t, n) => {
const o = uo(e, n),
r = void 0 === o ? 0 : parseInt(o, 10);
return isNaN(r) ? t : t + r;
},
0
);
return {
set: (t, n) => {
if (!x(n) && !n.match(/^[0-9]+$/))
throw new Error(e + ".set accepts only positive integer values. Value was " + n);
const o = t.dom;
ao(o) && (o.style[e] = n + "px");
},
get: n,
getOuter: n,
aggregate: o,
max: (e, t, n) => {
const r = o(e, n);
return t > r ? t - r : 0;
}
};
})("height"),
eg = () => Cn(document),
tg = (e, t) =>
e.view(t).fold(N([]), t => {
const n = e.owner(t),
o = tg(e, n);
return [t].concat(o);
});
var ng = Object.freeze({
__proto__: null,
view: e => {
var t;
return (
e.dom === document
? I.none()
: I.from(null === (t = e.dom.defaultView) || void 0 === t ? void 0 : t.frameElement)
).map(Cn);
},
owner: e => Rn(e)
});
const og = e => "textarea" === $t(e),
rg = (e, t) => {
const n = (e => {
const t = e.dom.ownerDocument,
n = t.body,
o = t.defaultView,
r = t.documentElement;
if (n === e.dom) return Oo(n.offsetLeft, n.offsetTop);
const s = Bo(null == o ? void 0 : o.pageYOffset, r.scrollTop),
a = Bo(null == o ? void 0 : o.pageXOffset, r.scrollLeft),
i = Bo(r.clientTop, n.clientTop),
l = Bo(r.clientLeft, n.clientLeft);
return Po(e).translate(a - l, s - i);
})(e),
o = (e => Jf.get(e))(e);
return {element: e, bottom: n.top + o, height: o, pos: n, cleanup: t};
},
sg = (e, t, n, o) => {
dg(e, (r, s) => ig(e, t, n, o), n);
},
ag = (e, t, n, o, r) => {
const s = {elm: o.element.dom, alignToTop: r};
((e, t) => e.dispatch("ScrollIntoView", t).isDefaultPrevented())(e, s) ||
(n(e, t, Do(t).top, o, r),
((e, t) => {
e.dispatch("AfterScrollIntoView", t);
})(e, s));
},
ig = (e, t, n, o) => {
const r = Cn(e.getBody()),
s = Cn(e.getDoc());
r.dom.offsetWidth;
const a = ((e, t) => {
const n = ((e, t) => {
const n = In(e);
if (0 === n.length || og(e)) return {element: e, offset: t};
if (t < n.length && !og(n[t])) return {element: n[t], offset: 0};
{
const o = n[n.length - 1];
return og(o)
? {element: e, offset: t}
: "img" === $t(o)
? {element: o, offset: 1}
: Yt(o)
? {element: o, offset: Ha(o).length}
: {element: o, offset: In(o).length};
}
})(e, t),
o = bn('\ufeff');
return ho(n.element, o), rg(o, () => Eo(o));
})(Cn(n.startContainer), n.startOffset);
ag(e, s, t, a, o), a.cleanup();
},
lg = (e, t, n, o) => {
const r = Cn(e.getDoc());
ag(e, r, n, (e => rg(Cn(e), k))(t), o);
},
dg = (e, t, n) => {
const o = n.startContainer,
r = n.startOffset,
s = n.endContainer,
a = n.endOffset;
t(Cn(o), Cn(s));
const i = e.dom.createRng();
i.setStart(o, r), i.setEnd(s, a), e.selection.setRng(n);
},
cg = (e, t, n, o, r) => {
const s = t.pos;
if (o) Lo(s.left, s.top, r);
else {
const o = s.top - n + t.height;
Lo(-e.getBody().getBoundingClientRect().left, o, r);
}
},
ug = (e, t, n, o, r, s) => {
const a = o + n,
i = r.pos.top,
l = r.bottom,
d = l - i >= o;
i < n
? cg(e, r, o, !1 !== s, t)
: i > a
? cg(e, r, o, d ? !1 !== s : !0 === s, t)
: l > a && !d && cg(e, r, o, !0 === s, t);
},
mg = (e, t, n, o, r) => {
const s = An(t).dom.innerHeight;
ug(e, t, n, s, o, r);
},
fg = (e, t, n, o, r) => {
const s = An(t).dom.innerHeight;
ug(e, t, n, s, o, r);
const a = (e => {
const t = eg(),
n = Do(t),
o = ((e, t) => {
const n = t.owner(e);
return tg(t, n);
})(e, ng),
r = Po(e),
s = G(
o,
(e, t) => {
const n = Po(t);
return {left: e.left + n.left, top: e.top + n.top};
},
{left: 0, top: 0}
);
return Oo(s.left + r.left + n.left, s.top + r.top + n.top);
})(o.element),
i = Fo(window);
a.top < i.y ? Mo(o.element, !1 !== r) : a.top > i.bottom && Mo(o.element, !0 === r);
},
gg = (e, t, n) => sg(e, mg, t, n),
pg = (e, t, n) => lg(e, t, mg, n),
hg = (e, t, n) => sg(e, fg, t, n),
bg = (e, t, n) => lg(e, t, fg, n),
vg = (e, t, n) => {
(e.inline ? gg : hg)(e, t, n);
},
yg = (e, t = !1) => e.dom.focus({preventScroll: t}),
Cg = e => {
const t = qn(e).dom;
return e.dom === t.activeElement;
},
wg = (e = eg()) => I.from(e.dom.activeElement).map(Cn),
xg = (e, t) => {
const n = Yt(t) ? Ha(t).length : In(t).length + 1;
return e > n ? n : e < 0 ? 0 : e;
},
Eg = e => Lf.range(e.start, xg(e.soffset, e.start), e.finish, xg(e.foffset, e.finish)),
kg = (e, t) => !Jo(t.dom) && (Sn(e, t) || _n(e, t)),
_g = e => t => kg(e, t.start) && kg(e, t.finish),
Sg = e => Lf.range(Cn(e.startContainer), e.startOffset, Cn(e.endContainer), e.endOffset),
Ng = e => {
const t = document.createRange();
try {
return t.setStart(e.start.dom, e.soffset), t.setEnd(e.finish.dom, e.foffset), I.some(t);
} catch (e) {
return I.none();
}
},
Rg = e => {
const t = (e => e.inline || Tt.browser.isFirefox())(e)
? ((n = Cn(e.getBody())),
(e => {
const t = e.getSelection();
return (t && 0 !== t.rangeCount ? I.from(t.getRangeAt(0)) : I.none()).map(Sg);
})(An(n).dom).filter(_g(n)))
: I.none();
var n;
e.bookmark = t.isSome() ? t : e.bookmark;
},
Ag = e =>
(e.bookmark ? e.bookmark : I.none())
.bind(t => {
return (n = Cn(e.getBody())), (o = t), I.from(o).filter(_g(n)).map(Eg);
var n, o;
})
.bind(Ng),
Tg = {
isEditorUIElement: e => {
const t = e.className.toString();
return -1 !== t.indexOf("tox-") || -1 !== t.indexOf("mce-");
}
},
Og = {
setEditorTimeout: (e, t, n) =>
((e, t) => (x(t) || (t = 0), setTimeout(e, t)))(() => {
e.removed || t();
}, n),
setEditorInterval: (e, t, n) => {
const o = ((e, t) => (x(t) || (t = 0), setInterval(e, t)))(() => {
e.removed ? clearInterval(o) : t();
}, n);
return o;
}
};
let Bg;
const Pg = fa.DOM,
Dg = e => {
const t = e.classList;
return (
void 0 !== t &&
(t.contains("tox-edit-area") || t.contains("tox-edit-area__iframe") || t.contains("mce-content-body"))
);
},
Lg = (e, t) => {
const n = Pd(e),
o = Pg.getParent(t, t => (e => er(e) && Tg.isEditorUIElement(e))(t) || (!!n && e.dom.is(t, n)));
return null !== o;
},
Mg = e => {
try {
const t = qn(Cn(e.getElement()));
return wg(t).fold(
() => document.body,
e => e.dom
);
} catch (e) {
return document.body;
}
},
Ig = (e, t) => {
const n = t.editor;
(e => {
const t = wa(() => {
Rg(e);
}, 0);
e.on("init", () => {
e.inline &&
((e, t) => {
const n = () => {
t.throttle();
};
fa.DOM.bind(document, "mouseup", n),
e.on("remove", () => {
fa.DOM.unbind(document, "mouseup", n);
});
})(e, t),
((e, t) => {
((e, t) => {
e.on("mouseup touchend", e => {
t.throttle();
});
})(e, t),
e.on("keyup NodeChange AfterSetSelectionRange", t => {
(e => "nodechange" === e.type && e.selectionChange)(t) || Rg(e);
});
})(e, t);
}),
e.on("remove", () => {
t.cancel();
});
})(n);
const o = (e, t) => {
wc(e) && !0 !== e.inline && t(Cn(e.getContainer()), "tox-edit-focus");
};
n.on("focusin", () => {
const t = e.focusedEditor;
Dg(Mg(n)) && o(n, mn),
t !== n &&
(t && t.dispatch("blur", {focusedEditor: n}),
e.setActive(n),
(e.focusedEditor = n),
n.dispatch("focus", {blurredEditor: t}),
n.focus(!0));
}),
n.on("focusout", () => {
Og.setEditorTimeout(n, () => {
const t = e.focusedEditor;
(Dg(Mg(n)) && t === n) || o(n, gn),
Lg(n, Mg(n)) || t !== n || (n.dispatch("blur", {focusedEditor: null}), (e.focusedEditor = null));
});
}),
Bg ||
((Bg = t => {
const n = e.activeEditor;
n &&
Yn(t).each(t => {
const o = t;
o.ownerDocument === document &&
(o === document.body ||
Lg(n, o) ||
e.focusedEditor !== n ||
(n.dispatch("blur", {focusedEditor: null}), (e.focusedEditor = null)));
});
}),
Pg.bind(document, "focusin", Bg));
},
Fg = (e, t) => {
e.focusedEditor === t.editor && (e.focusedEditor = null),
!e.activeEditor && Bg && (Pg.unbind(document, "focusin", Bg), (Bg = null));
},
Ug = (e, t) => {
((e, t) =>
(e => (e.collapsed ? I.from(xi(e.startContainer, e.startOffset)).map(Cn) : I.none()))(t).bind(t =>
Ya(t) ? I.some(t) : Sn(e, t) ? I.none() : I.some(e)
))(Cn(e.getBody()), t)
.bind(e => $u(e.dom))
.fold(
() => {
e.selection.normalize();
},
t => e.selection.setRng(t.toRange())
);
},
zg = e => {
if (e.setActive)
try {
e.setActive();
} catch (t) {
e.focus();
}
else e.focus();
},
jg = e =>
e.inline
? (e => {
const t = e.getBody();
return t && ((n = Cn(t)), Cg(n) || ((o = n), wg(qn(o)).filter(e => o.dom.contains(e.dom))).isSome());
var n, o;
})(e)
: (e => C(e.iframeElement) && Cg(Cn(e.iframeElement)))(e),
Hg = e =>
jg(e) ||
(e => {
const t = qn(Cn(e.getElement()));
return wg(t)
.filter(t => !Dg(t.dom) && Lg(e, t.dom))
.isSome();
})(e),
$g = e => e.editorManager.setActive(e),
Vg = (e, t) =>
t.collapsed ? e.isEditable(t.startContainer) : e.isEditable(t.startContainer) && e.isEditable(t.endContainer),
qg = (e, t, n, o, r) => {
const s = n ? t.startContainer : t.endContainer,
a = n ? t.startOffset : t.endOffset;
return I.from(s)
.map(Cn)
.map(e => (o && t.collapsed ? e : Fn(e, r(e, a)).getOr(e)))
.bind(e => (Kt(e) ? I.some(e) : Tn(e).filter(Kt)))
.map(e => e.dom)
.getOr(e);
},
Wg = (e, t, n = !1) => qg(e, t, !0, n, (e, t) => Math.min(jn(e), t)),
Kg = (e, t, n = !1) => qg(e, t, !1, n, (e, t) => (t > 0 ? t - 1 : t)),
Yg = (e, t) => {
const n = e;
for (; e && dr(e) && 0 === e.length; ) e = t ? e.nextSibling : e.previousSibling;
return e || n;
},
Gg = (e, t) =>
V(t, t => {
const n = e.dispatch("GetSelectionRange", {range: t});
return n.range !== t ? n.range : t;
}),
Xg = {"#text": 3, "#comment": 8, "#cdata": 4, "#pi": 7, "#doctype": 10, "#document-fragment": 11},
Zg = (e, t, n) => {
const o = n ? "lastChild" : "firstChild",
r = n ? "prev" : "next";
if (e[o]) return e[o];
if (e !== t) {
let n = e[r];
if (n) return n;
for (let o = e.parent; o && o !== t; o = o.parent) if (((n = o[r]), n)) return n;
}
},
Qg = e => {
var t;
const n = null !== (t = e.value) && void 0 !== t ? t : "";
if (!Go(n)) return !1;
const o = e.parent;
return !o || ("span" === o.name && !o.attr("style")) || !/^[ ]+$/.test(n);
},
Jg = e => {
const t = "a" === e.name && !e.attr("href") && e.attr("id");
return e.attr("name") || (e.attr("id") && !e.firstChild) || e.attr("data-mce-bookmark") || t;
};
class ep {
static create(e, t) {
const n = new ep(e, Xg[e] || 1);
return (
t &&
pe(t, (e, t) => {
n.attr(t, e);
}),
n
);
}
constructor(e, t) {
(this.name = e), (this.type = t), 1 === t && ((this.attributes = []), (this.attributes.map = {}));
}
replace(e) {
const t = this;
return e.parent && e.remove(), t.insert(e, t), t.remove(), t;
}
attr(e, t) {
const n = this;
if (!m(e))
return (
C(e) &&
pe(e, (e, t) => {
n.attr(t, e);
}),
n
);
const o = n.attributes;
if (o) {
if (void 0 !== t) {
if (null === t) {
if (e in o.map) {
delete o.map[e];
let t = o.length;
for (; t--; ) if (o[t].name === e) return o.splice(t, 1), n;
}
return n;
}
if (e in o.map) {
let n = o.length;
for (; n--; )
if (o[n].name === e) {
o[n].value = t;
break;
}
} else o.push({name: e, value: t});
return (o.map[e] = t), n;
}
return o.map[e];
}
}
clone() {
const e = this,
t = new ep(e.name, e.type),
n = e.attributes;
if (n) {
const e = [];
e.map = {};
for (let t = 0, o = n.length; t < o; t++) {
const o = n[t];
"id" !== o.name && ((e[e.length] = {name: o.name, value: o.value}), (e.map[o.name] = o.value));
}
t.attributes = e;
}
return (t.value = e.value), t;
}
wrap(e) {
const t = this;
return t.parent && (t.parent.insert(e, t), e.append(t)), t;
}
unwrap() {
const e = this;
for (let t = e.firstChild; t; ) {
const n = t.next;
e.insert(t, e, !0), (t = n);
}
e.remove();
}
remove() {
const e = this,
t = e.parent,
n = e.next,
o = e.prev;
return (
t &&
(t.firstChild === e ? ((t.firstChild = n), n && (n.prev = null)) : o && (o.next = n),
t.lastChild === e ? ((t.lastChild = o), o && (o.next = null)) : n && (n.prev = o),
(e.parent = e.next = e.prev = null)),
e
);
}
append(e) {
const t = this;
e.parent && e.remove();
const n = t.lastChild;
return n ? ((n.next = e), (e.prev = n), (t.lastChild = e)) : (t.lastChild = t.firstChild = e), (e.parent = t), e;
}
insert(e, t, n) {
e.parent && e.remove();
const o = t.parent || this;
return (
n
? (t === o.firstChild ? (o.firstChild = e) : t.prev && (t.prev.next = e),
(e.prev = t.prev),
(e.next = t),
(t.prev = e))
: (t === o.lastChild ? (o.lastChild = e) : t.next && (t.next.prev = e),
(e.next = t.next),
(e.prev = t),
(t.next = e)),
(e.parent = o),
e
);
}
getAll(e) {
const t = this,
n = [];
for (let o = t.firstChild; o; o = Zg(o, t)) o.name === e && n.push(o);
return n;
}
children() {
const e = [];
for (let t = this.firstChild; t; t = t.next) e.push(t);
return e;
}
empty() {
const e = this;
if (e.firstChild) {
const t = [];
for (let n = e.firstChild; n; n = Zg(n, e)) t.push(n);
let n = t.length;
for (; n--; ) {
const e = t[n];
e.parent = e.firstChild = e.lastChild = e.next = e.prev = null;
}
}
return (e.firstChild = e.lastChild = null), e;
}
isEmpty(e, t = {}, n) {
var o;
const r = this;
let s = r.firstChild;
if (Jg(r)) return !1;
if (s)
do {
if (1 === s.type) {
if (s.attr("data-mce-bogus")) continue;
if (e[s.name]) return !1;
if (Jg(s)) return !1;
}
if (8 === s.type) return !1;
if (3 === s.type && !Qg(s)) return !1;
if (3 === s.type && s.parent && t[s.parent.name] && Go(null !== (o = s.value) && void 0 !== o ? o : ""))
return !1;
if (n && n(s)) return !1;
} while ((s = Zg(s, r)));
return !0;
}
walk(e) {
return Zg(this, null, e);
}
}
const tp = Dt.makeMap("NOSCRIPT STYLE SCRIPT XMP IFRAME NOEMBED NOFRAMES PLAINTEXT", " "),
np = e => m(e.nodeValue) && e.nodeValue.includes(Ja),
op = e => (0 === e.length ? "" : `${V(e, e => `[${e}]`).join(",")},`) + '[data-mce-bogus="all"]',
rp = e =>
document.createTreeWalker(e, NodeFilter.SHOW_COMMENT, e =>
np(e) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP
),
sp = e =>
document.createTreeWalker(e, NodeFilter.SHOW_TEXT, e => {
if (np(e)) {
const t = e.parentNode;
return t && ke(tp, t.nodeName) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
}
return NodeFilter.FILTER_SKIP;
}),
ap = e => null !== rp(e).nextNode(),
ip = e => null !== sp(e).nextNode(),
lp = (e, t) => null !== t.querySelector(op(e)),
dp = (e, t) => {
q(((e, t) => t.querySelectorAll(op(e)))(e, t), t => {
const n = Cn(t);
"all" === tn(n, "data-mce-bogus")
? Eo(n)
: q(e, e => {
on(n, e) && rn(n, e);
});
});
},
cp = e => {
let t = e.nextNode();
for (; null !== t; ) (t.nodeValue = null), (t = e.nextNode());
},
up = _(cp, rp),
mp = _(cp, sp),
fp = (e, t) => {
const n = [
{condition: T(lp, t), action: T(dp, t)},
{condition: ap, action: up},
{condition: ip, action: mp}
];
let o = e,
r = !1;
return (
q(n, ({condition: t, action: n}) => {
t(o) && (r || ((o = e.cloneNode(!0)), (r = !0)), n(o));
}),
o
);
},
gp = e => {
const t = zo(e, "[data-mce-bogus]");
q(t, e => {
"all" === tn(e, "data-mce-bogus") ? Eo(e) : Va(e) ? (ho(e, yn(qo)), Eo(e)) : ko(e);
});
},
pp = e => {
const t = zo(e, "input");
q(t, e => {
rn(e, "name");
});
},
hp = (e, t, n) => {
let o;
return (
(o =
"raw" === t.format
? Dt.trim(ti(fp(n, e.serializer.getTempAttrs()).innerHTML))
: "text" === t.format
? ((e, t) => {
const n = e.getDoc(),
o = qn(Cn(e.getBody())),
r = vn("div", n);
Jt(r, "data-mce-bogus", "all"),
co(r, {position: "fixed", left: "-9999999px", top: "0"}),
No(r, t.innerHTML),
gp(r),
pp(r);
const s = (e => (Hn(e) ? e : Cn(Rn(e).dom.body)))(o);
yo(s, r);
const a = ti(r.dom.innerText);
return Eo(r), a;
})(e, n)
: "tree" === t.format
? e.serializer.serialize(n, t)
: ((e, t) => {
const n = Wl(e),
o = new RegExp(`^(<${n}[^>]*>( | |\\s|\xa0|
|)<\\/${n}>[\r\n]*|
[\r\n]*)$`);
return t.replace(o, "");
})(e, e.serializer.serialize(n, t))),
"text" !== t.format && !Xa(Cn(n)) && m(o) ? Dt.trim(o) : o
);
},
bp = Dt.makeMap,
vp = e => {
const t = [],
n = (e = e || {}).indent,
o = bp(e.indent_before || ""),
r = bp(e.indent_after || ""),
s = ws.getEncodeFunc(e.entity_encoding || "raw", e.entities),
a = "xhtml" !== e.element_format;
return {
start: (e, i, l) => {
if (n && o[e] && t.length > 0) {
const e = t[t.length - 1];
e.length > 0 && "\n" !== e && t.push("\n");
}
if ((t.push("<", e), i))
for (let e = 0, n = i.length; e < n; e++) {
const n = i[e];
t.push(" ", n.name, '="', s(n.value, !0), '"');
}
if (((t[t.length] = !l || a ? ">" : " />"), l && n && r[e] && t.length > 0)) {
const e = t[t.length - 1];
e.length > 0 && "\n" !== e && t.push("\n");
}
},
end: e => {
let o;
t.push("", e, ">"),
n && r[e] && t.length > 0 && ((o = t[t.length - 1]), o.length > 0 && "\n" !== o && t.push("\n"));
},
text: (e, n) => {
e.length > 0 && (t[t.length] = n ? e : s(e));
},
cdata: e => {
t.push("");
},
comment: e => {
t.push("\x3c!--", e, "--\x3e");
},
pi: (e, o) => {
o ? t.push("", e, " ", s(o), "?>") : t.push("", e, "?>"), n && t.push("\n");
},
doctype: e => {
t.push("", n ? "\n" : "");
},
reset: () => {
t.length = 0;
},
getContent: () => t.join("").replace(/\n$/, "")
};
},
yp = (e = {}, t = Fs()) => {
const n = vp(e);
return (
(e.validate = !("validate" in e) || e.validate),
{
serialize: o => {
const r = e.validate,
s = {
3: e => {
var t;
n.text(null !== (t = e.value) && void 0 !== t ? t : "", e.raw);
},
8: e => {
var t;
n.comment(null !== (t = e.value) && void 0 !== t ? t : "");
},
7: e => {
n.pi(e.name, e.value);
},
10: e => {
var t;
n.doctype(null !== (t = e.value) && void 0 !== t ? t : "");
},
4: e => {
var t;
n.cdata(null !== (t = e.value) && void 0 !== t ? t : "");
},
11: e => {
let t = e;
if ((t = t.firstChild))
do {
a(t);
} while ((t = t.next));
}
};
n.reset();
const a = e => {
var o;
const i = s[e.type];
if (i) i(e);
else {
const s = e.name,
i = s in t.getVoidElements();
let l = e.attributes;
if (r && l && l.length > 1) {
const n = [];
n.map = {};
const o = t.getElementRule(e.name);
if (o) {
for (let e = 0, t = o.attributesOrder.length; e < t; e++) {
const t = o.attributesOrder[e];
if (t in l.map) {
const e = l.map[t];
(n.map[t] = e), n.push({name: t, value: e});
}
}
for (let e = 0, t = l.length; e < t; e++) {
const t = l[e].name;
if (!(t in n.map)) {
const e = l.map[t];
(n.map[t] = e), n.push({name: t, value: e});
}
}
l = n;
}
}
if ((n.start(s, l, i), Mr(s))) m(e.value) && n.text(e.value, !0), n.end(s);
else if (!i) {
let t = e.firstChild;
if (t) {
("pre" !== s && "textarea" !== s) ||
3 !== t.type ||
"\n" !== (null === (o = t.value) || void 0 === o ? void 0 : o[0]) ||
n.text("\n", !0);
do {
a(t);
} while ((t = t.next));
}
n.end(s);
}
}
};
return 1 !== o.type || e.inner ? (3 === o.type ? s[3](o) : s[11](o)) : a(o), n.getContent();
}
}
);
},
Cp = new Set();
q(
[
"margin",
"margin-left",
"margin-right",
"margin-top",
"margin-bottom",
"padding",
"padding-left",
"padding-right",
"padding-top",
"padding-bottom",
"border",
"border-width",
"border-style",
"border-color",
"background",
"background-attachment",
"background-clip",
"background-color",
"background-image",
"background-origin",
"background-position",
"background-repeat",
"background-size",
"float",
"position",
"left",
"right",
"top",
"bottom",
"z-index",
"display",
"transform",
"width",
"max-width",
"min-width",
"height",
"max-height",
"min-height",
"overflow",
"overflow-x",
"overflow-y",
"text-overflow",
"vertical-align",
"transition",
"transition-delay",
"transition-duration",
"transition-property",
"transition-timing-function"
],
e => {
Cp.add(e);
}
);
const wp = ["font", "text-decoration", "text-emphasis"],
xp = (e, t) => fe(e.parseStyle(e.getAttrib(t, "style"))),
Ep = (e, t, n) => {
const o = xp(e, t),
r = xp(e, n),
s = o => {
var r, s;
const a = null !== (r = e.getStyle(t, o)) && void 0 !== r ? r : "",
i = null !== (s = e.getStyle(n, o)) && void 0 !== s ? s : "";
return Ge(a) && Ge(i) && a !== i;
};
return $(o, e => {
const t = t => $(t, t => t === e);
if (!t(r) && t(wp)) {
const e = Y(r, e => $(wp, t => $e(e, t)));
return $(e, s);
}
return s(e);
});
},
kp = (e, t, n) =>
I.from(n.container())
.filter(dr)
.exists(o => {
const r = e ? 0 : -1;
return t(o.data.charAt(n.offset() + r));
}),
_p = T(kp, !0, lm),
Sp = T(kp, !1, lm),
Np = e => {
const t = e.container();
return dr(t) && (0 === t.data.length || (ei(t.data) && uf.isBookmarkNode(t.parentNode)));
},
Rp = (e, t) => n =>
cu(e ? 0 : -1, n)
.filter(t)
.isSome(),
Ap = e => hr(e) && "block" === uo(Cn(e), "display"),
Tp = e => vr(e) && !(e => er(e) && "all" === e.getAttribute("data-mce-bogus"))(e),
Op = Rp(!0, Ap),
Bp = Rp(!1, Ap),
Pp = Rp(!0, wr),
Dp = Rp(!1, wr),
Lp = Rp(!0, ar),
Mp = Rp(!1, ar),
Ip = Rp(!0, Tp),
Fp = Rp(!1, Tp),
Up = (e, t) => ((e, t, n) => (Sn(t, e) ? Bn(e, e => n(e) || _n(e, t)).slice(0, -1) : []))(e, t, L),
zp = (e, t) => [e].concat(Up(e, t)),
jp = (e, t, n) => Uu(e, t, n, Np),
Hp = (e, t, n) =>
Q(
zp(Cn(t.container()), e),
(
e => t =>
e.isBlock($t(t))
)(n)
),
$p = (e, t, n, o) =>
jp(e, t.dom, n).forall(e =>
Hp(t, n, o).fold(
() => !du(e, n, t.dom),
o => !du(e, n, t.dom) && Sn(o, Cn(e.container()))
)
),
Vp = (e, t, n, o) =>
Hp(t, n, o).fold(
() => jp(e, t.dom, n).forall(e => !du(e, n, t.dom)),
t => jp(e, t.dom, n).isNone()
),
qp = T(Vp, !1),
Wp = T(Vp, !0),
Kp = T($p, !1),
Yp = T($p, !0),
Gp = e => yu(e).exists(Va),
Xp = (e, t, n, o) => {
const r = Y(zp(Cn(n.container()), t), e => o.isBlock($t(e))),
s = le(r).getOr(t);
return Iu(e, s.dom, n).filter(Gp);
},
Zp = (e, t, n) => yu(t).exists(Va) || Xp(!0, e, t, n).isSome(),
Qp = (e, t, n) => (e => I.from(e.getNode(!0)).map(Cn))(t).exists(Va) || Xp(!1, e, t, n).isSome(),
Jp = T(Xp, !1),
eh = T(Xp, !0),
th = e => Ji.isTextPosition(e) && !e.isAtStart() && !e.isAtEnd(),
nh = (e, t, n) => {
const o = Y(zp(Cn(t.container()), e), e => n.isBlock($t(e)));
return le(o).getOr(e);
},
oh = (e, t, n) => (th(t) ? Sp(t) : Sp(t) || Hu(nh(e, t, n).dom, t).exists(Sp)),
rh = (e, t, n) => (th(t) ? _p(t) : _p(t) || ju(nh(e, t, n).dom, t).exists(_p)),
sh = e =>
yu(e)
.bind(e => Jn(e, Kt))
.exists(e => (e => H(["pre", "pre-wrap"], e))(uo(e, "white-space"))),
ah = (e, t) => n => {
return (o = new Vo(n, e)[t]()), C(o) && vr(o) && Qc(o);
var o;
},
ih = (e, t, n) =>
!sh(t) &&
(((e, t, n) =>
((e, t) => Hu(e.dom, t).isNone())(e, t) ||
((e, t) => ju(e.dom, t).isNone())(e, t) ||
qp(e, t, n) ||
Wp(e, t, n) ||
Qp(e, t, n) ||
Zp(e, t, n))(e, t, n) ||
oh(e, t, n) ||
rh(e, t, n)),
lh = (e, t, n) =>
!sh(t) &&
(qp(e, t, n) ||
Kp(e, t, n) ||
Qp(e, t, n) ||
oh(e, t, n) ||
((e, t) => {
const n = Hu(e.dom, t).getOr(t),
o = ah(e.dom, "prev");
return t.isAtStart() && (o(t.container()) || o(n.container()));
})(e, t)),
dh = (e, t, n) =>
!sh(t) &&
(Wp(e, t, n) ||
Yp(e, t, n) ||
Zp(e, t, n) ||
rh(e, t, n) ||
((e, t) => {
const n = ju(e.dom, t).getOr(t),
o = ah(e.dom, "next");
return t.isAtEnd() && (o(t.container()) || o(n.container()));
})(e, t)),
ch = (e, t, n) =>
lh(e, t, n) ||
dh(
e,
(e => {
const t = e.container(),
n = e.offset();
return dr(t) && n < t.data.length ? Ji(t, n + 1) : e;
})(t),
n
),
uh = (e, t) => am(e.charAt(t)),
mh = (e, t) => lm(e.charAt(t)),
fh = (e, t, n, o) => {
const r = t.data,
s = Ji(t, 0);
return n || !uh(r, 0) || ch(e, s, o)
? !!(n && mh(r, 0) && lh(e, s, o)) && ((t.data = Wo + r.slice(1)), !0)
: ((t.data = " " + r.slice(1)), !0);
},
gh = (e, t, n, o) => {
const r = t.data,
s = Ji(t, r.length - 1);
return n || !uh(r, r.length - 1) || ch(e, s, o)
? !!(n && mh(r, r.length - 1) && dh(e, s, o)) && ((t.data = r.slice(0, -1) + Wo), !0)
: ((t.data = r.slice(0, -1) + " "), !0);
},
ph = (e, t, n) => {
const o = t.container();
if (!dr(o)) return I.none();
if (
(e => {
const t = e.container();
return dr(t) && He(t.data, Wo);
})(t)
) {
const r =
fh(e, o, !1, n) ||
(e => {
const t = e.data,
n = (e => {
const t = e.split("");
return V(t, (e, n) =>
am(e) && n > 0 && n < t.length - 1 && dm(t[n - 1]) && dm(t[n + 1]) ? " " : e
).join("");
})(t);
return n !== t && ((e.data = n), !0);
})(o) ||
gh(e, o, !1, n);
return Ft(r, t);
}
if (ch(e, t, n)) {
const r = fh(e, o, !0, n) || gh(e, o, !0, n);
return Ft(r, t);
}
return I.none();
},
hh = (e, t, n, o) => {
if (0 === n) return;
const r = Cn(e),
s = Qn(r, e => o.isBlock($t(e))).getOr(r),
a = e.data.slice(t, t + n),
i = t + n >= e.data.length && dh(s, Ji(e, e.data.length), o),
l = 0 === t && lh(s, Ji(e, 0), o);
e.replaceData(t, n, Zo(a, 4, l, i));
},
bh = (e, t, n) => {
const o = e.data.slice(t),
r = o.length - Ke(o).length;
hh(e, t, r, n);
},
vh = (e, t, n) => {
const o = e.data.slice(0, t),
r = o.length - Ye(o).length;
hh(e, t - r, r, n);
},
yh = (e, t, n, o, r = !0) => {
const s = Ye(e.data).length,
a = r ? e : t,
i = r ? t : e;
return r ? a.appendData(i.data) : a.insertData(0, i.data), Eo(Cn(i)), o && bh(a, s, n), a;
},
Ch = (e, t) =>
((e, t) => {
const n = e.container(),
o = e.offset();
return !Ji.isTextPosition(e) && n === t.parentNode && o > Ji.before(t).offset();
})(t, e)
? Ji(t.container(), t.offset() - 1)
: t,
wh = e => {
return Pi(e.previousSibling)
? I.some(((t = e.previousSibling), dr(t) ? Ji(t, t.data.length) : Ji.after(t)))
: e.previousSibling
? Vu(e.previousSibling)
: I.none();
var t;
},
xh = e => {
return Pi(e.nextSibling)
? I.some(((t = e.nextSibling), dr(t) ? Ji(t, 0) : Ji.before(t)))
: e.nextSibling
? $u(e.nextSibling)
: I.none();
var t;
},
Eh = (e, t, n) =>
((e, t, n) =>
e
? ((e, t) =>
xh(t)
.orThunk(() => wh(t))
.orThunk(() => ((e, t) => ju(e, Ji.after(t)).orThunk(() => Hu(e, Ji.before(t))))(e, t)))(t, n)
: ((e, t) =>
wh(t)
.orThunk(() => xh(t))
.orThunk(() =>
((e, t) =>
I.from(t.previousSibling ? t.previousSibling : t.parentNode)
.bind(t => Hu(e, Ji.before(t)))
.orThunk(() => ju(e, Ji.after(t))))(e, t)
))(t, n))(e, t, n).map(T(Ch, n)),
kh = (e, t, n) => {
n.fold(
() => {
e.focus();
},
n => {
e.selection.setRng(n.toRange(), t);
}
);
},
_h = (e, t) => t && ke(e.schema.getBlockElements(), $t(t)),
Sh = (e, t, n, o = !0, r = !1) => {
const s = Eh(t, e.getBody(), n.dom),
a = Qn(n, T(_h, e), ((i = e.getBody()), e => e.dom === i));
var i;
const l = ((e, t, n, o) => {
const r = Pn(e).filter(Yt),
s = Dn(e).filter(Yt);
return (
Eo(e),
((a = r),
(i = s),
(l = t),
(d = (e, t, r) => {
const s = e.dom,
a = t.dom,
i = s.data.length;
return yh(s, a, n, o), r.container() === a ? Ji(s, i) : r;
}),
a.isSome() && i.isSome() && l.isSome()
? I.some(d(a.getOrDie(), i.getOrDie(), l.getOrDie()))
: I.none()).orThunk(() => (o && (r.each(e => vh(e.dom, e.dom.length, n)), s.each(e => bh(e.dom, 0, n))), t))
);
var a, i, l, d;
})(n, s, e.schema, ((e, t) => ke(e.schema.getTextInlineElements(), $t(t)))(e, n));
e.dom.isEmpty(e.getBody())
? (e.setContent(""), e.selection.setCursorLocation())
: a
.bind(t =>
((e, t, n) => {
if (Tr(e, t)) {
const e = bn('
');
return (
n
? q(In(t), e => {
Hm(e) || Eo(e);
})
: xo(t),
yo(t, e),
I.some(Ji.before(e.dom))
);
}
return I.none();
})(e.schema, t, r)
)
.fold(
() => {
o && kh(e, t, l);
},
n => {
o && kh(e, t, I.some(n));
}
);
},
Nh = /[\u0591-\u07FF\uFB1D-\uFDFF\uFE70-\uFEFC]/,
Rh = (e, t) => En(Cn(t), vd(e)) && !Zr(e.schema, t) && e.dom.isEditable(t),
Ah = e => {
var t;
return (
"rtl" === fa.DOM.getStyle(e, "direction", !0) ||
(e => Nh.test(e))(null !== (t = e.textContent) && void 0 !== t ? t : "")
);
},
Th = (e, t, n) => {
const o = ((e, t, n) => Y(fa.DOM.getParents(n.container(), "*", t), e))(e, t, n);
return I.from(o[o.length - 1]);
},
Oh = (e, t) => {
const n = t.container(),
o = t.offset();
return e
? si(n)
? dr(n.nextSibling)
? Ji(n.nextSibling, 0)
: Ji.after(n)
: li(t)
? Ji(n, o + 1)
: t
: si(n)
? dr(n.previousSibling)
? Ji(n.previousSibling, n.previousSibling.data.length)
: Ji.before(n)
: di(t)
? Ji(n, o - 1)
: t;
},
Bh = T(Oh, !0),
Ph = T(Oh, !1),
Dh = (e, t) => {
const n = e => e.stopImmediatePropagation();
e.on("beforeinput input", n, !0), e.getDoc().execCommand(t), e.off("beforeinput input", n);
},
Lh = e => Dh(e, "Delete"),
Mh = e => qa(e) || Ka(e),
Ih = (e, t) =>
Sn(e, t)
? Jn(
t,
Mh,
(
e => t =>
Lt(Tn(t), e, _n)
)(e)
)
: I.none(),
Fh = (e, t = !0) => {
e.dom.isEmpty(e.getBody()) && e.setContent("", {no_selection: !t});
},
Uh = (e, t, n) =>
It($u(n), Vu(n), (o, r) => {
const s = Oh(!0, o),
a = Oh(!1, r),
i = Oh(!1, t);
return e
? ju(n, i).exists(e => e.isEqual(a) && t.isEqual(s))
: Hu(n, i).exists(e => e.isEqual(s) && t.isEqual(a));
}).getOr(!0),
zh = e => {
var t;
return (8 === Vt((t = e)) || "#comment" === $t(t) ? Pn(e) : zn(e)).bind(zh).orThunk(() => I.some(e));
},
jh = (e, t, n, o = !0) => {
var r;
t.deleteContents();
const s = zh(n).getOr(n),
a = Cn(null !== (r = e.dom.getParent(s.dom, e.dom.isBlock)) && void 0 !== r ? r : n.dom);
if (
(a.dom === e.getBody()
? Fh(e, o)
: Tr(e.schema, a, {checkRootAsContent: !1}) && (Qa(a), o && e.selection.setCursorLocation(a.dom, 0)),
!_n(n, a))
) {
const t = Lt(Tn(a), n)
? []
: Tn((i = a))
.map(In)
.map(e => Y(e, e => !_n(i, e)))
.getOr([]);
q(t.concat(In(n)), t => {
_n(t, a) || Sn(t, a) || !Tr(e.schema, t) || Eo(t);
});
}
var i;
},
Hh = e => zo(e, "td,th"),
$h = (e, t) => fm(Cn(e), t),
Vh = (e, t) => ({start: e, end: t}),
qh = kl([
{singleCellTable: ["rng", "cell"]},
{fullTable: ["table"]},
{partialTable: ["cells", "outsideDetails"]},
{multiTable: ["startTableCells", "endTableCells", "betweenRng"]}
]),
Wh = (e, t) => oo(Cn(e), "td,th", t),
Kh = e => !_n(e.start, e.end),
Yh = (e, t) => fm(e.start, t).bind(n => fm(e.end, t).bind(e => Ft(_n(n, e), n))),
Gh = e => t => Yh(t, e).map(e => ((e, t, n) => ({rng: e, table: t, cells: n}))(t, e, Hh(e))),
Xh = (e, t, n, o) => {
if (n.collapsed || !e.forall(Kh)) return I.none();
if (t.isSameTable) {
const t = e.bind(Gh(o));
return I.some({start: t, end: t});
}
{
const e = Wh(n.startContainer, o),
t = Wh(n.endContainer, o),
r = e
.bind(
(
e => t =>
fm(t, e).bind(e => de(Hh(e)).map(e => Vh(t, e)))
)(o)
)
.bind(Gh(o)),
s = t
.bind(
(
e => t =>
fm(t, e).bind(e => le(Hh(e)).map(e => Vh(e, t)))
)(o)
)
.bind(Gh(o));
return I.some({start: r, end: s});
}
},
Zh = (e, t) => J(e, e => _n(e, t)),
Qh = e => It(Zh(e.cells, e.rng.start), Zh(e.cells, e.rng.end), (t, n) => e.cells.slice(t, n + 1)),
Jh = (e, t) => {
const {startTable: n, endTable: o} = t,
r = e.cloneRange();
return n.each(e => r.setStartAfter(e.dom)), o.each(e => r.setEndBefore(e.dom)), r;
},
eb = (e, t) => {
const n = (
e => t =>
_n(e, t)
)(e),
o = ((e, t) => {
const n = Wh(e.startContainer, t),
o = Wh(e.endContainer, t);
return It(n, o, Vh);
})(t, n),
r = ((e, t) => {
const n = $h(e.startContainer, t),
o = $h(e.endContainer, t),
r = n.isSome(),
s = o.isSome(),
a = It(n, o, _n).getOr(!1);
return (e =>
It(e.startTable, e.endTable, (t, n) => {
const o = $o(t, e => _n(e, n)),
r = $o(n, e => _n(e, t));
return o || r
? {
...e,
startTable: o ? I.none() : e.startTable,
endTable: r ? I.none() : e.endTable,
isSameTable: !1,
isMultiTable: !1
}
: e;
}).getOr(e))({
startTable: n,
endTable: o,
isStartInTable: r,
isEndInTable: s,
isSameTable: a,
isMultiTable: !a && r && s
});
})(t, n);
return ((e, t, n) =>
e.exists(
e =>
((e, t) =>
!Kh(e) &&
Yh(e, t).exists(e => {
const t = e.dom.rows;
return 1 === t.length && 1 === t[0].cells.length;
}))(e, n) && hm(e.start, t)
))(o, t, n)
? o.map(e => qh.singleCellTable(t, e.start))
: r.isMultiTable
? ((e, t, n, o) =>
Xh(e, t, n, o).bind(({start: e, end: o}) => {
const r = e.bind(Qh).getOr([]),
s = o.bind(Qh).getOr([]);
if (r.length > 0 && s.length > 0) {
const e = Jh(n, t);
return I.some(qh.multiTable(r, s, e));
}
return I.none();
}))(o, r, t, n)
: ((e, t, n, o) =>
Xh(e, t, n, o)
.bind(({start: e, end: t}) => e.or(t))
.bind(e => {
const {isSameTable: o} = t,
r = Qh(e).getOr([]);
if (o && e.cells.length === r.length) return I.some(qh.fullTable(e.table));
if (r.length > 0) {
if (o) return I.some(qh.partialTable(r, I.none()));
{
const e = Jh(n, t);
return I.some(qh.partialTable(r, I.some({...t, rng: e})));
}
}
return I.none();
}))(o, r, t, n);
},
tb = e =>
q(e, e => {
rn(e, "contenteditable"), Qa(e);
}),
nb = (e, t, n, o) => {
const r = n.cloneRange();
o
? (r.setStart(n.startContainer, n.startOffset), r.setEndAfter(t.dom.lastChild))
: (r.setStartBefore(t.dom.firstChild), r.setEnd(n.endContainer, n.endOffset)),
ab(e, r, t, !1).each(e => e());
},
ob = e => {
const t = mm(e),
n = Cn(e.selection.getNode());
yr(n.dom) && Tr(e.schema, n) ? e.selection.setCursorLocation(n.dom, 0) : e.selection.collapse(!0),
t.length > 1 && $(t, e => _n(e, n)) && Jt(n, "data-mce-selected", "1");
},
rb = (e, t, n) =>
I.some(() => {
const o = e.selection.getRng(),
r = n
.bind(({rng: n, isStartInTable: r}) => {
const s = ((e, t) => I.from(e.dom.getParent(t, e.dom.isBlock)).map(Cn))(
e,
r ? n.endContainer : n.startContainer
);
n.deleteContents(),
((e, t, n) => {
n.each(n => {
t ? Eo(n) : (Qa(n), e.selection.setCursorLocation(n.dom, 0));
});
})(e, r, s.filter(T(Tr, e.schema)));
const a = r ? t[0] : t[t.length - 1];
return nb(e, a, o, r), Tr(e.schema, a) ? I.none() : I.some(r ? t.slice(1) : t.slice(0, -1));
})
.getOr(t);
tb(r), ob(e);
}),
sb = (e, t, n, o) =>
I.some(() => {
const r = e.selection.getRng(),
s = t[0],
a = n[n.length - 1];
nb(e, s, r, !0), nb(e, a, r, !1);
const i = Tr(e.schema, s) ? t : t.slice(1),
l = Tr(e.schema, a) ? n : n.slice(0, -1);
tb(i.concat(l)), o.deleteContents(), ob(e);
}),
ab = (e, t, n, o = !0) =>
I.some(() => {
jh(e, t, n, o);
}),
ib = (e, t) => I.some(() => Sh(e, !1, t)),
lb = (e, t) => Q(zp(t, e), Ga),
db = (e, t) => Q(zp(t, e), Zt("caption")),
cb = (e, t) =>
I.some(() => {
Qa(t), e.selection.setCursorLocation(t.dom, 0);
}),
ub = (e, t) => (e ? Lp(t) : Mp(t)),
mb = (e, t, n) => {
const o = Cn(e.getBody());
return db(o, n).fold(
() =>
((e, t, n, o) => {
const r = Ji.fromRangeStart(e.selection.getRng());
return lb(n, o).bind(o =>
Tr(e.schema, o, {checkRootAsContent: !1})
? cb(e, o)
: ((e, t, n, o, r) =>
Fu(n, e.getBody(), r).bind(e =>
lb(t, Cn(e.getNode())).bind(e => (_n(e, o) ? I.none() : I.some(k)))
))(e, n, t, o, r)
);
})(e, t, o, n).orThunk(() =>
Ft(
((e, t) => {
const n = Ji.fromRangeStart(e.selection.getRng());
return ub(t, n) || Iu(t, e.getBody(), n).exists(e => ub(t, e));
})(e, t),
k
)
),
n =>
((e, t, n, o) => {
const r = Ji.fromRangeStart(e.selection.getRng());
return Tr(e.schema, o)
? cb(e, o)
: ((e, t, n, o, r) =>
Fu(n, e.getBody(), r).fold(
() => I.some(k),
s =>
((e, t, n, o) =>
$u(e.dom)
.bind(r =>
Vu(e.dom).map(e => (t ? n.isEqual(r) && o.isEqual(e) : n.isEqual(e) && o.isEqual(r)))
)
.getOr(!0))(o, n, r, s)
? ((e, t) => cb(e, t))(e, o)
: ((e, t, n) =>
db(e, Cn(n.getNode())).fold(
() => I.some(k),
e => Ft(!_n(e, t), k)
))(t, o, s)
))(e, n, t, o, r);
})(e, t, o, n)
);
},
fb = (e, t) => {
const n = Cn(e.selection.getStart(!0)),
o = mm(e);
return e.selection.isCollapsed() && 0 === o.length
? mb(e, t, n)
: ((e, t, n) => {
const o = Cn(e.getBody()),
r = e.selection.getRng();
return 0 !== n.length
? rb(e, n, I.none())
: ((e, t, n, o) =>
db(t, o).fold(
() => ((e, t, n) => eb(t, n).bind(t => t.fold(T(ab, e), T(ib, e), T(rb, e), T(sb, e))))(e, t, n),
t => ((e, t) => cb(e, t))(e, t)
))(e, o, r, t);
})(e, n, o);
},
gb = (e, t) => {
let n = t;
for (; n && n !== e; ) {
if (br(n) || vr(n)) return n;
n = n.parentNode;
}
return null;
},
pb = ["data-ephox-", "data-mce-", "data-alloy-", "data-snooker-", "_"],
hb = Dt.each,
bb = e => {
const t = e.dom,
n = new Set(e.serializer.getTempAttrs()),
o = e => $(pb, t => $e(e, t)) || n.has(e);
return {
compare: (e, n) => {
if (e.nodeName !== n.nodeName || e.nodeType !== n.nodeType) return !1;
const r = e => {
const n = {};
return (
hb(t.getAttribs(e), r => {
const s = r.nodeName.toLowerCase();
"style" === s || o(s) || (n[s] = t.getAttrib(e, s));
}),
n
);
},
s = (e, t) => {
for (const n in e)
if (ke(e, n)) {
const o = t[n];
if (v(o)) return !1;
if (e[n] !== o) return !1;
delete t[n];
}
for (const e in t) if (ke(t, e)) return !1;
return !0;
};
if (er(e) && er(n)) {
if (!s(r(e), r(n))) return !1;
if (!s(t.parseStyle(t.getAttrib(e, "style")), t.parseStyle(t.getAttrib(n, "style")))) return !1;
}
return !sm(e) && !sm(n);
},
isAttributeInternal: o
};
},
vb = e => ["h1", "h2", "h3", "h4", "h5", "h6"].includes(e.name),
yb = (e, t, n, o) => {
const r = n.name;
for (let t = 0, s = e.length; t < s; t++) {
const s = e[t];
if (s.name === r) {
const e = o.nodes[r];
e ? e.nodes.push(n) : (o.nodes[r] = {filter: s, nodes: [n]});
}
}
if (n.attributes)
for (let e = 0, r = t.length; e < r; e++) {
const r = t[e],
s = r.name;
if (s in n.attributes.map) {
const e = o.attributes[s];
e ? e.nodes.push(n) : (o.attributes[s] = {filter: r, nodes: [n]});
}
}
},
Cb = (e, t) => {
const n = (e, n) => {
pe(e, e => {
const o = ce(e.nodes);
q(e.filter.callbacks, r => {
for (let t = o.length - 1; t >= 0; t--) {
const r = o[t];
((n ? void 0 !== r.attr(e.filter.name) : r.name === e.filter.name) && !y(r.parent)) || o.splice(t, 1);
}
o.length > 0 && r(o, e.filter.name, t);
});
});
};
n(e.nodes, !1), n(e.attributes, !0);
},
wb = (e, t, n, o = {}) => {
const r = ((e, t, n) => {
const o = {nodes: {}, attributes: {}};
return (
n.firstChild &&
((n, r) => {
let s = n;
for (; (s = s.walk()); ) yb(e, t, s, o);
})(n),
o
);
})(e, t, n);
Cb(r, o);
},
xb = (e, t, n, o) => {
if ((e.pad_empty_with_br || t.insert) && n(o)) {
const e = new ep("br", 1);
t.insert && e.attr("data-mce-bogus", "1"), o.empty().append(e);
} else o.empty().append(new ep("#text", 3)).value = Wo;
},
Eb = (e, t) => {
const n = null == e ? void 0 : e.firstChild;
return C(n) && n === e.lastChild && n.name === t;
},
kb = (e, t, n, o) =>
o.isEmpty(t, n, t =>
((e, t) => {
const n = e.getElementRule(t.name);
return !0 === (null == n ? void 0 : n.paddEmpty);
})(e, t)
),
_b = e => {
let t;
for (let n = e; n; n = n.parent) {
const e = n.attr("contenteditable");
if ("false" === e) break;
"true" === e && (t = n);
}
return I.from(t);
},
Sb = (e, t, n = e.parent) => {
if (t.getSpecialElements()[e.name]) e.empty().remove();
else {
const o = e.children();
for (const e of o) n && !t.isValidChild(n.name, e.name) && Sb(e, t, n);
e.unwrap();
}
},
Nb = (e, t, n, o = k) => {
const r = t.getTextBlockElements(),
s = t.getNonEmptyElements(),
a = t.getWhitespaceElements(),
i = Dt.makeMap("tr,td,th,tbody,thead,tfoot,table,summary"),
l = new Set(),
d = e => e !== n && !i[e.name];
for (let n = 0; n < e.length; n++) {
const i = e[n];
let c, u, m;
if (!i.parent || l.has(i)) continue;
if (r[i.name] && "li" === i.parent.name) {
let e = i.next;
for (; e && r[e.name]; ) (e.name = "li"), l.add(e), i.parent.insert(e, i.parent), (e = e.next);
i.unwrap();
continue;
}
const f = [i];
for (c = i.parent; c && !t.isValidChild(c.name, i.name) && d(c); c = c.parent) f.push(c);
if (c && f.length > 1)
if (Rb(t, i, c)) Sb(i, t);
else {
f.reverse(), (u = f[0].clone()), o(u);
let e = u;
for (let n = 0; n < f.length - 1; n++) {
t.isValidChild(e.name, f[n].name) && n > 0 ? ((m = f[n].clone()), o(m), e.append(m)) : (m = e);
for (let e = f[n].firstChild; e && e !== f[n + 1]; ) {
const t = e.next;
m.append(e), (e = t);
}
e = m;
}
kb(t, s, a, u) ? c.insert(i, f[0], !0) : (c.insert(u, f[0], !0), c.insert(i, u)),
(c = f[0]),
(kb(t, s, a, c) || Eb(c, "br")) && c.empty().remove();
}
else if (i.parent) {
if ("li" === i.name) {
let e = i.prev;
if (e && ("ul" === e.name || "ol" === e.name)) {
e.append(i);
continue;
}
if (((e = i.next), e && ("ul" === e.name || "ol" === e.name) && e.firstChild)) {
e.insert(i, e.firstChild, !0);
continue;
}
const t = new ep("ul", 1);
o(t), i.wrap(t);
continue;
}
if (t.isValidChild(i.parent.name, "div") && t.isValidChild("div", i.name)) {
const e = new ep("div", 1);
o(e), i.wrap(e);
} else Sb(i, t);
}
}
},
Rb = (e, t, n = t.parent) =>
!(
!n ||
((!e.children[t.name] || e.isValidChild(n.name, t.name)) &&
("a" !== t.name ||
!((e, t) => {
let n = e;
for (; n; ) {
if ("a" === n.name) return !0;
n = n.parent;
}
return !1;
})(n)) &&
(!(e => "summary" === e.name)(n) ||
!vb(t) ||
((null == n ? void 0 : n.firstChild) === t && (null == n ? void 0 : n.lastChild) === t)))
),
Ab = e =>
e.collapsed
? e
: (e => {
const t = Ji.fromRangeStart(e),
n = Ji.fromRangeEnd(e),
o = e.commonAncestorContainer;
return Iu(!1, o, n)
.map(r =>
!du(t, n, o) && du(t, r, o)
? ((e, t, n, o) => {
const r = document.createRange();
return r.setStart(e, t), r.setEnd(n, o), r;
})(t.container(), t.offset(), r.container(), r.offset())
: e
)
.getOr(e);
})(e),
Tb = (e, t) => {
let n = t.firstChild,
o = t.lastChild;
return (
n && "meta" === n.name && (n = n.next),
o && "mce_marker" === o.attr("id") && (o = o.prev),
((e, t) => {
const n = e.getNonEmptyElements();
return (
C(t) &&
(t.isEmpty(n) ||
((e, t) =>
e.getBlockElements()[t.name] &&
(e => C(e.firstChild) && e.firstChild === e.lastChild)(t) &&
(e => "br" === e.name || e.value === Wo)(t.firstChild))(e, t))
);
})(e, o) && (o = null == o ? void 0 : o.prev),
!(!n || n !== o || ("ul" !== n.name && "ol" !== n.name))
);
},
Ob = e => {
return e.length > 0 &&
(!(n = e[e.length - 1]).firstChild ||
(C(null == (t = n) ? void 0 : t.firstChild) &&
t.firstChild === t.lastChild &&
(e => e.data === Wo || pr(e))(t.firstChild)))
? e.slice(0, -1)
: e;
var t, n;
},
Bb = (e, t) => {
const n = e.getParent(t, e.isBlock);
return n && "LI" === n.nodeName ? n : null;
},
Pb = (e, t) => {
const n = Ji.after(e),
o = Pu(t).prev(n);
return o ? o.toRange() : null;
},
Db = (e, t, n, o) => {
const r = ((e, t, n) => {
const o = t.serialize(n);
return (e => {
var t, n;
const o = e.firstChild,
r = e.lastChild;
return (
o && "META" === o.nodeName && (null === (t = o.parentNode) || void 0 === t || t.removeChild(o)),
r && "mce_marker" === r.id && (null === (n = r.parentNode) || void 0 === n || n.removeChild(r)),
e
);
})(e.createFragment(o));
})(t, e, o),
s = Bb(t, n.startContainer),
a = Ob(
((i = r.firstChild),
Y(null !== (l = null == i ? void 0 : i.childNodes) && void 0 !== l ? l : [], e => "LI" === e.nodeName))
);
var i, l;
const d = t.getRoot(),
c = e => {
const o = Ji.fromRangeStart(n),
r = Pu(t.getRoot()),
a = 1 === e ? r.prev(o) : r.next(o),
i = null == a ? void 0 : a.getNode();
return !i || Bb(t, i) !== s;
};
return s
? c(1)
? ((e, t, n) => {
const o = e.parentNode;
return (
o &&
Dt.each(t, t => {
o.insertBefore(t, e);
}),
((e, t) => {
const n = Ji.before(e),
o = Pu(t).next(n);
return o ? o.toRange() : null;
})(e, n)
);
})(s, a, d)
: c(2)
? ((e, t, n, o) => (o.insertAfter(t.reverse(), e), Pb(t[0], n)))(s, a, d, t)
: ((e, t, n, o) => {
const r = ((e, t) => {
const n = t.cloneRange(),
o = t.cloneRange();
return n.setStartBefore(e), o.setEndAfter(e), [n.cloneContents(), o.cloneContents()];
})(e, o),
s = e.parentNode;
return (
s &&
(s.insertBefore(r[0], e),
Dt.each(t, t => {
s.insertBefore(t, e);
}),
s.insertBefore(r[1], e),
s.removeChild(e)),
Pb(t[t.length - 1], n)
);
})(s, a, d, n)
: null;
},
Lb = ["pre"],
Mb = yr,
Ib = (e, t, n) => {
var o, r;
const s = e.selection,
a = e.dom,
i = e.parser,
l = n.merge,
d = yp({validate: !0}, e.schema),
c = '';
n.preserve_zwsp || (t = ti(t)),
-1 === t.indexOf("{$caret}") && (t += "{$caret}"),
(t = t.replace(/\{\$caret\}/, c));
let u = s.getRng();
const m = u.startContainer,
f = e.getBody();
m === f &&
s.isCollapsed() &&
a.isBlock(f.firstChild) &&
((e, t) => C(t) && !e.schema.getVoidElements()[t.nodeName])(e, f.firstChild) &&
a.isEmpty(f.firstChild) &&
((u = a.createRng()), u.setStart(f.firstChild, 0), u.setEnd(f.firstChild, 0), s.setRng(u)),
s.isCollapsed() ||
(e => {
const t = e.dom,
n = Ab(e.selection.getRng());
e.selection.setRng(n);
const o = t.getParent(n.startContainer, Mb);
((e, t, n) => !!C(n) && n === e.getParent(t.endContainer, Mb) && hm(Cn(n), t))(t, n, o)
? ab(e, n, Cn(o))
: n.startContainer === n.endContainer &&
n.endOffset - n.startOffset == 1 &&
dr(n.startContainer.childNodes[n.startOffset])
? n.deleteContents()
: e.getDoc().execCommand("Delete", !1);
})(e);
const g = s.getNode(),
p = {context: g.nodeName.toLowerCase(), data: n.data, insert: !0},
h = i.parse(t, p);
if (!0 === n.paste && Tb(e.schema, h) && ((e, t) => !!Bb(e, t))(a, g))
return (u = Db(d, a, s.getRng(), h)), u && s.setRng(u), t;
!0 === n.paste &&
((e, t, n, o) => {
var r;
const s = t.firstChild,
a = t.lastChild,
i = s === ("bookmark" === a.attr("data-mce-type") ? a.prev : a),
l = H(Lb, s.name);
if (i && l) {
const t = "false" !== s.attr("contenteditable"),
a =
(null === (r = e.getParent(n, e.isBlock)) || void 0 === r ? void 0 : r.nodeName.toLowerCase()) ===
s.name,
i = I.from(gb(o, n)).forall(br);
return t && a && i;
}
return !1;
})(a, h, g, e.getBody()) &&
(null === (o = h.firstChild) || void 0 === o || o.unwrap()),
(e => {
let t = e;
for (; (t = t.walk()); ) 1 === t.type && t.attr("data-mce-fragment", "1");
})(h);
let b = h.lastChild;
if (b && "mce_marker" === b.attr("id")) {
const t = b;
for (b = b.prev; b; b = b.walk(!0))
if (3 === b.type || !a.isBlock(b.name)) {
b.parent && e.schema.isValidChild(b.parent.name, "span") && b.parent.insert(t, b, "br" === b.name);
break;
}
}
if (
(e._selectionOverrides.showBlockCaretContainer(g),
p.invalid ||
((e, t, n) => {
var o;
return (
$(n.children(), vb) &&
"SUMMARY" === (null === (o = e.getParent(t, e.isBlock)) || void 0 === o ? void 0 : o.nodeName)
);
})(a, g, h))
) {
e.selection.setContent(c);
let n,
o = s.getNode();
const l = e.getBody();
for (fr(o) ? (o = n = l) : (n = o); n && n !== l; ) (o = n), (n = n.parentNode);
t = o === l ? l.innerHTML : a.getOuterHTML(o);
const u = i.parse(t),
m = (e => {
for (let t = e; t; t = t.walk()) if ("mce_marker" === t.attr("id")) return I.some(t);
return I.none();
})(u),
f = m.bind(_b).getOr(u);
m.each(e => e.replace(h));
const g = h.children(),
p = null !== (r = h.parent) && void 0 !== r ? r : u;
h.unwrap();
const b = Y(g, t => Rb(e.schema, t, p));
Nb(b, e.schema, f),
wb(i.getNodeFilters(), i.getAttributeFilters(), u),
(t = d.serialize(u)),
o === l ? a.setHTML(l, t) : a.setOuterHTML(o, t);
} else
(t = d.serialize(h)),
((e, t, n) => {
var o;
if ("all" === n.getAttribute("data-mce-bogus"))
null === (o = n.parentNode) || void 0 === o || o.insertBefore(e.dom.createFragment(t), n);
else {
const o = n.firstChild,
r = n.lastChild;
!o || (o === r && "BR" === o.nodeName) ? e.dom.setHTML(n, t) : e.selection.setContent(t, {no_events: !0});
}
})(e, t, g);
var v;
return (
((e, t) => {
const n = e.schema.getTextInlineElements(),
o = e.dom;
if (t) {
const t = e.getBody(),
r = bb(e);
Dt.each(o.select("*[data-mce-fragment]"), e => {
if (C(n[e.nodeName.toLowerCase()]) && ((e, t) => ne(xp(e, t), e => !(e => Cp.has(e))(e)))(o, e))
for (let n = e.parentElement; C(n) && n !== t && !Ep(o, e, n); n = n.parentElement)
if (r.compare(n, e)) {
o.remove(e, !0);
break;
}
});
}
})(e, l),
((e, t) => {
var n, o, r;
let s;
const a = e.dom,
i = e.selection;
if (!t) return;
i.scrollIntoView(t);
const l = gb(e.getBody(), t);
if (l && "false" === a.getContentEditable(l)) return a.remove(t), void i.select(l);
let d = a.createRng();
const c = t.previousSibling;
if (dr(c)) {
d.setStart(
c,
null !== (o = null === (n = c.nodeValue) || void 0 === n ? void 0 : n.length) && void 0 !== o ? o : 0
);
const e = t.nextSibling;
dr(e) && (c.appendData(e.data), null === (r = e.parentNode) || void 0 === r || r.removeChild(e));
} else d.setStartBefore(t), d.setEndBefore(t);
const u = a.getParent(t, a.isBlock);
if ((a.remove(t), u && a.isEmpty(u))) {
const t = Mb(u);
xo(Cn(u)),
d.setStart(u, 0),
d.setEnd(u, 0),
t ||
(e => !!e.getAttribute("data-mce-fragment"))(u) ||
!(s = (t => {
let n = Ji.fromRangeStart(t);
return (n = Pu(e.getBody()).next(n)), null == n ? void 0 : n.toRange();
})(d))
? a.add(u, a.create("br", t ? {} : {"data-mce-bogus": "1"}))
: ((d = s), a.remove(u));
}
i.setRng(d);
})(e, a.get("mce_marker")),
(v = e.getBody()),
Dt.each(v.getElementsByTagName("*"), e => {
e.removeAttribute("data-mce-fragment");
}),
((e, t, n) => {
I.from(e.getParent(t, "td,th"))
.map(Cn)
.each(e =>
((e, t) => {
zn(e).each(n => {
Pn(n).each(o => {
t.isBlock($t(e)) && Va(n) && t.isBlock($t(o)) && Eo(n);
});
});
})(e, n)
);
})(a, s.getStart(), e.schema),
((e, t, n) => {
const o = Bn(Cn(n), e => _n(e, Cn(t)));
ie(o, o.length - 2)
.filter(Kt)
.fold(
() => Wr(e, t),
t => Wr(e, t.dom)
);
})(e.schema, e.getBody(), s.getStart()),
t
);
},
Fb = e => e instanceof ep,
Ub = (e, t, n) => {
e.dom.setHTML(e.getBody(), t),
!0 !== n &&
(e => {
jg(e) &&
$u(e.getBody()).each(t => {
const n = t.getNode(),
o = ar(n) ? $u(n).getOr(t) : t;
e.selection.setRng(o.toRange());
});
})(e);
},
zb = e => (w(e) ? e : L),
jb = (e, t, n) => {
const o = t(e),
r = zb(n);
return o.orThunk(() =>
r(e)
? I.none()
: ((e, t, n) => {
let o = e.dom;
const r = zb(n);
for (; o.parentNode; ) {
o = o.parentNode;
const e = Cn(o),
n = t(e);
if (n.isSome()) return n;
if (r(e)) break;
}
return I.none();
})(e, t, r)
);
},
Hb = Om,
$b = (e, t, n) => {
const o = e.formatter.get(n);
if (o)
for (let n = 0; n < o.length; n++) {
const r = o[n];
if (Fm(r) && !1 === r.inherit && e.dom.is(t, r.selector)) return !0;
}
return !1;
},
Vb = (e, t, n, o, r) => {
const s = e.dom.getRoot();
if (t === s) return !1;
const a = e.dom.getParent(t, t => !!$b(e, t, n) || t.parentNode === s || !!Kb(e, t, n, o, !0));
return !!Kb(e, a, n, o, r);
},
qb = (e, t, n) =>
!(!Um(n) || !Hb(t, n.inline)) || !(!Im(n) || !Hb(t, n.block)) || (!!Fm(n) && er(t) && e.is(t, n.selector)),
Wb = (e, t, n, o, r, s) => {
const a = n[o],
i = "attributes" === o;
if (w(n.onmatch)) return n.onmatch(t, n, o);
if (a)
if (Ne(a)) {
for (let n = 0; n < a.length; n++) if (i ? e.getAttrib(t, a[n]) : Pm(e, t, a[n])) return !0;
} else
for (const o in a)
if (ke(a, o)) {
const l = i ? e.getAttrib(t, o) : Pm(e, t, o),
d = Tm(a[o], s),
c = y(l) || Xe(l);
if (c && y(d)) continue;
if (r && c && !n.exact) return !1;
if ((!r || n.exact) && !Hb(l, Bm(d, o))) return !1;
}
return !0;
},
Kb = (e, t, n, o, r) => {
const s = e.formatter.get(n),
a = e.dom;
if (s && er(t))
for (let n = 0; n < s.length; n++) {
const i = s[n];
if (qb(e.dom, t, i) && Wb(a, t, i, "attributes", r, o) && Wb(a, t, i, "styles", r, o)) {
const n = i.classes;
if (n) for (let r = 0; r < n.length; r++) if (!e.dom.hasClass(t, Tm(n[r], o))) return;
return i;
}
}
},
Yb = (e, t, n, o, r) => {
if (o) return Vb(e, o, t, n, r);
if (((o = e.selection.getNode()), Vb(e, o, t, n, r))) return !0;
const s = e.selection.getStart();
return !(s === o || !Vb(e, s, t, n, r));
},
Gb = Ja,
Xb = e => {
if (e) {
const t = new Vo(e, e);
for (let e = t.current(); e; e = t.next()) if (dr(e)) return e;
}
return null;
},
Zb = e => {
const t = vn("span");
return en(t, {id: qu, "data-mce-bogus": "1", "data-mce-type": "format-caret"}), e && yo(t, yn(Gb)), t;
},
Qb = (e, t, n) => {
const o = e.dom,
r = e.selection;
if (jm(t)) Sh(e, !1, Cn(t), n, !0);
else {
const e = r.getRng(),
n = o.getParent(t, o.isBlock),
s = e.startContainer,
a = e.startOffset,
i = e.endContainer,
l = e.endOffset,
d = (e => {
const t = Xb(e);
return t && t.data.charAt(0) === Gb && t.deleteData(0, 1), t;
})(t);
o.remove(t, !0),
s === d && a > 0 && e.setStart(d, a - 1),
i === d && l > 0 && e.setEnd(d, l - 1),
n && o.isEmpty(n) && Qa(Cn(n)),
r.setRng(e);
}
},
Jb = (e, t, n) => {
const o = e.dom,
r = e.selection;
if (t) Qb(e, t, n);
else if (!(t = Ku(e.getBody(), r.getStart()))) for (; (t = o.get(qu)); ) Qb(e, t, n);
},
ev = (e, t) => (e.appendChild(t), t),
tv = (e, t) => {
var n;
const o = G(e, (e, t) => ev(e, t.cloneNode(!1)), t),
r = null !== (n = o.ownerDocument) && void 0 !== n ? n : document;
return ev(o, r.createTextNode(Gb));
},
nv = (e, t, n, o) => {
const a = e.dom,
i = e.selection;
let l = !1;
const d = e.formatter.get(t);
if (!d) return;
const c = i.getRng(),
u = c.startContainer,
m = c.startOffset;
let f = u;
dr(u) && (m !== u.data.length && (l = !0), (f = f.parentNode));
const g = [];
let h;
for (; f; ) {
if (Kb(e, f, t, n, o)) {
h = f;
break;
}
f.nextSibling && (l = !0), g.push(f), (f = f.parentNode);
}
if (h)
if (l) {
const r = i.getBookmark();
c.collapse(!0);
let s = of(a, c, d, !0);
(s = Zf(s)), e.formatter.remove(t, n, s, o), i.moveToBookmark(r);
} else {
const l = Ku(e.getBody(), h),
d = C(l) ? a.getParents(h.parentNode, M, l) : [],
c = Zb(!1).dom;
((e, t, n) => {
var o, r;
const s = e.dom,
a = s.getParent(n, T(Sm, e.schema));
a && s.isEmpty(a)
? null === (o = n.parentNode) || void 0 === o || o.replaceChild(t, n)
: ((e => {
const t = zo(e, "br"),
n = Y(
(e => {
const t = [];
let n = e.dom;
for (; n; ) t.push(Cn(n)), (n = n.lastChild);
return t;
})(e).slice(-1),
Va
);
t.length === n.length && q(n, Eo);
})(Cn(n)),
s.isEmpty(n)
? null === (r = n.parentNode) || void 0 === r || r.replaceChild(t, n)
: s.insertAfter(t, n));
})(e, c, null != l ? l : h);
const u = ((e, t, n, o, a, i) => {
const l = e.formatter,
d = e.dom,
c = Y(fe(l.get()), e => e !== o && !He(e, "removeformat")),
u = ((e, t, n) =>
X(
n,
(n, o) => {
const r = ((e, t) =>
Mm(e, t, e => {
const t = e => w(e) || (e.length > 1 && "%" === e.charAt(0));
return $(["styles", "attributes"], n =>
Ee(e, n).exists(e => {
const n = p(e) ? e : xe(e);
return $(n, t);
})
);
}))(e, o);
return e.formatter.matchNode(t, o, {}, r) ? n.concat([o]) : n;
},
[]
))(e, n, c);
if (
Y(
u,
t =>
!((e, t, n) => {
const o = ["inline", "block", "selector", "attributes", "styles", "classes"],
a = e => Ce(e, (e, t) => $(o, e => e === t));
return Mm(e, t, t => {
const o = a(t);
return Mm(e, n, e => {
const t = a(e);
return ((e, t, n = s) => r(n).eq(e, t))(o, t);
});
});
})(e, t, o)
).length > 0
) {
const e = n.cloneNode(!1);
return d.add(t, e), l.remove(o, a, e, i), d.remove(e), I.some(e);
}
return I.none();
})(e, c, h, t, n, o),
m = tv([...g, ...u.toArray(), ...d], c);
l && Qb(e, l, C(l)), i.setCursorLocation(m, 1), a.isEmpty(h) && a.remove(h);
}
},
ov = e => {
const t = Zb(!1),
n = tv(e, t.dom);
return {caretContainer: t, caretPosition: Ji(n, 0)};
},
rv = (e, t) => {
const {caretContainer: n, caretPosition: o} = ov(t);
return ho(Cn(e), n), Eo(Cn(e)), o;
},
sv = (e, t) => {
if (Wu(t.dom)) return !1;
const n = e.schema.getTextInlineElements();
return ke(n, $t(t)) && !Wu(t.dom) && !sr(t.dom);
},
av = {},
iv = or(["pre"]);
((e, t) => {
av[e] || (av[e] = []),
av[e].push(e => {
if (!e.selection.getRng().collapsed) {
const t = e.selection.getSelectedBlocks(),
n = Y(
Y(t, iv),
(e => t => {
const n = t.previousSibling;
return iv(n) && H(e, n);
})(t)
);
q(n, e => {
((e, t) => {
const n = Cn(t),
o = Rn(n).dom;
Eo(n), wo(Cn(e), [vn("br", o), vn("br", o), ...In(n)]);
})(e.previousSibling, e);
});
}
});
})("pre");
const lv = ["fontWeight", "fontStyle", "color", "fontSize", "fontFamily"],
dv = (e, t) => {
const n = e.get(t);
return p(n)
? Q(n, e => Um(e) && "span" === e.inline && (e => f(e.styles) && $(fe(e.styles), e => H(lv, e)))(e))
: I.none();
},
cv = (e, t) => Hu(t, Ji.fromRangeStart(e)).isNone(),
uv = (e, t) => !1 === ju(t, Ji.fromRangeEnd(e)).exists(e => !pr(e.getNode()) || ju(t, e).isSome()),
mv = e => t => xr(t) && e.isEditable(t),
fv = e => Y(e.getSelectedBlocks(), mv(e.dom)),
gv = Dt.each,
pv = e => er(e) && !sm(e) && !Wu(e) && !sr(e),
hv = (e, t) => {
for (let n = e; n; n = n[t]) {
if (dr(n) && Ge(n.data)) return e;
if (er(n) && !sm(n)) return n;
}
return e;
},
bv = (e, t, n) => {
const o = bb(e),
r = tr(t) && e.dom.isEditable(t),
s = tr(n) && e.dom.isEditable(n);
if (r && s) {
const r = hv(t, "previousSibling"),
s = hv(n, "nextSibling");
if (o.compare(r, s)) {
for (let e = r.nextSibling; e && e !== s; ) {
const t = e;
(e = e.nextSibling), r.appendChild(t);
}
return (
e.dom.remove(s),
Dt.each(Dt.grep(s.childNodes), e => {
r.appendChild(e);
}),
r
);
}
}
return n;
},
vv = (e, t, n, o) => {
var r;
if (o && !1 !== t.merge_siblings) {
const t = null !== (r = bv(e, _m(o), o)) && void 0 !== r ? r : o;
bv(e, t, _m(t, !0));
}
},
yv = (e, t, n) => {
gv(e.childNodes, e => {
pv(e) && (t(e) && n(e), e.hasChildNodes() && yv(e, t, n));
});
},
Cv = (e, t) => n => !(!n || !Pm(e, n, t)),
wv = (e, t, n) => o => {
e.setStyle(o, t, n),
"" === o.getAttribute("style") && o.removeAttribute("style"),
((e, t) => {
"SPAN" === t.nodeName && 0 === e.getAttribs(t).length && e.remove(t, !0);
})(e, o);
},
xv = kl([{keep: []}, {rename: ["name"]}, {removed: []}]),
Ev = /^(src|href|style)$/,
kv = Dt.each,
_v = Om,
Sv = (e, t, n) => e.isChildOf(t, n) && t !== n && !e.isBlock(n),
Nv = (e, t, n) => {
let o = t[n ? "startContainer" : "endContainer"],
r = t[n ? "startOffset" : "endOffset"];
if (er(o)) {
const e = o.childNodes.length - 1;
!n && r && r--, (o = o.childNodes[r > e ? e : r]);
}
return (
dr(o) && n && r >= o.data.length && (o = new Vo(o, e.getBody()).next() || o),
dr(o) && !n && 0 === r && (o = new Vo(o, e.getBody()).prev() || o),
o
);
},
Rv = (e, t) => {
const n = t ? "firstChild" : "lastChild",
o = e[n];
return (e => /^(TR|TH|TD)$/.test(e.nodeName))(e) && o ? ("TR" === e.nodeName && o[n]) || o : e;
},
Av = (e, t, n, o) => {
var r;
const s = e.create(n, o);
return null === (r = t.parentNode) || void 0 === r || r.insertBefore(s, t), s.appendChild(t), s;
},
Tv = (e, t, n, o, r) => {
const s = Cn(t),
a = Cn(e.create(o, r)),
i = n ? Mn(s) : Ln(s);
return wo(a, i), n ? (ho(s, a), vo(a, s)) : (bo(s, a), yo(a, s)), a.dom;
},
Ov = (e, t, n) => {
const o = t.parentNode;
let r;
const s = e.dom,
a = Wl(e);
Im(n) &&
o === s.getRoot() &&
((n.list_block && _v(t, n.list_block)) ||
q(ce(t.childNodes), t => {
Nm(e, a, t.nodeName.toLowerCase())
? r
? r.appendChild(t)
: ((r = Av(s, t, a)), s.setAttribs(r, Kl(e)))
: (r = null);
})),
((e => Fm(e) && Um(e) && Lt(Ee(e, "mixed"), !0))(n) && !_v(n.inline, t)) || s.remove(t, !0);
},
Bv = (e, t, n) => (x(e) ? {name: t, value: null} : {name: e, value: Tm(t, n)}),
Pv = (e, t) => {
"" === e.getAttrib(t, "style") && (t.removeAttribute("style"), t.removeAttribute("data-mce-style"));
},
Dv = (e, t, n, o, r) => {
let s = !1;
kv(n.styles, (a, i) => {
const {name: l, value: d} = Bv(i, a, o),
c = Bm(d, l);
(n.remove_similar || h(d) || !er(r) || _v(Pm(e, r, l), c)) && e.setStyle(t, l, ""), (s = !0);
}),
s && Pv(e, t);
},
Lv = (e, t, n, o, r) => {
const s = e.dom,
a = bb(e),
i = e.schema;
if (Um(t) && Gr(i, t.inline) && Zr(i, o) && o.parentElement === e.getBody()) return Ov(e, o, t), xv.removed();
if (!t.ceFalseOverride && o && "false" === s.getContentEditableParent(o)) return xv.keep();
if (o && !qb(s, o, t) && !((e, t) => t.links && "A" === e.nodeName)(o, t)) return xv.keep();
const l = o,
d = t.preserve_attributes;
if (Um(t) && "all" === t.remove && p(d)) {
const e = Y(s.getAttribs(l), e => H(d, e.name.toLowerCase()));
if ((s.removeAllAttribs(l), q(e, e => s.setAttrib(l, e.name, e.value)), e.length > 0)) return xv.rename("span");
}
if ("all" !== t.remove) {
Dv(s, l, t, n, r),
kv(t.attributes, (e, o) => {
const {name: a, value: i} = Bv(o, e, n);
if (t.remove_similar || h(i) || !er(r) || _v(s.getAttrib(r, a), i)) {
if ("class" === a) {
const e = s.getAttrib(l, a);
if (e) {
let t = "";
if (
(q(e.split(/\s+/), e => {
/mce\-\w+/.test(e) && (t += (t ? " " : "") + e);
}),
t)
)
return void s.setAttrib(l, a, t);
}
}
if (
(Ev.test(a) && l.removeAttribute("data-mce-" + a),
"style" === a && or(["li"])(l) && "none" === s.getStyle(l, "list-style-type"))
)
return l.removeAttribute(a), void s.setStyle(l, "list-style-type", "none");
"class" === a && l.removeAttribute("className"), l.removeAttribute(a);
}
}),
kv(t.classes, e => {
(e = Tm(e, n)), (er(r) && !s.hasClass(r, e)) || s.removeClass(l, e);
});
const e = s.getAttribs(l);
for (let t = 0; t < e.length; t++) {
const n = e[t].nodeName;
if (!a.isAttributeInternal(n)) return xv.keep();
}
}
return "none" !== t.remove ? (Ov(e, l, t), xv.removed()) : xv.keep();
},
Mv = (e, t, n, o) =>
Lv(e, t, n, o, o).fold(N(o), t => (e.dom.createFragment().appendChild(o), e.dom.rename(o, t)), N(null)),
Iv = (e, t, n, o, r) => {
(o || e.selection.isEditable()) &&
((e, t, n, o, r) => {
const s = e.formatter.get(t),
a = s[0],
i = e.dom,
l = e.selection,
d = o => {
const i = ((e, t, n, o, r) => {
let s;
return (
t.parentNode &&
q(Lm(e.dom, t.parentNode).reverse(), t => {
if (!s && er(t) && "_start" !== t.id && "_end" !== t.id) {
const a = Kb(e, t, n, o, r);
a && !1 !== a.split && (s = t);
}
}),
s
);
})(e, o, t, n, r);
return ((e, t, n, o, r, s, a, i) => {
var l, d;
let c, u;
const m = e.dom;
if (n) {
const s = n.parentNode;
for (let n = o.parentNode; n && n !== s; n = n.parentNode) {
let o = m.clone(n, !1);
for (let n = 0; n < t.length && ((o = Mv(e, t[n], i, o)), null !== o); n++);
o && (c && o.appendChild(c), u || (u = o), (c = o));
}
(a.mixed && m.isBlock(n)) || (o = null !== (l = m.split(n, o)) && void 0 !== l ? l : o),
c &&
u &&
(null === (d = r.parentNode) || void 0 === d || d.insertBefore(c, r),
u.appendChild(r),
Um(a) && vv(e, a, 0, c));
}
return o;
})(e, s, i, o, o, 0, a, n);
},
c = t => $(s, o => Fv(e, o, n, t, t)),
u = t => {
const n = ce(t.childNodes),
o = c(t) || $(s, e => qb(i, t, e)),
r = t.parentNode;
if ((!o && C(r) && zm(a) && c(r), a.deep && n.length)) for (let e = 0; e < n.length; e++) u(n[e]);
q(["underline", "line-through", "overline"], n => {
er(t) &&
e.dom.getStyle(t, "text-decoration") === n &&
t.parentNode &&
Dm(i, t.parentNode) === n &&
Fv(e, {deep: !1, exact: !0, inline: "span", styles: {textDecoration: n}}, void 0, t);
});
},
m = e => {
const t = i.get(e ? "_start" : "_end");
if (t) {
let n = t[e ? "firstChild" : "lastChild"];
return (
(e => sm(e) && er(e) && ("_start" === e.id || "_end" === e.id))(n) &&
(n = n[e ? "firstChild" : "lastChild"]),
dr(n) &&
0 === n.data.length &&
(n = e ? t.previousSibling || t.nextSibling : t.nextSibling || t.previousSibling),
i.remove(t, !0),
n
);
}
return null;
},
f = t => {
let n,
o,
r = of(i, t, s, t.collapsed);
if (a.split) {
if (((r = Zf(r)), (n = Nv(e, r, !0)), (o = Nv(e, r)), n !== o)) {
if (((n = Rv(n, !0)), (o = Rv(o, !1)), Sv(i, n, o))) {
const e = I.from(n.firstChild).getOr(n);
return d(Tv(i, e, !0, "span", {id: "_start", "data-mce-type": "bookmark"})), void m(!0);
}
if (Sv(i, o, n)) {
const e = I.from(o.lastChild).getOr(o);
return d(Tv(i, e, !1, "span", {id: "_end", "data-mce-type": "bookmark"})), void m(!1);
}
(n = Av(i, n, "span", {id: "_start", "data-mce-type": "bookmark"})),
(o = Av(i, o, "span", {id: "_end", "data-mce-type": "bookmark"}));
const e = i.createRng();
e.setStartAfter(n),
e.setEndBefore(o),
rf(i, e, e => {
q(e, e => {
sm(e) || sm(e.parentNode) || d(e);
});
}),
d(n),
d(o),
(n = m(!0)),
(o = m());
} else n = o = d(n);
(r.startContainer = n.parentNode ? n.parentNode : n),
(r.startOffset = i.nodeIndex(n)),
(r.endContainer = o.parentNode ? o.parentNode : o),
(r.endOffset = i.nodeIndex(o) + 1);
}
rf(i, r, e => {
q(e, u);
});
};
if (o) {
if (wm(o)) {
const e = i.createRng();
e.setStartBefore(o), e.setEndAfter(o), f(e);
} else f(o);
pf(e, t, o, n);
} else
l.isCollapsed() && Um(a) && !mm(e).length
? nv(e, t, n, r)
: (Em(
e,
() => ym(e, f),
o => Um(a) && Yb(e, t, n, o)
),
e.nodeChanged()),
((e, t, n) => {
"removeformat" === t
? q(fv(e.selection), t => {
q(lv, n => e.dom.setStyle(t, n, "")), Pv(e.dom, t);
})
: dv(e.formatter, t).each(t => {
q(fv(e.selection), o => Dv(e.dom, o, t, n, null));
});
})(e, t, n),
pf(e, t, o, n);
})(e, t, n, o, r);
},
Fv = (e, t, n, o, r) => Lv(e, t, n, o, r).fold(L, t => (e.dom.rename(o, t), !0), M),
Uv = Dt.each,
zv = Dt.each,
jv = (e, t, n, o) => {
if (
(zv(n.styles, (n, r) => {
e.setStyle(t, r, Tm(n, o));
}),
n.styles)
) {
const n = e.getAttrib(t, "style");
n && e.setAttrib(t, "data-mce-style", n);
}
},
Hv = (e, t, n, o) => {
const r = e.formatter.get(t),
s = r[0],
a = !o && e.selection.isCollapsed(),
i = e.dom,
l = e.selection,
d = (e, t = s) => {
w(t.onformat) && t.onformat(e, t, n, o),
jv(i, e, t, n),
zv(t.attributes, (t, o) => {
i.setAttrib(e, o, Tm(t, n));
}),
zv(t.classes, t => {
const o = Tm(t, n);
i.hasClass(e, o) || i.addClass(e, o);
});
},
c = (e, t) => {
let n = !1;
return (
zv(
e,
e =>
!(
!Fm(e) ||
(("false" !== i.getContentEditable(t) || e.ceFalseOverride) &&
(!C(e.collapsed) || e.collapsed === a) &&
i.is(t, e.selector) &&
!Wu(t) &&
(d(t, e), (n = !0), 1))
)
),
n
);
},
u = e => {
if (m(e)) {
const t = i.create(e);
return d(t), t;
}
return null;
},
f = (o, a, i) => {
const l = [];
let m = !0;
const f = s.inline || s.block,
g = u(f);
rf(o, a, a => {
let u;
const p = a => {
let h = !1,
b = m,
v = !1;
const y = a.parentNode,
w = y.nodeName.toLowerCase(),
x = o.getContentEditable(a);
C(x) && ((b = m), (m = "true" === x), (h = !0), (v = Am(e, a)));
const E = m && !h;
if (
pr(a) &&
!((e, t, n, o) => {
if (Od(e) && Um(t) && n.parentNode) {
const t = Ms(e.schema),
r = Ho(Cn(n), e => Wu(e.dom));
return _e(t, o) && Ar(e.schema, n.parentNode, {skipBogus: !1, includeZwsp: !0}) && !r;
}
return !1;
})(e, s, a, w)
)
return (u = null), void (Im(s) && o.remove(a));
if ((o => (e => Im(e) && !0 === e.wrapper)(s) && Kb(e, o, t, n))(a)) u = null;
else {
if (
((t, n, o) => {
const r = (e => Im(e) && !0 !== e.wrapper)(s) && Sm(e.schema, t) && Nm(e, n, f);
return o && r;
})(a, w, E)
) {
const e = o.rename(a, f);
return d(e), l.push(e), void (u = null);
}
if (Fm(s)) {
let e = c(r, a);
if ((!e && C(y) && zm(s) && (e = c(r, y)), !Um(s) || e)) return void (u = null);
}
C(g) &&
((t, n, r, a) => {
const l = t.nodeName.toLowerCase(),
d = Nm(e, f, l) && Nm(e, n, f),
c = !i && dr(t) && ei(t.data),
u = Wu(t),
m = !Um(s) || !o.isBlock(t);
return (r || a) && d && !c && !u && m;
})(a, w, E, v)
? (u || ((u = o.clone(g, !1)), y.insertBefore(u, a), l.push(u)), v && h && (m = b), u.appendChild(a))
: ((u = null), q(ce(a.childNodes), p), h && (m = b), (u = null));
}
};
q(a, p);
}),
!0 === s.links &&
q(l, e => {
const t = e => {
"A" === e.nodeName && d(e, s), q(ce(e.childNodes), t);
};
t(e);
}),
q(l, a => {
const i = (e => {
let t = 0;
return (
q(e.childNodes, e => {
(e => C(e) && dr(e) && 0 === e.length)(e) || sm(e) || t++;
}),
t
);
})(a);
(!(l.length > 1) && o.isBlock(a)) || 0 !== i
? (Um(s) || (Im(s) && s.wrapper)) &&
(s.exact ||
1 !== i ||
(a = (e => {
const t = Q(e.childNodes, xm).filter(e => "false" !== o.getContentEditable(e) && qb(o, e, s));
return t
.map(t => {
const n = o.clone(t, !1);
return d(n), o.replace(n, e, !0), o.remove(t, !0), n;
})
.getOr(e);
})(a)),
((e, t, n, o) => {
Uv(t, t => {
Um(t) &&
Uv(e.dom.select(t.inline, o), o => {
pv(o) && Fv(e, t, n, o, t.exact ? o : null);
}),
((e, t, n) => {
if (t.clear_child_styles) {
const o = t.links ? "*:not(a)" : "*";
gv(e.select(o, n), n => {
pv(n) &&
e.isEditable(n) &&
gv(t.styles, (t, o) => {
e.setStyle(n, o, "");
});
});
}
})(e.dom, t, o);
});
})(e, r, n, a),
((e, t, n, o, r) => {
const s = r.parentNode;
(Kb(e, s, n, o) && Fv(e, t, o, r)) ||
(t.merge_with_parents && s && e.dom.getParent(s, s => !!Kb(e, s, n, o) && (Fv(e, t, o, r), !0)));
})(e, s, t, n, a),
((e, t, n, o) => {
if (t.styles && t.styles.backgroundColor) {
const r = Cv(e, "fontSize");
yv(o, t => r(t) && e.isEditable(t), wv(e, "backgroundColor", Tm(t.styles.backgroundColor, n)));
}
})(o, s, n, a),
((e, t, n, o) => {
const r = t => {
if (tr(t) && er(t.parentNode) && e.isEditable(t)) {
const n = Dm(e, t.parentNode);
e.getStyle(t, "color") && n
? e.setStyle(t, "text-decoration", n)
: e.getStyle(t, "text-decoration") === n && e.setStyle(t, "text-decoration", null);
}
};
t.styles && (t.styles.color || t.styles.textDecoration) && (Dt.walk(o, r, "childNodes"), r(o));
})(o, s, 0, a),
((e, t, n, o) => {
if (Um(t) && ("sub" === t.inline || "sup" === t.inline)) {
const n = Cv(e, "fontSize");
yv(o, t => n(t) && e.isEditable(t), wv(e, "fontSize", ""));
const r = Y(e.select("sup" === t.inline ? "sub" : "sup", o), e.isEditable);
e.remove(r, !0);
}
})(o, s, 0, a),
vv(e, s, 0, a))
: o.remove(a, !0);
});
},
g = wm(o) ? o : l.getNode();
if ("false" === i.getContentEditable(g) && !Am(e, g)) return c(r, (o = g)), void gf(e, t, o, n);
if (s) {
if (o)
if (wm(o)) {
if (!c(r, o)) {
const e = i.createRng();
e.setStartBefore(o), e.setEndAfter(o), f(i, of(i, e, r), !0);
}
} else f(i, o, !0);
else
a && Um(s) && !mm(e).length
? ((e, t, n) => {
let o;
const r = e.selection,
s = e.formatter.get(t);
if (!s) return;
const a = r.getRng();
let i = a.startOffset;
const l = a.startContainer.nodeValue;
o = Ku(e.getBody(), r.getStart());
const d = /[^\s\u00a0\u00ad\u200b\ufeff]/;
if (l && i > 0 && i < l.length && d.test(l.charAt(i)) && d.test(l.charAt(i - 1))) {
const o = r.getBookmark();
a.collapse(!0);
let i = of(e.dom, a, s);
(i = Zf(i)), e.formatter.apply(t, n, i), r.moveToBookmark(o);
} else {
let s = o ? Xb(o) : null;
(o && (null == s ? void 0 : s.data) === Gb) ||
((c = e.getDoc()),
(u = Zb(!0).dom),
(o = c.importNode(u, !0)),
(s = o.firstChild),
a.insertNode(o),
(i = 1)),
e.formatter.apply(t, n, o),
r.setCursorLocation(s, i);
}
var c, u;
})(e, t, n)
: (l.setRng(Ab(l.getRng())),
Em(
e,
() => {
ym(e, (e, t) => {
const n = t ? e : of(i, e, r);
f(i, n, !1);
});
},
M
),
e.nodeChanged()),
dv(e.formatter, t).each(t => {
q(
(e =>
Y(
(e => {
const t = e.getSelectedBlocks(),
n = e.getRng();
if (e.isCollapsed()) return [];
if (1 === t.length) return cv(n, t[0]) && uv(n, t[0]) ? t : [];
{
const e = le(t)
.filter(e => cv(n, e))
.toArray(),
o = de(t)
.filter(e => uv(n, e))
.toArray(),
r = t.slice(1, -1);
return e.concat(r).concat(o);
}
})(e),
mv(e.dom)
))(e.selection),
e => jv(i, e, t, n)
);
});
((e, t) => {
ke(av, e) &&
q(av[e], e => {
e(t);
});
})(t, e);
}
gf(e, t, o, n);
},
$v = (e, t, n, o) => {
(o || e.selection.isEditable()) && Hv(e, t, n, o);
},
Vv = e => ke(e, "vars"),
qv = e => e.selection.getStart(),
Wv = (e, t, n, o, r) =>
Z(
t,
t => {
const s = e.formatter.matchNode(t, n, null != r ? r : {}, o);
return !v(s);
},
t => !!$b(e, t, n) || (!o && C(e.formatter.matchNode(t, n, r, !0)))
),
Kv = (e, t) => {
const n = null != t ? t : qv(e);
return Y(Lm(e.dom, n), e => er(e) && !sr(e));
},
Yv = (e, t, n) => {
const o = Kv(e, t);
pe(n, (n, r) => {
const s = n => {
const s = Wv(e, o, r, n.similar, Vv(n) ? n.vars : void 0),
a = s.isSome();
if (n.state.get() !== a) {
n.state.set(a);
const e = s.getOr(t);
Vv(n)
? n.callback(a, {node: e, format: r, parents: o})
: q(n.callbacks, t => t(a, {node: e, format: r, parents: o}));
}
};
q([n.withSimilar, n.withoutSimilar], s), q(n.withVars, s);
});
},
Gv = Dt.explode,
Xv = () => {
const e = {};
return {
addFilter: (t, n) => {
q(Gv(t), t => {
ke(e, t) || (e[t] = {name: t, callbacks: []}), e[t].callbacks.push(n);
});
},
getFilters: () => xe(e),
removeFilter: (t, n) => {
q(Gv(t), t => {
if (ke(e, t))
if (C(n)) {
const o = e[t],
r = Y(o.callbacks, e => e !== n);
r.length > 0 ? (o.callbacks = r) : delete e[t];
} else delete e[t];
});
}
};
},
Zv = (e, t, n) => {
var o;
const r = Ys();
t.convert_fonts_to_spans &&
((e, t, n) => {
e.addNodeFilter("font", e => {
q(e, e => {
const o = t.parse(e.attr("style")),
r = e.attr("color"),
s = e.attr("face"),
a = e.attr("size");
r && (o.color = r),
s && (o["font-family"] = s),
a &&
Ze(a).each(e => {
o["font-size"] = n[e - 1];
}),
(e.name = "span"),
e.attr("style", t.serialize(o)),
((e, t) => {
q(["color", "face", "size"], t => {
e.attr(t, null);
});
})(e);
});
});
})(e, r, Dt.explode(null !== (o = t.font_size_legacy_values) && void 0 !== o ? o : "")),
((e, t, n) => {
e.addNodeFilter("strike", e => {
const o = "html4" !== t.type;
q(e, e => {
if (o) e.name = "s";
else {
const t = n.parse(e.attr("style"));
(t["text-decoration"] = "line-through"), (e.name = "span"), e.attr("style", n.serialize(t));
}
});
});
})(e, n, r);
},
Qv = e => {
const [t, ...n] = e.split(","),
o = n.join(","),
r = /data:([^/]+\/[^;]+)(;.+)?/.exec(t);
if (r) {
const e = ";base64" === r[2],
t = e
? (e => {
const t = /([a-z0-9+\/=\s]+)/i.exec(e);
return t ? t[1] : "";
})(o)
: decodeURIComponent(o);
return I.some({type: r[1], data: t, base64Encoded: e});
}
return I.none();
},
Jv = (e, t, n = !0) => {
let o = t;
if (n)
try {
o = atob(t);
} catch (e) {
return I.none();
}
const r = new Uint8Array(o.length);
for (let e = 0; e < r.length; e++) r[e] = o.charCodeAt(e);
return I.some(new Blob([r], {type: e}));
},
ey = e =>
new Promise((t, n) => {
const o = new FileReader();
(o.onloadend = () => {
t(o.result);
}),
(o.onerror = () => {
var e;
n(null === (e = o.error) || void 0 === e ? void 0 : e.message);
}),
o.readAsDataURL(e);
});
let ty = 0;
const ny = (e, t, n) =>
Qv(e).bind(({data: e, type: o, base64Encoded: r}) => {
if (t && !r) return I.none();
{
const t = r ? e : btoa(e);
return n(t, o);
}
}),
oy = (e, t, n) => {
const o = e.create("blobid" + ty++, t, n);
return e.add(o), o;
},
ry = (e, t, n = !1) => ny(t, n, (t, n) => I.from(e.getByData(t, n)).orThunk(() => Jv(n, t).map(n => oy(e, n, t)))),
sy =
/^(?:(?:(?:[A-Za-z][A-Za-z\d.+-]{0,14}:\/\/(?:[-.~*+=!&;:'%@?^${}(),\w]+@)?|www\.|[-;:&=+$,.\w]+@)([A-Za-z\d-]+(?:\.[A-Za-z\d-]+)*))(?::\d+)?(?:\/(?:[-.~*+=!;:'%@$(),\/\w]*[-~*+=%@$()\/\w])?)?(?:\?(?:[-.~*+=!&;:'%@?^${}(),\/\w]+)?)?(?:#(?:[-.~*+=!&;:'%@?^${}(),\/\w]+)?)?)$/,
ay = e =>
I.from(e.match(sy))
.bind(e => ie(e, 1))
.map(e => ($e(e, "www.") ? e.substring(4) : e)),
iy = (e, t) => {
I.from(e.attr("src"))
.bind(ay)
.forall(e => !H(t, e)) && e.attr("sandbox", "");
},
ly = (e, t) => $e(e, `${t}/`),
{entries: dy, setPrototypeOf: cy, isFrozen: uy, getPrototypeOf: my, getOwnPropertyDescriptor: fy} = Object;
let {freeze: gy, seal: py, create: hy} = Object,
{apply: by, construct: vy} = "undefined" != typeof Reflect && Reflect;
by ||
(by = function (e, t, n) {
return e.apply(t, n);
}),
gy ||
(gy = function (e) {
return e;
}),
py ||
(py = function (e) {
return e;
}),
vy ||
(vy = function (e, t) {
return new e(...t);
});
const yy = Oy(Array.prototype.forEach),
Cy = Oy(Array.prototype.pop),
wy = Oy(Array.prototype.push),
xy = Oy(String.prototype.toLowerCase),
Ey = Oy(String.prototype.toString),
ky = Oy(String.prototype.match),
_y = Oy(String.prototype.replace),
Sy = Oy(String.prototype.indexOf),
Ny = Oy(String.prototype.trim),
Ry = Oy(RegExp.prototype.test),
Ay =
((Ty = TypeError),
function () {
for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n];
return vy(Ty, t);
});
var Ty;
function Oy(e) {
return function (t) {
for (var n = arguments.length, o = new Array(n > 1 ? n - 1 : 0), r = 1; r < n; r++) o[r - 1] = arguments[r];
return by(e, t, o);
};
}
function By(e, t, n) {
var o;
(n = null !== (o = n) && void 0 !== o ? o : xy), cy && cy(e, null);
let r = t.length;
for (; r--; ) {
let o = t[r];
if ("string" == typeof o) {
const e = n(o);
e !== o && (uy(t) || (t[r] = e), (o = e));
}
e[o] = !0;
}
return e;
}
function Py(e) {
const t = hy(null);
for (const [n, o] of dy(e)) t[n] = o;
return t;
}
function Dy(e, t) {
for (; null !== e; ) {
const n = fy(e, t);
if (n) {
if (n.get) return Oy(n.get);
if ("function" == typeof n.value) return Oy(n.value);
}
e = my(e);
}
return function (e) {
return console.warn("fallback value for", e), null;
};
}
const Ly = gy([
"a",
"abbr",
"acronym",
"address",
"area",
"article",
"aside",
"audio",
"b",
"bdi",
"bdo",
"big",
"blink",
"blockquote",
"body",
"br",
"button",
"canvas",
"caption",
"center",
"cite",
"code",
"col",
"colgroup",
"content",
"data",
"datalist",
"dd",
"decorator",
"del",
"details",
"dfn",
"dialog",
"dir",
"div",
"dl",
"dt",
"element",
"em",
"fieldset",
"figcaption",
"figure",
"font",
"footer",
"form",
"h1",
"h2",
"h3",
"h4",
"h5",
"h6",
"head",
"header",
"hgroup",
"hr",
"html",
"i",
"img",
"input",
"ins",
"kbd",
"label",
"legend",
"li",
"main",
"map",
"mark",
"marquee",
"menu",
"menuitem",
"meter",
"nav",
"nobr",
"ol",
"optgroup",
"option",
"output",
"p",
"picture",
"pre",
"progress",
"q",
"rp",
"rt",
"ruby",
"s",
"samp",
"section",
"select",
"shadow",
"small",
"source",
"spacer",
"span",
"strike",
"strong",
"style",
"sub",
"summary",
"sup",
"table",
"tbody",
"td",
"template",
"textarea",
"tfoot",
"th",
"thead",
"time",
"tr",
"track",
"tt",
"u",
"ul",
"var",
"video",
"wbr"
]),
My = gy([
"svg",
"a",
"altglyph",
"altglyphdef",
"altglyphitem",
"animatecolor",
"animatemotion",
"animatetransform",
"circle",
"clippath",
"defs",
"desc",
"ellipse",
"filter",
"font",
"g",
"glyph",
"glyphref",
"hkern",
"image",
"line",
"lineargradient",
"marker",
"mask",
"metadata",
"mpath",
"path",
"pattern",
"polygon",
"polyline",
"radialgradient",
"rect",
"stop",
"style",
"switch",
"symbol",
"text",
"textpath",
"title",
"tref",
"tspan",
"view",
"vkern"
]),
Iy = gy([
"feBlend",
"feColorMatrix",
"feComponentTransfer",
"feComposite",
"feConvolveMatrix",
"feDiffuseLighting",
"feDisplacementMap",
"feDistantLight",
"feDropShadow",
"feFlood",
"feFuncA",
"feFuncB",
"feFuncG",
"feFuncR",
"feGaussianBlur",
"feImage",
"feMerge",
"feMergeNode",
"feMorphology",
"feOffset",
"fePointLight",
"feSpecularLighting",
"feSpotLight",
"feTile",
"feTurbulence"
]),
Fy = gy([
"animate",
"color-profile",
"cursor",
"discard",
"font-face",
"font-face-format",
"font-face-name",
"font-face-src",
"font-face-uri",
"foreignobject",
"hatch",
"hatchpath",
"mesh",
"meshgradient",
"meshpatch",
"meshrow",
"missing-glyph",
"script",
"set",
"solidcolor",
"unknown",
"use"
]),
Uy = gy([
"math",
"menclose",
"merror",
"mfenced",
"mfrac",
"mglyph",
"mi",
"mlabeledtr",
"mmultiscripts",
"mn",
"mo",
"mover",
"mpadded",
"mphantom",
"mroot",
"mrow",
"ms",
"mspace",
"msqrt",
"mstyle",
"msub",
"msup",
"msubsup",
"mtable",
"mtd",
"mtext",
"mtr",
"munder",
"munderover",
"mprescripts"
]),
zy = gy([
"maction",
"maligngroup",
"malignmark",
"mlongdiv",
"mscarries",
"mscarry",
"msgroup",
"mstack",
"msline",
"msrow",
"semantics",
"annotation",
"annotation-xml",
"mprescripts",
"none"
]),
jy = gy(["#text"]),
Hy = gy([
"accept",
"action",
"align",
"alt",
"autocapitalize",
"autocomplete",
"autopictureinpicture",
"autoplay",
"background",
"bgcolor",
"border",
"capture",
"cellpadding",
"cellspacing",
"checked",
"cite",
"class",
"clear",
"color",
"cols",
"colspan",
"controls",
"controlslist",
"coords",
"crossorigin",
"datetime",
"decoding",
"default",
"dir",
"disabled",
"disablepictureinpicture",
"disableremoteplayback",
"download",
"draggable",
"enctype",
"enterkeyhint",
"face",
"for",
"headers",
"height",
"hidden",
"high",
"href",
"hreflang",
"id",
"inputmode",
"integrity",
"ismap",
"kind",
"label",
"lang",
"list",
"loading",
"loop",
"low",
"max",
"maxlength",
"media",
"method",
"min",
"minlength",
"multiple",
"muted",
"name",
"nonce",
"noshade",
"novalidate",
"nowrap",
"open",
"optimum",
"pattern",
"placeholder",
"playsinline",
"poster",
"preload",
"pubdate",
"radiogroup",
"readonly",
"rel",
"required",
"rev",
"reversed",
"role",
"rows",
"rowspan",
"spellcheck",
"scope",
"selected",
"shape",
"size",
"sizes",
"span",
"srclang",
"start",
"src",
"srcset",
"step",
"style",
"summary",
"tabindex",
"title",
"translate",
"type",
"usemap",
"valign",
"value",
"width",
"xmlns",
"slot"
]),
$y = gy([
"accent-height",
"accumulate",
"additive",
"alignment-baseline",
"ascent",
"attributename",
"attributetype",
"azimuth",
"basefrequency",
"baseline-shift",
"begin",
"bias",
"by",
"class",
"clip",
"clippathunits",
"clip-path",
"clip-rule",
"color",
"color-interpolation",
"color-interpolation-filters",
"color-profile",
"color-rendering",
"cx",
"cy",
"d",
"dx",
"dy",
"diffuseconstant",
"direction",
"display",
"divisor",
"dur",
"edgemode",
"elevation",
"end",
"fill",
"fill-opacity",
"fill-rule",
"filter",
"filterunits",
"flood-color",
"flood-opacity",
"font-family",
"font-size",
"font-size-adjust",
"font-stretch",
"font-style",
"font-variant",
"font-weight",
"fx",
"fy",
"g1",
"g2",
"glyph-name",
"glyphref",
"gradientunits",
"gradienttransform",
"height",
"href",
"id",
"image-rendering",
"in",
"in2",
"k",
"k1",
"k2",
"k3",
"k4",
"kerning",
"keypoints",
"keysplines",
"keytimes",
"lang",
"lengthadjust",
"letter-spacing",
"kernelmatrix",
"kernelunitlength",
"lighting-color",
"local",
"marker-end",
"marker-mid",
"marker-start",
"markerheight",
"markerunits",
"markerwidth",
"maskcontentunits",
"maskunits",
"max",
"mask",
"media",
"method",
"mode",
"min",
"name",
"numoctaves",
"offset",
"operator",
"opacity",
"order",
"orient",
"orientation",
"origin",
"overflow",
"paint-order",
"path",
"pathlength",
"patterncontentunits",
"patterntransform",
"patternunits",
"points",
"preservealpha",
"preserveaspectratio",
"primitiveunits",
"r",
"rx",
"ry",
"radius",
"refx",
"refy",
"repeatcount",
"repeatdur",
"restart",
"result",
"rotate",
"scale",
"seed",
"shape-rendering",
"specularconstant",
"specularexponent",
"spreadmethod",
"startoffset",
"stddeviation",
"stitchtiles",
"stop-color",
"stop-opacity",
"stroke-dasharray",
"stroke-dashoffset",
"stroke-linecap",
"stroke-linejoin",
"stroke-miterlimit",
"stroke-opacity",
"stroke",
"stroke-width",
"style",
"surfacescale",
"systemlanguage",
"tabindex",
"targetx",
"targety",
"transform",
"transform-origin",
"text-anchor",
"text-decoration",
"text-rendering",
"textlength",
"type",
"u1",
"u2",
"unicode",
"values",
"viewbox",
"visibility",
"version",
"vert-adv-y",
"vert-origin-x",
"vert-origin-y",
"width",
"word-spacing",
"wrap",
"writing-mode",
"xchannelselector",
"ychannelselector",
"x",
"x1",
"x2",
"xmlns",
"y",
"y1",
"y2",
"z",
"zoomandpan"
]),
Vy = gy([
"accent",
"accentunder",
"align",
"bevelled",
"close",
"columnsalign",
"columnlines",
"columnspan",
"denomalign",
"depth",
"dir",
"display",
"displaystyle",
"encoding",
"fence",
"frame",
"height",
"href",
"id",
"largeop",
"length",
"linethickness",
"lspace",
"lquote",
"mathbackground",
"mathcolor",
"mathsize",
"mathvariant",
"maxsize",
"minsize",
"movablelimits",
"notation",
"numalign",
"open",
"rowalign",
"rowlines",
"rowspacing",
"rowspan",
"rspace",
"rquote",
"scriptlevel",
"scriptminsize",
"scriptsizemultiplier",
"selection",
"separator",
"separators",
"stretchy",
"subscriptshift",
"supscriptshift",
"symmetric",
"voffset",
"width",
"xmlns"
]),
qy = gy(["xlink:href", "xml:id", "xlink:title", "xml:space", "xmlns:xlink"]),
Wy = py(/\{\{[\w\W]*|[\w\W]*\}\}/gm),
Ky = py(/<%[\w\W]*|[\w\W]*%>/gm),
Yy = py(/\${[\w\W]*}/gm),
Gy = py(/^data-[\-\w.\u00B7-\uFFFF]/),
Xy = py(/^aria-[\-\w]+$/),
Zy = py(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),
Qy = py(/^(?:\w+script|data):/i),
Jy = py(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),
eC = py(/^html$/i);
var tC = Object.freeze({
__proto__: null,
MUSTACHE_EXPR: Wy,
ERB_EXPR: Ky,
TMPLIT_EXPR: Yy,
DATA_ATTR: Gy,
ARIA_ATTR: Xy,
IS_ALLOWED_URI: Zy,
IS_SCRIPT_OR_DATA: Qy,
ATTR_WHITESPACE: Jy,
DOCTYPE_NAME: eC
});
const nC = () => ("undefined" == typeof window ? null : window);
var oC = (function e() {
let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : nC();
const n = t => e(t);
if (((n.version = "3.0.5"), (n.removed = []), !t || !t.document || 9 !== t.document.nodeType))
return (n.isSupported = !1), n;
const o = t.document,
r = o.currentScript;
let {document: s} = t;
const {
DocumentFragment: a,
HTMLTemplateElement: i,
Node: l,
Element: d,
NodeFilter: c,
NamedNodeMap: u = t.NamedNodeMap || t.MozNamedAttrMap,
HTMLFormElement: m,
DOMParser: f,
trustedTypes: g
} = t,
p = d.prototype,
h = Dy(p, "cloneNode"),
b = Dy(p, "nextSibling"),
v = Dy(p, "childNodes"),
y = Dy(p, "parentNode");
if ("function" == typeof i) {
const e = s.createElement("template");
e.content && e.content.ownerDocument && (s = e.content.ownerDocument);
}
let C,
w = "";
const {implementation: x, createNodeIterator: E, createDocumentFragment: k, getElementsByTagName: _} = s,
{importNode: S} = o;
let N = {};
n.isSupported = "function" == typeof dy && "function" == typeof y && x && void 0 !== x.createHTMLDocument;
const {
MUSTACHE_EXPR: R,
ERB_EXPR: A,
TMPLIT_EXPR: T,
DATA_ATTR: O,
ARIA_ATTR: B,
IS_SCRIPT_OR_DATA: P,
ATTR_WHITESPACE: D
} = tC;
let {IS_ALLOWED_URI: L} = tC,
M = null;
const I = By({}, [...Ly, ...My, ...Iy, ...Uy, ...jy]);
let F = null;
const U = By({}, [...Hy, ...$y, ...Vy, ...qy]);
let z = Object.seal(
Object.create(null, {
tagNameCheck: {writable: !0, configurable: !1, enumerable: !0, value: null},
attributeNameCheck: {writable: !0, configurable: !1, enumerable: !0, value: null},
allowCustomizedBuiltInElements: {writable: !0, configurable: !1, enumerable: !0, value: !1}
})
),
j = null,
H = null,
$ = !0,
V = !0,
q = !1,
W = !0,
K = !1,
Y = !1,
G = !1,
X = !1,
Z = !1,
Q = !1,
J = !1,
ee = !0,
te = !1,
ne = !0,
oe = !1,
re = {},
se = null;
const ae = By({}, [
"annotation-xml",
"audio",
"colgroup",
"desc",
"foreignobject",
"head",
"iframe",
"math",
"mi",
"mn",
"mo",
"ms",
"mtext",
"noembed",
"noframes",
"noscript",
"plaintext",
"script",
"style",
"svg",
"template",
"thead",
"title",
"video",
"xmp"
]);
let ie = null;
const le = By({}, ["audio", "video", "img", "source", "image", "track"]);
let de = null;
const ce = By({}, [
"alt",
"class",
"for",
"id",
"label",
"name",
"pattern",
"placeholder",
"role",
"summary",
"title",
"value",
"style",
"xmlns"
]),
ue = "http://www.w3.org/1998/Math/MathML",
me = "http://www.w3.org/2000/svg",
fe = "http://www.w3.org/1999/xhtml";
let ge = fe,
pe = !1,
he = null;
const be = By({}, [ue, me, fe], Ey);
let ve;
const ye = ["application/xhtml+xml", "text/html"];
let Ce,
we = null;
const xe = s.createElement("form"),
Ee = function (e) {
return e instanceof RegExp || e instanceof Function;
},
ke = function (e) {
if (!we || we !== e) {
if (
((e && "object" == typeof e) || (e = {}),
(e = Py(e)),
(ve = ve = -1 === ye.indexOf(e.PARSER_MEDIA_TYPE) ? "text/html" : e.PARSER_MEDIA_TYPE),
(Ce = "application/xhtml+xml" === ve ? Ey : xy),
(M = "ALLOWED_TAGS" in e ? By({}, e.ALLOWED_TAGS, Ce) : I),
(F = "ALLOWED_ATTR" in e ? By({}, e.ALLOWED_ATTR, Ce) : U),
(he = "ALLOWED_NAMESPACES" in e ? By({}, e.ALLOWED_NAMESPACES, Ey) : be),
(de = "ADD_URI_SAFE_ATTR" in e ? By(Py(ce), e.ADD_URI_SAFE_ATTR, Ce) : ce),
(ie = "ADD_DATA_URI_TAGS" in e ? By(Py(le), e.ADD_DATA_URI_TAGS, Ce) : le),
(se = "FORBID_CONTENTS" in e ? By({}, e.FORBID_CONTENTS, Ce) : ae),
(j = "FORBID_TAGS" in e ? By({}, e.FORBID_TAGS, Ce) : {}),
(H = "FORBID_ATTR" in e ? By({}, e.FORBID_ATTR, Ce) : {}),
(re = "USE_PROFILES" in e && e.USE_PROFILES),
($ = !1 !== e.ALLOW_ARIA_ATTR),
(V = !1 !== e.ALLOW_DATA_ATTR),
(q = e.ALLOW_UNKNOWN_PROTOCOLS || !1),
(W = !1 !== e.ALLOW_SELF_CLOSE_IN_ATTR),
(K = e.SAFE_FOR_TEMPLATES || !1),
(Y = e.WHOLE_DOCUMENT || !1),
(Z = e.RETURN_DOM || !1),
(Q = e.RETURN_DOM_FRAGMENT || !1),
(J = e.RETURN_TRUSTED_TYPE || !1),
(X = e.FORCE_BODY || !1),
(ee = !1 !== e.SANITIZE_DOM),
(te = e.SANITIZE_NAMED_PROPS || !1),
(ne = !1 !== e.KEEP_CONTENT),
(oe = e.IN_PLACE || !1),
(L = e.ALLOWED_URI_REGEXP || Zy),
(ge = e.NAMESPACE || fe),
(z = e.CUSTOM_ELEMENT_HANDLING || {}),
e.CUSTOM_ELEMENT_HANDLING &&
Ee(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck) &&
(z.tagNameCheck = e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),
e.CUSTOM_ELEMENT_HANDLING &&
Ee(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck) &&
(z.attributeNameCheck = e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),
e.CUSTOM_ELEMENT_HANDLING &&
"boolean" == typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements &&
(z.allowCustomizedBuiltInElements = e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),
K && (V = !1),
Q && (Z = !0),
re &&
((M = By({}, [...jy])),
(F = []),
!0 === re.html && (By(M, Ly), By(F, Hy)),
!0 === re.svg && (By(M, My), By(F, $y), By(F, qy)),
!0 === re.svgFilters && (By(M, Iy), By(F, $y), By(F, qy)),
!0 === re.mathMl && (By(M, Uy), By(F, Vy), By(F, qy))),
e.ADD_TAGS && (M === I && (M = Py(M)), By(M, e.ADD_TAGS, Ce)),
e.ADD_ATTR && (F === U && (F = Py(F)), By(F, e.ADD_ATTR, Ce)),
e.ADD_URI_SAFE_ATTR && By(de, e.ADD_URI_SAFE_ATTR, Ce),
e.FORBID_CONTENTS && (se === ae && (se = Py(se)), By(se, e.FORBID_CONTENTS, Ce)),
ne && (M["#text"] = !0),
Y && By(M, ["html", "head", "body"]),
M.table && (By(M, ["tbody"]), delete j.tbody),
e.TRUSTED_TYPES_POLICY)
) {
if ("function" != typeof e.TRUSTED_TYPES_POLICY.createHTML)
throw Ay('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');
if ("function" != typeof e.TRUSTED_TYPES_POLICY.createScriptURL)
throw Ay('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');
(C = e.TRUSTED_TYPES_POLICY), (w = C.createHTML(""));
} else
void 0 === C &&
(C = (function (e, t) {
if ("object" != typeof e || "function" != typeof e.createPolicy) return null;
let n = null;
const o = "data-tt-policy-suffix";
t && t.hasAttribute(o) && (n = t.getAttribute(o));
const r = "dompurify" + (n ? "#" + n : "");
try {
return e.createPolicy(r, {createHTML: e => e, createScriptURL: e => e});
} catch (e) {
return console.warn("TrustedTypes policy " + r + " could not be created."), null;
}
})(g, r)),
null !== C && "string" == typeof w && (w = C.createHTML(""));
gy && gy(e), (we = e);
}
},
_e = By({}, ["mi", "mo", "mn", "ms", "mtext"]),
Se = By({}, ["foreignobject", "desc", "title", "annotation-xml"]),
Ne = By({}, ["title", "style", "font", "a", "script"]),
Re = By({}, My);
By(Re, Iy), By(Re, Fy);
const Ae = By({}, Uy);
By(Ae, zy);
const Te = function (e) {
wy(n.removed, {element: e});
try {
e.parentNode.removeChild(e);
} catch (t) {
e.remove();
}
},
Oe = function (e, t) {
try {
wy(n.removed, {attribute: t.getAttributeNode(e), from: t});
} catch (e) {
wy(n.removed, {attribute: null, from: t});
}
if ((t.removeAttribute(e), "is" === e && !F[e]))
if (Z || Q)
try {
Te(t);
} catch (e) {}
else
try {
t.setAttribute(e, "");
} catch (e) {}
},
Be = function (e) {
let t, n;
if (X) e = "