Fantasy-Map-Generator/libs/tinymce/tinymce.min.js
2024-05-17 11:23:29 +02:00

22153 lines
745 KiB
JavaScript

/**
* 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 = {'"': "&quot;", "'": "&#39;", "<": "&lt;", ">": "&gt;", "&": "&amp;", "`": "&#96;"},
ps = {"&lt;": "<", "&gt;": ">", "&amp;": "&", "&quot;": '"', "&apos;": "'"},
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, "&#xFEFF;") : 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 = '<br data-mce-bogus="1" />'), 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 + " &times; " + 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 + " &times; " + 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('<span data-mce-bogus="all" style="display: inline-block;">\ufeff</span>');
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}[^>]*>(&nbsp;|&#160;|\\s|\xa0|<br \\/>|)<\\/${n}>[\r\n]*|<br \\/>[\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("<![CDATA[", e, "]]>");
},
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("<!DOCTYPE", e, ">", 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('<br data-mce-bogus="1">');
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 = '<span id="mce_marker" data-mce-type="bookmark">&#xFEFF;</span>';
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 = "<remove></remove>" + e;
else {
const t = ky(e, /^[\r\n\t ]+/);
n = t && t[0];
}
"application/xhtml+xml" === ve &&
ge === fe &&
(e = '<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>' + e + "</body></html>");
const o = C ? C.createHTML(e) : e;
if (ge === fe)
try {
t = new f().parseFromString(o, ve);
} catch (e) {}
if (!t || !t.documentElement) {
t = x.createDocument(ge, "template", null);
try {
t.documentElement.innerHTML = pe ? w : o;
} catch (e) {}
}
const r = t.body || t.documentElement;
return (
e && n && r.insertBefore(s.createTextNode(n), r.childNodes[0] || null),
ge === fe ? _.call(t, Y ? "html" : "body")[0] : Y ? t.documentElement : r
);
},
Pe = function (e) {
return E.call(e.ownerDocument || e, e, c.SHOW_ELEMENT | c.SHOW_COMMENT | c.SHOW_TEXT, null, !1);
},
De = function (e) {
return "object" == typeof l
? e instanceof l
: e && "object" == typeof e && "number" == typeof e.nodeType && "string" == typeof e.nodeName;
},
Le = function (e, t, o) {
N[e] &&
yy(N[e], e => {
e.call(n, t, o, we);
});
},
Me = function (e) {
let t;
if (
(Le("beforeSanitizeElements", e, null),
(o = e) instanceof m &&
("string" != typeof o.nodeName ||
"string" != typeof o.textContent ||
"function" != typeof o.removeChild ||
!(o.attributes instanceof u) ||
"function" != typeof o.removeAttribute ||
"function" != typeof o.setAttribute ||
"string" != typeof o.namespaceURI ||
"function" != typeof o.insertBefore ||
"function" != typeof o.hasChildNodes))
)
return Te(e), !0;
var o;
const r = Ce(e.nodeName);
if (
(Le("uponSanitizeElement", e, {tagName: r, allowedTags: M}),
e.hasChildNodes() &&
!De(e.firstElementChild) &&
(!De(e.content) || !De(e.content.firstElementChild)) &&
Ry(/<[/\w]/g, e.innerHTML) &&
Ry(/<[/\w]/g, e.textContent))
)
return Te(e), !0;
if (!M[r] || j[r]) {
if (!j[r] && Fe(r)) {
if (z.tagNameCheck instanceof RegExp && Ry(z.tagNameCheck, r)) return !1;
if (z.tagNameCheck instanceof Function && z.tagNameCheck(r)) return !1;
}
if (ne && !se[r]) {
const t = y(e) || e.parentNode,
n = v(e) || e.childNodes;
if (n && t) for (let o = n.length - 1; o >= 0; --o) t.insertBefore(h(n[o], !0), b(e));
}
return Te(e), !0;
}
return e instanceof d &&
!(function (e) {
let t = y(e);
(t && t.tagName) || (t = {namespaceURI: ge, tagName: "template"});
const n = xy(e.tagName),
o = xy(t.tagName);
return (
!!he[e.namespaceURI] &&
(e.namespaceURI === me
? t.namespaceURI === fe
? "svg" === n
: t.namespaceURI === ue
? "svg" === n && ("annotation-xml" === o || _e[o])
: Boolean(Re[n])
: e.namespaceURI === ue
? t.namespaceURI === fe
? "math" === n
: t.namespaceURI === me
? "math" === n && Se[o]
: Boolean(Ae[n])
: e.namespaceURI === fe
? !(t.namespaceURI === me && !Se[o]) &&
!(t.namespaceURI === ue && !_e[o]) &&
!Ae[n] &&
(Ne[n] || !Re[n])
: !("application/xhtml+xml" !== ve || !he[e.namespaceURI]))
);
})(e)
? (Te(e), !0)
: ("noscript" !== r && "noembed" !== r && "noframes" !== r) || !Ry(/<\/no(script|embed|frames)/i, e.innerHTML)
? (K &&
3 === e.nodeType &&
((t = e.textContent),
(t = _y(t, R, " ")),
(t = _y(t, A, " ")),
(t = _y(t, T, " ")),
e.textContent !== t && (wy(n.removed, {element: e.cloneNode()}), (e.textContent = t))),
Le("afterSanitizeElements", e, null),
!1)
: (Te(e), !0);
},
Ie = function (e, t, n) {
if (ee && ("id" === t || "name" === t) && (n in s || n in xe)) return !1;
if (V && !H[t] && Ry(O, t));
else if ($ && Ry(B, t));
else if (!F[t] || H[t]) {
if (
!(
(Fe(e) &&
((z.tagNameCheck instanceof RegExp && Ry(z.tagNameCheck, e)) ||
(z.tagNameCheck instanceof Function && z.tagNameCheck(e))) &&
((z.attributeNameCheck instanceof RegExp && Ry(z.attributeNameCheck, t)) ||
(z.attributeNameCheck instanceof Function && z.attributeNameCheck(t)))) ||
("is" === t &&
z.allowCustomizedBuiltInElements &&
((z.tagNameCheck instanceof RegExp && Ry(z.tagNameCheck, n)) ||
(z.tagNameCheck instanceof Function && z.tagNameCheck(n))))
)
)
return !1;
} else if (de[t]);
else if (Ry(L, _y(n, D, "")));
else if (
("src" !== t && "xlink:href" !== t && "href" !== t) ||
"script" === e ||
0 !== Sy(n, "data:") ||
!ie[e]
)
if (q && !Ry(P, _y(n, D, "")));
else if (n) return !1;
return !0;
},
Fe = function (e) {
return e.indexOf("-") > 0;
},
Ue = function (e) {
let t, n, o, r;
Le("beforeSanitizeAttributes", e, null);
const {attributes: s} = e;
if (!s) return;
const a = {attrName: "", attrValue: "", keepAttr: !0, allowedAttributes: F};
for (r = s.length; r--; ) {
t = s[r];
const {name: i, namespaceURI: l} = t;
n = "value" === i ? t.value : Ny(t.value);
const d = n;
if (
((o = Ce(i)),
(a.attrName = o),
(a.attrValue = n),
(a.keepAttr = !0),
(a.forceKeepAttr = void 0),
Le("uponSanitizeAttribute", e, a),
(n = a.attrValue),
a.forceKeepAttr)
)
continue;
if (!a.keepAttr) {
Oe(i, e);
continue;
}
if (!W && Ry(/\/>/i, n)) {
Oe(i, e);
continue;
}
K && ((n = _y(n, R, " ")), (n = _y(n, A, " ")), (n = _y(n, T, " ")));
const c = Ce(e.nodeName);
if (Ie(c, o, n)) {
if (
(!te || ("id" !== o && "name" !== o) || (Oe(i, e), (n = "user-content-" + n)),
C && "object" == typeof g && "function" == typeof g.getAttributeType)
)
if (l);
else
switch (g.getAttributeType(c, o)) {
case "TrustedHTML":
n = C.createHTML(n);
break;
case "TrustedScriptURL":
n = C.createScriptURL(n);
}
if (n !== d)
try {
l ? e.setAttributeNS(l, i, n) : e.setAttribute(i, n);
} catch (t) {
Oe(i, e);
}
} else Oe(i, e);
}
Le("afterSanitizeAttributes", e, null);
},
ze = function e(t) {
let n;
const o = Pe(t);
for (Le("beforeSanitizeShadowDOM", t, null); (n = o.nextNode()); )
Le("uponSanitizeShadowNode", n, null), Me(n) || (n.content instanceof a && e(n.content), Ue(n));
Le("afterSanitizeShadowDOM", t, null);
};
return (
(n.sanitize = function (e) {
let t,
r,
s,
i,
d = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
if (((pe = !e), pe && (e = "\x3c!--\x3e"), "string" != typeof e && !De(e))) {
if ("function" != typeof e.toString) throw Ay("toString is not a function");
if ("string" != typeof (e = e.toString())) throw Ay("dirty is not a string, aborting");
}
if (!n.isSupported) return e;
if ((G || ke(d), (n.removed = []), "string" == typeof e && (oe = !1), oe)) {
if (e.nodeName) {
const t = Ce(e.nodeName);
if (!M[t] || j[t]) throw Ay("root node is forbidden and cannot be sanitized in-place");
}
} else if (e instanceof l)
(t = Be("\x3c!----\x3e")),
(r = t.ownerDocument.importNode(e, !0)),
(1 === r.nodeType && "BODY" === r.nodeName) || "HTML" === r.nodeName ? (t = r) : t.appendChild(r);
else {
if (!Z && !K && !Y && -1 === e.indexOf("<")) return C && J ? C.createHTML(e) : e;
if (((t = Be(e)), !t)) return Z ? null : J ? w : "";
}
t && X && Te(t.firstChild);
const c = Pe(oe ? e : t);
for (; (s = c.nextNode()); ) Me(s) || (s.content instanceof a && ze(s.content), Ue(s));
if (oe) return e;
if (Z) {
if (Q) for (i = k.call(t.ownerDocument); t.firstChild; ) i.appendChild(t.firstChild);
else i = t;
return (F.shadowroot || F.shadowrootmode) && (i = S.call(o, i, !0)), i;
}
let u = Y ? t.outerHTML : t.innerHTML;
return (
Y &&
M["!doctype"] &&
t.ownerDocument &&
t.ownerDocument.doctype &&
t.ownerDocument.doctype.name &&
Ry(eC, t.ownerDocument.doctype.name) &&
(u = "<!DOCTYPE " + t.ownerDocument.doctype.name + ">\n" + u),
K && ((u = _y(u, R, " ")), (u = _y(u, A, " ")), (u = _y(u, T, " "))),
C && J ? C.createHTML(u) : u
);
}),
(n.setConfig = function (e) {
ke(e), (G = !0);
}),
(n.clearConfig = function () {
(we = null), (G = !1);
}),
(n.isValidAttribute = function (e, t, n) {
we || ke({});
const o = Ce(e),
r = Ce(t);
return Ie(o, r, n);
}),
(n.addHook = function (e, t) {
"function" == typeof t && ((N[e] = N[e] || []), wy(N[e], t));
}),
(n.removeHook = function (e) {
if (N[e]) return Cy(N[e]);
}),
(n.removeHooks = function (e) {
N[e] && (N[e] = []);
}),
(n.removeAllHooks = function () {
N = {};
}),
n
);
})();
const rC = Dt.each,
sC = Dt.trim,
aC = [
"source",
"protocol",
"authority",
"userInfo",
"user",
"password",
"host",
"port",
"relative",
"path",
"directory",
"file",
"query",
"anchor"
],
iC = {ftp: 21, http: 80, https: 443, mailto: 25},
lC = ["img", "video"],
dC = (e, t, n) => {
const o = (e => {
try {
return decodeURIComponent(e);
} catch (t) {
return unescape(e);
}
})(t).replace(/\s/g, "");
return (
!e.allow_script_urls &&
(!!/((java|vb)script|mhtml):/i.test(o) ||
(!e.allow_html_data_urls &&
(/^data:image\//i.test(o)
? ((e, t) => (C(e) ? !e : !C(t) || !H(lC, t)))(e.allow_svg_data_urls, n) &&
/^data:image\/svg\+xml/i.test(o)
: /^data:/i.test(o))))
);
};
class cC {
static parseDataUri(e) {
let t;
const n = decodeURIComponent(e).split(","),
o = /data:([^;]+)/.exec(n[0]);
return o && (t = o[1]), {type: t, data: n[1]};
}
static isDomSafe(e, t, n = {}) {
if (n.allow_script_urls) return !0;
{
const o = ws.decode(e).replace(/[\s\u0000-\u001F]+/g, "");
return !dC(n, o, t);
}
}
static getDocumentBaseUrl(e) {
var t;
let n;
return (
(n =
0 !== e.protocol.indexOf("http") && "file:" !== e.protocol
? null !== (t = e.href) && void 0 !== t
? t
: ""
: e.protocol + "//" + e.host + e.pathname),
/^[^:]+:\/\/\/?[^\/]+\//.test(n) &&
((n = n.replace(/[\?#].*$/, "").replace(/[\/\\][^\/]+$/, "")), /[\/\\]$/.test(n) || (n += "/")),
n
);
}
constructor(e, t = {}) {
(this.path = ""), (this.directory = ""), (e = sC(e)), (this.settings = t);
const n = t.base_uri,
o = this;
if (/^([\w\-]+):([^\/]{2})/i.test(e) || /^\s*#/.test(e)) return void (o.source = e);
const r = 0 === e.indexOf("//");
if (
(0 !== e.indexOf("/") || r || (e = ((n && n.protocol) || "http") + "://mce_host" + e),
!/^[\w\-]*:?\/\//.test(e))
) {
const t = n ? n.path : new cC(document.location.href).directory;
if ("" === (null == n ? void 0 : n.protocol)) e = "//mce_host" + o.toAbsPath(t, e);
else {
const r = /([^#?]*)([#?]?.*)/.exec(e);
r && (e = ((n && n.protocol) || "http") + "://mce_host" + o.toAbsPath(t, r[1]) + r[2]);
}
}
e = e.replace(/@@/g, "(mce_at)");
const s =
/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?(\[[a-zA-Z0-9:.%]+\]|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(
e
);
s &&
rC(aC, (e, t) => {
let n = s[t];
n && (n = n.replace(/\(mce_at\)/g, "@@")), (o[e] = n);
}),
n &&
(o.protocol || (o.protocol = n.protocol),
o.userInfo || (o.userInfo = n.userInfo),
o.port || "mce_host" !== o.host || (o.port = n.port),
(o.host && "mce_host" !== o.host) || (o.host = n.host),
(o.source = "")),
r && (o.protocol = "");
}
setPath(e) {
const t = /^(.*?)\/?(\w+)?$/.exec(e);
t && ((this.path = t[0]), (this.directory = t[1]), (this.file = t[2])), (this.source = ""), this.getURI();
}
toRelative(e) {
if ("./" === e) return e;
const t = new cC(e, {base_uri: this});
if (
("mce_host" !== t.host && this.host !== t.host && t.host) ||
this.port !== t.port ||
(this.protocol !== t.protocol && "" !== t.protocol)
)
return t.getURI();
const n = this.getURI(),
o = t.getURI();
if (n === o || ("/" === n.charAt(n.length - 1) && n.substr(0, n.length - 1) === o)) return n;
let r = this.toRelPath(this.path, t.path);
return t.query && (r += "?" + t.query), t.anchor && (r += "#" + t.anchor), r;
}
toAbsolute(e, t) {
const n = new cC(e, {base_uri: this});
return n.getURI(t && this.isSameOrigin(n));
}
isSameOrigin(e) {
if (this.host == e.host && this.protocol == e.protocol) {
if (this.port == e.port) return !0;
const t = this.protocol ? iC[this.protocol] : null;
if (t && (this.port || t) == (e.port || t)) return !0;
}
return !1;
}
toRelPath(e, t) {
let n,
o,
r = 0,
s = "";
const a = e.substring(0, e.lastIndexOf("/")).split("/"),
i = t.split("/");
if (a.length >= i.length)
for (n = 0, o = a.length; n < o; n++)
if (n >= i.length || a[n] !== i[n]) {
r = n + 1;
break;
}
if (a.length < i.length)
for (n = 0, o = i.length; n < o; n++)
if (n >= a.length || a[n] !== i[n]) {
r = n + 1;
break;
}
if (1 === r) return t;
for (n = 0, o = a.length - (r - 1); n < o; n++) s += "../";
for (n = r - 1, o = i.length; n < o; n++) s += n !== r - 1 ? "/" + i[n] : i[n];
return s;
}
toAbsPath(e, t) {
let n = 0;
const o = /\/$/.test(t) ? "/" : "",
r = e.split("/"),
s = t.split("/"),
a = [];
rC(r, e => {
e && a.push(e);
});
const i = [];
for (let e = s.length - 1; e >= 0; e--)
0 !== s[e].length && "." !== s[e] && (".." !== s[e] ? (n > 0 ? n-- : i.push(s[e])) : n++);
const l = a.length - n;
let d;
return (
(d = l <= 0 ? oe(i).join("/") : a.slice(0, l).join("/") + "/" + oe(i).join("/")),
0 !== d.indexOf("/") && (d = "/" + d),
o && d.lastIndexOf("/") !== d.length - 1 && (d += o),
d
);
}
getURI(e = !1) {
let t;
return (
(this.source && !e) ||
((t = ""),
e ||
(this.protocol ? (t += this.protocol + "://") : (t += "//"),
this.userInfo && (t += this.userInfo + "@"),
this.host && (t += this.host),
this.port && (t += ":" + this.port)),
this.path && (t += this.path),
this.query && (t += "?" + this.query),
this.anchor && (t += "#" + this.anchor),
(this.source = t)),
this.source
);
}
}
const uC = Dt.makeMap("src,href,data,background,action,formaction,poster,xlink:href"),
mC = "data-mce-type";
let fC = 0;
const gC = (e, t, n, o, r) => {
var s, a, i, l;
const d = t.validate,
c = n.getSpecialElements();
8 === e.nodeType &&
!t.allow_conditional_comments &&
/^\[if/i.test(null !== (s = e.nodeValue) && void 0 !== s ? s : "") &&
(e.nodeValue = " " + e.nodeValue);
const u = null !== (a = null == r ? void 0 : r.tagName) && void 0 !== a ? a : e.nodeName.toLowerCase();
if ("html" !== o && n.isValid(o)) return void (C(r) && (r.allowedTags[u] = !0));
if (1 !== e.nodeType || "body" === u) return;
const f = Cn(e),
g = on(f, mC),
p = tn(f, "data-mce-bogus");
if (!g && m(p)) return void ("all" === p ? Eo(f) : ko(f));
const h = n.getElementRule(u);
if (!d || h) {
if ((C(r) && (r.allowedTags[u] = !0), d && h && !g)) {
if (
(q(null !== (i = h.attributesForced) && void 0 !== i ? i : [], e => {
Jt(f, e.name, "{$uid}" === e.value ? "mce_" + fC++ : e.value);
}),
q(null !== (l = h.attributesDefault) && void 0 !== l ? l : [], e => {
on(f, e.name) || Jt(f, e.name, "{$uid}" === e.value ? "mce_" + fC++ : e.value);
}),
h.attributesRequired && !$(h.attributesRequired, e => on(f, e)))
)
return void ko(f);
if (
h.removeEmptyAttrs &&
(e => {
const t = e.dom.attributes;
return null == t || 0 === t.length;
})(f)
)
return void ko(f);
h.outputName &&
h.outputName !== u &&
((e, t) => {
const n = ((e, t) => {
const n = vn(t),
o = sn(e);
return en(n, o), n;
})(e, t);
bo(e, n);
const o = In(e);
wo(n, o), Eo(e);
})(f, h.outputName);
}
} else ke(c, u) ? Eo(f) : ko(f);
},
pC = (e, t, n, o, r, s) =>
("html" !== n && !Mr(o)) ||
(!(r in uC && dC(e, s, o)) && (!e.validate || t.isValid(o, r) || $e(r, "data-") || $e(r, "aria-"))),
hC = (e, t) => e.hasAttribute(mC) && ("id" === t || "class" === t || "style" === t),
bC = (e, t) => e in t.getBoolAttrs(),
vC = (e, t, n, o) => {
const {attributes: r} = e;
for (let s = r.length - 1; s >= 0; s--) {
const a = r[s],
i = a.name,
l = a.value;
pC(t, n, o, e.tagName.toLowerCase(), i, l) || hC(e, i)
? bC(i, n) && e.setAttribute(i, i)
: e.removeAttribute(i);
}
},
yC = (e, t, n) => {
const o = oC();
return (
o.addHook("uponSanitizeElement", (o, r) => {
gC(o, e, t, n.track(o), r);
}),
o.addHook("uponSanitizeAttribute", (o, r) => {
((e, t, n, o, r) => {
const s = e.tagName.toLowerCase(),
{attrName: a, attrValue: i} = r;
(r.keepAttr = pC(t, n, o, s, a, i)),
r.keepAttr
? ((r.allowedAttributes[a] = !0),
bC(a, n) && (r.attrValue = a),
t.allow_svg_data_urls && $e(i, "data:image/svg+xml") && (r.forceKeepAttr = !0))
: hC(e, a) && (r.forceKeepAttr = !0);
})(o, e, t, n.current(), r);
}),
o
);
},
CC = e => {
const t = Fr(e);
if ("svg" === t) {
const t = ["type", "href", "role", "arcrole", "title", "show", "actuate", "label", "from", "to"].map(
e => `xlink:${e}`
),
n = {IN_PLACE: !0, USE_PROFILES: {html: !0, svg: !0, svgFilters: !0}, ALLOWED_ATTR: t};
oC().sanitize(e, n);
} else {
if ("math" !== t) throw new Error("Not a namespace element");
{
const t = {IN_PLACE: !0, USE_PROFILES: {mathMl: !0}};
oC().sanitize(e, t);
}
}
},
wC = Dt.makeMap,
xC = Dt.extend,
EC = (e, t, n, o) => {
const r = e.name,
s = r in n && "title" !== r && "textarea" !== r,
a = t.childNodes;
for (let t = 0, r = a.length; t < r; t++) {
const r = a[t],
i = new ep(r.nodeName.toLowerCase(), r.nodeType);
if (er(r)) {
const e = r.attributes;
for (let t = 0, n = e.length; t < n; t++) {
const n = e[t];
i.attr(n.name, n.value);
}
Mr(i.name) && (o(r), (i.value = r.innerHTML));
} else dr(r) ? ((i.value = r.data), s && (i.raw = !0)) : (mr(r) || cr(r) || ur(r)) && (i.value = r.data);
Mr(i.name) || EC(i, r, n, o), e.append(i);
}
},
kC = (e = {}, t = Fs()) => {
const n = Xv(),
o = Xv(),
r = {validate: !0, root_name: "body", sanitize: !0, ...e},
s = new DOMParser(),
a = ((e, t) => {
const n = (() => {
const e = Dr(),
t = () => e.get().map(Fr).getOr("html");
return {
track: n => (Ir(n) ? e.set(n) : e.get().exists(e => !e.contains(n)) && e.clear(), t()),
current: t,
reset: () => {
e.clear();
}
};
})();
if (e.sanitize) {
const o = yC(e, t, n),
r = (t, r) => {
o.sanitize(
t,
((e, t) => {
const n = {
IN_PLACE: !0,
ALLOW_UNKNOWN_PROTOCOLS: !0,
ALLOWED_TAGS: ["#comment", "#cdata-section", "body"],
ALLOWED_ATTR: []
};
return (
(n.PARSER_MEDIA_TYPE = t),
e.allow_script_urls
? (n.ALLOWED_URI_REGEXP = /.*/)
: e.allow_html_data_urls && (n.ALLOWED_URI_REGEXP = /^(?!(\w+script|mhtml):)/i),
n
);
})(e, r)
),
(o.removed = []),
n.reset();
};
return {sanitizeHtmlElement: r, sanitizeNamespaceElement: CC};
}
return {
sanitizeHtmlElement: (o, r) => {
const s = document.createNodeIterator(
o,
NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT
);
let a;
for (; (a = s.nextNode()); ) {
const o = n.track(a);
gC(a, e, t, o), er(a) && vC(a, e, t, o);
}
n.reset();
},
sanitizeNamespaceElement: k
};
})(r, t),
i = n.addFilter,
l = n.getFilters,
d = n.removeFilter,
c = o.addFilter,
u = o.getFilters,
f = o.removeFilter,
g = (e, n) => {
const o = m(n.attr(mC)),
r = 1 === n.type && !ke(e, n.name) && !Jr(t, n) && !Mr(n.name);
return 3 === n.type || (r && !o);
},
p = {
schema: t,
addAttributeFilter: c,
getAttributeFilters: u,
removeAttributeFilter: f,
addNodeFilter: i,
getNodeFilters: l,
removeNodeFilter: d,
parse: (e, n = {}) => {
var o;
const i = r.validate,
d = null !== (o = n.context) && void 0 !== o ? o : r.root_name,
c = ((e, n, o = "html") => {
const r = "xhtml" === o ? "application/xhtml+xml" : "text/html",
i = ke(t.getSpecialElements(), n.toLowerCase()),
l = i ? `<${n}>${e}</${n}>` : e,
d =
"xhtml" === o
? `<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>${l}</body></html>`
: `<body>${l}</body>`,
c = s.parseFromString(d, r).body;
return a.sanitizeHtmlElement(c, r), i ? c.firstChild : c;
})(e, d, n.format);
Wr(t, c);
const m = new ep(d, 11);
EC(m, c, t.getSpecialElements(), a.sanitizeNamespaceElement), (c.innerHTML = "");
const [f, p] = ((e, t, n, o) => {
const r = n.validate,
s = t.getNonEmptyElements(),
a = t.getWhitespaceElements(),
i = xC(wC("script,style,head,html,body,title,meta,param"), t.getBlockElements()),
l = Ms(t),
d = /[ \t\r\n]+/g,
c = /^[ \t\r\n]+/,
u = /[ \t\r\n]+$/,
m = e => {
let t = e.parent;
for (; C(t); ) {
if (t.name in a) return !0;
t = t.parent;
}
return !1;
},
f = n => n.name in i || Jr(t, n) || (Mr(n.name) && n.parent === e),
g = (t, n) => {
const r = n ? t.prev : t.next;
return !C(r) && !y(t.parent) && f(t.parent) && (t.parent !== e || !0 === o.isRootContent);
};
return [
e => {
var t;
if (3 === e.type && !m(e)) {
let n = null !== (t = e.value) && void 0 !== t ? t : "";
(n = n.replace(d, " ")),
(((e, t) => C(e) && (t(e) || "br" === e.name))(e.prev, f) || g(e, !0)) &&
(n = n.replace(c, "")),
0 === n.length ? e.remove() : (e.value = n);
}
},
e => {
var i;
if (1 === e.type) {
const i = t.getElementRule(e.name);
if (r && i) {
const r = kb(t, s, a, e);
i.paddInEmptyBlock &&
r &&
(e => {
let n = e;
for (; C(n); ) {
if (n.name in l) return kb(t, s, a, n);
n = n.parent;
}
return !1;
})(e)
? xb(n, o, f, e)
: i.removeEmpty && r
? f(e)
? e.remove()
: e.unwrap()
: i.paddEmpty &&
(r ||
(e => {
var t;
return (
Eb(e, "#text") &&
(null === (t = null == e ? void 0 : e.firstChild) || void 0 === t
? void 0
: t.value) === Wo
);
})(e)) &&
xb(n, o, f, e);
}
} else if (3 === e.type && !m(e)) {
let t = null !== (i = e.value) && void 0 !== i ? i : "";
((e.next && f(e.next)) || g(e, !1)) && (t = t.replace(u, "")),
0 === t.length ? e.remove() : (e.value = t);
}
}
];
})(m, t, r, n),
h = [],
b = i
? e =>
((e, n) => {
Rb(t, e) && n.push(e);
})(e, h)
: k,
v = {nodes: {}, attributes: {}},
w = e => yb(l(), u(), e, v);
if (
(((e, t, n) => {
const o = [];
for (let n = e, r = n; n; r = n, n = n.walk()) {
const s = n;
q(t, e => e(s)), y(s.parent) && s !== e ? (n = r) : o.push(s);
}
for (let e = o.length - 1; e >= 0; e--) {
const t = o[e];
q(n, e => e(t));
}
})(m, [f, w], [p, b]),
h.reverse(),
i && h.length > 0)
)
if (n.context) {
const {pass: e, fail: o} = K(h, e => e.parent === m);
Nb(o, t, m, w), (n.invalid = e.length > 0);
} else Nb(h, t, m, w);
const x = ((e, t) => {
var n;
const o = null !== (n = t.forced_root_block) && void 0 !== n ? n : e.forced_root_block;
return !1 === o ? "" : !0 === o ? "p" : o;
})(r, n);
return (
x &&
("body" === m.name || n.isRootContent) &&
((e, n) => {
const o = xC(wC("script,style,head,html,body,title,meta,param"), t.getBlockElements()),
s = /^[ \t\r\n]+/,
a = /[ \t\r\n]+$/;
let i = e.firstChild,
l = null;
const d = e => {
var t, n;
e &&
((i = e.firstChild),
i &&
3 === i.type &&
(i.value = null === (t = i.value) || void 0 === t ? void 0 : t.replace(s, "")),
(i = e.lastChild),
i &&
3 === i.type &&
(i.value = null === (n = i.value) || void 0 === n ? void 0 : n.replace(a, "")));
};
if (t.isValidChild(e.name, n.toLowerCase())) {
for (; i; ) {
const t = i.next;
g(o, i)
? (l || ((l = new ep(n, 1)), l.attr(r.forced_root_block_attrs), e.insert(l, i)), l.append(i))
: (d(l), (l = null)),
(i = t);
}
d(l);
}
})(m, x),
n.invalid || Cb(v, n),
m
);
}
};
return (
((e, t) => {
var n, o;
const r = e.schema;
e.addAttributeFilter("href", e => {
let n = e.length;
const o = e => {
const t = e ? Dt.trim(e) : "";
return /\b(noopener)\b/g.test(t)
? t
: (e =>
e
.split(" ")
.filter(e => e.length > 0)
.concat(["noopener"])
.sort()
.join(" "))(t);
};
if (!t.allow_unsafe_link_target)
for (; n--; ) {
const t = e[n];
"a" === t.name && "_blank" === t.attr("target") && t.attr("rel", o(t.attr("rel")));
}
}),
t.allow_html_in_named_anchor ||
e.addAttributeFilter("id,name", e => {
let t,
n,
o,
r,
s = e.length;
for (; s--; )
if (((r = e[s]), "a" === r.name && r.firstChild && !r.attr("href")))
for (o = r.parent, t = r.lastChild; t && o; ) (n = t.prev), o.insert(t, r), (t = n);
}),
t.fix_list_elements &&
e.addNodeFilter("ul,ol", e => {
let t,
n,
o = e.length;
for (; o--; )
if (((t = e[o]), (n = t.parent), n && ("ul" === n.name || "ol" === n.name)))
if (t.prev && "li" === t.prev.name) t.prev.append(t);
else {
const e = new ep("li", 1);
e.attr("style", "list-style-type: none"), t.wrap(e);
}
});
const s = r.getValidClasses();
t.validate &&
s &&
e.addAttributeFilter("class", e => {
var t;
let n = e.length;
for (; n--; ) {
const o = e[n],
r = null !== (t = o.attr("class")) && void 0 !== t ? t : "",
a = Dt.explode(r, " ");
let i = "";
for (let e = 0; e < a.length; e++) {
const t = a[e];
let n = !1,
r = s["*"];
r && r[t] && (n = !0), (r = s[o.name]), !n && r && r[t] && (n = !0), n && (i && (i += " "), (i += t));
}
i.length || (i = null), o.attr("class", i);
}
}),
((e, t) => {
const {blob_cache: n} = t;
if (n) {
const t = e => {
const t = e.attr("src");
(e => e.attr("src") === Tt.transparentSrc || C(e.attr("data-mce-placeholder")))(e) ||
(e => C(e.attr("data-mce-bogus")))(e) ||
y(t) ||
ry(n, t, !0).each(t => {
e.attr("src", t.blobUri());
});
};
e.addAttributeFilter("src", e => q(e, t));
}
})(e, t);
const a = null !== (n = t.sandbox_iframes) && void 0 !== n && n,
i = me(null !== (o = t.sandbox_iframes_exclusions) && void 0 !== o ? o : []);
t.convert_unsafe_embeds &&
e.addNodeFilter("object,embed", e =>
q(e, e => {
e.replace(
(({type: e, src: t, width: n, height: o} = {}, r, s) => {
const a = (e =>
v(e)
? "iframe"
: ly(e, "image")
? "img"
: ly(e, "video")
? "video"
: ly(e, "audio")
? "audio"
: "iframe")(e),
i = new ep(a, 1);
return (
i.attr("audio" === a ? {src: t} : {src: t, width: n, height: o}),
("audio" !== a && "video" !== a) || i.attr("controls", ""),
"iframe" === a && r && iy(i, s),
i
);
})(
{
type: e.attr("type"),
src: "object" === e.name ? e.attr("data") : e.attr("src"),
width: e.attr("width"),
height: e.attr("height")
},
a,
i
)
);
})
),
a && e.addNodeFilter("iframe", e => q(e, e => iy(e, i)));
})(p, r),
((e, t, n) => {
t.inline_styles && Zv(e, t, n);
})(p, r, t),
p
);
},
_C = (e, t, n) => {
const o = (e => (Fb(e) ? yp({validate: !1}).serialize(e) : e))(e),
r = t(o);
if (r.isDefaultPrevented()) return r;
if (Fb(e)) {
if (r.content !== o) {
const t = kC({validate: !1, forced_root_block: !1, ...n}).parse(r.content, {context: e.name});
return {...r, content: t};
}
return {...r, content: e};
}
return r;
},
SC = e => ({sanitize: xc(e), sandbox_iframes: Rc(e), sandbox_iframes_exclusions: Ac(e)}),
NC = (e, t) => {
if (t.no_events) return El.value(t);
{
const n = ((e, t) => e.dispatch("BeforeGetContent", t))(e, t);
return n.isDefaultPrevented() ? El.error(bf(e, {content: "", ...n}).content) : El.value(n);
}
},
RC = (e, t, n) => {
if (n.no_events) return t;
{
const o = _C(t, t => bf(e, {...n, content: t}), SC(e));
return o.content;
}
},
AC = (e, t) => {
if (t.no_events) return El.value(t);
{
const n = _C(t.content, n => ((e, t) => e.dispatch("BeforeSetContent", t))(e, {...t, content: n}), SC(e));
return n.isDefaultPrevented() ? (hf(e, n), El.error(void 0)) : El.value(n);
}
},
TC = (e, t, n) => {
n.no_events || hf(e, {...n, content: t});
},
OC = (e, t, n) => ({element: e, width: t, rows: n}),
BC = (e, t) => ({element: e, cells: t}),
PC = (e, t) => ({x: e, y: t}),
DC = (e, t) => nn(e, t).bind(Ze).getOr(1),
LC = (e, t, n) => {
const o = e.rows;
return !!(o[n] ? o[n].cells : [])[t];
},
MC = e => X(e, (e, t) => (t.cells.length > e ? t.cells.length : e), 0),
IC = (e, t) => {
const n = e.rows;
for (let e = 0; e < n.length; e++) {
const o = n[e].cells;
for (let n = 0; n < o.length; n++) if (_n(o[n], t)) return I.some(PC(n, e));
}
return I.none();
},
FC = (e, t, n, o, r) => {
const s = [],
a = e.rows;
for (let e = n; e <= r; e++) {
const n = a[e].cells,
r = t < o ? n.slice(t, o + 1) : n.slice(o, t + 1);
s.push(BC(a[e].element, r));
}
return s;
},
UC = e =>
((e, t) => {
const n = Ia(e.element),
o = vn("tbody");
return wo(o, t), yo(n, o), n;
})(
e,
(e =>
V(e.rows, e => {
const t = V(e.cells, e => {
const t = Fa(e);
return rn(t, "colspan"), rn(t, "rowspan"), t;
}),
n = Ia(e.element);
return wo(n, t), n;
}))(e)
),
zC = (e, t, n) => {
const o = Cn(t.commonAncestorContainer),
r = zp(o, e),
s = Y(r, e => n.isWrapper($t(e))),
a = ((e, t) =>
Q(e, e => "li" === $t(e) && hm(e, t)).fold(N([]), t =>
(e => Q(e, e => "ul" === $t(e) || "ol" === $t(e)))(e)
.map(e => {
const t = vn($t(e)),
n = Ce(go(e), (e, t) => $e(t, "list-style"));
return co(t, n), [vn("li"), t];
})
.getOr([])
))(r, t),
i = s.concat(
a.length
? a
: (e =>
Ka(e)
? Tn(e)
.filter(Wa)
.fold(N([]), t => [e, t])
: Wa(e)
? [e]
: [])(o)
);
return V(i, Ia);
},
jC = () => Uf([]),
HC = (e, t) =>
((e, t) => to(t, "table", T(_n, e)))(e, t[0])
.bind(e => {
const n = t[0],
o = t[t.length - 1],
r = (e => {
const t = OC(Ia(e), 0, []);
return (
q(zo(e, "tr"), (e, n) => {
q(zo(e, "td,th"), (o, r) => {
((e, t, n, o, r) => {
const s = DC(r, "rowspan"),
a = DC(r, "colspan"),
i = e.rows;
for (let e = n; e < n + s; e++) {
i[e] || (i[e] = BC(Fa(o), []));
for (let o = t; o < t + a; o++) i[e].cells[o] = e === n && o === t ? r : Ia(r);
}
})(
t,
((e, t, n) => {
for (; LC(e, t, n); ) t++;
return t;
})(t, r, n),
n,
e,
o
);
});
}),
OC(t.element, MC(t.rows), t.rows)
);
})(e);
return ((e, t, n) =>
IC(e, t).bind(t =>
IC(e, n).map(n =>
((e, t, n) => {
const o = t.x,
r = t.y,
s = n.x,
a = n.y,
i = r < a ? FC(e, o, r, s, a) : FC(e, o, a, s, r);
return OC(e.element, MC(i), i);
})(e, t, n)
)
))(r, n, o).map(e => Uf([UC(e)]));
})
.getOrThunk(jC),
$C = (e, t, n) => {
const o = um(t, e);
return o.length > 0
? HC(e, o)
: ((e, t, n) =>
t.length > 0 && t[0].collapsed
? jC()
: ((e, t, n) =>
((e, t) => {
const n = X(t, (e, t) => (yo(t, e), t), e);
return t.length > 0 ? Uf([n]) : n;
})(Cn(t.cloneContents()), zC(e, t, n)))(e, t[0], n))(e, t, n);
},
VC = (e, t) => t >= 0 && t < e.length && lm(e.charAt(t)),
qC = e => ti(e.innerText),
WC = e => (er(e) ? e.outerHTML : dr(e) ? ws.encodeRaw(e.data, !1) : mr(e) ? "\x3c!--" + e.data + "--\x3e" : ""),
KC = (e, t) => (
((e, t) => {
let n = 0;
q(e, e => {
0 === e[0]
? n++
: 1 === e[0]
? (((e, t, n) => {
const o = (e => {
let t;
const n = document.createElement("div"),
o = document.createDocumentFragment();
for (e && (n.innerHTML = e); (t = n.firstChild); ) o.appendChild(t);
return o;
})(t);
if (e.hasChildNodes() && n < e.childNodes.length) {
const t = e.childNodes[n];
e.insertBefore(o, t);
} else e.appendChild(o);
})(t, e[1], n),
n++)
: 2 === e[0] &&
((e, t) => {
if (e.hasChildNodes() && t < e.childNodes.length) {
const n = e.childNodes[t];
e.removeChild(n);
}
})(t, n);
});
})(
((e, t) => {
const n = e.length + t.length + 2,
o = new Array(n),
r = new Array(n),
s = (n, o, r, a, l) => {
const d = i(n, o, r, a);
if (null === d || (d.start === o && d.diag === o - a) || (d.end === n && d.diag === n - r)) {
let s = n,
i = r;
for (; s < o || i < a; )
s < o && i < a && e[s] === t[i]
? (l.push([0, e[s]]), ++s, ++i)
: o - n > a - r
? (l.push([2, e[s]]), ++s)
: (l.push([1, t[i]]), ++i);
} else {
s(n, d.start, r, d.start - d.diag, l);
for (let t = d.start; t < d.end; ++t) l.push([0, e[t]]);
s(d.end, o, d.end - d.diag, a, l);
}
},
a = (n, o, r, s) => {
let a = n;
for (; a - o < s && a < r && e[a] === t[a - o]; ) ++a;
return ((e, t, n) => ({start: e, end: t, diag: n}))(n, a, o);
},
i = (n, s, i, l) => {
const d = s - n,
c = l - i;
if (0 === d || 0 === c) return null;
const u = d - c,
m = c + d,
f = (m % 2 == 0 ? m : m + 1) / 2;
let g, p, h, b, v;
for (o[1 + f] = n, r[1 + f] = s + 1, g = 0; g <= f; ++g) {
for (p = -g; p <= g; p += 2) {
for (
h = p + f,
p === -g || (p !== g && o[h - 1] < o[h + 1]) ? (o[h] = o[h + 1]) : (o[h] = o[h - 1] + 1),
b = o[h],
v = b - n + i - p;
b < s && v < l && e[b] === t[v];
)
(o[h] = ++b), ++v;
if (u % 2 != 0 && u - g <= p && p <= u + g && r[h - u] <= o[h]) return a(r[h - u], p + n - i, s, l);
}
for (p = u - g; p <= u + g; p += 2) {
for (
h = p + f - u,
p === u - g || (p !== u + g && r[h + 1] <= r[h - 1]) ? (r[h] = r[h + 1] - 1) : (r[h] = r[h - 1]),
b = r[h] - 1,
v = b - n + i - p;
b >= n && v >= i && e[b] === t[v];
)
(r[h] = b--), v--;
if (u % 2 == 0 && -g <= p && p <= g && r[h] <= o[h + u]) return a(r[h], p + n - i, s, l);
}
}
return null;
},
l = [];
return s(0, e.length, 0, t.length, l), l;
})(V(ce(t.childNodes), WC), e),
t
),
t
),
YC = Le(() => document.implementation.createHTMLDocument("undo")),
GC = e => {
const t = e.serializer.getTempAttrs(),
n = fp(e.getBody(), t);
return (e => null !== e.querySelector("iframe"))(n)
? {
type: "fragmented",
fragments: Y(V(ce(n.childNodes), _(ti, WC)), e => e.length > 0),
content: "",
bookmark: null,
beforeBookmark: null
}
: {type: "complete", fragments: null, content: ti(n.innerHTML), bookmark: null, beforeBookmark: null};
},
XC = (e, t, n) => {
const o = n ? t.beforeBookmark : t.bookmark;
"fragmented" === t.type
? KC(t.fragments, e.getBody())
: e.setContent(t.content, {format: "raw", no_selection: !C(o) || !Gu(o) || !o.isFakeCaret}),
o && (e.selection.moveToBookmark(o), e.selection.scrollIntoView());
},
ZC = e => ("fragmented" === e.type ? e.fragments.join("") : e.content),
QC = e => {
const t = vn("body", YC());
return No(t, ZC(e)), q(zo(t, "*[data-mce-bogus]"), ko), So(t);
},
JC = (e, t) => !(!e || !t) && (!!((e, t) => ZC(e) === ZC(t))(e, t) || ((e, t) => QC(e) === QC(t))(e, t)),
ew = e => 0 === e.get(),
tw = (e, t, n) => {
ew(n) && (e.typing = t);
},
nw = (e, t) => {
e.typing && (tw(e, !1, t), e.add());
},
ow = e => ({
init: {bindEvents: k},
undoManager: {
beforeChange: (t, n) =>
((e, t, n) => {
ew(t) && n.set(Cl(e.selection));
})(e, t, n),
add: (t, n, o, r, s, a) =>
((e, t, n, o, r, s, a) => {
const i = GC(e),
l = Dt.extend(s || {}, i);
if (!ew(o) || e.removed) return null;
const d = t.data[n.get()];
if (e.dispatch("BeforeAddUndo", {level: l, lastLevel: d, originalEvent: a}).isDefaultPrevented())
return null;
if (d && JC(d, l)) return null;
t.data[n.get()] &&
r.get().each(e => {
t.data[n.get()].beforeBookmark = e;
});
const c = Ud(e);
if (c && t.data.length > c) {
for (let e = 0; e < t.data.length - 1; e++) t.data[e] = t.data[e + 1];
t.data.length--, n.set(t.data.length);
}
(l.bookmark = Cl(e.selection)),
n.get() < t.data.length - 1 && (t.data.length = n.get() + 1),
t.data.push(l),
n.set(t.data.length - 1);
const u = {level: l, lastLevel: d, originalEvent: a};
return (
n.get() > 0
? (e.setDirty(!0), e.dispatch("AddUndo", u), e.dispatch("change", u))
: e.dispatch("AddUndo", u),
l
);
})(e, t, n, o, r, s, a),
undo: (t, n, o) =>
((e, t, n, o) => {
let r;
return (
t.typing && (t.add(), (t.typing = !1), tw(t, !1, n)),
o.get() > 0 &&
(o.set(o.get() - 1),
(r = t.data[o.get()]),
XC(e, r, !0),
e.setDirty(!0),
e.dispatch("Undo", {level: r})),
r
);
})(e, t, n, o),
redo: (t, n) =>
((e, t, n) => {
let o;
return (
t.get() < n.length - 1 &&
(t.set(t.get() + 1), (o = n[t.get()]), XC(e, o, !1), e.setDirty(!0), e.dispatch("Redo", {level: o})),
o
);
})(e, t, n),
clear: (t, n) =>
((e, t, n) => {
(t.data = []), n.set(0), (t.typing = !1), e.dispatch("ClearUndos");
})(e, t, n),
reset: e =>
(e => {
e.clear(), e.add();
})(e),
hasUndo: (t, n) => ((e, t, n) => n.get() > 0 || (t.typing && t.data[0] && !JC(GC(e), t.data[0])))(e, t, n),
hasRedo: (e, t) => ((e, t) => t.get() < e.data.length - 1 && !e.typing)(e, t),
transact: (e, t, n) => ((e, t, n) => (nw(e, t), e.beforeChange(), e.ignore(n), e.add()))(e, t, n),
ignore: (e, t) =>
((e, t) => {
try {
e.set(e.get() + 1), t();
} finally {
e.set(e.get() - 1);
}
})(e, t),
extra: (t, n, o, r) =>
((e, t, n, o, r) => {
if (t.transact(o)) {
const o = t.data[n.get()].bookmark,
s = t.data[n.get() - 1];
XC(e, s, !0), t.transact(r) && (t.data[n.get() - 1].beforeBookmark = o);
}
})(e, t, n, o, r)
},
formatter: {
match: (t, n, o, r) => Yb(e, t, n, o, r),
matchAll: (t, n) =>
((e, t, n) => {
const o = [],
r = {},
s = e.selection.getStart();
return (
e.dom.getParent(
s,
s => {
for (let a = 0; a < t.length; a++) {
const i = t[a];
!r[i] && Kb(e, s, i, n) && ((r[i] = !0), o.push(i));
}
},
e.dom.getRoot()
),
o
);
})(e, t, n),
matchNode: (t, n, o, r) => Kb(e, t, n, o, r),
canApply: t =>
((e, t) => {
const n = e.formatter.get(t),
o = e.dom;
if (n && e.selection.isEditable()) {
const t = e.selection.getStart(),
r = Lm(o, t);
for (let e = n.length - 1; e >= 0; e--) {
const t = n[e];
if (!Fm(t)) return !0;
for (let e = r.length - 1; e >= 0; e--) if (o.is(r[e], t.selector)) return !0;
}
}
return !1;
})(e, t),
closest: t =>
((e, t) => {
const n = t => _n(t, Cn(e.getBody()));
return I.from(e.selection.getStart(!0))
.bind(o => jb(Cn(o), n => ue(t, t => ((t, n) => (Kb(e, t.dom, n) ? I.some(n) : I.none()))(n, t)), n))
.getOrNull();
})(e, t),
apply: (t, n, o) => $v(e, t, n, o),
remove: (t, n, o, r) => Iv(e, t, n, o, r),
toggle: (t, n, o) =>
((e, t, n, o) => {
const r = e.formatter.get(t);
r && (!Yb(e, t, n, o) || ("toggle" in r[0] && !r[0].toggle) ? $v(e, t, n, o) : Iv(e, t, n, o));
})(e, t, n, o),
formatChanged: (t, n, o, r, s) =>
((e, t, n, o, r, s) => (
((e, t, n, o, r, s) => {
const a = t.get();
q(n.split(","), t => {
const n = Ee(a, t).getOrThunk(() => {
const e = {
withSimilar: {state: Br(!1), similar: !0, callbacks: []},
withoutSimilar: {state: Br(!1), similar: !1, callbacks: []},
withVars: []
};
return (a[t] = e), e;
}),
i = () => {
const n = Kv(e);
return Wv(e, n, t, r, s).isSome();
};
if (v(s)) {
const e = r ? n.withSimilar : n.withoutSimilar;
e.callbacks.push(o), 1 === e.callbacks.length && e.state.set(i());
} else n.withVars.push({state: Br(i()), similar: r, vars: s, callback: o});
}),
t.set(a);
})(e, t, n, o, r, s),
{
unbind: () =>
((e, t, n) => {
const o = e.get();
q(t.split(","), e =>
Ee(o, e).each(t => {
o[e] = {
withSimilar: {...t.withSimilar, callbacks: Y(t.withSimilar.callbacks, e => e !== n)},
withoutSimilar: {...t.withoutSimilar, callbacks: Y(t.withoutSimilar.callbacks, e => e !== n)},
withVars: Y(t.withVars, e => e.callback !== n)
};
})
),
e.set(o);
})(t, n, o)
}
))(e, t, n, o, r, s)
},
editor: {
getContent: t =>
((e, t) => I.from(e.getBody()).fold(N("tree" === t.format ? new ep("body", 11) : ""), n => hp(e, t, n)))(
e,
t
),
setContent: (t, n) =>
((e, t, n) =>
I.from(e.getBody())
.map(o =>
Fb(t)
? ((e, t, n, o) => {
wb(e.parser.getNodeFilters(), e.parser.getAttributeFilters(), n);
const r = yp({validate: !1}, e.schema).serialize(n),
s = ti(Xa(Cn(t)) ? r : Dt.trim(r));
return Ub(e, s, o.no_selection), {content: n, html: s};
})(e, o, t, n)
: ((e, t, n, o) => {
if (0 === (n = ti(n)).length || /^\s+$/.test(n)) {
const r = '<br data-mce-bogus="1">';
"TABLE" === t.nodeName
? (n = "<tr><td>" + r + "</td></tr>")
: /^(UL|OL)$/.test(t.nodeName) && (n = "<li>" + r + "</li>");
const s = Wl(e);
return (
e.schema.isValidChild(t.nodeName.toLowerCase(), s.toLowerCase())
? ((n = r), (n = e.dom.createHTML(s, Kl(e), n)))
: n || (n = r),
Ub(e, n, o.no_selection),
{content: n, html: n}
);
}
{
"raw" !== o.format &&
(n = yp({validate: !1}, e.schema).serialize(
e.parser.parse(n, {isRootContent: !0, insert: !0})
));
const r = Xa(Cn(t)) ? n : Dt.trim(n);
return Ub(e, r, o.no_selection), {content: r, html: r};
}
})(e, o, t, n)
)
.getOr({content: t, html: Fb(n.content) ? "" : n.content}))(e, t, n),
insertContent: (t, n) => Ib(e, t, n),
addVisual: t =>
((e, t) => {
const n = e.dom,
o = C(t) ? t : e.getBody();
q(n.select("table,a", o), t => {
switch (t.nodeName) {
case "TABLE":
const o = Yd(e),
r = n.getAttrib(t, "border");
(r && "0" !== r) || !e.hasVisual ? n.removeClass(t, o) : n.addClass(t, o);
break;
case "A":
if (!n.getAttrib(t, "href")) {
const o = n.getAttrib(t, "name") || t.id,
r = Gd(e);
o && e.hasVisual ? n.addClass(t, r) : n.removeClass(t, r);
}
}
}),
e.dispatch("VisualAid", {element: t, hasVisual: e.hasVisual});
})(e, t)
},
selection: {
getContent: (t, n) =>
((e, t, n = {}) => {
const o = ((e, t) => ({...e, format: t, get: !0, selection: !0, getInner: !0}))(n, t);
return NC(e, o).fold(R, t => {
const n = ((e, t) => {
if ("text" === t.format)
return (e =>
I.from(e.selection.getRng())
.map(t => {
var n;
const o = I.from(e.dom.getParent(t.commonAncestorContainer, e.dom.isBlock)),
r = e.getBody(),
s = (e =>
e
.map(e => e.nodeName)
.getOr("div")
.toLowerCase())(o),
a = Cn(t.cloneContents());
gp(a), pp(a);
const i = e.dom.add(
r,
s,
{"data-mce-bogus": "all", style: "overflow: hidden; opacity: 0;"},
a.dom
),
l = qC(i),
d = ti(null !== (n = i.textContent) && void 0 !== n ? n : "");
if ((e.dom.remove(i), VC(d, 0) || VC(d, d.length - 1))) {
const e = o.getOr(r),
t = qC(e),
n = t.indexOf(l);
return -1 === n ? l : (VC(t, n - 1) ? " " : "") + l + (VC(t, n + l.length) ? " " : "");
}
return l;
})
.getOr(""))(e);
{
const n = ((e, t) => {
const n = e.selection.getRng(),
o = e.dom.create("body"),
r = e.selection.getSel(),
s = Gg(e, cm(r)),
a = t.contextual ? $C(Cn(e.getBody()), s, e.schema).dom : n.cloneContents();
return a && o.appendChild(a), e.selection.serializer.serialize(o, t);
})(e, t);
return "tree" === t.format ? n : e.selection.isCollapsed() ? "" : n;
}
})(e, t);
return RC(e, n, t);
});
})(e, t, n)
},
autocompleter: {addDecoration: k, removeDecoration: k},
raw: {getModel: () => I.none()}
}),
rw = e => ke(e.plugins, "rtc"),
sw = e => (e.rtcInstance ? e.rtcInstance : ow(e)),
aw = e => {
const t = e.rtcInstance;
if (t) return t;
throw new Error("Failed to get RTC instance not yet initialized.");
},
iw = e => aw(e).init.bindEvents(),
lw = e => (0 === e.dom.length ? (Eo(e), I.none()) : I.some(e)),
dw = (e, t, n, o, r) => {
e.bind(
e => (
(o ? vh : bh)(e.dom, o ? e.dom.length : 0, r),
t.filter(Yt).map(t =>
((e, t, n, o, r) => {
const s = e.dom,
a = t.dom,
i = o ? s.length : a.length;
o ? (yh(s, a, r, !1, !o), n.setStart(a, i)) : (yh(a, s, r, !1, !o), n.setEnd(a, i));
})(e, t, n, o, r)
)
)
).orThunk(() => {
const e = ((e, t) => e.filter(e => uf.isBookmarkNode(e.dom)).bind(t ? Dn : Pn))(t, o).or(t).filter(Yt);
return e.map(e =>
((e, t, n) => {
Tn(e).each(o => {
const r = e.dom;
t && lh(o, Ji(r, 0), n) ? bh(r, 0, n) : !t && dh(o, Ji(r, r.length), n) && vh(r, r.length, n);
});
})(e, o, r)
);
});
},
cw = (e, t, n) => {
if (ke(e, t)) {
const o = Y(e[t], e => e !== n);
0 === o.length ? delete e[t] : (e[t] = o);
}
};
const uw = e => !(!e || !e.ownerDocument) && Sn(Cn(e.ownerDocument), Cn(e)),
mw = (e, t, n, o) => {
let r, s;
const {selectorChangedWithUnbind: a} = ((e, t) => {
let n, o;
const r = (t, n) => Q(n, n => e.is(n, t)),
s = t => e.getParents(t, void 0, e.getRoot());
return {
selectorChangedWithUnbind: (e, a) => (
n ||
((n = {}),
(o = {}),
t.on("NodeChange", e => {
const t = e.element,
a = s(t),
i = {};
pe(n, (e, t) => {
r(t, a).each(n => {
o[t] ||
(q(e, e => {
e(!0, {node: n, selector: t, parents: a});
}),
(o[t] = e)),
(i[t] = e);
});
}),
pe(o, (e, n) => {
i[n] ||
(delete o[n],
q(e, e => {
e(!1, {node: t, selector: n, parents: a});
}));
});
})),
n[e] || (n[e] = []),
n[e].push(a),
r(e, s(t.selection.getStart())).each(() => {
o[e] = n[e];
}),
{
unbind: () => {
cw(n, e, a), cw(o, e, a);
}
}
)
};
})(e, o),
i = (e, t) =>
((e, t, n = {}) => {
const o = ((e, t) => ({format: "html", ...e, set: !0, selection: !0, content: t}))(n, t);
AC(e, o).each(t => {
const n = ((e, t) => {
if ("raw" !== t.format) {
const n = e.selection.getRng(),
o = e.dom.getParent(n.commonAncestorContainer, e.dom.isBlock),
r = o ? {context: o.nodeName.toLowerCase()} : {},
s = e.parser.parse(t.content, {forced_root_block: !1, ...r, ...t});
return yp({validate: !1}, e.schema).serialize(s);
}
return t.content;
})(e, t),
o = e.selection.getRng();
((e, t, n) => {
const o = I.from(t.firstChild).map(Cn),
r = I.from(t.lastChild).map(Cn);
e.deleteContents(), e.insertNode(t);
const s = o.bind(Pn).filter(Yt).bind(lw),
a = r.bind(Dn).filter(Yt).bind(lw);
dw(s, o, e, !0, n), dw(a, r, e, !1, n), e.collapse(!1);
})(o, o.createContextualFragment(n), e.schema),
e.selection.setRng(o),
vg(e, o),
TC(e, n, t);
});
})(o, e, t),
l = e => {
const t = c();
t.collapse(!!e), u(t);
},
d = () => (t.getSelection ? t.getSelection() : t.document.selection),
c = () => {
let n;
const a = (e, t, n) => {
try {
return t.compareBoundaryPoints(e, n);
} catch (e) {
return -1;
}
},
i = t.document;
if (C(o.bookmark) && !jg(o)) {
const e = Ag(o);
if (e.isSome()) return e.map(e => Gg(o, [e])[0]).getOr(i.createRange());
}
try {
const e = d();
e && !Jo(e.anchorNode) && ((n = e.rangeCount > 0 ? e.getRangeAt(0) : i.createRange()), (n = Gg(o, [n])[0]));
} catch (e) {}
if ((n || (n = i.createRange()), fr(n.startContainer) && n.collapsed)) {
const t = e.getRoot();
n.setStart(t, 0), n.setEnd(t, 0);
}
return (
r &&
s &&
(0 === a(n.START_TO_START, n, r) && 0 === a(n.END_TO_END, n, r) ? (n = s) : ((r = null), (s = null))),
n
);
},
u = (e, t) => {
if (!(e => !!e && uw(e.startContainer) && uw(e.endContainer))(e)) return;
const n = d();
if (((e = o.dispatch("SetSelectionRange", {range: e, forward: t}).range), n)) {
s = e;
try {
n.removeAllRanges(), n.addRange(e);
} catch (e) {}
!1 === t &&
n.extend &&
(n.collapse(e.endContainer, e.endOffset), n.extend(e.startContainer, e.startOffset)),
(r = n.rangeCount > 0 ? n.getRangeAt(0) : null);
}
if (
!e.collapsed &&
e.startContainer === e.endContainer &&
(null == n ? void 0 : n.setBaseAndExtent) &&
e.endOffset - e.startOffset < 2 &&
e.startContainer.hasChildNodes()
) {
const t = e.startContainer.childNodes[e.startOffset];
t &&
"IMG" === t.nodeName &&
(n.setBaseAndExtent(e.startContainer, e.startOffset, e.endContainer, e.endOffset),
(n.anchorNode === e.startContainer && n.focusNode === e.endContainer) || n.setBaseAndExtent(t, 0, t, 1));
}
o.dispatch("AfterSetSelectionRange", {range: e, forward: t});
},
m = () => {
const t = d(),
n = null == t ? void 0 : t.anchorNode,
o = null == t ? void 0 : t.focusNode;
if (!t || !n || !o || Jo(n) || Jo(o)) return !0;
const r = e.createRng(),
s = e.createRng();
try {
r.setStart(n, t.anchorOffset), r.collapse(!0), s.setStart(o, t.focusOffset), s.collapse(!0);
} catch (e) {
return !0;
}
return r.compareBoundaryPoints(r.START_TO_START, s) <= 0;
},
f = {
dom: e,
win: t,
serializer: n,
editor: o,
expand: (t = {type: "word"}) => u(Qf(e).expand(c(), t)),
collapse: l,
setCursorLocation: (t, n) => {
const r = e.createRng();
C(t) && C(n) ? (r.setStart(t, n), r.setEnd(t, n), u(r), l(!1)) : (bm(e, r, o.getBody(), !0), u(r));
},
getContent: e =>
((e, t = {}) => ((e, t, n) => aw(e).selection.getContent(t, n))(e, t.format ? t.format : "html", t))(o, e),
setContent: i,
getBookmark: (e, t) => g.getBookmark(e, t),
moveToBookmark: e => g.moveToBookmark(e),
select: (t, n) => (
((e, t, n) =>
I.from(t).bind(t =>
I.from(t.parentNode).map(o => {
const r = e.nodeIndex(t),
s = e.createRng();
return s.setStart(o, r), s.setEnd(o, r + 1), n && (bm(e, s, t, !0), bm(e, s, t, !1)), s;
})
))(e, t, n).each(u),
t
),
isCollapsed: () => {
const e = c(),
t = d();
return (
!(!e || e.item) && (e.compareEndPoints ? 0 === e.compareEndPoints("StartToEnd", e) : !t || e.collapsed)
);
},
isEditable: () => {
const t = c(),
n = o.getBody().querySelectorAll('[data-mce-selected="1"]');
return n.length > 0 ? ne(n, t => e.isEditable(t.parentElement)) : Vg(e, t);
},
isForward: m,
setNode: t => (i(e.getOuterHTML(t)), t),
getNode: () =>
((e, t) => {
if (!t) return e;
let n = t.startContainer,
o = t.endContainer;
const r = t.startOffset,
s = t.endOffset;
let a = t.commonAncestorContainer;
t.collapsed ||
(n === o && s - r < 2 && n.hasChildNodes() && (a = n.childNodes[r]),
dr(n) &&
dr(o) &&
((n = n.length === r ? Yg(n.nextSibling, !0) : n.parentNode),
(o = 0 === s ? Yg(o.previousSibling, !1) : o.parentNode),
n && n === o && (a = n)));
const i = dr(a) ? a.parentNode : a;
return tr(i) ? i : e;
})(o.getBody(), c()),
getSel: d,
setRng: u,
getRng: c,
getStart: e => Wg(o.getBody(), c(), e),
getEnd: e => Kg(o.getBody(), c(), e),
getSelectedBlocks: (t, n) =>
((e, t, n, o) => {
const r = [],
s = e.getRoot(),
a = e.getParent(n || Wg(s, t, t.collapsed), e.isBlock),
i = e.getParent(o || Kg(s, t, t.collapsed), e.isBlock);
if ((a && a !== s && r.push(a), a && i && a !== i)) {
let t;
const n = new Vo(a, s);
for (; (t = n.next()) && t !== i; ) e.isBlock(t) && r.push(t);
}
return i && a !== i && i !== s && r.push(i), r;
})(e, c(), t, n),
normalize: () => {
const t = c(),
n = d();
if (!(cm(n).length > 1) && vm(o)) {
const n = Gf(e, t);
return (
n.each(e => {
u(e, m());
}),
n.getOr(t)
);
}
return t;
},
selectorChanged: (e, t) => (a(e, t), f),
selectorChangedWithUnbind: a,
getScrollContainer: () => {
let t,
n = e.getRoot();
for (; n && "BODY" !== n.nodeName; ) {
if (n.scrollHeight > n.clientHeight) {
t = n;
break;
}
n = n.parentNode;
}
return t;
},
scrollIntoView: (e, t) => {
C(e)
? ((e, t, n) => {
(e.inline ? pg : bg)(e, t, n);
})(o, e, t)
: vg(o, c(), t);
},
placeCaretAt: (e, t) => u(jf(e, t, o.getDoc())),
getBoundingClientRect: () => {
const e = c();
return e.collapsed ? Ji.fromRangeStart(e).getClientRects()[0] : e.getBoundingClientRect();
},
destroy: () => {
(t = r = s = null), p.destroy();
}
},
g = uf(f),
p = _f(f, o);
return (f.bookmarkManager = g), (f.controlSelection = p), f;
},
fw = (e, t, n) => {
-1 === Dt.inArray(t, n) &&
(e.addAttributeFilter(n, (e, t) => {
let n = e.length;
for (; n--; ) e[n].attr(t, null);
}),
t.push(n));
},
gw = (e, t) => {
const n = ["data-mce-selected"],
o = {entity_encoding: "named", remove_trailing_brs: !0, pad_empty_with_br: !1, ...e},
r = t && t.dom ? t.dom : fa.DOM,
s = t && t.schema ? t.schema : Fs(o),
a = kC(o, s);
return (
((e, t, n) => {
e.addAttributeFilter("data-mce-tabindex", (e, t) => {
let n = e.length;
for (; n--; ) {
const o = e[n];
o.attr("tabindex", o.attr("data-mce-tabindex")), o.attr(t, null);
}
}),
e.addAttributeFilter("src,href,style", (e, o) => {
const r = "data-mce-" + o,
s = t.url_converter,
a = t.url_converter_scope;
let i = e.length;
for (; i--; ) {
const t = e[i];
let l = t.attr(r);
void 0 !== l
? (t.attr(o, l.length > 0 ? l : null), t.attr(r, null))
: ((l = t.attr(o)),
"style" === o
? (l = n.serializeStyle(n.parseStyle(l), t.name))
: s && (l = s.call(a, l, o, t.name)),
t.attr(o, l.length > 0 ? l : null));
}
}),
e.addAttributeFilter("class", e => {
let t = e.length;
for (; t--; ) {
const n = e[t];
let o = n.attr("class");
o && ((o = o.replace(/(?:^|\s)mce-item-\w+(?!\S)/g, "")), n.attr("class", o.length > 0 ? o : null));
}
}),
e.addAttributeFilter("data-mce-type", (e, t, n) => {
let o = e.length;
for (; o--; ) {
const t = e[o];
if ("bookmark" === t.attr("data-mce-type") && !n.cleanup) {
const e = I.from(t.firstChild).exists(e => {
var t;
return !ei(null !== (t = e.value) && void 0 !== t ? t : "");
});
e ? t.unwrap() : t.remove();
}
}
}),
e.addNodeFilter("noscript", e => {
var t;
let n = e.length;
for (; n--; ) {
const o = e[n].firstChild;
o && (o.value = ws.decode(null !== (t = o.value) && void 0 !== t ? t : ""));
}
}),
e.addNodeFilter("script,style", (e, n) => {
var o;
const r = e =>
e
.replace(/(<!--\[CDATA\[|\]\]-->)/g, "\n")
.replace(/^[\r\n]*|[\r\n]*$/g, "")
.replace(
/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,
""
)
.replace(
/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,
""
);
let s = e.length;
for (; s--; ) {
const a = e[s],
i = a.firstChild,
l = null !== (o = null == i ? void 0 : i.value) && void 0 !== o ? o : "";
if ("script" === n) {
const e = a.attr("type");
e && a.attr("type", "mce-no/type" === e ? null : e.replace(/^mce\-/, "")),
"xhtml" === t.element_format &&
i &&
l.length > 0 &&
(i.value = "// <![CDATA[\n" + r(l) + "\n// ]]>");
} else "xhtml" === t.element_format && i && l.length > 0 && (i.value = "\x3c!--\n" + r(l) + "\n--\x3e");
}
}),
e.addNodeFilter("#comment", e => {
let o = e.length;
for (; o--; ) {
const r = e[o],
s = r.value;
t.preserve_cdata && 0 === (null == s ? void 0 : s.indexOf("[CDATA["))
? ((r.name = "#cdata"), (r.type = 4), (r.value = n.decode(s.replace(/^\[CDATA\[|\]\]$/g, ""))))
: 0 === (null == s ? void 0 : s.indexOf("mce:protected ")) &&
((r.name = "#text"), (r.type = 3), (r.raw = !0), (r.value = unescape(s).substr(14)));
}
}),
e.addNodeFilter("xml:namespace,input", (e, t) => {
let n = e.length;
for (; n--; ) {
const o = e[n];
7 === o.type ? o.remove() : 1 === o.type && ("input" !== t || o.attr("type") || o.attr("type", "text"));
}
}),
e.addAttributeFilter("data-mce-type", t => {
q(t, t => {
"format-caret" === t.attr("data-mce-type") &&
(t.isEmpty(e.schema.getNonEmptyElements()) ? t.remove() : t.unwrap());
});
}),
e.addAttributeFilter(
"data-mce-src,data-mce-href,data-mce-style,data-mce-selected,data-mce-expando,data-mce-block,data-mce-type,data-mce-resize,data-mce-placeholder",
(e, t) => {
let n = e.length;
for (; n--; ) e[n].attr(t, null);
}
),
t.remove_trailing_brs &&
((e, t, n) => {
t.addNodeFilter("br", (t, o, r) => {
const s = Dt.extend({}, n.getBlockElements()),
a = n.getNonEmptyElements(),
i = n.getWhitespaceElements();
s.body = 1;
const l = e => e.name in s || Jr(n, e);
for (let o = 0, d = t.length; o < d; o++) {
let d = t[o],
c = d.parent;
if (c && l(c) && d === c.lastChild) {
let t = d.prev;
for (; t; ) {
const e = t.name;
if ("span" !== e || "bookmark" !== t.attr("data-mce-type")) {
"br" === e && (d = null);
break;
}
t = t.prev;
}
if (d && (d.remove(), kb(n, a, i, c))) {
const t = n.getElementRule(c.name);
t && (t.removeEmpty ? c.remove() : t.paddEmpty && xb(e, r, l, c));
}
} else {
let e = d;
for (; c && c.firstChild === e && c.lastChild === e && ((e = c), !s[c.name]); ) c = c.parent;
if (e === c) {
const e = new ep("#text", 3);
(e.value = Wo), d.replace(e);
}
}
}
});
})(t, e, e.schema);
})(a, o, r),
{
schema: s,
addNodeFilter: a.addNodeFilter,
addAttributeFilter: a.addAttributeFilter,
serialize: (e, n = {}) => {
const i = {format: "html", ...n},
l = ((e, t, n) =>
((e, t) => C(e) && e.hasEventListeners("PreProcess") && !t.no_events)(e, n)
? ((e, t, n) => {
let o;
const r = e.dom;
let s = t.cloneNode(!0);
const a = document.implementation;
if (a.createHTMLDocument) {
const e = a.createHTMLDocument("");
Dt.each("BODY" === s.nodeName ? s.childNodes : [s], t => {
e.body.appendChild(e.importNode(t, !0));
}),
(s = "BODY" !== s.nodeName ? e.body.firstChild : e.body),
(o = r.doc),
(r.doc = e);
}
return (
((e, t) => {
e.dispatch("PreProcess", t);
})(e, {...n, node: s}),
o && (r.doc = o),
s
);
})(e, t, n)
: t)(t, e, i),
d = ((e, t, n) => {
const o = ti(n.getInner ? t.innerHTML : e.getOuterHTML(t));
return n.selection || Xa(Cn(t)) ? o : Dt.trim(o);
})(r, l, i),
c = ((e, t, n) => {
const o = n.selection ? {forced_root_block: !1, ...n} : n,
r = e.parse(t, o);
return (
(e => {
const t = e => "br" === (null == e ? void 0 : e.name),
n = e.lastChild;
if (t(n)) {
const e = n.prev;
t(e) && (n.remove(), e.remove());
}
})(r),
r
);
})(a, d, i);
return "tree" === i.format
? c
: ((e, t, n, o, r) => {
const s = ((e, t, n) => yp(e, t).serialize(n))(t, n, o);
return ((e, t, n) => {
if (!t.no_events && e) {
const o = ((e, t) => e.dispatch("PostProcess", t))(e, {...t, content: n});
return o.content;
}
return n;
})(e, r, s);
})(t, o, s, c, i);
},
addRules: s.addValidElements,
setRules: s.setValidElements,
addTempAttr: T(fw, a, n),
getTempAttrs: N(n),
getNodeFilters: a.getNodeFilters,
getAttributeFilters: a.getAttributeFilters,
removeNodeFilter: a.removeNodeFilter,
removeAttributeFilter: a.removeAttributeFilter
}
);
},
pw = (e, t) => {
const n = gw(e, t);
return {
schema: n.schema,
addNodeFilter: n.addNodeFilter,
addAttributeFilter: n.addAttributeFilter,
serialize: n.serialize,
addRules: n.addRules,
setRules: n.setRules,
addTempAttr: n.addTempAttr,
getTempAttrs: n.getTempAttrs,
getNodeFilters: n.getNodeFilters,
getAttributeFilters: n.getAttributeFilters,
removeNodeFilter: n.removeNodeFilter,
removeAttributeFilter: n.removeAttributeFilter
};
},
hw = (e, t, n = {}) => {
const o = ((e, t) => ({format: "html", ...e, set: !0, content: t}))(n, t);
return AC(e, o)
.map(t => {
const n = ((e, t, n) => sw(e).editor.setContent(t, n))(e, t.content, t);
return TC(e, n.html, t), n.content;
})
.getOr(t);
},
bw =
"autoresize_on_init,content_editable_state,padd_empty_with_br,block_elements,boolean_attributes,editor_deselector,editor_selector,elements,file_browser_callback_types,filepicker_validator_handler,force_hex_style_colors,force_p_newlines,gecko_spellcheck,images_dataimg_filter,media_scripts,mode,move_caret_before_on_enter_elements,non_empty_elements,self_closing_elements,short_ended_elements,special,spellchecker_select_languages,spellchecker_whitelist,tab_focus,tabfocus_elements,table_responsive_width,text_block_elements,text_inline_elements,toolbar_drawer,types,validate,whitespace_elements,paste_enable_default_filters,paste_filter_drop,paste_word_valid_elements,paste_retain_style_properties,paste_convert_word_fake_lists,template_cdate_classes,template_mdate_classes,template_selected_content_classes,template_preview_replace_values,template_replace_values,templates,template_cdate_format,template_mdate_format".split(
","
),
vw = [],
yw = "bbcode,colorpicker,contextmenu,fullpage,legacyoutput,spellchecker,template,textcolor,rtc".split(","),
Cw = [],
ww = (e, t) => {
const n = Y(t, t => ke(e, t));
return ae(n);
},
xw = e => {
const t = ww(e, bw),
n = e.forced_root_block;
return (!1 !== n && "" !== n) || t.push("forced_root_block (false only)"), ae(t);
},
Ew = e => ww(e, vw),
kw = (e, t) => {
const n = Dt.makeMap(e.plugins, " "),
o = Y(t, e => ke(n, e));
return ae(o);
},
_w = e => kw(e, yw),
Sw = e =>
kw(
e,
Cw.map(e => e.name)
),
Nw = e =>
Q(Cw, t => t.name === e).fold(
() => e,
t => (t.replacedWith ? `${e}, replaced by ${t.replacedWith}` : e)
),
Rw = fa.DOM,
Aw = e => I.from(e).each(e => e.destroy()),
Tw = (() => {
const e = {};
return {
add: (t, n) => {
e[t] = n;
},
get: t => (e[t] ? e[t] : {icons: {}}),
has: t => ke(e, t)
};
})(),
Ow = Ca.ModelManager,
Bw = (e, t) => t.dom[e],
Pw = (e, t) => parseInt(uo(t, e), 10),
Dw = T(Bw, "clientWidth"),
Lw = T(Bw, "clientHeight"),
Mw = T(Pw, "margin-top"),
Iw = T(Pw, "margin-left"),
Fw = e => {
const t = [],
n = () => {
const t = e.theme;
return t && t.getNotificationManagerImpl
? t.getNotificationManagerImpl()
: (() => {
const e = () => {
throw new Error("Theme did not provide a NotificationManager implementation.");
};
return {open: e, close: e, getArgs: e};
})();
},
o = () => I.from(t[0]),
r = () => {
o().each(e => {
e.reposition();
});
},
s = e => {
J(t, t => t === e).each(e => {
t.splice(e, 1);
});
},
a = (o, a = !0) =>
e.removed ||
!(e => {
return ((t = e.inline ? e.getBody() : e.getContentAreaContainer()), I.from(t).map(Cn)).map(Xn).getOr(!1);
var t;
})(e)
? {}
: (a && e.dispatch("BeforeOpenNotification", {notification: o}),
Q(t, e => {
return (
(t = n().getArgs(e)),
(r = o),
!(t.type !== r.type || t.text !== r.text || t.progressBar || t.timeout || r.progressBar || r.timeout)
);
var t, r;
}).getOrThunk(() => {
e.editorManager.setActive(e);
const a = n().open(
o,
() => {
s(a);
},
() => Hg(e)
);
return (
(e => {
t.push(e);
})(a),
r(),
e.dispatch("OpenNotification", {notification: {...a}}),
a
);
})),
i = N(t);
return (
(e => {
e.on("SkinLoaded", () => {
const t = Ed(e);
t && a({text: t, type: "warning", timeout: 0}, !1), r();
}),
e.on("show ResizeEditor NodeChange", () => {
requestAnimationFrame(r);
}),
e.on("remove", () => {
q(t.slice(), e => {
n().close(e);
});
}),
e.addShortcut("alt+F12", "Focus to notification", () =>
o()
.map(e => Cn(e.getEl()))
.each(e => yg(e))
);
})(e),
{
open: a,
close: () => {
o().each(e => {
n().close(e), s(e), r();
});
},
getNotifications: i
}
);
},
Uw = Ca.PluginManager,
zw = Ca.ThemeManager,
jw = e => {
let t = [];
const n = () => {
const t = e.theme;
return t && t.getWindowManagerImpl
? t.getWindowManagerImpl()
: (() => {
const e = () => {
throw new Error("Theme did not provide a WindowManager implementation.");
};
return {open: e, openUrl: e, alert: e, confirm: e, close: e};
})();
},
o =
(e, t) =>
(...n) =>
t ? t.apply(e, n) : void 0,
r = n => {
(t => {
e.dispatch("CloseWindow", {dialog: t});
})(n),
(t = Y(t, e => e !== n)),
0 === t.length && e.focus();
},
s = n => {
e.editorManager.setActive(e), Rg(e), e.ui.show();
const o = n();
return (
(n => {
t.push(n),
(t => {
e.dispatch("OpenWindow", {dialog: t});
})(n);
})(o),
o
);
};
return (
e.on("remove", () => {
q(t, e => {
n().close(e);
});
}),
{
open: (e, t) => s(() => n().open(e, t, r)),
openUrl: e => s(() => n().openUrl(e, r)),
alert: (e, t, r) => {
const s = n();
s.alert(e, o(r || s, t));
},
confirm: (e, t, r) => {
const s = n();
s.confirm(e, o(r || s, t));
},
close: () => {
I.from(t[t.length - 1]).each(e => {
n().close(e), r(e);
});
}
}
);
},
Hw = (e, t) => {
e.notificationManager.open({type: "error", text: t});
},
$w = (e, t) => {
e._skinLoaded
? Hw(e, t)
: e.on("SkinLoaded", () => {
Hw(e, t);
});
},
Vw = (e, t, n) => {
ff(e, t, {message: n}), console.error(n);
},
qw = (e, t, n) => (n ? `Failed to load ${e}: ${n} from url ${t}` : `Failed to load ${e} url: ${t}`),
Ww = (e, ...t) => {
const n = window.console;
n && (n.error ? n.error(e, ...t) : n.log(e, ...t));
},
Kw = e => "content/" + e + "/content.css",
Yw = (e, t) => {
const n = e.editorManager.baseURL + "/skins/content",
o = `content${e.editorManager.suffix}.css`;
return V(t, t =>
(e => tinymce.Resource.has(Kw(e)))(t)
? t
: (e => /^[a-z0-9\-]+$/i.test(e))(t) && !e.inline
? `${n}/${t}/${o}`
: e.documentBaseURI.toAbsolute(t)
);
},
Gw = (e, t) => {
const n = {};
return {
findAll: (o, r = M) => {
const s = Y((e => (e ? ce(e.getElementsByTagName("img")) : []))(o), t => {
const n = t.src;
return (
!t.hasAttribute("data-mce-bogus") &&
!t.hasAttribute("data-mce-placeholder") &&
!(!n || n === Tt.transparentSrc) &&
($e(n, "blob:") ? !e.isUploaded(n) && r(t) : !!$e(n, "data:") && r(t))
);
}),
a = V(s, e => {
const o = e.src;
if (ke(n, o)) return n[o].then(t => (m(t) ? t : {image: e, blobInfo: t.blobInfo}));
{
const r = ((e, t) => {
const n = () => Promise.reject("Invalid data URI");
if ($e(t, "blob:")) {
const s = e.getByUri(t);
return C(s)
? Promise.resolve(s)
: ((o = t),
$e(o, "blob:")
? (e =>
fetch(e)
.then(e => (e.ok ? e.blob() : Promise.reject()))
.catch(() =>
Promise.reject({
message: `Cannot convert ${e} to Blob. Resource might not exist or is inaccessible.`,
uriType: "blob"
})
))(o)
: $e(o, "data:")
? ((r = o),
new Promise((e, t) => {
Qv(r)
.bind(({type: e, data: t, base64Encoded: n}) => Jv(e, t, n))
.fold(() => t("Invalid data URI"), e);
}))
: Promise.reject("Unknown URI format")).then(t =>
ey(t).then(o => ny(o, !1, n => I.some(oy(e, t, n))).getOrThunk(n))
);
}
var o, r;
return $e(t, "data:")
? ry(e, t).fold(n, e => Promise.resolve(e))
: Promise.reject("Unknown image data format");
})(t, o)
.then(t => (delete n[o], {image: e, blobInfo: t}))
.catch(e => (delete n[o], e));
return (n[o] = r), r;
}
});
return Promise.all(a);
}
};
},
Xw = () => {
let e = {};
const t = (e, t) => ({status: e, resultUri: t}),
n = t => t in e;
return {
hasBlobUri: n,
getResultUri: t => {
const n = e[t];
return n ? n.resultUri : null;
},
isPending: t => !!n(t) && 1 === e[t].status,
isUploaded: t => !!n(t) && 2 === e[t].status,
markPending: n => {
e[n] = t(1, null);
},
markUploaded: (n, o) => {
e[n] = t(2, o);
},
removeFailed: t => {
delete e[t];
},
destroy: () => {
e = {};
}
};
};
let Zw = 0;
const Qw = (e, t) => {
const n = {},
o = (e, n) =>
new Promise((o, r) => {
const s = new XMLHttpRequest();
s.open("POST", t.url),
(s.withCredentials = t.credentials),
(s.upload.onprogress = e => {
n((e.loaded / e.total) * 100);
}),
(s.onerror = () => {
r("Image upload failed due to a XHR Transport error. Code: " + s.status);
}),
(s.onload = () => {
if (s.status < 200 || s.status >= 300) return void r("HTTP Error: " + s.status);
const e = JSON.parse(s.responseText);
var n, a;
e && m(e.location)
? o(((n = t.basePath), (a = e.location), n ? n.replace(/\/$/, "") + "/" + a.replace(/^\//, "") : a))
: r("Invalid JSON: " + s.responseText);
});
const a = new FormData();
a.append("file", e.blob(), e.filename()), s.send(a);
}),
r = w(t.handler) ? t.handler : o,
s = (e, t) => ({url: t, blobInfo: e, status: !0}),
a = (e, t) => ({url: "", blobInfo: e, status: !1, error: t}),
i = (e, t) => {
Dt.each(n[e], e => {
e(t);
}),
delete n[e];
};
return {
upload: (l, d) =>
t.url || r !== o
? ((t, o) => (
(t = Dt.grep(t, t => !e.isUploaded(t.blobUri()))),
Promise.all(
Dt.map(t, t =>
e.isPending(t.blobUri())
? (e => {
const t = e.blobUri();
return new Promise(e => {
(n[t] = n[t] || []), n[t].push(e);
});
})(t)
: ((t, n, o) => (
e.markPending(t.blobUri()),
new Promise(r => {
let l, d;
try {
const c = () => {
l && (l.close(), (d = k));
},
u = n => {
c(), e.markUploaded(t.blobUri(), n), i(t.blobUri(), s(t, n)), r(s(t, n));
},
f = n => {
c(), e.removeFailed(t.blobUri()), i(t.blobUri(), a(t, n)), r(a(t, n));
};
(d = e => {
e < 0 ||
e > 100 ||
I.from(l)
.orThunk(() => I.from(o).map(P))
.each(t => {
(l = t), t.progressBar.value(e);
});
}),
n(t, d).then(u, e => {
f(m(e) ? {message: e} : e);
});
} catch (e) {
r(a(t, e));
}
})
))(t, r, o)
)
)
))(l, d)
: new Promise(e => {
e([]);
})
};
},
Jw = e => () =>
e.notificationManager.open({text: e.translate("Image uploading..."), type: "info", timeout: -1, progressBar: !0}),
ex = (e, t) => Qw(t, {url: rd(e), basePath: sd(e), credentials: ad(e), handler: id(e)}),
tx = e => {
const t = (() => {
let e = [];
const t = e => {
if (!e.blob || !e.base64)
throw new Error("blob and base64 representations of the image are required for BlobInfo to be created");
const t =
e.id ||
"blobid" +
Zw++ +
(() => {
const e = () => Math.round(4294967295 * Math.random()).toString(36);
return "s" + new Date().getTime().toString(36) + e() + e() + e();
})(),
n = e.name || t,
o = e.blob;
var r;
return {
id: N(t),
name: N(n),
filename: N(
e.filename ||
n +
"." +
((r = o.type),
{
"image/jpeg": "jpg",
"image/jpg": "jpg",
"image/gif": "gif",
"image/png": "png",
"image/apng": "apng",
"image/avif": "avif",
"image/svg+xml": "svg",
"image/webp": "webp",
"image/bmp": "bmp",
"image/tiff": "tiff"
}[r.toLowerCase()] || "dat")
),
blob: N(o),
base64: N(e.base64),
blobUri: N(e.blobUri || URL.createObjectURL(o)),
uri: N(e.uri)
};
},
n = t => Q(e, t).getOrUndefined(),
o = e => n(t => t.id() === e);
return {
create: (e, n, o, r, s) => {
if (m(e)) return t({id: e, name: r, filename: s, blob: n, base64: o});
if (f(e)) return t(e);
throw new Error("Unknown input type");
},
add: t => {
o(t.id()) || e.push(t);
},
get: o,
getByUri: e => n(t => t.blobUri() === e),
getByData: (e, t) => n(n => n.base64() === e && n.blob().type === t),
findFirst: n,
removeByUri: t => {
e = Y(e, e => e.blobUri() !== t || (URL.revokeObjectURL(e.blobUri()), !1));
},
destroy: () => {
q(e, e => {
URL.revokeObjectURL(e.blobUri());
}),
(e = []);
}
};
})();
let n, o;
const r = Xw(),
s = [],
a = t => n => e.selection ? t(n) : [],
i = (e, t, n) => {
let o = 0;
do {
(o = e.indexOf(t, o)),
-1 !== o && ((e = e.substring(0, o) + n + e.substr(o + t.length)), (o += n.length - t.length + 1));
} while (-1 !== o);
return e;
},
l = (e, t, n) => {
const o = `src="${n}"${n === Tt.transparentSrc ? ' data-mce-placeholder="1"' : ""}`;
return (e = i(e, `src="${t}"`, o)), i(e, 'data-mce-src="' + t + '"', 'data-mce-src="' + n + '"');
},
d = (t, n) => {
q(e.undoManager.data, e => {
"fragmented" === e.type
? (e.fragments = V(e.fragments, e => l(e, t, n)))
: (e.content = l(e.content, t, n));
});
},
c = () => (
n || (n = ex(e, r)),
p().then(
a(o => {
const r = V(o, e => e.blobInfo);
return n.upload(r, Jw(e)).then(
a(n => {
const r = [];
let s = !1;
const a = V(n, (n, a) => {
const {blobInfo: i, image: l} = o[a];
let c = !1;
return (
n.status && td(e)
? (n.url && !He(l.src, n.url) && (s = !0),
t.removeByUri(l.src),
rw(e) ||
((t, n) => {
const o = e.convertURL(n, "src");
var r;
d(t.src, n),
en(Cn(t), {
src: ed(e)
? ((r = n), r + (-1 === r.indexOf("?") ? "?" : "&") + new Date().getTime())
: n,
"data-mce-src": o
});
})(l, n.url))
: n.error &&
(n.error.remove && (d(l.src, Tt.transparentSrc), r.push(l), (c = !0)),
((e, t) => {
$w(e, ya.translate(["Failed to upload image: {0}", t]));
})(e, n.error.message)),
{element: l, status: n.status, uploadUri: n.url, blobInfo: i, removed: c}
);
});
return (
r.length > 0 && !rw(e)
? e.undoManager.transact(() => {
q(_o(r), n => {
const o = Tn(n);
Eo(n),
o.each(
(e => t => {
((e, t) => e.dom.isEmpty(t.dom) && C(e.schema.getTextBlockElements()[$t(t)]))(e, t) &&
yo(t, bn('<br data-mce-bogus="1" />'));
})(e)
),
t.removeByUri(n.dom.src);
});
})
: s && e.undoManager.dispatchChange(),
a
);
})
);
})
)
),
u = () => (Jl(e) ? c() : Promise.resolve([])),
g = e => ne(s, t => t(e)),
p = () => (
o || (o = Gw(r, t)),
o.findAll(e.getBody(), g).then(
a(t => {
const n = Y(t, t => (m(t) ? ($w(e, t), !1) : "blob" !== t.uriType));
return (
rw(e) ||
q(n, e => {
d(e.image.src, e.blobInfo.blobUri()),
(e.image.src = e.blobInfo.blobUri()),
e.image.removeAttribute("data-mce-src");
}),
n
);
})
)
),
h = n =>
n.replace(/src="(blob:[^"]+)"/g, (n, o) => {
const s = r.getResultUri(o);
if (s) return 'src="' + s + '"';
let a = t.getByUri(o);
return (
a ||
(a = X(
e.editorManager.get(),
(e, t) => e || (t.editorUpload && t.editorUpload.blobCache.getByUri(o)),
void 0
)),
a ? 'src="data:' + a.blob().type + ";base64," + a.base64() + '"' : n
);
});
return (
e.on("SetContent", () => {
Jl(e) ? u() : p();
}),
e.on("RawSaveContent", e => {
e.content = h(e.content);
}),
e.on("GetContent", e => {
e.source_view || "raw" === e.format || "tree" === e.format || (e.content = h(e.content));
}),
e.on("PostRender", () => {
e.parser.addNodeFilter("img", e => {
q(e, e => {
const n = e.attr("src");
if (!n || t.getByUri(n)) return;
const o = r.getResultUri(n);
o && e.attr("src", o);
});
});
}),
{
blobCache: t,
addFilter: e => {
s.push(e);
},
uploadImages: c,
uploadImagesAuto: u,
scanForImages: p,
destroy: () => {
t.destroy(), r.destroy(), (o = n = null);
}
}
);
},
nx = {remove_similar: !0, inherit: !1},
ox = {selector: "td,th", ...nx},
rx = {
tablecellbackgroundcolor: {styles: {backgroundColor: "%value"}, ...ox},
tablecellverticalalign: {styles: {"vertical-align": "%value"}, ...ox},
tablecellbordercolor: {styles: {borderColor: "%value"}, ...ox},
tablecellclass: {classes: ["%value"], ...ox},
tableclass: {selector: "table", classes: ["%value"], ...nx},
tablecellborderstyle: {styles: {borderStyle: "%value"}, ...ox},
tablecellborderwidth: {styles: {borderWidth: "%value"}, ...ox}
},
sx = N(rx),
ax = Dt.each,
ix = fa.DOM,
lx = e => C(e) && f(e),
dx = (e, t) => {
const n = (t && t.schema) || Fs({}),
o = e => {
const t = m(e) ? {name: e, classes: [], attrs: {}} : e,
n = ix.create(t.name);
return (
((e, t) => {
t.classes.length > 0 && ix.addClass(e, t.classes.join(" ")), ix.setAttribs(e, t.attrs);
})(n, t),
n
);
},
r = (e, t, s) => {
let a;
const i = t[0],
l = lx(i) ? i.name : void 0,
d = ((e, t) => {
const o = n.getElementRule(e.nodeName.toLowerCase()),
r = null == o ? void 0 : o.parentsRequired;
return !(!r || !r.length) && (t && H(r, t) ? t : r[0]);
})(e, l);
if (d) l === d ? ((a = i), (t = t.slice(1))) : (a = d);
else if (i) (a = i), (t = t.slice(1));
else if (!s) return e;
const c = a ? o(a) : ix.create("div");
c.appendChild(e),
s &&
Dt.each(s, t => {
const n = o(t);
c.insertBefore(n, e);
});
const u = lx(a) ? a.siblings : void 0;
return r(c, t, u);
},
s = ix.create("div");
if (e.length > 0) {
const t = e[0],
n = o(t),
a = lx(t) ? t.siblings : void 0;
s.appendChild(r(n, e.slice(1), a));
}
return s;
},
cx = e => {
let t = "div";
const n = {name: t, classes: [], attrs: {}, selector: (e = Dt.trim(e))};
return (
"*" !== e &&
(t = e.replace(/(?:([#\.]|::?)([\w\-]+)|(\[)([^\]]+)\]?)/g, (e, t, o, r, s) => {
switch (t) {
case "#":
n.attrs.id = o;
break;
case ".":
n.classes.push(o);
break;
case ":":
-1 !== Dt.inArray("checked disabled enabled read-only required".split(" "), o) && (n.attrs[o] = o);
}
if ("[" === r) {
const e = s.match(/([\w\-]+)(?:\=\"([^\"]+))?/);
e && (n.attrs[e[1]] = e[2]);
}
return "";
})),
(n.name = t || "div"),
n
);
},
ux = (e, t) => {
let n = "",
o = Td(e);
if ("" === o) return "";
const r = e => (m(e) ? e.replace(/%(\w+)/g, "") : ""),
s = (t, n) => ix.getStyle(null != n ? n : e.getBody(), t, !0);
if (m(t)) {
const n = e.formatter.get(t);
if (!n) return "";
t = n[0];
}
if ("preview" in t) {
const e = t.preview;
if (!1 === e) return "";
o = e || o;
}
let a,
i = t.block || t.inline || "span";
const l =
((d = t.selector),
m(d)
? ((d = (d = d.split(/\s*,\s*/)[0]).replace(/\s*(~\+|~|\+|>)\s*/g, "$1")),
Dt.map(d.split(/(?:>|\s+(?![^\[\]]+\]))/), e => {
const t = Dt.map(e.split(/(?:~\+|~|\+)/), cx),
n = t.pop();
return t.length && (n.siblings = t), n;
}).reverse())
: []);
var d;
l.length > 0 ? (l[0].name || (l[0].name = i), (i = t.selector), (a = dx(l, e))) : (a = dx([i], e));
const c = ix.select(i, a)[0] || a.firstChild;
ax(t.styles, (e, t) => {
const n = r(e);
n && ix.setStyle(c, t, n);
}),
ax(t.attributes, (e, t) => {
const n = r(e);
n && ix.setAttrib(c, t, n);
}),
ax(t.classes, e => {
const t = r(e);
ix.hasClass(c, t) || ix.addClass(c, t);
}),
e.dispatch("PreviewFormats"),
ix.setStyles(a, {position: "absolute", left: -65535}),
e.getBody().appendChild(a);
const u = s("fontSize"),
f = /px$/.test(u) ? parseInt(u, 10) : 0;
return (
ax(o.split(" "), e => {
let t = s(e, c);
if (
!(
("background-color" === e &&
/transparent|rgba\s*\([^)]+,\s*0\)/.test(t) &&
((t = s(e)), "#ffffff" === Ks(t).toLowerCase())) ||
("color" === e && "#000000" === Ks(t).toLowerCase())
)
) {
if ("font-size" === e && /em|%$/.test(t)) {
if (0 === f) return;
t = (parseFloat(t) / (/%$/.test(t) ? 100 : 1)) * f + "px";
}
"border" === e && t && (n += "padding:0 2px;"), (n += e + ":" + t + ";");
}
}),
e.dispatch("AfterPreviewFormats"),
ix.remove(a),
n
);
},
mx = e => {
const t = (e => {
const t = {},
n = (e, o) => {
e &&
(m(e)
? (p(o) || (o = [o]),
q(o, e => {
v(e.deep) && (e.deep = !Fm(e)),
v(e.split) && (e.split = !Fm(e) || Um(e)),
v(e.remove) && Fm(e) && !Um(e) && (e.remove = "none"),
Fm(e) && Um(e) && ((e.mixed = !0), (e.block_expand = !0)),
m(e.classes) && (e.classes = e.classes.split(/\s+/));
}),
(t[e] = o))
: pe(e, (e, t) => {
n(t, e);
}));
};
return (
n(
(e => {
const t = e.dom,
n = e.schema.type,
o = {
valigntop: [{selector: "td,th", styles: {verticalAlign: "top"}}],
valignmiddle: [{selector: "td,th", styles: {verticalAlign: "middle"}}],
valignbottom: [{selector: "td,th", styles: {verticalAlign: "bottom"}}],
alignleft: [
{
selector: "figure.image",
collapsed: !1,
classes: "align-left",
ceFalseOverride: !0,
preview: "font-family font-size"
},
{
selector: "figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li,pre",
styles: {textAlign: "left"},
inherit: !1,
preview: !1
},
{
selector: "img,audio,video",
collapsed: !1,
styles: {float: "left"},
preview: "font-family font-size"
},
{
selector: "table",
collapsed: !1,
styles: {marginLeft: "0px", marginRight: "auto"},
onformat: e => {
t.setStyle(e, "float", null);
},
preview: "font-family font-size"
},
{
selector: ".mce-preview-object,[data-ephox-embed-iri]",
ceFalseOverride: !0,
styles: {float: "left"}
}
],
aligncenter: [
{
selector: "figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li,pre",
styles: {textAlign: "center"},
inherit: !1,
preview: "font-family font-size"
},
{
selector: "figure.image",
collapsed: !1,
classes: "align-center",
ceFalseOverride: !0,
preview: "font-family font-size"
},
{
selector: "img,audio,video",
collapsed: !1,
styles: {display: "block", marginLeft: "auto", marginRight: "auto"},
preview: !1
},
{
selector: "table",
collapsed: !1,
styles: {marginLeft: "auto", marginRight: "auto"},
preview: "font-family font-size"
},
{
selector: ".mce-preview-object",
ceFalseOverride: !0,
styles: {display: "table", marginLeft: "auto", marginRight: "auto"},
preview: !1
},
{
selector: "[data-ephox-embed-iri]",
ceFalseOverride: !0,
styles: {marginLeft: "auto", marginRight: "auto"},
preview: !1
}
],
alignright: [
{
selector: "figure.image",
collapsed: !1,
classes: "align-right",
ceFalseOverride: !0,
preview: "font-family font-size"
},
{
selector: "figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li,pre",
styles: {textAlign: "right"},
inherit: !1,
preview: "font-family font-size"
},
{
selector: "img,audio,video",
collapsed: !1,
styles: {float: "right"},
preview: "font-family font-size"
},
{
selector: "table",
collapsed: !1,
styles: {marginRight: "0px", marginLeft: "auto"},
onformat: e => {
t.setStyle(e, "float", null);
},
preview: "font-family font-size"
},
{
selector: ".mce-preview-object,[data-ephox-embed-iri]",
ceFalseOverride: !0,
styles: {float: "right"},
preview: !1
}
],
alignjustify: [
{
selector: "figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li,pre",
styles: {textAlign: "justify"},
inherit: !1,
preview: "font-family font-size"
}
],
bold: [
{inline: "strong", remove: "all", preserve_attributes: ["class", "style"]},
{inline: "span", styles: {fontWeight: "bold"}},
{inline: "b", remove: "all", preserve_attributes: ["class", "style"]}
],
italic: [
{inline: "em", remove: "all", preserve_attributes: ["class", "style"]},
{inline: "span", styles: {fontStyle: "italic"}},
{inline: "i", remove: "all", preserve_attributes: ["class", "style"]}
],
underline: [
{inline: "span", styles: {textDecoration: "underline"}, exact: !0},
{inline: "u", remove: "all", preserve_attributes: ["class", "style"]}
],
strikethrough: (() => {
const e = {inline: "span", styles: {textDecoration: "line-through"}, exact: !0},
t = {inline: "strike", remove: "all", preserve_attributes: ["class", "style"]},
o = {inline: "s", remove: "all", preserve_attributes: ["class", "style"]};
return "html4" !== n ? [o, e, t] : [e, o, t];
})(),
forecolor: {
inline: "span",
styles: {color: "%value"},
links: !0,
remove_similar: !0,
clear_child_styles: !0
},
hilitecolor: {
inline: "span",
styles: {backgroundColor: "%value"},
links: !0,
remove_similar: !0,
clear_child_styles: !0
},
fontname: {inline: "span", toggle: !1, styles: {fontFamily: "%value"}, clear_child_styles: !0},
fontsize: {inline: "span", toggle: !1, styles: {fontSize: "%value"}, clear_child_styles: !0},
lineheight: {selector: "h1,h2,h3,h4,h5,h6,p,li,td,th,div", styles: {lineHeight: "%value"}},
fontsize_class: {inline: "span", attributes: {class: "%value"}},
blockquote: {block: "blockquote", wrapper: !0, remove: "all"},
subscript: {inline: "sub"},
superscript: {inline: "sup"},
code: {inline: "code"},
link: {
inline: "a",
selector: "a",
remove: "all",
split: !0,
deep: !0,
onmatch: (e, t, n) => er(e) && e.hasAttribute("href"),
onformat: (e, n, o) => {
Dt.each(o, (n, o) => {
t.setAttrib(e, o, n);
});
}
},
lang: {
inline: "span",
clear_child_styles: !0,
remove_similar: !0,
attributes: {
lang: "%value",
"data-mce-lang": e => {
var t;
return null !== (t = null == e ? void 0 : e.customValue) && void 0 !== t ? t : null;
}
}
},
removeformat: [
{
selector:
"b,strong,em,i,font,u,strike,s,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins,small",
remove: "all",
split: !0,
expand: !1,
block_expand: !0,
deep: !0
},
{
selector: "span",
attributes: ["style", "class"],
remove: "empty",
split: !0,
expand: !1,
deep: !0
},
{selector: "*", attributes: ["style", "class"], split: !1, expand: !1, deep: !0}
]
};
return (
Dt.each("p h1 h2 h3 h4 h5 h6 div address pre dt dd samp".split(/\s/), e => {
o[e] = {block: e, remove: "all"};
}),
o
);
})(e)
),
n(sx()),
n(Ad(e)),
{
get: e => (C(e) ? t[e] : t),
has: e => ke(t, e),
register: n,
unregister: e => (e && t[e] && delete t[e], t)
}
);
})(e),
n = Br({});
return (
(e => {
e.addShortcut("meta+b", "", "Bold"),
e.addShortcut("meta+i", "", "Italic"),
e.addShortcut("meta+u", "", "Underline");
for (let t = 1; t <= 6; t++) e.addShortcut("access+" + t, "", ["FormatBlock", !1, "h" + t]);
e.addShortcut("access+7", "", ["FormatBlock", !1, "p"]),
e.addShortcut("access+8", "", ["FormatBlock", !1, "div"]),
e.addShortcut("access+9", "", ["FormatBlock", !1, "address"]);
})(e),
(e => {
e.on("mouseup keydown", t => {
var n;
((e, t, n) => {
const o = e.selection,
r = e.getBody();
Jb(e, null, n),
(8 !== t && 46 !== t) ||
!o.isCollapsed() ||
o.getStart().innerHTML !== Gb ||
Jb(e, Ku(r, o.getStart()), !0),
(37 !== t && 39 !== t) || Jb(e, Ku(r, o.getStart()), !0);
})(e, t.keyCode, ((n = e.selection.getRng().endContainer), dr(n) && Ve(n.data, Wo)));
});
})(e),
rw(e) ||
((e, t) => {
e.set({}),
t.on("NodeChange", n => {
Yv(t, n.element, e.get());
}),
t.on("FormatApply FormatRemove", n => {
const o = I.from(n.node)
.map(e => (wm(e) ? e : e.startContainer))
.bind(e => (er(e) ? I.some(e) : I.from(e.parentElement)))
.getOrThunk(() => qv(t));
Yv(t, o, e.get());
});
})(n, e),
{
get: t.get,
has: t.has,
register: t.register,
unregister: t.unregister,
apply: (t, n, o) => {
((e, t, n, o) => {
aw(e).formatter.apply(t, n, o);
})(e, t, n, o);
},
remove: (t, n, o, r) => {
((e, t, n, o, r) => {
aw(e).formatter.remove(t, n, o, r);
})(e, t, n, o, r);
},
toggle: (t, n, o) => {
((e, t, n, o) => {
aw(e).formatter.toggle(t, n, o);
})(e, t, n, o);
},
match: (t, n, o, r) => ((e, t, n, o, r) => aw(e).formatter.match(t, n, o, r))(e, t, n, o, r),
closest: t => ((e, t) => aw(e).formatter.closest(t))(e, t),
matchAll: (t, n) => ((e, t, n) => aw(e).formatter.matchAll(t, n))(e, t, n),
matchNode: (t, n, o, r) => ((e, t, n, o, r) => aw(e).formatter.matchNode(t, n, o, r))(e, t, n, o, r),
canApply: t => ((e, t) => aw(e).formatter.canApply(t))(e, t),
formatChanged: (t, o, r, s) =>
((e, t, n, o, r, s) => aw(e).formatter.formatChanged(t, n, o, r, s))(e, n, t, o, r, s),
getCssText: T(ux, e)
}
);
},
fx = e => {
switch (e.toLowerCase()) {
case "undo":
case "redo":
case "mcefocus":
return !0;
default:
return !1;
}
},
gx = e => {
const t = Dr(),
n = Br(0),
o = Br(0),
r = {
data: [],
typing: !1,
beforeChange: () => {
((e, t, n) => {
aw(e).undoManager.beforeChange(t, n);
})(e, n, t);
},
add: (s, a) => ((e, t, n, o, r, s, a) => aw(e).undoManager.add(t, n, o, r, s, a))(e, r, o, n, t, s, a),
dispatchChange: () => {
e.setDirty(!0);
const t = GC(e);
(t.bookmark = Cl(e.selection)),
e.dispatch("change", {level: t, lastLevel: ie(r.data, o.get()).getOrUndefined()});
},
undo: () => ((e, t, n, o) => aw(e).undoManager.undo(t, n, o))(e, r, n, o),
redo: () => ((e, t, n) => aw(e).undoManager.redo(t, n))(e, o, r.data),
clear: () => {
((e, t, n) => {
aw(e).undoManager.clear(t, n);
})(e, r, o);
},
reset: () => {
((e, t) => {
aw(e).undoManager.reset(t);
})(e, r);
},
hasUndo: () => ((e, t, n) => aw(e).undoManager.hasUndo(t, n))(e, r, o),
hasRedo: () => ((e, t, n) => aw(e).undoManager.hasRedo(t, n))(e, r, o),
transact: t => ((e, t, n, o) => aw(e).undoManager.transact(t, n, o))(e, r, n, t),
ignore: t => {
((e, t, n) => {
aw(e).undoManager.ignore(t, n);
})(e, n, t);
},
extra: (t, n) => {
((e, t, n, o, r) => {
aw(e).undoManager.extra(t, n, o, r);
})(e, r, o, t, n);
}
};
return (
rw(e) ||
((e, t, n) => {
const o = Br(!1),
r = e => {
tw(t, !1, n), t.add({}, e);
};
e.on("init", () => {
t.add();
}),
e.on("BeforeExecCommand", e => {
const o = e.command;
fx(o) || (nw(t, n), t.beforeChange());
}),
e.on("ExecCommand", e => {
const t = e.command;
fx(t) || r(e);
}),
e.on("ObjectResizeStart cut", () => {
t.beforeChange();
}),
e.on("SaveContent ObjectResized blur", r),
e.on("dragend", r),
e.on("keyup", n => {
const s = n.keyCode;
if (n.isDefaultPrevented()) return;
const a = Tt.os.isMacOS() && "Meta" === n.key;
((s >= 33 && s <= 36) || (s >= 37 && s <= 40) || 45 === s || n.ctrlKey || a) && (r(), e.nodeChanged()),
(46 !== s && 8 !== s) || e.nodeChanged(),
o.get() &&
t.typing &&
!JC(GC(e), t.data[0]) &&
(e.isDirty() || e.setDirty(!0), e.dispatch("TypingUndo"), o.set(!1), e.nodeChanged());
}),
e.on("keydown", e => {
const s = e.keyCode;
if (e.isDefaultPrevented()) return;
if ((s >= 33 && s <= 36) || (s >= 37 && s <= 40) || 45 === s) return void (t.typing && r(e));
const a = (e.ctrlKey && !e.altKey) || e.metaKey;
if ((s < 16 || s > 20) && 224 !== s && 91 !== s && !t.typing && !a)
return t.beforeChange(), tw(t, !0, n), t.add({}, e), void o.set(!0);
(Tt.os.isMacOS() ? e.metaKey : e.ctrlKey && !e.altKey) && t.beforeChange();
}),
e.on("mousedown", e => {
t.typing && r(e);
}),
e.on("input", e => {
var t;
e.inputType &&
("insertReplacementText" === e.inputType ||
("insertText" === (t = e).inputType && null === t.data) ||
(e => "insertFromPaste" === e.inputType || "insertFromDrop" === e.inputType)(e)) &&
r(e);
}),
e.on("AddUndo Undo Redo ClearUndos", t => {
t.isDefaultPrevented() || e.nodeChanged();
});
})(e, r, n),
(e => {
e.addShortcut("meta+z", "", "Undo"), e.addShortcut("meta+y,meta+shift+z", "", "Redo");
})(e),
r
);
},
px = [
9,
27,
Cf.HOME,
Cf.END,
19,
20,
44,
144,
145,
33,
34,
45,
16,
17,
18,
91,
92,
93,
Cf.DOWN,
Cf.UP,
Cf.LEFT,
Cf.RIGHT
].concat(Tt.browser.isFirefox() ? [224] : []),
hx = "data-mce-placeholder",
bx = e => "keydown" === e.type || "keyup" === e.type,
vx = e => {
const t = e.keyCode;
return t === Cf.BACKSPACE || t === Cf.DELETE;
},
yx = (e, t) => ({from: e, to: t}),
Cx = (e, t) => {
const n = Cn(e),
o = Cn(t.container());
return Ih(n, o).map(e => ((e, t) => ({block: e, position: t}))(e, t));
},
wx = (e, t) =>
Jn(
t,
e => Ga(e) || br(e.dom),
t => _n(t, e)
)
.filter(Kt)
.getOr(e),
xx = (e, t) => {
const n = ((e, t) => {
const n = In(e);
return J(n, e => t.isBlock($t(e))).fold(N(n), e => n.slice(0, e));
})(e, t);
return q(n, Eo), n;
},
Ex = (e, t, n) => {
const o = zp(n, t);
return Q(o.reverse(), t => Tr(e, t)).each(Eo);
},
kx = (e, t, n, o, r) => {
if (Tr(o, n)) return Qa(n), $u(n.dom);
((e, t) => 0 === Y(Ln(t), t => !Tr(e, t)).length)(o, r) && Tr(o, t) && ho(r, vn("br"));
const s = Hu(n.dom, Ji.before(r.dom));
return (
q(xx(t, o), e => {
ho(r, e);
}),
Ex(o, e, t),
s
);
},
_x = (e, t, n, o) => {
if (Tr(o, n)) {
if (Tr(o, t)) {
const e = e => {
const t = (e, n) =>
Un(e).fold(
() => n,
e => (((e, t) => e.isInline($t(t)))(o, e) ? t(e, n.concat(Ia(e))) : n)
);
return t(e, []);
},
r = G(e(n), (e, t) => (Co(e, t), t), Za());
xo(t), yo(t, r);
}
return Eo(n), $u(t.dom);
}
const r = Vu(n.dom);
return (
q(xx(t, o), e => {
yo(n, e);
}),
Ex(o, e, t),
r
);
},
Sx = (e, t) => {
zu(e, t.dom)
.bind(e => I.from(e.getNode()))
.map(Cn)
.filter(Va)
.each(Eo);
},
Nx = (e, t, n, o) => (
Sx(!0, t),
Sx(!1, n),
((e, t) =>
Sn(t, e)
? ((e, t) => {
const n = zp(t, e);
return I.from(n[n.length - 1]);
})(t, e)
: I.none())(t, n).fold(T(_x, e, t, n, o), T(kx, e, t, n, o))
),
Rx = (e, t, n, o, r) => (t ? Nx(e, o, n, r) : Nx(e, n, o, r)),
Ax = (e, t) => {
const n = Cn(e.getBody()),
o = ((e, t, n, o) =>
o.collapsed
? ((e, t, n, o) => {
const r = Cx(t, Ji.fromRangeStart(o)),
s = r.bind(o =>
Iu(n, t, o.position).bind(o =>
Cx(t, o).map(o =>
((e, t, n, o) =>
pr(o.position.getNode()) && !Tr(e, o.block)
? zu(!1, o.block.dom)
.bind(e => (e.isEqual(o.position) ? Iu(n, t, e).bind(e => Cx(t, e)) : I.some(o)))
.getOr(o)
: o)(e, t, n, o)
)
)
);
return It(r, s, yx).filter(
e =>
(e => !_n(e.from.block, e.to.block))(e) &&
((e, t) => {
const n = Cn(e);
return _n(wx(n, t.from.block), wx(n, t.to.block));
})(t, e) &&
(e => !1 === vr(e.from.block.dom) && !1 === vr(e.to.block.dom))(e) &&
(e => {
const t = e => qa(e) || Yr(e.dom);
return t(e.from.block) && t(e.to.block);
})(e) &&
(e => !(Sn(e.to.block, e.from.block) || Sn(e.from.block, e.to.block)))(e)
);
})(e, t, n, o)
: I.none())(e.schema, n.dom, t, e.selection.getRng()).map(o => () => {
Rx(n, t, o.from.block, o.to.block, e.schema).each(t => {
e.selection.setRng(t.toRange());
});
});
return o;
},
Tx = (e, t) => {
const n = Cn(t),
o = T(_n, e);
return Qn(n, Ga, o).isSome();
},
Ox = e => {
const t = Cn(e.getBody());
return ((e, t) => {
const n = Hu(e.dom, Ji.fromRangeStart(t)).isNone(),
o = ju(e.dom, Ji.fromRangeEnd(t)).isNone();
return !((e, t) => Tx(e, t.startContainer) || Tx(e, t.endContainer))(e, t) && n && o;
})(t, e.selection.getRng())
? (e =>
I.some(() => {
e.setContent(""), e.selection.setCursorLocation();
}))(e)
: ((e, t, n) => {
const o = t.getRng();
return It(Ih(e, Cn(o.startContainer)), Ih(e, Cn(o.endContainer)), (r, s) =>
_n(r, s)
? I.none()
: I.some(() => {
o.deleteContents(),
Rx(e, !0, r, s, n).each(e => {
t.setRng(e.toRange());
});
})
).getOr(I.none());
})(t, e.selection, e.schema);
},
Bx = (e, t) => (e.selection.isCollapsed() ? I.none() : Ox(e)),
Px = (e, t, n, o, r) => I.from(t._selectionOverrides.showCaret(e, n, o, r)),
Dx = (e, t) =>
e.dispatch("BeforeObjectSelected", {target: t}).isDefaultPrevented()
? I.none()
: I.some(
(e => {
const t = e.ownerDocument.createRange();
return t.selectNode(e), t;
})(t)
),
Lx = (e, t, n) =>
t.collapsed
? ((e, t, n) => {
const o = hu(1, e.getBody(), t),
r = Ji.fromRangeStart(o),
s = r.getNode();
if (Kc(s)) return Px(1, e, s, !r.isAtEnd(), !1);
const a = r.getNode(!0);
if (Kc(a)) return Px(1, e, a, !1, !1);
const i = gb(e.dom.getRoot(), r.getNode());
return Kc(i) ? Px(1, e, i, !1, n) : I.none();
})(e, t, n).getOr(t)
: t,
Mx = e => Ip(e) || Pp(e),
Ix = e => Fp(e) || Dp(e),
Fx = (e, t, n, o, r, s) => {
Px(o, e, s.getNode(!r), r, !0).each(n => {
if (t.collapsed) {
const e = t.cloneRange();
r ? e.setEnd(n.startContainer, n.startOffset) : e.setStart(n.endContainer, n.endOffset), e.deleteContents();
} else t.deleteContents();
e.selection.setRng(n);
}),
((e, t) => {
dr(t) && 0 === t.data.length && e.remove(t);
})(e.dom, n);
},
Ux = (e, t) =>
((e, t) => {
const n = e.selection.getRng();
if (!dr(n.commonAncestorContainer)) return I.none();
const o = t ? xu.Forwards : xu.Backwards,
r = Pu(e.getBody()),
s = T(Cu, t ? r.next : r.prev),
a = t ? Mx : Ix,
i = vu(o, e.getBody(), n),
l = s(i),
d = l ? Oh(t, l) : l;
if (!d || !wu(i, d)) return I.none();
if (a(d)) return I.some(() => Fx(e, n, i.getNode(), o, t, d));
const c = s(d);
return c && a(c) && wu(d, c) ? I.some(() => Fx(e, n, i.getNode(), o, t, c)) : I.none();
})(e, t),
zx = (e, t) => {
const n = e.getBody();
return t ? $u(n).filter(Ip) : Vu(n).filter(Fp);
},
jx = e => {
const t = e.selection.getRng();
return (
!t.collapsed &&
(zx(e, !0).exists(e => e.isEqual(Ji.fromRangeStart(t))) || zx(e, !1).exists(e => e.isEqual(Ji.fromRangeEnd(t))))
);
},
Hx = kl([{remove: ["element"]}, {moveToElement: ["element"]}, {moveToPosition: ["position"]}]),
$x = (e, t, n, o) =>
Iu(t, e, n).bind(r => {
return (
(s = r.getNode()),
(C(s) && (Ga(Cn(s)) || Ka(Cn(s)))) ||
((e, t, n, o, r) => {
const s = t => r.isInline(t.nodeName.toLowerCase()) && !du(n, o, e);
return bu(!t, n).fold(() => bu(t, o).fold(L, s), s);
})(e, t, n, r, o)
? I.none()
: (t && vr(r.getNode())) || (!t && vr(r.getNode(!0)))
? ((e, t, n, o, r) => {
const s = r.getNode(!n);
return Ih(Cn(t), Cn(o.getNode()))
.map(t => (Tr(e, t) ? Hx.remove(t.dom) : Hx.moveToElement(s)))
.orThunk(() => I.some(Hx.moveToElement(s)));
})(o, e, t, n, r)
: (t && Fp(n)) || (!t && Ip(n))
? I.some(Hx.moveToPosition(r))
: I.none()
);
var s;
}),
Vx = (e, t) => I.from(gb(e.getBody(), t)),
qx = (e, t) => {
const n = e.selection.getNode();
return Vx(e, n)
.filter(vr)
.fold(
() =>
((e, t, n, o) => {
const r = hu(t ? 1 : -1, e, n),
s = Ji.fromRangeStart(r),
a = Cn(e);
return !t && Fp(s)
? I.some(Hx.remove(s.getNode(!0)))
: t && Ip(s)
? I.some(Hx.remove(s.getNode()))
: !t && Ip(s) && Qp(a, s, o)
? Jp(a, s, o).map(e => Hx.remove(e.getNode()))
: t && Fp(s) && Zp(a, s, o)
? eh(a, s, o).map(e => Hx.remove(e.getNode()))
: ((e, t, n, o) =>
((e, t) => {
const n = t.getNode(!e),
o = e ? "after" : "before";
return er(n) && n.getAttribute("data-mce-caret") === o;
})(t, n)
? ((e, t) =>
y(t)
? I.none()
: e && vr(t.nextSibling)
? I.some(Hx.moveToElement(t.nextSibling))
: !e && vr(t.previousSibling)
? I.some(Hx.moveToElement(t.previousSibling))
: I.none())(t, n.getNode(!t)).orThunk(() => $x(e, t, n, o))
: $x(e, t, n, o).bind(t =>
((e, t, n) =>
n.fold(
e => I.some(Hx.remove(e)),
e => I.some(Hx.moveToElement(e)),
n => (du(t, n, e) ? I.none() : I.some(Hx.moveToPosition(n)))
))(e, n, t)
))(e, t, s, o);
})(e.getBody(), t, e.selection.getRng(), e.schema).map(
n => () =>
n.fold(
((e, t) => n => (e._selectionOverrides.hideFakeCaret(), Sh(e, t, Cn(n)), !0))(e, t),
((e, t) => n => {
const o = t ? Ji.before(n) : Ji.after(n);
return e.selection.setRng(o.toRange()), !0;
})(e, t),
(e => t => (e.selection.setRng(t.toRange()), !0))(e)
)
),
() => I.some(k)
);
},
Wx = e => {
const t = e.dom,
n = e.selection,
o = gb(e.getBody(), n.getNode());
if (br(o) && t.isBlock(o) && t.isEmpty(o)) {
const e = t.create("br", {"data-mce-bogus": "1"});
t.setHTML(o, ""), o.appendChild(e), n.setRng(Ji.before(e).toRange());
}
return !0;
},
Kx = (e, t) =>
e.selection.isCollapsed()
? qx(e, t)
: ((e, t) => {
const n = e.selection.getNode();
return vr(n) && !yr(n)
? Vx(e, n.parentNode)
.filter(vr)
.fold(
() =>
I.some(() => {
var n;
(n = Cn(e.getBody())),
q(zo(n, ".mce-offscreen-selection"), Eo),
Sh(e, t, Cn(e.selection.getNode())),
Fh(e);
}),
() => I.some(k)
)
: jx(e)
? I.some(() => {
jh(e, e.selection.getRng(), Cn(e.getBody()));
})
: I.none();
})(e, t),
Yx = (e, t) =>
e.selection.isCollapsed()
? ((e, t) => {
const n = Ji.fromRangeStart(e.selection.getRng());
return Iu(t, e.getBody(), n)
.filter(e => (t ? Op(e) : Bp(e)))
.bind(e => cu(t ? 0 : -1, e))
.map(t => () => e.selection.select(t));
})(e, t)
: I.none(),
Gx = dr,
Xx = e => Gx(e) && e.data[0] === Ja,
Zx = e => Gx(e) && e.data[e.data.length - 1] === Ja,
Qx = e => {
var t;
return (null !== (t = e.ownerDocument) && void 0 !== t ? t : document).createTextNode(Ja);
},
Jx = (e, t) =>
e
? (e => {
var t;
if (Gx(e.previousSibling))
return Zx(e.previousSibling) || e.previousSibling.appendData(Ja), e.previousSibling;
if (Gx(e)) return Xx(e) || e.insertData(0, Ja), e;
{
const n = Qx(e);
return null === (t = e.parentNode) || void 0 === t || t.insertBefore(n, e), n;
}
})(t)
: (e => {
var t, n;
if (Gx(e.nextSibling)) return Xx(e.nextSibling) || e.nextSibling.insertData(0, Ja), e.nextSibling;
if (Gx(e)) return Zx(e) || e.appendData(Ja), e;
{
const o = Qx(e);
return (
e.nextSibling
? null === (t = e.parentNode) || void 0 === t || t.insertBefore(o, e.nextSibling)
: null === (n = e.parentNode) || void 0 === n || n.appendChild(o),
o
);
}
})(t),
eE = T(Jx, !0),
tE = T(Jx, !1),
nE = (e, t) => (dr(e.container()) ? Jx(t, e.container()) : Jx(t, e.getNode())),
oE = (e, t) => {
const n = t.get();
return n && e.container() === n && si(n);
},
rE = (e, t) =>
t.fold(
t => {
zc(e.get());
const n = eE(t);
return e.set(n), I.some(Ji(n, n.length - 1));
},
t =>
$u(t).map(t => {
if (oE(t, e)) {
const t = e.get();
return Ji(t, 1);
}
{
zc(e.get());
const n = nE(t, !0);
return e.set(n), Ji(n, 1);
}
}),
t =>
Vu(t).map(t => {
if (oE(t, e)) {
const t = e.get();
return Ji(t, t.length - 1);
}
{
zc(e.get());
const n = nE(t, !1);
return e.set(n), Ji(n, n.length - 1);
}
}),
t => {
zc(e.get());
const n = tE(t);
return e.set(n), I.some(Ji(n, 1));
}
),
sE = (e, t) => {
for (let n = 0; n < e.length; n++) {
const o = e[n].apply(null, t);
if (o.isSome()) return o;
}
return I.none();
},
aE = kl([{before: ["element"]}, {start: ["element"]}, {end: ["element"]}, {after: ["element"]}]),
iE = (e, t) => lu(t, e) || e,
lE = (e, t, n) => {
const o = Bh(n),
r = iE(t, o.container());
return Th(e, r, o).fold(
() =>
ju(r, o)
.bind(T(Th, e, r))
.map(e => aE.before(e)),
I.none
);
},
dE = (e, t) => null === Ku(e, t),
cE = (e, t, n) => Th(e, t, n).filter(T(dE, t)),
uE = (e, t, n) => {
const o = Ph(n);
return cE(e, t, o).bind(e => (Hu(e, o).isNone() ? I.some(aE.start(e)) : I.none()));
},
mE = (e, t, n) => {
const o = Bh(n);
return cE(e, t, o).bind(e => (ju(e, o).isNone() ? I.some(aE.end(e)) : I.none()));
},
fE = (e, t, n) => {
const o = Ph(n),
r = iE(t, o.container());
return Th(e, r, o).fold(
() =>
Hu(r, o)
.bind(T(Th, e, r))
.map(e => aE.after(e)),
I.none
);
},
gE = e => !Ah(hE(e)),
pE = (e, t, n) => sE([lE, uE, mE, fE], [e, t, n]).filter(gE),
hE = e => e.fold(R, R, R, R),
bE = e => e.fold(N("before"), N("start"), N("end"), N("after")),
vE = e => e.fold(aE.before, aE.before, aE.after, aE.after),
yE = e => e.fold(aE.start, aE.start, aE.end, aE.end),
CE = (e, t, n, o, r, s) =>
It(Th(t, n, o), Th(t, n, r), (t, o) =>
t !== o &&
((e, t, n) => {
const o = lu(t, e),
r = lu(n, e);
return C(o) && o === r;
})(n, t, o)
? aE.after(e ? t : o)
: s
).getOr(s),
wE = (e, t) =>
e.fold(M, e => {
return (o = t), !(bE((n = e)) === bE(o) && hE(n) === hE(o));
var n, o;
}),
xE = (e, t) =>
e
? t.fold(_(I.some, aE.start), I.none, _(I.some, aE.after), I.none)
: t.fold(I.none, _(I.some, aE.before), I.none, _(I.some, aE.end)),
EE = (e, t, n) => {
const o = e ? 1 : -1;
return (
t.setRng(Ji(n.container(), n.offset() + o).toRange()),
t.getSel().modify("move", e ? "forward" : "backward", "word"),
!0
);
};
var kE;
!(function (e) {
(e[(e.Br = 0)] = "Br"), (e[(e.Block = 1)] = "Block"), (e[(e.Wrap = 2)] = "Wrap"), (e[(e.Eol = 3)] = "Eol");
})(kE || (kE = {}));
const _E = (e, t) => (e === xu.Backwards ? oe(t) : t),
SE = (e, t, n) => (e === xu.Forwards ? t.next(n) : t.prev(n)),
NE = (e, t, n, o) => (pr(o.getNode(t === xu.Forwards)) ? kE.Br : !1 === du(n, o) ? kE.Block : kE.Wrap),
RE = (e, t, n, o) => {
const r = Pu(n);
let s = o;
const a = [];
for (; s; ) {
const n = SE(t, r, s);
if (!n) break;
if (pr(n.getNode(!1)))
return t === xu.Forwards
? {positions: _E(t, a).concat([n]), breakType: kE.Br, breakAt: I.some(n)}
: {positions: _E(t, a), breakType: kE.Br, breakAt: I.some(n)};
if (n.isVisible()) {
if (e(s, n)) {
const e = NE(0, t, s, n);
return {positions: _E(t, a), breakType: e, breakAt: I.some(n)};
}
a.push(n), (s = n);
} else s = n;
}
return {positions: _E(t, a), breakType: kE.Eol, breakAt: I.none()};
},
AE = (e, t, n, o) =>
t(n, o)
.breakAt.map(o => {
const r = t(n, o).positions;
return e === xu.Backwards ? r.concat(o) : [o].concat(r);
})
.getOr([]),
TE = (e, t) =>
X(
e,
(e, n) =>
e.fold(
() => I.some(n),
o =>
It(le(o.getClientRects()), le(n.getClientRects()), (e, r) => {
const s = Math.abs(t - e.left);
return Math.abs(t - r.left) <= s ? n : o;
}).or(e)
),
I.none()
),
OE = (e, t) => le(t.getClientRects()).bind(t => TE(e, t.left)),
BE = T(RE, Ji.isAbove, -1),
PE = T(RE, Ji.isBelow, 1),
DE = T(AE, -1, BE),
LE = T(AE, 1, PE),
ME = (e, t) => BE(e, t).breakAt.isNone(),
IE = (e, t) => PE(e, t).breakAt.isNone(),
FE = (e, t) => OE(DE(e, t), t),
UE = (e, t) => OE(LE(e, t), t),
zE = vr,
jE = (e, t) => Math.abs(e.left - t),
HE = (e, t) => Math.abs(e.right - t),
$E = (e, t) =>
Be(e, (e, n) => {
const o = Math.min(jE(e, t), HE(e, t)),
r = Math.min(jE(n, t), HE(n, t));
return (r === o && _e(n, "node") && zE(n.node)) || r < o ? n : e;
}),
VE = e => {
const t = t =>
V(t, t => {
const n = pi(t);
return (n.node = e), n;
});
if (er(e)) return t(e.getClientRects());
if (dr(e)) {
const n = e.ownerDocument.createRange();
return n.setStart(e, 0), n.setEnd(e, e.data.length), t(n.getClientRects());
}
return [];
},
qE = e => te(e, VE);
var WE;
!(function (e) {
(e[(e.Up = -1)] = "Up"), (e[(e.Down = 1)] = "Down");
})(WE || (WE = {}));
const KE = (e, t, n, o, r, s) => {
let a = 0;
const i = [],
l = o => {
let s = qE([o]);
-1 === e && (s = s.reverse());
for (let e = 0; e < s.length; e++) {
const o = s[e];
if (!n(o, d)) {
if ((i.length > 0 && t(o, De(i)) && a++, (o.line = a), r(o))) return !0;
i.push(o);
}
}
return !1;
},
d = De(s.getClientRects());
if (!d) return i;
const c = s.getNode();
return (
c &&
(l(c),
((e, t, n, o) => {
let r = o;
for (; (r = iu(r, e, Li, t)); ) if (n(r)) return;
})(e, o, l, c)),
i
);
},
YE = T(KE, WE.Up, vi, yi),
GE = T(KE, WE.Down, yi, vi),
XE = e => De(e.getClientRects()),
ZE = e => t => ((e, t) => t.line > e)(e, t),
QE = e => t => ((e, t) => t.line === e)(e, t),
JE = (e, t) => {
e.selection.setRng(t), vg(e, e.selection.getRng());
},
ek = (e, t, n) => I.some(Lx(e, t, n)),
tk = (e, t, n, o, r, s) => {
const a = t === xu.Forwards,
i = Pu(e.getBody()),
l = T(Cu, a ? i.next : i.prev),
d = a ? o : r;
if (!n.collapsed) {
const o = wi(n);
if (s(o)) return Px(t, e, o, t === xu.Backwards, !1);
if (jx(e)) {
const e = n.cloneRange();
return e.collapse(t === xu.Backwards), I.from(e);
}
}
const c = vu(t, e.getBody(), n);
if (d(c)) return Dx(e, c.getNode(!a));
let u = l(c);
const m = fi(n);
if (!u) return m ? I.some(n) : I.none();
if (((u = Oh(a, u)), d(u))) return Px(t, e, u.getNode(!a), a, !1);
const f = l(u);
return f && d(f) && wu(u, f) ? Px(t, e, f.getNode(!a), a, !1) : m ? ek(e, u.toRange(), !1) : I.none();
},
nk = (e, t, n, o, r, s) => {
const a = vu(t, e.getBody(), n),
i = De(a.getClientRects()),
l = t === WE.Down,
d = e.getBody();
if (!i) return I.none();
if (jx(e)) {
const e = l ? Ji.fromRangeEnd(n) : Ji.fromRangeStart(n);
return (l ? UE : FE)(d, e)
.orThunk(() => I.from(e))
.map(e => e.toRange());
}
const c = (l ? GE : YE)(d, ZE(1), a),
u = Y(c, QE(1)),
m = i.left,
f = $E(u, m);
if (f && s(f.node)) {
const n = Math.abs(m - f.left),
o = Math.abs(m - f.right);
return Px(t, e, f.node, n < o, !1);
}
let g;
if (((g = o(a) ? a.getNode() : r(a) ? a.getNode(!0) : wi(n)), g)) {
const n = ((e, t, n, o) => {
const r = Pu(t);
let s, a, i, l;
const d = [];
let c = 0;
1 === e
? ((s = r.next), (a = yi), (i = vi), (l = Ji.after(o)))
: ((s = r.prev), (a = vi), (i = yi), (l = Ji.before(o)));
const u = XE(l);
do {
if (!l.isVisible()) continue;
const e = XE(l);
if (i(e, u)) continue;
d.length > 0 && a(e, De(d)) && c++;
const t = pi(e);
if (((t.position = l), (t.line = c), n(t))) return d;
d.push(t);
} while ((l = s(l)));
return d;
})(t, d, ZE(1), g);
let o = $E(Y(n, QE(1)), m);
if (o) return ek(e, o.position.toRange(), !1);
if (((o = De(Y(n, QE(0)))), o)) return ek(e, o.position.toRange(), !1);
}
return 0 === u.length
? ok(e, l)
.filter(l ? r : o)
.map(t => Lx(e, t.toRange(), !1))
: I.none();
},
ok = (e, t) => {
const n = e.selection.getRng(),
o = t ? Ji.fromRangeEnd(n) : Ji.fromRangeStart(n),
r =
((s = o.container()),
(a = e.getBody()),
Qn(
Cn(s),
e => Gc(e.dom),
e => e.dom === a
)
.map(e => e.dom)
.getOr(a));
var s, a;
if (t) {
const e = PE(r, o);
return de(e.positions);
}
{
const e = BE(r, o);
return le(e.positions);
}
},
rk = (e, t, n) =>
ok(e, t)
.filter(n)
.exists(t => (e.selection.setRng(t.toRange()), !0)),
sk = (e, t) => {
const n = e.dom.createRng();
n.setStart(t.container(), t.offset()), n.setEnd(t.container(), t.offset()), e.selection.setRng(n);
},
ak = (e, t) => {
e ? t.setAttribute("data-mce-selected", "inline-boundary") : t.removeAttribute("data-mce-selected");
},
ik = (e, t, n) => rE(t, n).map(t => (sk(e, t), n)),
lk = (e, t, n) => {
const o = e.getBody(),
r = ((e, t, n) => {
const o = Ji.fromRangeStart(e);
if (e.collapsed) return o;
{
const r = Ji.fromRangeEnd(e);
return n ? Hu(t, r).getOr(r) : ju(t, o).getOr(o);
}
})(e.selection.getRng(), o, n);
return ((e, t, n, o) => {
const r = Oh(e, o),
s = pE(t, n, r);
return pE(t, n, r)
.bind(T(xE, e))
.orThunk(() =>
((e, t, n, o, r) => {
const s = Oh(e, r);
return Iu(e, n, s)
.map(T(Oh, e))
.fold(
() => o.map(vE),
r => pE(t, n, r).map(T(CE, e, t, n, s, r)).filter(T(wE, o))
)
.filter(gE);
})(e, t, n, s, o)
);
})(n, T(Rh, e), o, r).bind(n => ik(e, t, n));
},
dk = (e, t, n) => !!Rd(e) && lk(e, t, n).isSome(),
ck = (e, t, n) =>
!!Rd(t) &&
((e, t) => {
const n = t.selection.getRng(),
o = e ? Ji.fromRangeEnd(n) : Ji.fromRangeStart(n);
return (
!!(e => w(e.selection.getSel().modify))(t) &&
(e && li(o) ? EE(!0, t.selection, o) : !(e || !di(o)) && EE(!1, t.selection, o))
);
})(e, t),
uk = e => {
const t = Br(null),
n = T(Rh, e);
return (
e.on("NodeChange", o => {
Rd(e) &&
(((e, t, n) => {
const o = V(zo(Cn(t.getRoot()), '*[data-mce-selected="inline-boundary"]'), e => e.dom),
r = Y(o, e),
s = Y(n, e);
q(re(r, s), T(ak, !1)), q(re(s, r), T(ak, !0));
})(n, e.dom, o.parents),
((e, t) => {
const n = t.get();
if (e.selection.isCollapsed() && !e.composing && n) {
const o = Ji.fromRangeStart(e.selection.getRng());
Ji.isTextPosition(o) && !(e => li(e) || di(e))(o) && (sk(e, Uc(n, o)), t.set(null));
}
})(e, t),
((e, t, n, o) => {
if (t.selection.isCollapsed()) {
const r = Y(o, e);
q(r, o => {
const r = Ji.fromRangeStart(t.selection.getRng());
pE(e, t.getBody(), r).bind(e => ik(t, n, e));
});
}
})(n, e, t, o.parents));
}),
t
);
},
mk = T(ck, !0),
fk = T(ck, !1),
gk = (e, t, n) => {
if (Rd(e)) {
const o = ok(e, t).getOrThunk(() => {
const n = e.selection.getRng();
return t ? Ji.fromRangeEnd(n) : Ji.fromRangeStart(n);
});
return pE(T(Rh, e), e.getBody(), o).exists(t => {
const o = vE(t);
return rE(n, o).exists(t => (sk(e, t), !0));
});
}
return !1;
},
pk = (e, t) => n => rE(t, n).map(t => () => sk(e, t)),
hk = (e, t, n, o) => {
const r = e.getBody(),
s = T(Rh, e);
e.undoManager.ignore(() => {
e.selection.setRng(
((e, t) => {
const n = document.createRange();
return n.setStart(e.container(), e.offset()), n.setEnd(t.container(), t.offset()), n;
})(n, o)
),
Lh(e),
pE(s, r, Ji.fromRangeStart(e.selection.getRng())).map(yE).bind(pk(e, t)).each(D);
}),
e.nodeChanged();
},
bk = (e, t, n) => {
if (e.selection.isCollapsed() && Rd(e)) {
const o = Ji.fromRangeStart(e.selection.getRng());
return ((e, t, n, o) => {
const r = ((e, t) => lu(t, e) || e)(e.getBody(), o.container()),
s = T(Rh, e),
a = pE(s, r, o);
return a
.bind(e =>
n
? e.fold(N(I.some(yE(e))), I.none, N(I.some(vE(e))), I.none)
: e.fold(I.none, N(I.some(vE(e))), I.none, N(I.some(yE(e))))
)
.map(pk(e, t))
.getOrThunk(() => {
const i = Fu(n, r, o),
l = i.bind(e => pE(s, r, e));
return It(a, l, () =>
Th(s, r, o).bind(t =>
(e =>
It($u(e), Vu(e), (t, n) => {
const o = Oh(!0, t),
r = Oh(!1, n);
return ju(e, o).forall(e => e.isEqual(r));
}).getOr(!0))(t)
? I.some(() => {
Sh(e, n, Cn(t));
})
: I.none()
)
).getOrThunk(() =>
l.bind(() =>
i.map(r => () => {
n ? hk(e, t, o, r) : hk(e, t, r, o);
})
)
);
});
})(e, t, n, o);
}
return I.none();
},
vk = (e, t) => {
const n = Cn(e.getBody()),
o = Cn(e.selection.getStart()),
r = zp(o, n);
return J(r, t).fold(N(r), e => r.slice(0, e));
},
yk = e => 1 === jn(e),
Ck = (e, t) => {
const n = T(sv, e);
return te(t, e => (n(e) ? [e.dom] : []));
},
wk = e => {
const t = (e => vk(e, t => e.schema.isBlock($t(t))))(e);
return Ck(e, t);
},
xk = (e, t) => {
const n = Y((e => vk(e, t => e.schema.isBlock($t(t)) || (e => jn(e) > 1)(t)))(e), yk);
return de(n).bind(o => {
const r = Ji.fromRangeStart(e.selection.getRng());
return Uh(t, r, o.dom) && !Hm(o)
? I.some(() =>
((e, t, n, o) => {
const r = Ck(t, o);
if (0 === r.length) Sh(t, e, n);
else {
const e = rv(n.dom, r);
t.selection.setRng(e.toRange());
}
})(t, e, o, n)
)
: I.none();
});
},
Ek = (e, t) => {
const n = e.selection.getStart(),
o =
((e, t) => {
const n = t.parentElement;
return pr(t) && !h(n) && e.dom.isEmpty(n);
})(e, n) || Hm(Cn(n))
? rv(n, t)
: ((e, t) => {
const {caretContainer: n, caretPosition: o} = ov(t);
return e.insertNode(n.dom), o;
})(e.selection.getRng(), t);
e.selection.setRng(o.toRange());
},
kk = e => dr(e.startContainer),
_k = e => {
const t = e.selection.getRng();
return (
(e => 0 === e.startOffset && kk(e))(t) &&
((e, t) => {
const n = t.startContainer.parentElement;
return !h(n) && sv(e, Cn(n));
})(e, t) &&
(e =>
(e =>
(e => {
const t = e.startContainer.parentNode,
n = e.endContainer.parentNode;
return !h(t) && !h(n) && t.isEqualNode(n);
})(e) &&
(e => {
const t = e.endContainer;
return e.endOffset === (dr(t) ? t.length : t.childNodes.length);
})(e))(e) || (e => !e.endContainer.isEqualNode(e.commonAncestorContainer))(e))(t)
);
},
Sk = (e, t) =>
e.selection.isCollapsed()
? xk(e, t)
: (e => {
if (_k(e)) {
const t = wk(e);
return I.some(() => {
Lh(e),
((e, t) => {
const n = re(t, wk(e));
n.length > 0 && Ek(e, n);
})(e, t);
});
}
return I.none();
})(e),
Nk = e => (
(e => {
const t = e.selection.getRng();
return (
t.collapsed &&
(kk(t) || e.dom.isEmpty(t.startContainer)) &&
!(e => {
return (
(t = Cn(e.selection.getStart())),
(n = e.schema),
jo(
t,
e => Wu(e.dom),
e => n.isBlock($t(e))
)
);
var t, n;
})(e)
);
})(e) && Ek(e, []),
!0
),
Rk = (e, t, n) =>
C(n)
? I.some(() => {
e._selectionOverrides.hideFakeCaret(), Sh(e, t, Cn(n));
})
: I.none(),
Ak = (e, t) =>
e.selection.isCollapsed()
? ((e, t) => {
const n = t ? Pp : Dp,
o = t ? xu.Forwards : xu.Backwards,
r = vu(o, e.getBody(), e.selection.getRng());
return n(r)
? Rk(e, t, r.getNode(!t))
: I.from(Oh(t, r))
.filter(e => n(e) && wu(r, e))
.bind(n => Rk(e, t, n.getNode(!t)));
})(e, t)
: ((e, t) => {
const n = e.selection.getNode();
return wr(n) ? Rk(e, t, n) : I.none();
})(e, t),
Tk = e => Ze(null != e ? e : "").getOr(0),
Ok = (e, t) =>
(e || "table" === $t(t) ? "margin" : "padding") + ("rtl" === uo(t, "direction") ? "-right" : "-left"),
Bk = e => {
const t = Dk(e);
return (
!e.mode.isReadOnly() &&
(t.length > 1 ||
((e, t) =>
ne(t, t => {
const n = Ok(md(e), t),
o = fo(t, n).map(Tk).getOr(0);
return "false" !== e.dom.getContentEditable(t.dom) && o > 0;
}))(e, t))
);
},
Pk = e => Wa(e) || Ka(e),
Dk = e =>
Y(
_o(e.selection.getSelectedBlocks()),
e => !Pk(e) && !(e => Tn(e).exists(Pk))(e) && Jn(e, e => br(e.dom) || vr(e.dom)).exists(e => br(e.dom))
),
Lk = (e, t) => {
var n, o;
const {dom: r} = e,
s = fd(e),
a =
null !== (o = null === (n = /[a-z%]+$/i.exec(s)) || void 0 === n ? void 0 : n[0]) && void 0 !== o ? o : "px",
i = Tk(s),
l = md(e);
q(Dk(e), e => {
((e, t, n, o, r, s) => {
const a = Ok(n, Cn(s)),
i = Tk(e.getStyle(s, a));
if ("outdent" === t) {
const t = Math.max(0, i - o);
e.setStyle(s, a, t ? t + r : "");
} else {
const t = i + o + r;
e.setStyle(s, a, t);
}
})(r, t, l, i, a, e.dom);
});
},
Mk = e => Lk(e, "outdent"),
Ik = e => {
if (e.selection.isCollapsed() && Bk(e)) {
const t = e.dom,
n = e.selection.getRng(),
o = Ji.fromRangeStart(n),
r = t.getParent(n.startContainer, t.isBlock);
if (null !== r && qp(Cn(r), o, e.schema)) return I.some(() => Mk(e));
}
return I.none();
},
Fk = (e, t, n) =>
ue([Ik, Kx, Ux, (e, n) => bk(e, t, n), Ax, fb, Yx, Ak, Bx, Sk], t => t(e, n)).filter(t =>
e.selection.isEditable()
),
Uk = (e, t) => {
e.addCommand("delete", () => {
((e, t) => {
Fk(e, t, !1).fold(() => {
e.selection.isEditable() && (Lh(e), Fh(e));
}, D);
})(e, t);
}),
e.addCommand("forwardDelete", () => {
((e, t) => {
Fk(e, t, !0).fold(() => {
e.selection.isEditable() &&
(e => {
Dh(e, "ForwardDelete");
})(e);
}, D);
})(e, t);
});
},
zk = e => (void 0 === e.touches || 1 !== e.touches.length ? I.none() : I.some(e.touches[0])),
jk = (e, t) => ke(e, t.nodeName),
Hk = (e, t) => !!dr(t) || (!!er(t) && !(jk(e.getBlockElements(), t) || sm(t) || Zr(e, t) || Ir(t))),
$k = (e, t) => {
if (dr(t)) {
if (0 === t.data.length) return !0;
if (/^\s+$/.test(t.data)) return !t.nextSibling || jk(e, t.nextSibling) || Ir(t.nextSibling);
}
return !1;
},
Vk = e => e.dom.create(Wl(e), Kl(e)),
qk = e => {
const t = e.dom,
n = e.selection,
o = e.schema,
r = o.getBlockElements(),
s = n.getStart(),
a = e.getBody();
let i,
l,
d = !1;
const c = Wl(e);
if (!s || !er(s)) return;
const u = a.nodeName.toLowerCase();
if (!o.isValidChild(u, c.toLowerCase()) || ((e, t, n) => $(Up(Cn(n), Cn(t)), t => jk(e, t.dom)))(r, a, s)) return;
const m = n.getRng(),
{startContainer: f, startOffset: g, endContainer: p, endOffset: h} = m,
b = jg(e);
let v = a.firstChild;
for (; v; )
if ((er(v) && Kr(o, v), Hk(o, v))) {
if ($k(r, v)) {
(l = v), (v = v.nextSibling), t.remove(l);
continue;
}
i || ((i = Vk(e)), a.insertBefore(i, v), (d = !0)), (l = v), (v = v.nextSibling), i.appendChild(l);
} else (i = null), (v = v.nextSibling);
d && b && (m.setStart(f, g), m.setEnd(p, h), n.setRng(m), e.nodeChanged());
},
Wk = (e, t, n) => {
const o = Cn(Vk(e)),
r = Za();
yo(o, r), n(t, o);
const s = document.createRange();
return s.setStartBefore(r.dom), s.setEndBefore(r.dom), s;
},
Kk = e => t => -1 !== (" " + t.attr("class") + " ").indexOf(e),
Yk = (e, t, n) =>
function (o) {
const r = arguments,
s = r[r.length - 2],
a = s > 0 ? t.charAt(s - 1) : "";
if ('"' === a) return o;
if (">" === a) {
const e = t.lastIndexOf("<", s);
if (-1 !== e && -1 !== t.substring(e, s).indexOf('contenteditable="false"')) return o;
}
return (
'<span class="' +
n +
'" data-mce-content="' +
e.dom.encode(r[0]) +
'">' +
e.dom.encode("string" == typeof r[1] ? r[1] : r[0]) +
"</span>"
);
},
Gk = (e, t) => {
t.hasAttribute("data-mce-caret") &&
(mi(t), e.selection.setRng(e.selection.getRng()), e.selection.scrollIntoView(t));
},
Xk = (e, t) => {
const n = (e =>
no(Cn(e.getBody()), "*[data-mce-caret]")
.map(e => e.dom)
.getOrNull())(e);
if (n)
return "compositionstart" === t.type
? (t.preventDefault(), t.stopPropagation(), void Gk(e, n))
: void (ii(n) && (Gk(e, n), e.undoManager.add()));
},
Zk = vr,
Qk = (e, t, n) => {
const o = Pu(e.getBody()),
r = T(Cu, 1 === t ? o.next : o.prev);
if (n.collapsed) {
const o = e.dom.getParent(n.startContainer, "PRE");
if (!o) return;
if (!r(Ji.fromRangeStart(n))) {
const n = Cn(
(e => {
const t = e.dom.create(Wl(e));
return (t.innerHTML = '<br data-mce-bogus="1">'), t;
})(e)
);
1 === t ? bo(Cn(o), n) : ho(Cn(o), n), e.selection.select(n.dom, !0), e.selection.collapse();
}
}
},
Jk = (e, t) =>
((e, t) => {
const n = t ? xu.Forwards : xu.Backwards,
o = e.selection.getRng();
return ((e, t, n) => tk(t, e, n, Ip, Fp, Zk))(n, e, o).orThunk(() => (Qk(e, n, o), I.none()));
})(
e,
((e, t) => {
const n = t ? e.getEnd(!0) : e.getStart(!0);
return Ah(n) ? !t : t;
})(e.selection, t)
).exists(t => (JE(e, t), !0)),
e_ = (e, t) =>
((e, t) => {
const n = t ? 1 : -1,
o = e.selection.getRng();
return ((e, t, n) =>
nk(
t,
e,
n,
e => Ip(e) || Lp(e),
e => Fp(e) || Mp(e),
Zk
))(n, e, o).orThunk(() => (Qk(e, n, o), I.none()));
})(e, t).exists(t => (JE(e, t), !0)),
t_ = (e, t) => rk(e, t, t ? Fp : Ip),
n_ = (e, t) =>
zx(e, !t)
.map(n => {
const o = n.toRange(),
r = e.selection.getRng();
return t ? o.setStart(r.startContainer, r.startOffset) : o.setEnd(r.endContainer, r.endOffset), o;
})
.exists(t => (JE(e, t), !0)),
o_ = e => H(["figcaption"], $t(e)),
r_ = (e, t) =>
!!e.selection.isCollapsed() &&
((e, t) => {
const n = Cn(e.getBody()),
o = Ji.fromRangeStart(e.selection.getRng());
return ((e, t, n) => {
const o = T(_n, t);
return Jn(Cn(e.container()), e => n.isBlock($t(e)), o).filter(o_);
})(o, n, e.schema).exists(() => {
if (((e, t, n) => (t ? IE(e.dom, n) : ME(e.dom, n)))(n, t, o)) {
const o = Wk(e, n, t ? yo : vo);
return e.selection.setRng(o), !0;
}
return !1;
});
})(e, t),
s_ = (e, t) =>
((e, t) =>
t
? I.from(e.dom.getParent(e.selection.getNode(), "details"))
.map(t =>
((e, t) => {
const n = e.selection.getRng(),
o = Ji.fromRangeStart(n);
return !(e.getBody().lastChild !== t || !IE(t, o) || (e.execCommand("InsertNewBlockAfter"), 0));
})(e, t)
)
.getOr(!1)
: I.from(e.dom.getParent(e.selection.getNode(), "summary"))
.bind(t =>
I.from(e.dom.getParent(t, "details")).map(n =>
((e, t, n) => {
const o = e.selection.getRng(),
r = Ji.fromRangeStart(o);
return !(e.getBody().firstChild !== t || !ME(n, r) || (e.execCommand("InsertNewBlockBefore"), 0));
})(e, n, t)
)
)
.getOr(!1))(e, t),
a_ = {shiftKey: !1, altKey: !1, ctrlKey: !1, metaKey: !1, keyCode: 0},
i_ = (e, t) =>
t.keyCode === e.keyCode &&
t.shiftKey === e.shiftKey &&
t.altKey === e.altKey &&
t.ctrlKey === e.ctrlKey &&
t.metaKey === e.metaKey,
l_ =
(e, ...t) =>
() =>
e.apply(null, t),
d_ = (e, t) =>
Q(((e, t) => te((e => V(e, e => ({...a_, ...e})))(e), e => (i_(e, t) ? [e] : [])))(e, t), e => e.action()),
c_ = (e, t) =>
ue(((e, t) => te((e => V(e, e => ({...a_, ...e})))(e), e => (i_(e, t) ? [e] : [])))(e, t), e => e.action()),
u_ = (e, t) => {
const n = t ? xu.Forwards : xu.Backwards,
o = e.selection.getRng();
return tk(e, n, o, Pp, Dp, wr).exists(t => (JE(e, t), !0));
},
m_ = (e, t) => {
const n = t ? 1 : -1,
o = e.selection.getRng();
return nk(e, n, o, Pp, Dp, wr).exists(t => (JE(e, t), !0));
},
f_ = (e, t) => rk(e, t, t ? Dp : Pp),
g_ = kl([{none: ["current"]}, {first: ["current"]}, {middle: ["current", "target"]}, {last: ["current"]}]),
p_ = {...g_, none: e => g_.none(e)},
h_ = (e, t, n) => te(In(e), e => (En(e, t) ? (n(e) ? [e] : []) : h_(e, t, n))),
b_ = (e, t) => oo(e, "table", t),
v_ = (e, t, n, o, r = M) => {
const s = 1 === o;
if (!s && n <= 0) return p_.first(e[0]);
if (s && n >= e.length - 1) return p_.last(e[e.length - 1]);
{
const s = n + o,
a = e[s];
return r(a) ? p_.middle(t, a) : v_(e, t, s, o, r);
}
},
y_ = (e, t) =>
b_(e, t).bind(t => {
const n = h_(t, "th,td", M);
return J(n, t => _n(e, t)).map(e => ({index: e, all: n}));
}),
C_ = ["img", "br"],
w_ = e => {
return (
((t = e), ja.getOption(t)).filter(e => 0 !== e.trim().length || e.indexOf(Wo) > -1).isSome() ||
H(C_, $t(e)) ||
(e => Wt(e) && "false" === tn(e, "contenteditable"))(e)
);
var t;
},
x_ = (e, t, n, o, r) => {
const s = zo(Cn(n), "td,th,caption").map(e => e.dom),
a = Y(
((e, t) =>
te(t, t => {
const n = ((e, t) => ({
left: e.left - t,
top: e.top - t,
right: e.right + -2,
bottom: e.bottom + -2,
width: e.width + t,
height: e.height + t
}))(pi(t.getBoundingClientRect()), -1);
return [
{x: n.left, y: e(n), cell: t},
{x: n.right, y: e(n), cell: t}
];
}))(e, s),
e => t(e, r)
);
return ((e, t, n) =>
X(
e,
(e, o) =>
e.fold(
() => I.some(o),
e => {
const r = Math.sqrt(Math.abs(e.x - t) + Math.abs(e.y - n)),
s = Math.sqrt(Math.abs(o.x - t) + Math.abs(o.y - n));
return I.some(s < r ? o : e);
}
),
I.none()
))(a, o, r).map(e => e.cell);
},
E_ = T(
x_,
e => e.bottom,
(e, t) => e.y < t
),
k_ = T(
x_,
e => e.top,
(e, t) => e.y > t
),
__ = (e, t, n) => {
const o = e(t, n);
return (e => e.breakType === kE.Wrap && 0 === e.positions.length)(o) ||
(!pr(n.getNode()) && (e => e.breakType === kE.Br && 1 === e.positions.length)(o))
? !((e, t, n) => n.breakAt.exists(n => e(t, n).breakAt.isSome()))(e, t, o)
: o.breakAt.isNone();
},
S_ = T(__, BE),
N_ = T(__, PE),
R_ = (e, t, n, o) => {
const r = e.selection.getRng(),
s = t ? 1 : -1;
return !(
!Wc() ||
!((e, t, n) => {
const o = Ji.fromRangeStart(t);
return zu(!e, n).exists(e => e.isEqual(o));
})(t, r, n) ||
(Px(s, e, n, !t, !1).each(t => {
JE(e, t);
}),
0)
);
},
A_ = (e, t, n) => {
const o = ((e, t) => {
const n = t.getNode(e);
return ar(n) ? I.some(n) : I.none();
})(!!t, n),
r = !1 === t;
o.fold(
() => JE(e, n.toRange()),
o =>
zu(r, e.getBody())
.filter(e => e.isEqual(n))
.fold(
() => JE(e, n.toRange()),
n =>
((e, t, n) => {
t.undoManager.transact(() => {
const o = e ? bo : ho,
r = Wk(t, Cn(n), o);
JE(t, r);
});
})(t, e, o)
)
);
},
T_ = (e, t, n, o) => {
const r = e.selection.getRng(),
s = Ji.fromRangeStart(r),
a = e.getBody();
if (!t && S_(o, s)) {
const o = ((e, t, n) =>
((e, t) =>
le(t.getClientRects())
.bind(t => E_(e, t.left, t.top))
.bind(e => {
return OE(
Vu((n = e))
.map(e => BE(n, e).positions.concat(e))
.getOr([]),
t
);
var n;
}))(t, n)
.orThunk(() => le(n.getClientRects()).bind(n => TE(DE(e, Ji.before(t)), n.left)))
.getOr(Ji.before(t)))(a, n, s);
return A_(e, t, o), !0;
}
if (t && N_(o, s)) {
const o = ((e, t, n) =>
((e, t) =>
de(t.getClientRects())
.bind(t => k_(e, t.left, t.top))
.bind(e => {
return OE(
$u((n = e))
.map(e => [e].concat(PE(n, e).positions))
.getOr([]),
t
);
var n;
}))(t, n)
.orThunk(() => le(n.getClientRects()).bind(n => TE(LE(e, Ji.after(t)), n.left)))
.getOr(Ji.after(t)))(a, n, s);
return A_(e, t, o), !0;
}
return !1;
},
O_ = (e, t, n) =>
I.from(e.dom.getParent(e.selection.getNode(), "td,th"))
.bind(o => I.from(e.dom.getParent(o, "table")).map(r => n(e, t, r, o)))
.getOr(!1),
B_ = (e, t) => O_(e, t, R_),
P_ = (e, t) => O_(e, t, T_),
D_ = (e, t, n) =>
n.fold(
I.none,
I.none,
(e, t) => {
return ((n = t), eo(n, w_)).map(e =>
(e => {
const t = Lf.exact(e, 0, e, 0);
return zf(t);
})(e)
);
var n;
},
n => (e.execCommand("mceTableInsertRowAfter"), L_(e, t, n))
),
L_ = (e, t, n) => {
return D_(
e,
t,
((r = ro),
y_((o = n), void 0).fold(
() => p_.none(o),
e => v_(e.all, o, e.index, 1, r)
))
);
var o, r;
},
M_ = (e, t, n) => {
return D_(
e,
t,
((r = ro),
y_((o = n), void 0).fold(
() => p_.none(),
e => v_(e.all, o, e.index, -1, r)
))
);
var o, r;
},
I_ = (e, t) => {
const n = ["table", "li", "dl"],
o = Cn(e.getBody()),
r = e => {
const t = $t(e);
return _n(e, o) || H(n, t);
},
s = e.selection.getRng();
return ((e, t) =>
((e, t, n = L) =>
n(t) ? I.none() : H(e, $t(t)) ? I.some(t) : to(t, e.join(","), e => En(e, "table") || n(e)))(
["td", "th"],
e,
t
))(Cn(t ? s.endContainer : s.startContainer), r)
.map(
n => (
b_(n, r).each(t => {
e.model.table.clearSelectedCells(t.dom);
}),
e.selection.collapse(!t),
(t ? L_ : M_)(e, r, n).each(t => {
e.selection.setRng(t);
}),
!0
)
)
.getOr(!1);
},
F_ = (e, t) => ({container: e, offset: t}),
U_ = fa.DOM,
z_ = e => t => e === t ? -1 : 0,
j_ = (e, t, n) => {
if (dr(e) && t >= 0) return I.some(F_(e, t));
{
const o = za(U_);
return I.from(o.backwards(e, t, z_(e), n)).map(e => F_(e.container, e.container.data.length));
}
},
H_ = (e, t, n) => {
if (!dr(e)) return I.none();
const o = e.data;
if (t >= 0 && t <= o.length) return I.some(F_(e, t));
{
const o = za(U_);
return I.from(o.backwards(e, t, z_(e), n)).bind(e => {
const o = e.container.data;
return H_(e.container, t + o.length, n);
});
}
},
$_ = (e, t, n) => {
if (!dr(e)) return I.none();
const o = e.data;
if (t <= o.length) return I.some(F_(e, t));
{
const r = za(U_);
return I.from(r.forwards(e, t, z_(e), n)).bind(e => $_(e.container, t - o.length, n));
}
},
V_ = (e, t, n, o, r) => {
const s = za(
e,
(
e => t =>
e.isBlock(t) || H(["BR", "IMG", "HR", "INPUT"], t.nodeName) || "false" === e.getContentEditable(t)
)(e)
);
return I.from(s.backwards(t, n, o, r));
},
q_ = e => "" !== e && -1 !== " \xa0\f\n\r\t\v".indexOf(e),
W_ = (e, t) => e.substring(t.length),
K_ = (e, t, n, o = !1) => {
if (!(r = t).collapsed || !dr(r.startContainer)) return I.none();
var r;
const s = {text: "", offset: 0},
a = e.getParent(t.startContainer, e.isBlock) || e.getRoot();
return V_(
e,
t.startContainer,
t.startOffset,
(e, t, r) => (
(s.text = r + s.text),
(s.offset += t),
((e, t, n, o = !1) => {
let r;
const s = n.charAt(0);
for (r = t - 1; r >= 0; r--) {
const a = e.charAt(r);
if (!o && q_(a)) return I.none();
if (s === a && He(e, n, r, t)) break;
}
return I.some(r);
})(s.text, s.offset, n, o).getOr(t)
),
a
).bind(e => {
const o = t.cloneRange();
if ((o.setStart(e.container, e.offset), o.setEnd(t.endContainer, t.endOffset), o.collapsed)) return I.none();
const r = (e => ti(e.toString().replace(/\u00A0/g, " ")))(o);
return 0 !== r.lastIndexOf(n) ? I.none() : I.some({text: W_(r, n), range: o, trigger: n});
});
},
Y_ = e => {
if ((e => 3 === e.nodeType)(e)) return F_(e, e.data.length);
{
const t = e.childNodes;
return t.length > 0 ? Y_(t[t.length - 1]) : F_(e, t.length);
}
},
G_ = (e, t) => {
const n = e.childNodes;
return n.length > 0 && t < n.length
? G_(n[t], 0)
: n.length > 0 && (e => 1 === e.nodeType)(e) && n.length === t
? Y_(n[n.length - 1])
: F_(e, t);
},
X_ = (e, t, n, o = {}) => {
var r;
const s = t(),
a = null !== (r = e.selection.getRng().startContainer.nodeValue) && void 0 !== r ? r : "",
i = Y(
s.lookupByTrigger(n.trigger),
t =>
n.text.length >= t.minChars &&
t.matches.getOrThunk(() =>
(e => t => {
const n = G_(t.startContainer, t.startOffset);
return !((e, t) => {
var n;
const o = null !== (n = e.getParent(t.container, e.isBlock)) && void 0 !== n ? n : e.getRoot();
return V_(e, t.container, t.offset, (e, t) => (0 === t ? -1 : t), o)
.filter(e => {
const t = e.container.data.charAt(e.offset - 1);
return !q_(t);
})
.isSome();
})(e, n);
})(e.dom)
)(n.range, a, n.text)
);
if (0 === i.length) return I.none();
const l = Promise.all(
V(i, e =>
e.fetch(n.text, e.maxResults, o).then(t => ({
matchText: n.text,
items: t,
columns: e.columns,
onAction: e.onAction,
highlightOn: e.highlightOn
}))
)
);
return I.some({lookupData: l, context: n});
};
var Z_;
!(function (e) {
(e[(e.Error = 0)] = "Error"), (e[(e.Value = 1)] = "Value");
})(Z_ || (Z_ = {}));
const Q_ = (e, t, n) => (e.stype === Z_.Error ? t(e.serror) : n(e.svalue)),
J_ = e => ({stype: Z_.Value, svalue: e}),
eS = e => ({stype: Z_.Error, serror: e}),
tS = Q_,
nS = e => (f(e) && fe(e).length > 100 ? " removed due to size" : JSON.stringify(e, null, 2)),
oS = (e, t) => eS([{path: e, getErrorInfo: t}]),
rS = (e, t) => ({
extract: (n, o) =>
Ee(o, e).fold(
() => ((e, t) => oS(e, () => 'Choice schema did not contain choice key: "' + t + '"'))(n, e),
e =>
((e, t, n, o) =>
Ee(n, o).fold(
() =>
((e, t, n) => oS(e, () => 'The chosen schema: "' + n + '" did not exist in branches: ' + nS(t)))(
e,
n,
o
),
n => n.extract(e.concat(["branch: " + o]), t)
))(n, o, t, e)
),
toString: () => "chooseOn(" + e + "). Possible values: " + fe(t)
}),
sS =
e =>
(...t) => {
if (0 === t.length) throw new Error("Can't merge zero objects");
const n = {};
for (let o = 0; o < t.length; o++) {
const r = t[o];
for (const t in r) ke(r, t) && (n[t] = e(n[t], r[t]));
}
return n;
},
aS = sS((e, t) => (g(e) && g(t) ? aS(e, t) : t)),
iS = (sS((e, t) => t), e => ({tag: "defaultedThunk", process: N(e)})),
lS = e => {
const t = (e => {
const t = [],
n = [];
return (
q(e, e => {
Q_(
e,
e => n.push(e),
e => t.push(e)
);
}),
{values: t, errors: n}
);
})(e);
return t.errors.length > 0 ? ((n = t.errors), _(eS, ee)(n)) : J_(t.values);
var n;
},
dS = (e, t, n) => {
switch (e.tag) {
case "field":
return t(e.key, e.newKey, e.presence, e.prop);
case "custom":
return n(e.newKey, e.instantiator);
}
},
cS = e => ({
extract: (t, n) => {
return (o = e(n)), (r = e => ((e, t) => oS(e, N(t)))(t, e)), o.stype === Z_.Error ? r(o.serror) : o;
var o, r;
},
toString: N("val")
}),
uS = cS(J_),
mS = (e, t, n, o) => o(Ee(e, t).getOrThunk(() => n(e))),
fS = (e, t, n, o, r) => {
const s = e => r.extract(t.concat([o]), e),
a = e =>
e.fold(
() => J_(I.none()),
e => {
const n = r.extract(t.concat([o]), e);
return (s = n), (a = I.some), s.stype === Z_.Value ? {stype: Z_.Value, svalue: a(s.svalue)} : s;
var s, a;
}
);
switch (e.tag) {
case "required":
return ((e, t, n, o) =>
Ee(t, n).fold(
() =>
((e, t, n) => oS(e, () => 'Could not find valid *required* value for "' + t + '" in ' + nS(n)))(
e,
n,
t
),
o
))(t, n, o, s);
case "defaultedThunk":
return mS(n, o, e.process, s);
case "option":
return ((e, t, n) => n(Ee(e, t)))(n, o, a);
case "defaultedOptionThunk":
return ((e, t, n, o) => o(Ee(e, t).map(t => (!0 === t ? n(e) : t))))(n, o, e.process, a);
case "mergeWithThunk":
return mS(n, o, N({}), t => {
const o = aS(e.process(n), t);
return s(o);
});
}
},
gS = e => ({
extract: (t, n) =>
((e, t, n) => {
const o = {},
r = [];
for (const s of n)
dS(
s,
(n, s, a, i) => {
const l = fS(a, e, t, n, i);
tS(
l,
e => {
r.push(...e);
},
e => {
o[s] = e;
}
);
},
(e, n) => {
o[e] = n(t);
}
);
return r.length > 0 ? eS(r) : J_(o);
})(t, n, e),
toString: () => {
const t = V(e, e =>
dS(
e,
(e, t, n, o) => e + " -> " + o.toString(),
(e, t) => "state(" + e + ")"
)
);
return "obj{\n" + t.join("\n") + "}";
}
}),
pS = e => ({
extract: (t, n) => {
const o = V(n, (n, o) => e.extract(t.concat(["[" + o + "]"]), n));
return lS(o);
},
toString: () => "array(" + e.toString() + ")"
}),
hS = (e, t, n) => {
return (
(o = ((e, t, n) =>
((e, t) => (e.stype === Z_.Error ? {stype: Z_.Error, serror: t(e.serror)} : e))(t.extract([e], n), e => ({
input: n,
errors: e
})))(e, t, n)),
Q_(o, El.error, El.value)
);
var o;
},
bS = (e, t) => rS(e, he(t, gS)),
vS = N(uS),
yS = (e, t) =>
cS(n => {
const o = typeof n;
return e(n) ? J_(n) : eS(`Expected type: ${t} but got: ${o}`);
}),
CS = yS(x, "number"),
wS = yS(m, "string"),
xS = yS(b, "boolean"),
ES = yS(w, "function"),
kS = (e, t, n, o) => ({tag: "field", key: e, newKey: t, presence: n, prop: o}),
_S = (e, t) => ({tag: "custom", newKey: e, instantiator: t}),
SS = (e, t) => kS(e, e, {tag: "required", process: {}}, t),
NS = e => SS(e, wS),
RS = e => SS(e, ES),
AS = (e, t) => kS(e, e, {tag: "option", process: {}}, t),
TS = e => AS(e, wS),
OS = (e, t, n) => kS(e, e, iS(t), n),
BS = (e, t) => OS(e, t, CS),
PS = (e, t, n) =>
OS(
e,
t,
(e => {
return (
(t = t =>
H(e, t) ? El.value(t) : El.error(`Unsupported value: "${t}", choose one of "${e.join(", ")}".`)),
cS(e => t(e).fold(eS, J_))
);
var t;
})(n)
),
DS = (e, t) => OS(e, t, xS),
LS = (e, t) => OS(e, t, ES),
MS = NS("type"),
IS = RS("fetch"),
FS = RS("onAction"),
US = LS("onSetup", () => k),
zS = TS("text"),
jS = TS("icon"),
HS = TS("tooltip"),
$S = TS("label"),
VS = DS("active", !1),
qS = DS("enabled", !0),
WS = DS("primary", !1),
KS = e => ((e, t) => OS("type", t, wS))(0, e),
YS = gS([
MS,
NS("trigger"),
BS("minChars", 1),
(1, ((e, t) => kS(e, e, iS(1), vS()))("columns")),
BS("maxResults", 10),
("matches", AS("matches", ES)),
IS,
FS,
((GS = wS), OS("highlightOn", [], pS(GS)))
]);
var GS;
const XS = [qS, HS, jS, zS, US],
ZS = [VS].concat(XS),
QS = [
LS("predicate", L),
PS("scope", "node", ["node", "editor"]),
PS("position", "selection", ["node", "selection", "line"])
],
JS = XS.concat([KS("contextformbutton"), WS, FS, _S("original", R)]),
eN = ZS.concat([KS("contextformbutton"), WS, FS, _S("original", R)]),
tN = XS.concat([KS("contextformbutton")]),
nN = ZS.concat([KS("contextformtogglebutton")]),
oN = bS("type", {contextformbutton: JS, contextformtogglebutton: eN});
gS(
[
KS("contextform"),
LS("initValue", N("")),
$S,
((e, t) => kS(e, e, {tag: "required", process: {}}, pS(t)))("commands", oN),
AS("launch", bS("type", {contextformbutton: tN, contextformtogglebutton: nN}))
].concat(QS)
);
const rN = e => {
const t = e.ui.registry.getAll().popups,
n = he(t, e => {
return ((t = e), hS("Autocompleter", YS, t)).fold(e => {
throw new Error(
"Errors: \n" +
(e => {
const t =
e.length > 10
? e.slice(0, 10).concat([{path: [], getErrorInfo: N("... (only showing first ten failures)")}])
: e;
return V(t, e => "Failed path: (" + e.path.join(" > ") + ")\n" + e.getErrorInfo());
})((t = e).errors).join("\n") +
"\n\nInput object: " +
nS(t.input)
);
var t;
}, R);
var t;
}),
o = Se(we(n, e => e.trigger)),
r = xe(n);
return {dataset: n, triggers: o, lookupByTrigger: e => Y(r, t => t.trigger === e)};
},
sN = e => {
const t = Dr(),
n = Br(!1),
o = t.isSet,
r = () => {
o() &&
((e => {
e.dispatch("AutocompleterEnd");
})(e),
n.set(!1),
t.clear());
},
s = Le(() => rN(e)),
a = a => {
(n =>
t
.get()
.map(t => K_(e.dom, e.selection.getRng(), t.trigger, !0).bind(t => X_(e, s, t, n)))
.getOrThunk(() =>
((e, t) => {
const n = t(),
o = e.selection.getRng();
return ((e, t, n) => ue(n.triggers, n => K_(e, t, n)))(e.dom, o, n).bind(n => X_(e, t, n));
})(e, s)
))(a).fold(r, s => {
(e => {
o() || t.set({trigger: e.trigger, matchLength: e.text.length});
})(s.context),
s.lookupData.then(o => {
t.get().map(a => {
const i = s.context;
a.trigger === i.trigger &&
(i.text.length - a.matchLength >= 10
? r()
: (t.set({...a, matchLength: i.text.length}),
n.get()
? (vf(e, {range: i.range}),
((e, t) => {
e.dispatch("AutocompleterUpdate", t);
})(e, {lookupData: o}))
: (n.set(!0),
vf(e, {range: i.range}),
((e, t) => {
e.dispatch("AutocompleterStart", t);
})(e, {lookupData: o}))));
});
});
});
},
i = () =>
t.get().bind(({trigger: t}) => {
const o = e.selection.getRng();
return K_(e.dom, o, t, n.get())
.filter(({range: e}) =>
((e, t) => {
const n = e.compareBoundaryPoints(window.Range.START_TO_START, t),
o = e.compareBoundaryPoints(window.Range.END_TO_END, t);
return n >= 0 && o <= 0;
})(o, e)
)
.map(({range: e}) => e);
});
e.addCommand("mceAutocompleterReload", (e, t) => {
const n = f(t) ? t.fetchOptions : {};
a(n);
}),
e.addCommand("mceAutocompleterClose", r),
e.addCommand("mceAutocompleterRefreshActiveRange", () => {
i().each(t => {
vf(e, {range: t});
});
}),
e.editorCommands.addQueryStateHandler("mceAutoCompleterInRange", () => i().isSome()),
((e, t) => {
const n = xa(t.load, 50);
e.on("input", t => {
("insertCompositionText" !== t.inputType || e.composing) && n.throttle();
}),
e.on(
"keydown",
e => {
const o = e.which;
8 === o
? n.throttle()
: 27 === o
? (n.cancel(), t.cancelIfNecessary())
: (38 !== o && 40 !== o) || n.cancel();
},
!0
),
e.on("remove", n.cancel);
})(e, {cancelIfNecessary: r, load: a});
},
aN = Et().browser.isSafari(),
iN = e => Qa(Cn(e)),
lN = (e, t) => {
var n;
return 0 === e.startOffset && e.endOffset === (null === (n = t.textContent) || void 0 === n ? void 0 : n.length);
},
dN = (e, t) => I.from(e.getParent(t.container(), "details")),
cN = (e, t) => dN(e, t).isSome(),
uN = (e, t) => {
const n = t.getNode();
v(n) || e.selection.setCursorLocation(n, t.offset());
},
mN = (e, t, n) => {
const o = e.dom.getParent(t.container(), "details");
if (o && !o.open) {
const t = e.dom.select("summary", o)[0];
t && (n ? $u(t) : Vu(t)).each(t => uN(e, t));
} else uN(e, t);
},
fN = (e, t, n) => {
const {dom: o, selection: r} = e,
s = e.getBody();
if ("character" === n) {
const n = Ji.fromRangeStart(r.getRng()),
a = o.getParent(n.container(), o.isBlock),
i = dN(o, n),
l = a && o.isEmpty(a),
d = h(null == a ? void 0 : a.previousSibling),
c = h(null == a ? void 0 : a.nextSibling);
return (
!!(l && (t ? c : d) && Fu(!t, s, n).exists(e => cN(o, e) && !Mt(i, dN(o, e)))) ||
Fu(t, s, n).fold(L, n => {
const r = dN(o, n);
if (cN(o, n) && !Mt(i, r)) {
if ((t || mN(e, n, !1), a && l)) {
if (t && d) return !0;
if (!t && c) return !0;
mN(e, n, t), e.dom.remove(a);
}
return !0;
}
return !1;
})
);
}
return !1;
},
gN = (e, t, n, o) => {
const r = e.selection.getRng(),
s = Ji.fromRangeStart(r),
a = e.getBody();
return "selection" === o
? ((e, t) => {
const n = t.startSummary.exists(t => t.contains(e.startContainer)),
o = t.startSummary.exists(t => t.contains(e.endContainer)),
r = t.startDetails.forall(e => t.endDetails.forall(t => e !== t));
return ((n || o) && !(n && o)) || r;
})(r, t)
: n
? ((e, t) =>
t.startSummary.exists(t =>
((e, t) => Vu(t).exists(n => (pr(n.getNode()) && Hu(t, n).exists(t => t.isEqual(e))) || n.isEqual(e)))(
e,
t
)
))(s, t) ||
((e, t, n) => n.startDetails.exists(n => ju(e, t).forall(e => !n.contains(e.container()))))(a, s, t)
: ((e, t) => t.startSummary.exists(t => ((e, t) => $u(t).exists(t => t.isEqual(e)))(e, t)))(s, t) ||
((e, t) =>
t.startDetails.exists(n =>
Hu(n, e).forall(n => t.startSummary.exists(t => !t.contains(e.container()) && t.contains(n.container())))
))(s, t);
},
pN = (e, t, n) =>
((e, t, n) =>
((e, t) => {
const n = I.from(e.getParent(t.startContainer, "details")),
o = I.from(e.getParent(t.endContainer, "details"));
if (n.isSome() || o.isSome()) {
const t = n.bind(t => I.from(e.select("summary", t)[0]));
return I.some({startSummary: t, startDetails: n, endDetails: o});
}
return I.none();
})(e.dom, e.selection.getRng()).fold(
() => fN(e, t, n),
o => gN(e, o, t, n) || fN(e, t, n)
))(e, t, n) ||
(aN &&
((e, t, n) => {
const o = e.selection,
r = o.getNode(),
s = o.getRng(),
a = Ji.fromRangeStart(s);
return (
!!kr(r) &&
(("selection" === n && lN(s, r)) || Uh(t, a, r)
? iN(r)
: e.undoManager.transact(() => {
const s = o.getSel();
let {anchorNode: a, anchorOffset: i, focusNode: l, focusOffset: d} = null != s ? s : {};
const c = () => {
C(a) && C(i) && C(l) && C(d) && (null == s || s.setBaseAndExtent(a, i, l, d));
},
u = (e, t) => {
q(e.childNodes, e => {
wm(e) && t.appendChild(e);
});
},
m = e.dom.create("span", {"data-mce-bogus": "1"});
u(r, m),
r.appendChild(m),
c(),
("word" !== n && "line" !== n) || null == s || s.modify("extend", t ? "right" : "left", n),
!o.isCollapsed() && lN(o.getRng(), m)
? iN(r)
: (e.execCommand(t ? "ForwardDelete" : "Delete"),
(a = null == s ? void 0 : s.anchorNode),
(i = null == s ? void 0 : s.anchorOffset),
(l = null == s ? void 0 : s.focusNode),
(d = null == s ? void 0 : s.focusOffset),
u(m, r),
c()),
e.dom.remove(m);
}),
!0)
);
})(e, t, n))
? I.some(k)
: I.none(),
hN =
e =>
(t, n, o = {}) => {
const r = t.getBody(),
s = {
bubbles: !0,
composed: !0,
data: null,
isComposing: !1,
detail: 0,
view: null,
target: r,
currentTarget: r,
eventPhase: Event.AT_TARGET,
originalTarget: r,
explicitOriginalTarget: r,
isTrusted: !1,
srcElement: r,
cancelable: !1,
preventDefault: k,
inputType: n
},
a = Xs(new InputEvent(e));
return t.dispatch(e, {...a, ...s, ...o});
},
bN = hN("input"),
vN = hN("beforeinput"),
yN = Et(),
CN = yN.os,
wN = CN.isMacOS() || CN.isiOS(),
xN = yN.browser.isFirefox(),
EN = (e, t) => {
const n = e.dom,
o = e.schema.getMoveCaretBeforeOnEnterElements();
if (!t) return;
if (/^(LI|DT|DD)$/.test(t.nodeName)) {
const e = (e => {
for (; e; ) {
if (er(e) || (dr(e) && e.data && /[\r\n\s]/.test(e.data))) return e;
e = e.nextSibling;
}
return null;
})(t.firstChild);
e && /^(UL|OL|DL)$/.test(e.nodeName) && t.insertBefore(n.doc.createTextNode(Wo), t.firstChild);
}
const r = n.createRng();
if ((t.normalize(), t.hasChildNodes())) {
const e = new Vo(t, t);
let n,
s = t;
for (; (n = e.current()); ) {
if (dr(n)) {
r.setStart(n, 0), r.setEnd(n, 0);
break;
}
if (o[n.nodeName.toLowerCase()]) {
r.setStartBefore(n), r.setEndBefore(n);
break;
}
(s = n), (n = e.next());
}
n || (r.setStart(s, 0), r.setEnd(s, 0));
} else
pr(t)
? t.nextSibling && n.isBlock(t.nextSibling)
? (r.setStartBefore(t), r.setEndBefore(t))
: (r.setStartAfter(t), r.setEndAfter(t))
: (r.setStart(t, 0), r.setEnd(t, 0));
e.selection.setRng(r), vg(e, r);
},
kN = (e, t) => {
const n = e.getRoot();
let o,
r = t;
for (; r !== n && r && "false" !== e.getContentEditable(r); ) {
if ("true" === e.getContentEditable(r)) {
o = r;
break;
}
r = r.parentNode;
}
return r !== n ? o : n;
},
_N = e => I.from(e.dom.getParent(e.selection.getStart(!0), e.dom.isBlock)),
SN = e => {
e.innerHTML = '<br data-mce-bogus="1">';
},
NN = (e, t) => {
Wl(e).toLowerCase() === t.tagName.toLowerCase() &&
((e, t, n) => {
const o = e.dom;
I.from(n.style)
.map(o.parseStyle)
.each(e => {
const n = {...go(Cn(t)), ...e};
o.setStyles(t, n);
});
const r = I.from(n.class).map(e => e.split(/\s+/)),
s = I.from(t.className).map(e => Y(e.split(/\s+/), e => "" !== e));
It(r, s, (e, n) => {
const r = Y(n, t => !H(e, t)),
s = [...e, ...r];
o.setAttrib(t, "class", s.join(" "));
});
const a = ["style", "class"],
i = Ce(n, (e, t) => !H(a, t));
o.setAttribs(t, i);
})(e, t, Kl(e));
},
RN = (e, t, n, o, r = !0, s, a) => {
const i = e.dom,
l = e.schema,
d = Wl(e),
c = n ? n.nodeName.toUpperCase() : "";
let u = t;
const m = l.getTextInlineElements();
let f;
f = s || "TABLE" === c || "HR" === c ? i.create(s || d, a || {}) : n.cloneNode(!1);
let g = f;
if (r) {
do {
if (m[u.nodeName]) {
if (Wu(u) || sm(u)) continue;
const e = u.cloneNode(!1);
i.setAttrib(e, "id", ""),
f.hasChildNodes() ? (e.appendChild(f.firstChild), f.appendChild(e)) : ((g = e), f.appendChild(e));
}
} while ((u = u.parentNode) && u !== o);
} else i.setAttrib(f, "style", null), i.setAttrib(f, "class", null);
return NN(e, f), SN(g), f;
},
AN = (e, t) => {
const n = null == e ? void 0 : e.parentNode;
return C(n) && n.nodeName === t;
},
TN = e => C(e) && /^(OL|UL|LI)$/.test(e.nodeName),
ON = e => C(e) && /^(LI|DT|DD)$/.test(e.nodeName),
BN = e => {
const t = e.parentNode;
return ON(t) ? t : e;
},
PN = (e, t, n) => {
let o = e[n ? "firstChild" : "lastChild"];
for (; o && !er(o); ) o = o[n ? "nextSibling" : "previousSibling"];
return o === t;
},
DN = e =>
X(
we(go(Cn(e)), (e, t) => `${t}: ${e};`),
(e, t) => e + t,
""
),
LN = (e, t) => t && "A" === t.nodeName && e.isEmpty(t),
MN = (e, t) => e.nodeName === t || (e.previousSibling && e.previousSibling.nodeName === t),
IN = (e, t) =>
C(t) &&
e.isBlock(t) &&
!/^(TD|TH|CAPTION|FORM)$/.test(t.nodeName) &&
!/^(fixed|absolute)/i.test(t.style.position) &&
e.isEditable(t.parentNode) &&
"false" !== e.getContentEditable(t),
FN = (e, t, n) =>
dr(t)
? e
? 1 === n && t.data.charAt(n - 1) === Ja
? 0
: n
: n === t.data.length - 1 && t.data.charAt(n) === Ja
? t.data.length
: n
: n,
UN = {
insert: (e, t) => {
let n,
o,
r,
s,
a = !1;
const i = e.dom,
l = e.schema.getNonEmptyElements(),
d = e.selection.getRng(),
c = Wl(e),
u = Cn(d.startContainer),
f = Fn(u, d.startOffset),
g = f.exists(e => Wt(e) && !ro(e)),
p = d.collapsed && g,
b = (t, o) => RN(e, n, _, k, Zl(e), t, o),
v = e => {
const t = FN(e, n, o);
if (dr(n) && (e ? t > 0 : t < n.data.length)) return !1;
if ((n.parentNode === _ || n === _) && a && !e) return !0;
if (e && er(n) && n === _.firstChild) return !0;
if (MN(n, "TABLE") || MN(n, "HR")) return (a && !e) || (!a && e);
const r = new Vo(n, _);
let s;
for (dr(n) && (e && 0 === t ? r.prev() : e || t !== n.data.length || r.next()); (s = r.current()); ) {
if (er(s)) {
if (!s.getAttribute("data-mce-bogus")) {
const e = s.nodeName.toLowerCase();
if (l[e] && "br" !== e) return !1;
}
} else if (dr(s) && !Go(s.data)) return !1;
e ? r.prev() : r.next();
}
return !0;
},
w = () => {
let t;
return (
(t = /^(H[1-6]|PRE|FIGURE)$/.test(r) && "HGROUP" !== S ? b(c) : b()),
((e, t) => {
const n = Ql(e);
return !y(t) && (m(n) ? H(Dt.explode(n), t.nodeName.toLowerCase()) : n);
})(e, s) &&
IN(i, s) &&
i.isEmpty(_, void 0, {includeZwsp: !0})
? (t = i.split(s, _))
: i.insertAfter(t, _),
EN(e, t),
t
);
};
Gf(i, d).each(e => {
d.setStart(e.startContainer, e.startOffset), d.setEnd(e.endContainer, e.endOffset);
}),
(n = d.startContainer),
(o = d.startOffset);
const x = !(!t || !t.shiftKey),
E = !(!t || !t.ctrlKey);
er(n) &&
n.hasChildNodes() &&
!p &&
((a = o > n.childNodes.length - 1),
(n = n.childNodes[Math.min(o, n.childNodes.length - 1)] || n),
(o = a && dr(n) ? n.data.length : 0));
const k = kN(i, n);
if (
!k ||
((e, t) => {
const n = e.dom.getParent(t, "ol,ul,dl");
return null !== n && "false" === e.dom.getContentEditableParent(n);
})(e, n)
)
return;
x ||
(n = ((e, t, n, o, r) => {
var s, a;
const i = e.dom,
l = null !== (s = kN(i, o)) && void 0 !== s ? s : i.getRoot();
let d = i.getParent(o, i.isBlock);
if (!d || !IN(i, d)) {
if (((d = d || l), !d.hasChildNodes())) {
const o = i.create(t);
return NN(e, o), d.appendChild(o), n.setStart(o, 0), n.setEnd(o, 0), o;
}
let s,
c = o;
for (; c && c.parentNode !== d; ) c = c.parentNode;
for (; c && !i.isBlock(c); ) (s = c), (c = c.previousSibling);
const u = null === (a = null == s ? void 0 : s.parentElement) || void 0 === a ? void 0 : a.nodeName;
if (s && u && e.schema.isValidChild(u, t.toLowerCase())) {
const a = s.parentNode,
l = i.create(t);
for (NN(e, l), a.insertBefore(l, s), c = s; c && !i.isBlock(c); ) {
const e = c.nextSibling;
l.appendChild(c), (c = e);
}
n.setStart(o, r), n.setEnd(o, r);
}
}
return o;
})(e, c, d, n, o));
let _ = i.getParent(n, i.isBlock) || i.getRoot();
(s = C(null == _ ? void 0 : _.parentNode) ? i.getParent(_.parentNode, i.isBlock) : null),
(r = _ ? _.nodeName.toUpperCase() : "");
const S = s ? s.nodeName.toUpperCase() : "";
if (
("LI" !== S || E || ((_ = s), (s = s.parentNode), (r = S)),
er(s) &&
((e, t, n) =>
!t &&
n.nodeName.toLowerCase() === Wl(e) &&
e.dom.isEmpty(n) &&
((t, n, o) => {
let r = n;
for (; r && r !== t && h(r.nextSibling); ) {
const t = r.parentElement;
if (!t || ((s = t), !ke(e.schema.getTextBlockElements(), s.nodeName.toLowerCase()))) return Er(t);
r = t;
}
var s;
return !1;
})(e.getBody(), n))(e, x, _))
)
return ((e, t, n) => {
var o, r, s;
const a = t(Wl(e)),
i = ((e, t) => e.dom.getParent(t, Er))(e, n);
i &&
(e.dom.insertAfter(a, i),
EN(e, a),
(null !==
(s =
null === (r = null === (o = n.parentElement) || void 0 === o ? void 0 : o.childNodes) || void 0 === r
? void 0
: r.length) && void 0 !== s
? s
: 0) > 1 && e.dom.remove(n));
})(e, b, _);
if (/^(LI|DT|DD)$/.test(r) && er(s) && i.isEmpty(_))
return void ((e, t, n, o, r) => {
const s = e.dom,
a = e.selection.getRng(),
i = n.parentNode;
if (n === e.getBody() || !i) return;
var l;
TN((l = n)) && TN(l.parentNode) && (r = "LI");
const d = ON(o) ? DN(o) : void 0;
let c = ON(o) && d ? t(r, {style: DN(o)}) : t(r);
if (PN(n, o, !0) && PN(n, o, !1))
if (AN(n, "LI")) {
const e = BN(n);
s.insertAfter(c, e),
(e => {
var t;
return (null === (t = e.parentNode) || void 0 === t ? void 0 : t.firstChild) === e;
})(n)
? s.remove(e)
: s.remove(n);
} else s.replace(c, n);
else if (PN(n, o, !0))
AN(n, "LI")
? (s.insertAfter(c, BN(n)), c.appendChild(s.doc.createTextNode(" ")), c.appendChild(n))
: i.insertBefore(c, n),
s.remove(o);
else if (PN(n, o, !1)) s.insertAfter(c, BN(n)), s.remove(o);
else {
n = BN(n);
const e = a.cloneRange();
e.setStartAfter(o), e.setEndAfter(n);
const t = e.extractContents();
if ("LI" === r && ((e, t) => e.firstChild && "LI" === e.firstChild.nodeName)(t)) {
const e = Y(V(c.children, Cn), O(Zt("br")));
(c = t.firstChild), s.insertAfter(t, n), q(e, e => vo(Cn(c), e)), d && c.setAttribute("style", d);
} else s.insertAfter(t, n), s.insertAfter(c, n);
s.remove(o);
}
EN(e, c);
})(e, b, s, _, c);
if (!(p || (_ !== e.getBody() && IN(i, _)))) return;
const N = _.parentNode;
let R;
if (p)
(R = b(c)),
f.fold(
() => {
yo(u, Cn(R));
},
e => {
ho(e, Cn(R));
}
),
e.selection.setCursorLocation(R, 0);
else if (ri(_)) (R = mi(_)), i.isEmpty(_) && SN(_), NN(e, R), EN(e, R);
else if (v(!1)) R = w();
else if (v(!0) && N) {
R = N.insertBefore(b(), _);
const t = Cn(d.startContainer).dom.hasChildNodes() && d.collapsed;
EN(e, MN(_, "HR") || t ? R : _);
} else {
const t = (e => {
const t = e.cloneRange();
return (
t.setStart(e.startContainer, FN(!0, e.startContainer, e.startOffset)),
t.setEnd(e.endContainer, FN(!1, e.endContainer, e.endOffset)),
t
);
})(d).cloneRange();
t.setEndAfter(_);
const n = t.extractContents();
(e => {
q(Uo(Cn(e), Yt), e => {
const t = e.dom;
t.nodeValue = ti(t.data);
});
})(n),
(e => {
let t = e;
do {
dr(t) && (t.data = t.data.replace(/^[\r\n]+/, "")), (t = t.firstChild);
} while (t);
})(n),
(R = n.firstChild),
i.insertAfter(n, _),
((e, t, n) => {
var o;
const r = [];
if (!n) return;
let s = n;
for (; (s = s.firstChild); ) {
if (e.isBlock(s)) return;
er(s) && !t[s.nodeName.toLowerCase()] && r.push(s);
}
let a = r.length;
for (; a--; )
(s = r[a]),
(!s.hasChildNodes() ||
(s.firstChild === s.lastChild &&
"" === (null === (o = s.firstChild) || void 0 === o ? void 0 : o.nodeValue)) ||
LN(e, s)) &&
e.remove(s);
})(i, l, R),
((e, t) => {
t.normalize();
const n = t.lastChild;
(!n || (er(n) && /^(left|right)$/gi.test(e.getStyle(n, "float", !0)))) && e.add(t, "br");
})(i, _),
i.isEmpty(_) && SN(_),
R.normalize(),
i.isEmpty(R) ? (i.remove(R), w()) : (NN(e, R), EN(e, R));
}
i.setAttrib(R, "id", ""), e.dispatch("NewBlock", {newBlock: R});
},
fakeEventName: "insertParagraph"
},
zN = (e, t, n) => {
const o = e.dom.createRng();
n ? (o.setStartBefore(t), o.setEndBefore(t)) : (o.setStartAfter(t), o.setEndAfter(t)),
e.selection.setRng(o),
vg(e, o);
},
jN = (e, t) => {
const n = vn("br");
ho(Cn(t), n), e.undoManager.add();
},
HN = (e, t) => {
$N(e.getBody(), t) || bo(Cn(t), vn("br"));
const n = vn("br");
bo(Cn(t), n), zN(e, n.dom, !1), e.undoManager.add();
},
$N = (e, t) => {
return (
(n = Ji.after(t)),
!!pr(n.getNode()) ||
ju(e, Ji.after(t))
.map(e => pr(e.getNode()))
.getOr(!1)
);
var n;
},
VN = e => e && "A" === e.nodeName && "href" in e,
qN = e => e.fold(L, VN, VN, L),
WN = (e, t) => {
t.fold(k, T(jN, e), T(HN, e), k);
},
KN = {
insert: (e, t) => {
const n = (e => {
const t = T(Rh, e),
n = Ji.fromRangeStart(e.selection.getRng());
return pE(t, e.getBody(), n).filter(qN);
})(e);
n.isSome()
? n.each(T(WN, e))
: ((e, t) => {
const n = e.selection,
o = e.dom,
r = n.getRng();
let s,
a = !1;
Gf(o, r).each(e => {
r.setStart(e.startContainer, e.startOffset), r.setEnd(e.endContainer, e.endOffset);
});
let i = r.startOffset,
l = r.startContainer;
if (er(l) && l.hasChildNodes()) {
const e = i > l.childNodes.length - 1;
(l = l.childNodes[Math.min(i, l.childNodes.length - 1)] || l), (i = e && dr(l) ? l.data.length : 0);
}
let d = o.getParent(l, o.isBlock);
const c = d && d.parentNode ? o.getParent(d.parentNode, o.isBlock) : null,
u = c ? c.nodeName.toUpperCase() : "",
m = !(!t || !t.ctrlKey);
"LI" !== u || m || (d = c),
dr(l) &&
i >= l.data.length &&
(((e, t, n) => {
const o = new Vo(t, n);
let r;
const s = e.getNonEmptyElements();
for (; (r = o.next()); ) if (s[r.nodeName.toLowerCase()] || (dr(r) && r.length > 0)) return !0;
return !1;
})(e.schema, l, d || o.getRoot()) ||
((s = o.create("br")), r.insertNode(s), r.setStartAfter(s), r.setEndAfter(s), (a = !0))),
(s = o.create("br")),
tl(o, r, s),
zN(e, s, a),
e.undoManager.add();
})(e, t);
},
fakeEventName: "insertLineBreak"
},
YN = (e, t) =>
_N(e)
.filter(e => t.length > 0 && En(Cn(e), t))
.isSome(),
GN = kl([{br: []}, {block: []}, {none: []}]),
XN = (e, t) => (e => YN(e, Xl(e)))(e),
ZN = e => (t, n) =>
(e =>
_N(e)
.filter(e => Ka(Cn(e)))
.isSome())(t) === e,
QN = (e, t) => (n, o) => {
const r = (e => _N(e).fold(N(""), e => e.nodeName.toUpperCase()))(n) === e.toUpperCase();
return r === t;
},
JN = e => {
const t = kN(e.dom, e.selection.getStart());
return y(t);
},
eR = e => QN("pre", e),
tR = e => (t, n) => ql(t) === e,
nR = (e, t) => (e => YN(e, Gl(e)))(e),
oR = (e, t) => t,
rR = e => {
const t = Wl(e),
n = kN(e.dom, e.selection.getStart());
return C(n) && e.schema.isValidChild(n.nodeName, t);
},
sR = e => {
const t = e.selection.getRng(),
n = Cn(t.startContainer),
o = Fn(n, t.startOffset).map(e => Wt(e) && !ro(e));
return t.collapsed && o.getOr(!0);
},
aR = (e, t) => (n, o) => X(e, (e, t) => e && t(n, o), !0) ? I.some(t) : I.none(),
iR = (e, t, n) => {
t.selection.isCollapsed() ||
(e => {
e.execCommand("delete");
})(t),
(C(n) && vN(t, e.fakeEventName).isDefaultPrevented()) || (e.insert(t, n), C(n) && bN(t, e.fakeEventName));
},
lR = (e, t) => {
const n = () => iR(KN, e, t),
o = () => iR(UN, e, t),
r = ((e, t) =>
sE(
[
aR([XN], GN.none()),
aR([eR(!0), JN], GN.none()),
aR([QN("summary", !0)], GN.br()),
aR([eR(!0), tR(!1), oR], GN.br()),
aR([eR(!0), tR(!1)], GN.block()),
aR([eR(!0), tR(!0), oR], GN.block()),
aR([eR(!0), tR(!0)], GN.br()),
aR([ZN(!0), oR], GN.br()),
aR([ZN(!0)], GN.block()),
aR([nR], GN.br()),
aR([oR], GN.br()),
aR([rR], GN.block()),
aR([sR], GN.block())
],
[e, !(!t || !t.shiftKey)]
).getOr(GN.none()))(e, t);
switch (Yl(e)) {
case "linebreak":
r.fold(n, n, k);
break;
case "block":
r.fold(o, o, k);
break;
case "invert":
r.fold(o, n, k);
break;
default:
r.fold(n, o, k);
}
},
dR = Et(),
cR = dR.os.isiOS() && dR.browser.isSafari(),
uR = (e, t) => {
var n;
t.isDefaultPrevented() ||
(t.preventDefault(),
(n = e.undoManager).typing && ((n.typing = !1), n.add()),
e.undoManager.transact(() => {
lR(e, t);
}));
},
mR = Et(),
fR = e => e.stopImmediatePropagation(),
gR = e => e.keyCode === Cf.PAGE_UP || e.keyCode === Cf.PAGE_DOWN,
pR = (e, t, n) => {
n && !e.get() ? t.on("NodeChange", fR, !0) : !n && e.get() && t.off("NodeChange", fR), e.set(n);
},
hR = (e, t) => {
const n = t.container(),
o = t.offset();
return dr(n)
? (n.insertData(o, e), I.some(Ji(n, o + e.length)))
: yu(t).map(n => {
const o = yn(e);
return t.isAtEnd() ? bo(n, o) : ho(n, o), Ji(o.dom, e.length);
});
},
bR = T(hR, Wo),
vR = T(hR, " "),
yR = e => t => {
e.selection.setRng(t.toRange()), e.nodeChanged();
},
CR = e => {
const t = Ji.fromRangeStart(e.selection.getRng()),
n = Cn(e.getBody());
if (e.selection.isCollapsed()) {
const o = T(Rh, e),
r = Ji.fromRangeStart(e.selection.getRng());
return pE(o, e.getBody(), r)
.bind(
(
e => t =>
t.fold(
t => Hu(e.dom, Ji.before(t)),
e => $u(e),
e => Vu(e),
t => ju(e.dom, Ji.after(t))
)
)(n)
)
.map(
o => () =>
(
(e, t, n) => o =>
ih(e, o, n) ? bR(t) : vR(t)
)(
n,
t,
e.schema
)(o).each(yR(e))
);
}
return I.none();
},
wR = e => {
return Ft(
Tt.browser.isFirefox() &&
e.selection.isEditable() &&
((t = e.dom), (n = e.selection.getRng().startContainer), t.isEditable(t.getParent(n, "summary"))),
() => {
const t = Cn(e.getBody());
e.selection.isCollapsed() || e.getDoc().execCommand("Delete"),
((e, t, n) => (ih(e, t, n) ? bR(t) : vR(t)))(t, Ji.fromRangeStart(e.selection.getRng()), e.schema).each(
yR(e)
);
}
);
var t, n;
},
xR = e =>
_c(e)
? [
{keyCode: Cf.TAB, action: l_(I_, e, !0)},
{keyCode: Cf.TAB, shiftKey: !0, action: l_(I_, e, !1)}
]
: [],
ER = e => {
if ((e.addShortcut("Meta+P", "", "mcePrint"), sN(e), rw(e))) return Br(null);
{
const t = uk(e);
return (
(e => {
e.on("beforeinput", t => {
(e.selection.isEditable() && !$(t.getTargetRanges(), t => !Vg(e.dom, t))) || t.preventDefault();
});
})(e),
(e => {
e.on("keyup compositionstart", T(Xk, e));
})(e),
((e, t) => {
e.on("keydown", n => {
n.isDefaultPrevented() ||
((e, t, n) => {
const o = Tt.os.isMacOS() || Tt.os.isiOS();
d_(
[
{keyCode: Cf.RIGHT, action: l_(Jk, e, !0)},
{keyCode: Cf.LEFT, action: l_(Jk, e, !1)},
{keyCode: Cf.UP, action: l_(e_, e, !1)},
{keyCode: Cf.DOWN, action: l_(e_, e, !0)},
...(o
? [
{keyCode: Cf.UP, action: l_(n_, e, !1), metaKey: !0, shiftKey: !0},
{keyCode: Cf.DOWN, action: l_(n_, e, !0), metaKey: !0, shiftKey: !0}
]
: []),
{keyCode: Cf.RIGHT, action: l_(B_, e, !0)},
{keyCode: Cf.LEFT, action: l_(B_, e, !1)},
{keyCode: Cf.UP, action: l_(P_, e, !1)},
{keyCode: Cf.DOWN, action: l_(P_, e, !0)},
{keyCode: Cf.UP, action: l_(P_, e, !1)},
{keyCode: Cf.UP, action: l_(s_, e, !1)},
{keyCode: Cf.DOWN, action: l_(s_, e, !0)},
{keyCode: Cf.RIGHT, action: l_(u_, e, !0)},
{keyCode: Cf.LEFT, action: l_(u_, e, !1)},
{keyCode: Cf.UP, action: l_(m_, e, !1)},
{keyCode: Cf.DOWN, action: l_(m_, e, !0)},
{keyCode: Cf.RIGHT, action: l_(dk, e, t, !0)},
{keyCode: Cf.LEFT, action: l_(dk, e, t, !1)},
{keyCode: Cf.RIGHT, ctrlKey: !o, altKey: o, action: l_(mk, e, t)},
{keyCode: Cf.LEFT, ctrlKey: !o, altKey: o, action: l_(fk, e, t)},
{keyCode: Cf.UP, action: l_(r_, e, !1)},
{keyCode: Cf.DOWN, action: l_(r_, e, !0)}
],
n
).each(e => {
n.preventDefault();
});
})(e, t, n);
});
})(e, t),
((e, t) => {
let n = !1;
e.on("keydown", o => {
(n = o.keyCode === Cf.BACKSPACE),
o.isDefaultPrevented() ||
((e, t, n) => {
const o = n.keyCode === Cf.BACKSPACE ? "deleteContentBackward" : "deleteContentForward",
r = e.selection.isCollapsed(),
s = r ? "character" : "selection",
a = e => (r ? (e ? "word" : "line") : "selection");
c_(
[
{keyCode: Cf.BACKSPACE, action: l_(Ik, e)},
{keyCode: Cf.BACKSPACE, action: l_(Kx, e, !1)},
{keyCode: Cf.DELETE, action: l_(Kx, e, !0)},
{keyCode: Cf.BACKSPACE, action: l_(Ux, e, !1)},
{keyCode: Cf.DELETE, action: l_(Ux, e, !0)},
{keyCode: Cf.BACKSPACE, action: l_(bk, e, t, !1)},
{keyCode: Cf.DELETE, action: l_(bk, e, t, !0)},
{keyCode: Cf.BACKSPACE, action: l_(fb, e, !1)},
{keyCode: Cf.DELETE, action: l_(fb, e, !0)},
{keyCode: Cf.BACKSPACE, action: l_(pN, e, !1, s)},
{keyCode: Cf.DELETE, action: l_(pN, e, !0, s)},
...(wN
? [
{keyCode: Cf.BACKSPACE, altKey: !0, action: l_(pN, e, !1, a(!0))},
{keyCode: Cf.DELETE, altKey: !0, action: l_(pN, e, !0, a(!0))},
{keyCode: Cf.BACKSPACE, metaKey: !0, action: l_(pN, e, !1, a(!1))}
]
: [
{keyCode: Cf.BACKSPACE, ctrlKey: !0, action: l_(pN, e, !1, a(!0))},
{keyCode: Cf.DELETE, ctrlKey: !0, action: l_(pN, e, !0, a(!0))}
]),
{keyCode: Cf.BACKSPACE, action: l_(Yx, e, !1)},
{keyCode: Cf.DELETE, action: l_(Yx, e, !0)},
{keyCode: Cf.BACKSPACE, action: l_(Ak, e, !1)},
{keyCode: Cf.DELETE, action: l_(Ak, e, !0)},
{keyCode: Cf.BACKSPACE, action: l_(Bx, e, !1)},
{keyCode: Cf.DELETE, action: l_(Bx, e, !0)},
{keyCode: Cf.BACKSPACE, action: l_(Ax, e, !1)},
{keyCode: Cf.DELETE, action: l_(Ax, e, !0)},
{keyCode: Cf.BACKSPACE, action: l_(Sk, e, !1)},
{keyCode: Cf.DELETE, action: l_(Sk, e, !0)}
],
n
)
.filter(t => e.selection.isEditable())
.each(t => {
n.preventDefault(), vN(e, o).isDefaultPrevented() || (t(), bN(e, o));
});
})(e, t, o);
}),
e.on("keyup", t => {
t.isDefaultPrevented() ||
((e, t, n) => {
d_(
[
{keyCode: Cf.BACKSPACE, action: l_(Wx, e)},
{keyCode: Cf.DELETE, action: l_(Wx, e)},
...(wN
? [
{keyCode: Cf.BACKSPACE, altKey: !0, action: l_(Nk, e)},
{keyCode: Cf.DELETE, altKey: !0, action: l_(Nk, e)},
...(n ? [{keyCode: xN ? 224 : 91, action: l_(Nk, e)}] : [])
]
: [
{keyCode: Cf.BACKSPACE, ctrlKey: !0, action: l_(Nk, e)},
{keyCode: Cf.DELETE, ctrlKey: !0, action: l_(Nk, e)}
])
],
t
);
})(e, t, n),
(n = !1);
});
})(e, t),
(e => {
let t = I.none();
e.on("keydown", n => {
n.keyCode === Cf.ENTER &&
(cR &&
(e => {
if (!e.collapsed) return !1;
const t = e.startContainer;
if (dr(t)) {
const n = /^[\uAC00-\uD7AF\u1100-\u11FF\u3130-\u318F\uA960-\uA97F\uD7B0-\uD7FF]$/,
o = t.data.charAt(e.startOffset - 1);
return n.test(o);
}
return !1;
})(e.selection.getRng())
? (e => {
(t = I.some(e.selection.getBookmark())), e.undoManager.add();
})(e)
: uR(e, n));
}),
e.on("keyup", n => {
n.keyCode === Cf.ENTER &&
t.each(() =>
((e, n) => {
e.undoManager.undo(), t.fold(k, t => e.selection.moveToBookmark(t)), uR(e, n), (t = I.none());
})(e, n)
);
});
})(e),
(e => {
e.on("keydown", t => {
t.isDefaultPrevented() ||
((e, t) => {
c_(
[
{keyCode: Cf.SPACEBAR, action: l_(CR, e)},
{keyCode: Cf.SPACEBAR, action: l_(wR, e)}
],
t
).each(n => {
t.preventDefault(),
vN(e, "insertText", {data: " "}).isDefaultPrevented() || (n(), bN(e, "insertText", {data: " "}));
});
})(e, t);
});
})(e),
(e => {
e.on("input", t => {
t.isComposing ||
(e => {
const t = Cn(e.getBody());
e.selection.isCollapsed() &&
ph(t, Ji.fromRangeStart(e.selection.getRng()), e.schema).each(t => {
e.selection.setRng(t.toRange());
});
})(e);
});
})(e),
(e => {
e.on("keydown", t => {
t.isDefaultPrevented() ||
((e, t) => {
d_([...xR(e)], t).each(e => {
t.preventDefault();
});
})(e, t);
});
})(e),
((e, t) => {
e.on("keydown", n => {
n.isDefaultPrevented() ||
((e, t, n) => {
const o = Tt.os.isMacOS() || Tt.os.isiOS();
d_(
[
{keyCode: Cf.END, action: l_(t_, e, !0)},
{keyCode: Cf.HOME, action: l_(t_, e, !1)},
...(o
? []
: [
{keyCode: Cf.HOME, action: l_(n_, e, !1), ctrlKey: !0, shiftKey: !0},
{keyCode: Cf.END, action: l_(n_, e, !0), ctrlKey: !0, shiftKey: !0}
]),
{keyCode: Cf.END, action: l_(f_, e, !0)},
{keyCode: Cf.HOME, action: l_(f_, e, !1)},
{keyCode: Cf.END, action: l_(gk, e, !0, t)},
{keyCode: Cf.HOME, action: l_(gk, e, !1, t)}
],
n
).each(e => {
n.preventDefault();
});
})(e, t, n);
});
})(e, t),
((e, t) => {
if (mR.os.isMacOS()) return;
const n = Br(!1);
e.on("keydown", t => {
gR(t) && pR(n, e, !0);
}),
e.on("keyup", o => {
o.isDefaultPrevented() ||
((e, t, n) => {
d_(
[
{keyCode: Cf.PAGE_UP, action: l_(gk, e, !1, t)},
{keyCode: Cf.PAGE_DOWN, action: l_(gk, e, !0, t)}
],
n
);
})(e, t, o),
gR(o) && n.get() && (pR(n, e, !1), e.nodeChanged());
});
})(e, t),
t
);
}
};
class kR {
constructor(e) {
let t;
(this.lastPath = []), (this.editor = e);
const n = this;
"onselectionchange" in e.getDoc() ||
e.on("NodeChange click mouseup keyup focus", n => {
const o = e.selection.getRng(),
r = {
startContainer: o.startContainer,
startOffset: o.startOffset,
endContainer: o.endContainer,
endOffset: o.endOffset
};
("nodechange" !== n.type && Hf(r, t)) || e.dispatch("SelectionChange"), (t = r);
}),
e.on("contextmenu", () => {
Rg(e), e.dispatch("SelectionChange");
}),
e.on("SelectionChange", () => {
const t = e.selection.getStart(!0);
t &&
vm(e) &&
!n.isSameElementPath(t) &&
e.dom.isChildOf(t, e.getBody()) &&
e.nodeChanged({selectionChange: !0});
}),
e.on("mouseup", t => {
!t.isDefaultPrevented() &&
vm(e) &&
("IMG" === e.selection.getNode().nodeName
? Og.setEditorTimeout(e, () => {
e.nodeChanged();
})
: e.nodeChanged());
});
}
nodeChanged(e = {}) {
const t = this.editor.selection;
let n;
if (this.editor.initialized && t && !zd(this.editor) && !this.editor.mode.isReadOnly()) {
const o = this.editor.getBody();
(n = t.getStart(!0) || o),
(n.ownerDocument === this.editor.getDoc() && this.editor.dom.isChildOf(n, o)) || (n = o);
const r = [];
this.editor.dom.getParent(n, e => e === o || (r.push(e), !1)),
this.editor.dispatch("NodeChange", {...e, element: n, parents: r});
}
}
isSameElementPath(e) {
let t;
const n = this.editor,
o = oe(n.dom.getParents(e, M, n.getBody()));
if (o.length === this.lastPath.length) {
for (t = o.length; t >= 0 && o[t] === this.lastPath[t]; t--);
if (-1 === t) return (this.lastPath = o), !0;
}
return (this.lastPath = o), !1;
}
}
const _R = La("image"),
SR = La("event"),
NR = e => t => {
t[SR] = e;
},
RR = NR(0),
AR = NR(2),
TR = NR(1),
OR =
(0,
e => {
const t = e;
return I.from(t[SR]).exists(e => 0 === e);
});
const BR = La("mode"),
PR = e => t => {
t[BR] = e;
},
DR = (e, t) => PR(t)(e),
LR = PR(0),
MR = PR(2),
IR = PR(1),
FR = e => t => {
const n = t;
return I.from(n[BR]).exists(t => t === e);
},
UR = FR(0),
zR = FR(1),
jR = ["none", "copy", "link", "move"],
HR = ["none", "copy", "copyLink", "copyMove", "link", "linkMove", "move", "all", "uninitialized"],
$R = () => {
const e = new window.DataTransfer();
let t = "move",
n = "all";
const o = {
get dropEffect() {
return t;
},
set dropEffect(e) {
H(jR, e) && (t = e);
},
get effectAllowed() {
return n;
},
set effectAllowed(e) {
OR(o) && H(HR, e) && (n = e);
},
get items() {
return ((e, t) => ({
...t,
get length() {
return t.length;
},
add: (n, o) => {
if (UR(e)) {
if (!m(n)) return t.add(n);
if (!v(o)) return t.add(n, o);
}
return null;
},
remove: n => {
UR(e) && t.remove(n);
},
clear: () => {
UR(e) && t.clear();
}
}))(o, e.items);
},
get files() {
return zR(o) ? Object.freeze({length: 0, item: e => null}) : e.files;
},
get types() {
return e.types;
},
setDragImage: (t, n, r) => {
var s;
UR(o) && ((s = {image: t, x: n, y: r}), (o[_R] = s), e.setDragImage(t, n, r));
},
getData: t => (zR(o) ? "" : e.getData(t)),
setData: (t, n) => {
UR(o) && e.setData(t, n);
},
clearData: t => {
UR(o) && e.clearData(t);
}
};
return LR(o), o;
},
VR = (e, t) => e.setData("text/html", t),
qR = "x-tinymce/html",
WR = N(qR),
KR = "\x3c!-- " + qR + " --\x3e",
YR = e => KR + e,
GR = e => -1 !== e.indexOf(KR),
XR = "%MCEPASTEBIN%",
ZR = e => e.dom.get("mcepastebin"),
QR = e => C(e) && "mcepastebin" === e.id,
JR = e => e === XR,
eA = (e, t) => (
Dt.each(t, t => {
e = u(t, RegExp) ? e.replace(t, "") : e.replace(t[0], t[1]);
}),
e
),
tA = e =>
eA(e, [
/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/gi,
/<!--StartFragment-->|<!--EndFragment-->/g,
[/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g, (e, t, n) => (t || n ? Wo : " ")],
/<br class="Apple-interchange-newline">/g,
/<br>$/i
]),
nA = (e, t) => ({content: e, cancelled: t}),
oA = (e, t) => (e.insertContent(t, {merge: cc(e), paste: !0}), !0),
rA = e => /^https?:\/\/[\w\-\/+=.,!;:&%@^~(){}?#]+$/i.test(e),
sA = (e, t, n) =>
!(e.selection.isCollapsed() || !rA(t)) &&
((e, t, n) => (
e.undoManager.extra(
() => {
n(e, t);
},
() => {
e.execCommand("mceInsertLink", !1, t);
}
),
!0
))(e, t, n),
aA = (e, t, n) =>
!!((e, t) => rA(t) && $(kc(e), e => Ve(t.toLowerCase(), `.${e.toLowerCase()}`)))(e, t) &&
((e, t, n) => (
e.undoManager.extra(
() => {
n(e, t);
},
() => {
e.insertContent('<img src="' + t + '">');
}
),
!0
))(e, t, n),
iA = (e => {
let t = 0;
return () => "mceclip" + t++;
})(),
lA = e => {
const t = $R();
return VR(t, e), MR(t), t;
},
dA = (e, t, n, o, r) => {
const s = ((e, t, n) =>
((e, t, n) => {
const o = ((e, t, n) => e.dispatch("PastePreProcess", {content: t, internal: n}))(e, t, n),
r = ((e, t) => {
const n = kC(
{
sanitize: xc(e),
sandbox_iframes: Rc(e),
sandbox_iframes_exclusions: Ac(e),
convert_unsafe_embeds: Tc(e)
},
e.schema
);
n.addNodeFilter("meta", e => {
Dt.each(e, e => {
e.remove();
});
});
const o = n.parse(t, {forced_root_block: !1, isRootContent: !0});
return yp({validate: !0}, e.schema).serialize(o);
})(e, o.content);
return e.hasEventListeners("PastePostProcess") && !o.isDefaultPrevented()
? ((e, t, n) => {
const o = e.dom.create("div", {style: "display:none"}, t),
r = ((e, t, n) => e.dispatch("PastePostProcess", {node: t, internal: n}))(e, o, n);
return nA(r.node.innerHTML, r.isDefaultPrevented());
})(e, r, n)
: nA(r, o.isDefaultPrevented());
})(e, t, n))(e, t, n);
if (!s.cancelled) {
const t = s.content,
n = () =>
((e, t, n) => {
n || !uc(e)
? oA(e, t)
: ((e, t) => {
Dt.each([sA, aA, oA], n => !n(e, t, oA));
})(e, t);
})(e, t, o);
r
? vN(e, "insertFromPaste", {dataTransfer: lA(t)}).isDefaultPrevented() || (n(), bN(e, "insertFromPaste"))
: n();
}
},
cA = (e, t, n, o) => {
const r = n || GR(t);
dA(e, (e => e.replace(KR, ""))(t), r, !1, o);
},
uA = (e, t, n) => {
const o = e.dom.encode(t).replace(/\r\n/g, "\n"),
r = ((e, t, n) => {
const o = e.split(/\n\n/),
r = ((e, t) => {
let n = "<" + e;
const o = we(t, (e, t) => t + '="' + ws.encodeAllRaw(e) + '"');
return o.length && (n += " " + o.join(" ")), n + ">";
})(t, n),
s = "</" + t + ">",
a = V(o, e => e.split(/\n/).join("<br />"));
return 1 === a.length ? a[0] : V(a, e => r + e + s).join("");
})(Zo(o, fc(e)), Wl(e), Kl(e));
dA(e, r, !1, !0, n);
},
mA = e => {
const t = {};
if (e && e.types)
for (let n = 0; n < e.types.length; n++) {
const o = e.types[n];
try {
t[o] = e.getData(o);
} catch (e) {
t[o] = "";
}
}
return t;
},
fA = (e, t) => t in e && e[t].length > 0,
gA = e => fA(e, "text/html") || fA(e, "text/plain"),
pA = (e, t, n) => {
const o = "paste" === t.type ? t.clipboardData : t.dataTransfer;
var r;
if (rc(e) && o) {
const s = ((e, t) => {
const n = t.items ? te(ce(t.items), e => ("file" === e.kind ? [e.getAsFile()] : [])) : [],
o = t.files ? ce(t.files) : [];
return Y(
n.length > 0 ? n : o,
(e => {
const t = kc(e);
return e =>
$e(e.type, "image/") &&
$(
t,
t =>
(e => {
const t = e.toLowerCase(),
n = {
jpg: "jpeg",
jpe: "jpeg",
jfi: "jpeg",
jif: "jpeg",
jfif: "jpeg",
pjpeg: "jpeg",
pjp: "jpeg",
svg: "svg+xml"
};
return Dt.hasOwn(n, t) ? "image/" + n[t] : "image/" + t;
})(t) === e.type
);
})(e)
);
})(e, o);
if (s.length > 0)
return (
t.preventDefault(),
((r = s), Promise.all(V(r, e => ey(e).then(t => ({file: e, uri: t}))))).then(t => {
n && e.selection.setRng(n),
q(t, t => {
((e, t) => {
Qv(t.uri).each(({data: n, type: o, base64Encoded: r}) => {
const s = r ? n : btoa(n),
a = t.file,
i = e.editorUpload.blobCache,
l = i.getByData(s, o),
d =
null != l
? l
: ((e, t, n, o) => {
const r = iA(),
s = ed(e) && C(n.name),
a = s
? ((e, t) => {
const n = t.match(/([\s\S]+?)(?:\.[a-z0-9.]+)$/i);
return C(n) ? e.dom.encode(n[1]) : void 0;
})(e, n.name)
: r,
i = s ? n.name : void 0,
l = t.create(r, n, o, a, i);
return t.add(l), l;
})(e, i, a, s);
cA(e, `<img src="${d.blobUri()}">`, !1, !0);
});
})(e, t);
});
}),
!0
);
}
return !1;
},
hA = (e, t, n, o, r) => {
let s = tA(n);
const a = fA(t, WR()) || GR(n),
i =
!a &&
(e =>
!/<(?:\/?(?!(?:div|p|br|span)>)\w+|(?:(?!(?:span style="white-space:\s?pre;?">)|br\s?\/>))\w+\s[^>]+)>/i.test(
e
))(s),
l = rA(s);
(JR(s) || !s.length || (i && !l)) && (o = !0),
(o || l) &&
(s =
fA(t, "text/plain") && i
? t["text/plain"]
: (e => {
const t = Fs(),
n = kC({}, t);
let o = "";
const r = t.getVoidElements(),
s = Dt.makeMap("script noscript style textarea video audio iframe object", " "),
a = t.getBlockElements(),
i = e => {
const n = e.name,
l = e;
if ("br" !== n) {
if ("wbr" !== n)
if ((r[n] && (o += " "), s[n])) o += " ";
else {
if ((3 === e.type && (o += e.value), !(e.name in t.getVoidElements()))) {
let t = e.firstChild;
if (t)
do {
i(t);
} while ((t = t.next));
}
a[n] && l.next && ((o += "\n"), "p" === n && (o += "\n"));
}
} else o += "\n";
};
return (e = eA(e, [/<!\[[^\]]+\]>/g])), i(n.parse(e)), o;
})(s)),
JR(s) || (o ? uA(e, s, r) : cA(e, s, a, r));
},
bA = (e, t, n) => {
((e, t, n) => {
let o;
e.on("keydown", e => {
(e => (Cf.metaKeyPressed(e) && 86 === e.keyCode) || (e.shiftKey && 45 === e.keyCode))(e) &&
!e.isDefaultPrevented() &&
(o = e.shiftKey && 86 === e.keyCode);
}),
e.on("paste", r => {
if (
r.isDefaultPrevented() ||
(e => {
var t, n;
return (
Tt.os.isAndroid() &&
0 ===
(null === (n = null === (t = e.clipboardData) || void 0 === t ? void 0 : t.items) || void 0 === n
? void 0
: n.length)
);
})(r)
)
return;
const s = "text" === n.get() || o;
o = !1;
const a = mA(r.clipboardData);
(!gA(a) && pA(e, r, t.getLastRng() || e.selection.getRng())) ||
(fA(a, "text/html")
? (r.preventDefault(), hA(e, a, a["text/html"], s, !0))
: fA(a, "text/plain") && fA(a, "text/uri-list")
? (r.preventDefault(), hA(e, a, a["text/plain"], s, !0))
: (t.create(),
Og.setEditorTimeout(
e,
() => {
const n = t.getHtml();
t.remove(), hA(e, a, n, s, !1);
},
0
)));
});
})(e, t, n),
(e => {
const t = e => $e(e, "webkit-fake-url"),
n = e => $e(e, "data:");
e.parser.addNodeFilter("img", (o, r, s) => {
if (
!rc(e) &&
(e => {
var t;
return !0 === (null === (t = e.data) || void 0 === t ? void 0 : t.paste);
})(s)
)
for (const r of o) {
const o = r.attr("src");
m(o) &&
!r.attr("data-mce-object") &&
o !== Tt.transparentSrc &&
(t(o) || (!gc(e) && n(o))) &&
r.remove();
}
});
})(e);
},
vA = (e, t, n, o) => {
((e, t, n) => {
if (!e) return !1;
try {
return e.clearData(), e.setData("text/html", t), e.setData("text/plain", n), e.setData(WR(), t), !0;
} catch (e) {
return !1;
}
})(e.clipboardData, t.html, t.text)
? (e.preventDefault(), o())
: n(t.html, o);
},
yA = e => (t, n) => {
const {dom: o, selection: r} = e,
s = o.create("div", {contenteditable: "false", "data-mce-bogus": "all"}),
a = o.create("div", {contenteditable: "true"}, t);
o.setStyles(s, {position: "fixed", top: "0", left: "-3000px", width: "1000px", overflow: "hidden"}),
s.appendChild(a),
o.add(e.getBody(), s);
const i = r.getRng();
a.focus();
const l = o.createRng();
l.selectNodeContents(a),
r.setRng(l),
Og.setEditorTimeout(
e,
() => {
r.setRng(i), o.remove(s), n();
},
0
);
},
CA = e => ({html: YR(e.selection.getContent({contextual: !0})), text: e.selection.getContent({format: "text"})}),
wA = e =>
!e.selection.isCollapsed() ||
(e => !!e.dom.getParent(e.selection.getStart(), "td[data-mce-selected],th[data-mce-selected]", e.getBody()))(e),
xA = (e, t) => {
var n, o;
return Qf.getCaretRangeFromPoint(
null !== (n = t.clientX) && void 0 !== n ? n : 0,
null !== (o = t.clientY) && void 0 !== o ? o : 0,
e.getDoc()
);
},
EA = (e, t) => {
e.focus(), t && e.selection.setRng(t);
},
kA = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,
_A = e => Dt.trim(e).replace(kA, Ks).toLowerCase(),
SA = (e, t, n) => {
const o = lc(e);
if (n || "all" === o || !dc(e)) return t;
const r = o ? o.split(/[, ]/) : [];
if (r && "none" !== o) {
const n = e.dom,
o = e.selection.getNode();
t = t.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi, (e, t, s, a) => {
const i = n.parseStyle(n.decode(s)),
l = {};
for (let e = 0; e < r.length; e++) {
const t = i[r[e]];
let s = t,
a = n.getStyle(o, r[e], !0);
/color/.test(r[e]) && ((s = _A(s)), (a = _A(a))), a !== s && (l[r[e]] = t);
}
const d = n.serializeStyle(l, "span");
return d ? t + ' style="' + d + '"' + a : t + a;
});
} else t = t.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi, "$1$3");
return (
(t = t.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi, (e, t, n, o) => t + ' style="' + n + '"' + o)), t
);
},
NA = e => {
const t = Br(!1),
n = Br(mc(e) ? "text" : "html"),
o = (e => {
const t = Br(null);
return {
create: () =>
((e, t) => {
const {dom: n, selection: o} = e,
r = e.getBody();
t.set(o.getRng());
const s = n.add(
e.getBody(),
"div",
{
id: "mcepastebin",
class: "mce-pastebin",
contentEditable: !0,
"data-mce-bogus": "all",
style: "position: fixed; top: 50%; width: 10px; height: 10px; overflow: hidden; opacity: 0"
},
XR
);
Tt.browser.isFirefox() &&
n.setStyle(s, "left", "rtl" === n.getStyle(r, "direction", !0) ? 65535 : -65535),
n.bind(s, "beforedeactivate focusin focusout", e => {
e.stopPropagation();
}),
s.focus(),
o.select(s, !0);
})(e, t),
remove: () =>
((e, t) => {
const n = e.dom;
if (ZR(e)) {
let o;
const r = t.get();
for (; (o = ZR(e)); ) n.remove(o), n.unbind(o);
r && e.selection.setRng(r);
}
t.set(null);
})(e, t),
getEl: () => ZR(e),
getHtml: () =>
(e => {
const t = e.dom,
n = (e, n) => {
e.appendChild(n), t.remove(n, !0);
},
[o, ...r] = Y(e.getBody().childNodes, QR);
q(r, e => {
n(o, e);
});
const s = t.select("div[id=mcepastebin]", o);
for (let e = s.length - 1; e >= 0; e--) {
const r = t.create("div");
o.insertBefore(r, s[e]), n(r, s[e]);
}
return o ? o.innerHTML : "";
})(e),
getLastRng: t.get
};
})(e);
(e => {
(Tt.browser.isChromium() || Tt.browser.isSafari()) &&
((e, t) => {
e.on("PastePreProcess", n => {
n.content = t(e, n.content, n.internal);
});
})(e, SA);
})(e),
((e, t) => {
e.addCommand("mceTogglePlainTextPaste", () => {
((e, t) => {
"text" === t.get() ? (t.set("html"), yf(e, !1)) : (t.set("text"), yf(e, !0)), e.focus();
})(e, t);
}),
e.addCommand("mceInsertClipboardContent", (t, n) => {
n.html && cA(e, n.html, n.internal, !1), n.text && uA(e, n.text, !1);
});
})(e, n),
(e => {
const t = t => n => {
t(e, n);
},
n = sc(e);
w(n) && e.on("PastePreProcess", t(n));
const o = ac(e);
w(o) && e.on("PastePostProcess", t(o));
})(e),
e.on("PreInit", () => {
(e => {
e.on(
"cut",
(e => t => {
!t.isDefaultPrevented() &&
wA(e) &&
e.selection.isEditable() &&
vA(t, CA(e), yA(e), () => {
if (Tt.browser.isChromium() || Tt.browser.isFirefox()) {
const t = e.selection.getRng();
Og.setEditorTimeout(
e,
() => {
e.selection.setRng(t), e.execCommand("Delete");
},
0
);
} else e.execCommand("Delete");
});
})(e)
),
e.on(
"copy",
(e => t => {
!t.isDefaultPrevented() && wA(e) && vA(t, CA(e), yA(e), k);
})(e)
);
})(e),
((e, t) => {
oc(e) &&
e.on("dragend dragover draggesture dragdrop drop drag", e => {
e.preventDefault(), e.stopPropagation();
}),
rc(e) ||
e.on("drop", e => {
const t = e.dataTransfer;
t && (e => $(e.files, e => /^image\//.test(e.type)))(t) && e.preventDefault();
}),
e.on("drop", n => {
if (n.isDefaultPrevented()) return;
const o = xA(e, n);
if (y(o)) return;
const r = mA(n.dataTransfer),
s = fA(r, WR());
if (
(!gA(r) ||
(e => {
const t = e["text/plain"];
return !!t && 0 === t.indexOf("file://");
})(r)) &&
pA(e, n, o)
)
return;
const a = r[WR()],
i = a || r["text/html"] || r["text/plain"],
l = ((e, t, n, o) => {
const r = e.getParent(n, e => Zr(t, e));
if (!h(e.getParent(n, "summary"))) return !0;
if (r && ke(o, "text/html")) {
const e = new DOMParser().parseFromString(o["text/html"], "text/html").body;
return !h(e.querySelector(r.nodeName.toLowerCase()));
}
return !1;
})(e.dom, e.schema, o.startContainer, r),
d = t.get();
(d && !l) ||
(i &&
(n.preventDefault(),
Og.setEditorTimeout(e, () => {
e.undoManager.transact(() => {
(a || (d && l)) && e.execCommand("Delete"), EA(e, o);
const t = tA(i);
r["text/html"] ? cA(e, t, s, !0) : uA(e, t, !0);
});
})));
}),
e.on("dragstart", e => {
t.set(!0);
}),
e.on("dragover dragend", n => {
rc(e) && !t.get() && (n.preventDefault(), EA(e, xA(e, n))), "dragend" === n.type && t.set(!1);
}),
(e => {
e.on("input", t => {
const n = e => h(e.querySelector("summary"));
if ("deleteByDrag" === t.inputType) {
const t = Y(e.dom.select("details"), n);
q(t, t => {
pr(t.firstChild) && t.firstChild.remove();
const n = e.dom.create("summary");
n.appendChild(Za().dom), t.prepend(n);
});
}
});
})(e);
})(e, t),
bA(e, o, n);
});
},
RA = pr,
AA = dr,
TA = e => vr(e.dom),
OA = e => t => _n(Cn(e), t),
BA = (e, t) => Jn(Cn(e), TA, OA(t)),
PA = (e, t, n) => {
const o = new Vo(e, t),
r = n ? o.next.bind(o) : o.prev.bind(o);
let s = e;
for (let t = n ? e : r(); t && !RA(t); t = r()) Pi(t) && (s = t);
return s;
},
DA = e => {
const t = ((e, t, n) => {
const o = Ji.fromRangeStart(e).getNode(),
r = ((e, t, n) => Jn(Cn(e), e => (e => br(e.dom))(e) || n.isBlock($t(e)), OA(t)).getOr(Cn(t)).dom)(o, t, n),
s = PA(o, r, !1),
a = PA(o, r, !0),
i = document.createRange();
return (
BA(s, r).fold(
() => {
AA(s) ? i.setStart(s, 0) : i.setStartBefore(s);
},
e => i.setStartBefore(e.dom)
),
BA(a, r).fold(
() => {
AA(a) ? i.setEnd(a, a.data.length) : i.setEndAfter(a);
},
e => i.setEndAfter(e.dom)
),
i
);
})(e.selection.getRng(), e.getBody(), e.schema);
e.selection.setRng(Ab(t));
};
var LA;
!(function (e) {
(e.Before = "before"), (e.After = "after");
})(LA || (LA = {}));
const MA = (e, t) => Math.abs(e.left - t),
IA = (e, t) => Math.abs(e.right - t),
FA = (e, t) =>
(e =>
X(
e,
(e, t) =>
e.fold(
() => I.some(t),
e => {
const n = Math.min(t.left, e.left),
o = Math.min(t.top, e.top),
r = Math.max(t.right, e.right),
s = Math.max(t.bottom, e.bottom);
return I.some({top: o, right: r, bottom: s, left: n, width: r - n, height: s - o});
}
),
I.none()
))(
Y(e, e => {
return (n = t) >= (o = e).top && n <= o.bottom;
var n, o;
})
).fold(
() => [[], e],
t => {
const {pass: n, fail: o} = K(e, e =>
((e, t) => {
const n =
((e, t) => Math.max(0, Math.min(e.bottom, t.bottom) - Math.max(e.top, t.top)))(e, t) /
Math.min(e.height, t.height);
return ((e, t) => e.top < t.bottom && e.bottom > t.top)(e, t) && n > 0.5;
})(e, t)
);
return [n, o];
}
),
UA = (e, t, n) => (t > e.left && t < e.right ? 0 : Math.min(Math.abs(e.left - t), Math.abs(e.right - t))),
zA = (e, t, n, o) => {
const r = e => (Pi(e.node) ? I.some(e) : er(e.node) ? zA(ce(e.node.childNodes), t, n, !1) : I.none()),
s = (e, s) => {
const a = ae(e, (e, o) => s(e, t, n) - s(o, t, n));
return ue(a, r).map(e =>
o && !dr(e.node) && a.length > 1
? ((e, o, s) => r(o).filter(o => Math.abs(s(e, t, n) - s(o, t, n)) < 2 && dr(o.node)))(e, a[1], s).getOr(
e
)
: e
);
},
[a, i] = FA(qE(e), n),
{pass: l, fail: d} = K(i, e => e.top < n);
return s(a, UA)
.orThunk(() => s(d, Ci))
.orThunk(() => s(l, Ci));
},
jA = (e, t, n) =>
((e, t, n) => {
const o = Cn(e),
r = Rn(o),
s = wn(r, t, n)
.filter(e => Sn(o, e))
.getOr(o);
return ((e, t, n, o) => {
const r = (t, s) => {
const a = Y(
t.dom.childNodes,
O(e => er(e) && e.classList.contains("mce-drag-container"))
);
return s
.fold(
() => zA(a, n, o, !0),
e => {
const t = Y(a, t => t !== e.dom);
return zA(t, n, o, !0);
}
)
.orThunk(() => (_n(t, e) ? I.none() : On(t)).bind(e => r(e, I.some(t))));
};
return r(t, I.none());
})(o, s, t, n);
})(e, t, n)
.filter(e => Yc(e.node))
.map(e => ((e, t) => ({node: e.node, position: MA(e, t) < IA(e, t) ? LA.Before : LA.After}))(e, t)),
HA = e => {
var t, n;
const o = e.getBoundingClientRect(),
r = e.ownerDocument,
s = r.documentElement,
a = r.defaultView;
return {
top: o.top + (null !== (t = null == a ? void 0 : a.scrollY) && void 0 !== t ? t : 0) - s.clientTop,
left: o.left + (null !== (n = null == a ? void 0 : a.scrollX) && void 0 !== n ? n : 0) - s.clientLeft
};
},
$A = e => ({target: e, srcElement: e}),
VA = (e, t, n, o) => {
const r = ((e, t) => {
const n = (e => {
const t = $R(),
n = (e => {
const t = e;
return I.from(t[BR]);
})(e);
return (
MR(e),
RR(t),
(t.dropEffect = e.dropEffect),
(t.effectAllowed = e.effectAllowed),
(e => {
const t = e;
return I.from(t[_R]);
})(e).each(e => t.setDragImage(e.image, e.x, e.y)),
q(e.types, n => {
"Files" !== n && t.setData(n, e.getData(n));
}),
q(e.files, e => t.items.add(e)),
(e => {
const t = e;
return I.from(t[SR]);
})(e).each(e => {
((e, t) => {
NR(t)(e);
})(t, e);
}),
n.each(n => {
DR(e, n), DR(t, n);
}),
t
);
})(e);
return "dragstart" === t ? (RR(n), LR(n)) : "drop" === t ? (AR(n), MR(n)) : (TR(n), IR(n)), n;
})(n, e);
return v(o)
? ((e, t, n) => {
const o = B("Function not supported on simulated event.");
return {
bubbles: !0,
cancelBubble: !1,
cancelable: !0,
composed: !1,
currentTarget: null,
defaultPrevented: !1,
eventPhase: 0,
isTrusted: !0,
returnValue: !1,
timeStamp: 0,
type: e,
composedPath: o,
initEvent: o,
preventDefault: k,
stopImmediatePropagation: k,
stopPropagation: k,
AT_TARGET: window.Event.AT_TARGET,
BUBBLING_PHASE: window.Event.BUBBLING_PHASE,
CAPTURING_PHASE: window.Event.CAPTURING_PHASE,
NONE: window.Event.NONE,
altKey: !1,
button: 0,
buttons: 0,
clientX: 0,
clientY: 0,
ctrlKey: !1,
metaKey: !1,
movementX: 0,
movementY: 0,
offsetX: 0,
offsetY: 0,
pageX: 0,
pageY: 0,
relatedTarget: null,
screenX: 0,
screenY: 0,
shiftKey: !1,
x: 0,
y: 0,
detail: 0,
view: null,
which: 0,
initUIEvent: o,
initMouseEvent: o,
getModifierState: o,
dataTransfer: n,
...$A(t)
};
})(e, t, r)
: ((e, t, n, o) => ({...t, dataTransfer: o, type: e, ...$A(n)}))(e, o, t, r);
},
qA = vr,
WA = (
(...e) =>
t => {
for (let n = 0; n < e.length; n++) if (e[n](t)) return !0;
return !1;
}
)(qA, br),
KA = (e, t, n, o) => {
const r = e.dom,
s = t.cloneNode(!0);
r.setStyles(s, {width: n, height: o}), r.setAttrib(s, "data-mce-selected", null);
const a = r.create("div", {
class: "mce-drag-container",
"data-mce-bogus": "all",
unselectable: "on",
contenteditable: "false"
});
return (
r.setStyles(a, {
position: "absolute",
opacity: 0.5,
overflow: "hidden",
border: 0,
padding: 0,
margin: 0,
width: n,
height: o
}),
r.setStyles(s, {margin: 0, boxSizing: "border-box"}),
a.appendChild(s),
a
);
},
YA = (e, t) => n => () => {
const o = "left" === e ? n.scrollX : n.scrollY;
n.scroll({[e]: o + t, behavior: "smooth"});
},
GA = YA("left", -32),
XA = YA("left", 32),
ZA = YA("top", -32),
QA = YA("top", 32),
JA = e => {
e && e.parentNode && e.parentNode.removeChild(e);
},
eT = (e, t, n, o, r) => {
"dragstart" === t && VR(o, e.dom.getOuterHTML(n));
const s = VA(t, n, o, r);
return e.dispatch(t, s);
},
tT = (e, t) => {
const n = wa(
(e, n) =>
((e, t, n) => {
e._selectionOverrides.hideFakeCaret(),
jA(e.getBody(), t, n).fold(
() => e.selection.placeCaretAt(t, n),
o => {
const r = e._selectionOverrides.showCaret(1, o.node, o.position === LA.Before, !1);
r ? e.selection.setRng(r) : e.selection.placeCaretAt(t, n);
}
);
})(t, e, n),
0
);
t.on("remove", n.cancel);
const o = e;
return r =>
e.on(e => {
const s = Math.max(Math.abs(r.screenX - e.screenX), Math.abs(r.screenY - e.screenY));
if (!e.dragging && s > 10) {
const n = eT(t, "dragstart", e.element, e.dataTransfer, r);
if ((C(n.dataTransfer) && (e.dataTransfer = n.dataTransfer), n.isDefaultPrevented())) return;
(e.dragging = !0), t.focus();
}
if (e.dragging) {
const s = r.currentTarget === t.getDoc().documentElement,
l = ((e, t) => ({pageX: t.pageX - e.relX, pageY: t.pageY + 5}))(
e,
((e, t) => {
return (
(n = (e => (e.inline ? HA(e.getBody()) : {left: 0, top: 0}))(e)),
(o = (e => {
const t = e.getBody();
return e.inline ? {left: t.scrollLeft, top: t.scrollTop} : {left: 0, top: 0};
})(e)),
(r = ((e, t) => {
if (t.target.ownerDocument !== e.getDoc()) {
const n = HA(e.getContentAreaContainer()),
o = (e => {
const t = e.getBody(),
n = e.getDoc().documentElement,
o = {left: t.scrollLeft, top: t.scrollTop},
r = {left: t.scrollLeft || n.scrollLeft, top: t.scrollTop || n.scrollTop};
return e.inline ? o : r;
})(e);
return {left: t.pageX - n.left + o.left, top: t.pageY - n.top + o.top};
}
return {left: t.pageX, top: t.pageY};
})(e, t)),
{pageX: r.left - n.left + o.left, pageY: r.top - n.top + o.top}
);
var n, o, r;
})(t, r)
);
(a = e.ghost),
(i = t.getBody()),
a.parentNode !== i && i.appendChild(a),
((e, t, n, o, r, s, a, i, l, d, c, u) => {
let m = 0,
f = 0;
(e.style.left = t.pageX + "px"),
(e.style.top = t.pageY + "px"),
t.pageX + n > r && (m = t.pageX + n - r),
t.pageY + o > s && (f = t.pageY + o - s),
(e.style.width = n - m + "px"),
(e.style.height = o - f + "px");
const g = l.clientHeight,
p = l.clientWidth,
h = a + l.getBoundingClientRect().top,
b = i + l.getBoundingClientRect().left;
c.on(e => {
e.intervalId.clear(),
e.dragging &&
u &&
(a + 8 >= g
? e.intervalId.set(QA(d))
: a - 8 <= 0
? e.intervalId.set(ZA(d))
: i + 8 >= p
? e.intervalId.set(XA(d))
: i - 8 <= 0
? e.intervalId.set(GA(d))
: h + 16 >= window.innerHeight
? e.intervalId.set(QA(window))
: h - 16 <= 0
? e.intervalId.set(ZA(window))
: b + 16 >= window.innerWidth
? e.intervalId.set(XA(window))
: b - 16 <= 0 && e.intervalId.set(GA(window)));
});
})(
e.ghost,
l,
e.width,
e.height,
e.maxX,
e.maxY,
r.clientY,
r.clientX,
t.getContentAreaContainer(),
t.getWin(),
o,
s
),
n.throttle(r.clientX, r.clientY);
}
var a, i;
});
},
nT = (e, t, n) => {
e.on(e => {
e.intervalId.clear(),
e.dragging &&
n.fold(
() => eT(t, "dragend", e.element, e.dataTransfer),
n => eT(t, "dragend", e.element, e.dataTransfer, n)
);
}),
oT(e);
},
oT = e => {
e.on(e => {
e.intervalId.clear(), JA(e.ghost);
}),
e.clear();
},
rT = e => {
const t = Dr(),
n = fa.DOM,
o = document,
r = ((e, t) => n => {
if ((e => 0 === e.button)(n)) {
const o = Q(t.dom.getParents(n.target), WA).getOr(null);
if (C(o) && ((e, t, n) => qA(n) && n !== t && e.isEditable(n.parentElement))(t.dom, t.getBody(), o)) {
const r = t.dom.getPos(o),
s = t.getBody(),
a = t.getDoc().documentElement;
e.set({
element: o,
dataTransfer: $R(),
dragging: !1,
screenX: n.screenX,
screenY: n.screenY,
maxX: (t.inline ? s.scrollWidth : a.offsetWidth) - 2,
maxY: (t.inline ? s.scrollHeight : a.offsetHeight) - 2,
relX: n.pageX - r.x,
relY: n.pageY - r.y,
width: o.offsetWidth,
height: o.offsetHeight,
ghost: KA(t, o, o.offsetWidth, o.offsetHeight),
intervalId: Pr(100)
});
}
}
})(t, e),
s = tT(t, e),
a = ((e, t) => n => {
e.on(e => {
var o;
if ((e.intervalId.clear(), e.dragging)) {
if (
((e, t, n) => !y(t) && t !== n && !e.dom.isChildOf(t, n) && e.dom.isEditable(t))(
t,
(e => {
const t = e.getSel();
if (C(t)) {
const e = t.getRangeAt(0).startContainer;
return dr(e) ? e.parentNode : e;
}
return null;
})(t.selection),
e.element
)
) {
const r =
null !== (o = t.getDoc().elementFromPoint(n.clientX, n.clientY)) && void 0 !== o ? o : t.getBody();
eT(t, "drop", r, e.dataTransfer, n).isDefaultPrevented() ||
t.undoManager.transact(() => {
((e, t) => {
const n = e.getParent(t.parentNode, e.isBlock);
JA(t), n && n !== e.getRoot() && e.isEmpty(n) && Qa(Cn(n));
})(t.dom, e.element),
(e => {
const t = e.getData("text/html");
return "" === t ? I.none() : I.some(t);
})(e.dataTransfer).each(e => t.insertContent(e)),
t._selectionOverrides.hideFakeCaret();
});
}
eT(t, "dragend", t.getBody(), e.dataTransfer, n);
}
}),
oT(e);
})(t, e),
i = (
(e, t) => n =>
nT(e, t, I.some(n))
)(t, e);
e.on("mousedown", r),
e.on("mousemove", s),
e.on("mouseup", a),
n.bind(o, "mousemove", s),
n.bind(o, "mouseup", i),
e.on("remove", () => {
n.unbind(o, "mousemove", s), n.unbind(o, "mouseup", i);
}),
e.on("keydown", n => {
n.keyCode === Cf.ESC && nT(t, e, I.none());
});
},
sT = vr,
aT = (e, t) => gb(e.getBody(), t),
iT = e => {
const t = e.selection,
n = e.dom,
o = e.getBody(),
r = qc(e, o, n.isBlock, () => jg(e)),
s = "sel-" + n.uniqueId(),
a = "data-mce-selected";
let i;
const l = e => e !== o && (sT(e) || wr(e)) && n.isChildOf(e, o) && n.isEditable(e.parentNode),
d = (n, o, s, a = !0) =>
e.dispatch("ShowCaret", {target: o, direction: n, before: s}).isDefaultPrevented()
? null
: (a && t.scrollIntoView(o, -1 === n), r.show(s, o)),
c = e => ai(e) || ci(e) || ui(e),
u = e => c(e.startContainer) || c(e.endContainer),
m = t => {
const o = e.schema.getVoidElements(),
r = n.createRng(),
s = t.startContainer,
a = t.startOffset,
i = t.endContainer,
l = t.endOffset;
return (
ke(o, s.nodeName.toLowerCase()) ? (0 === a ? r.setStartBefore(s) : r.setStartAfter(s)) : r.setStart(s, a),
ke(o, i.nodeName.toLowerCase()) ? (0 === l ? r.setEndBefore(i) : r.setEndAfter(i)) : r.setEnd(i, l),
r
);
},
f = (r, c) => {
if (!r) return null;
if (r.collapsed) {
if (!u(r)) {
const e = c ? 1 : -1,
t = vu(e, o, r),
s = t.getNode(!c);
if (C(s)) {
if (Yc(s)) return d(e, s, !!c && !t.isAtEnd(), !1);
if (si(s) && vr(s.nextSibling)) {
const e = n.createRng();
return e.setStart(s, 0), e.setEnd(s, 0), e;
}
}
const a = t.getNode(c);
if (C(a)) {
if (Yc(a)) return d(e, a, !c && !t.isAtEnd(), !1);
if (si(a) && vr(a.previousSibling)) {
const e = n.createRng();
return e.setStart(a, 1), e.setEnd(a, 1), e;
}
}
}
return null;
}
let m = r.startContainer,
f = r.startOffset;
const g = r.endOffset;
if (
(dr(m) && 0 === f && sT(m.parentNode) && ((m = m.parentNode), (f = n.nodeIndex(m)), (m = m.parentNode)),
!er(m))
)
return null;
if (g === f + 1 && m === r.endContainer) {
const o = m.childNodes[f];
if (l(o))
return (o => {
const r = o.cloneNode(!0),
l = e.dispatch("ObjectSelected", {target: o, targetClone: r});
if (l.isDefaultPrevented()) return null;
const d = ((o, r) => {
const a = Cn(e.getBody()),
i = e.getDoc(),
l = no(a, "#" + s).getOrThunk(() => {
const e = bn('<div data-mce-bogus="all" class="mce-offscreen-selection"></div>', i);
return Jt(e, "id", s), yo(a, e), e;
}),
d = n.createRng();
xo(l),
wo(l, [yn(Wo, i), Cn(r), yn(Wo, i)]),
d.setStart(l.dom.firstChild, 1),
d.setEnd(l.dom.lastChild, 0),
co(l, {top: n.getPos(o, e.getBody()).y + "px"}),
yg(l);
const c = t.getSel();
return c && (c.removeAllRanges(), c.addRange(d)), d;
})(o, l.targetClone),
c = Cn(o);
return (
q(zo(Cn(e.getBody()), `*[${a}]`), e => {
_n(c, e) || rn(e, a);
}),
n.getAttrib(o, a) || o.setAttribute(a, "1"),
(i = o),
p(),
d
);
})(o);
}
return null;
},
g = () => {
i && i.removeAttribute(a), no(Cn(e.getBody()), "#" + s).each(Eo), (i = null);
},
p = () => {
r.hide();
};
return (
rw(e) ||
(e.on("click", t => {
n.isEditable(t.target) || (t.preventDefault(), e.focus());
}),
e.on("blur NewBlock", g),
e.on("ResizeWindow FullscreenStateChanged", r.reposition),
e.on(
"tap",
t => {
const n = t.target,
o = aT(e, n);
sT(o) ? (t.preventDefault(), Dx(e, o).each(f)) : l(n) && Dx(e, n).each(f);
},
!0
),
e.on("mousedown", r => {
const s = r.target;
if (s !== o && "HTML" !== s.nodeName && !n.isChildOf(s, o)) return;
if (
!((e, t, n) => {
const o = Cn(e.getBody()),
r = e.inline ? o : Cn(Rn(o).dom.documentElement),
s = ((e, t, n, o) => {
const r = (e => e.dom.getBoundingClientRect())(t);
return {
x: n - (e ? r.left + t.dom.clientLeft + Iw(t) : 0),
y: o - (e ? r.top + t.dom.clientTop + Mw(t) : 0)
};
})(e.inline, r, t, n);
return ((e, t, n) => {
const o = Dw(e),
r = Lw(e);
return t >= 0 && n >= 0 && t <= o && n <= r;
})(r, s.x, s.y);
})(e, r.clientX, r.clientY)
)
return;
g(), p();
const a = aT(e, s);
sT(a)
? (r.preventDefault(), Dx(e, a).each(f))
: jA(o, r.clientX, r.clientY).each(n => {
var o;
r.preventDefault(),
(o = d(1, n.node, n.position === LA.Before, !1)) && t.setRng(o),
tr(a) ? a.focus() : e.getBody().focus();
});
}),
e.on("keypress", e => {
Cf.modifierPressed(e) || (sT(t.getNode()) && e.preventDefault());
}),
e.on("GetSelectionRange", e => {
let t = e.range;
if (i) {
if (!i.parentNode) return void (i = null);
(t = t.cloneRange()), t.selectNode(i), (e.range = t);
}
}),
e.on("SetSelectionRange", e => {
e.range = m(e.range);
const t = f(e.range, e.forward);
t && (e.range = t);
}),
e.on("AfterSetSelectionRange", e => {
const t = e.range,
o = t.startContainer.parentElement;
var r;
u(t) || (er((r = o)) && "mcepastebin" === r.id) || p(),
(e => C(e) && n.hasClass(e, "mce-offscreen-selection"))(o) || g();
}),
(e => {
rT(e),
Wd(e) &&
(e => {
const t = t => {
if (!t.isDefaultPrevented()) {
const n = t.dataTransfer;
n &&
(H(n.types, "Files") || n.files.length > 0) &&
(t.preventDefault(), "drop" === t.type && $w(e, "Dropped file type is not supported"));
}
},
n = n => {
Lg(e, n.target) && t(n);
},
o = () => {
const o = fa.DOM,
r = e.dom,
s = document,
a = e.inline ? e.getBody() : e.getDoc(),
i = ["drop", "dragover"];
q(i, e => {
o.bind(s, e, n), r.bind(a, e, t);
}),
e.on("remove", () => {
q(i, e => {
o.unbind(s, e, n), r.unbind(a, e, t);
});
});
};
e.on("init", () => {
Og.setEditorTimeout(e, o, 0);
});
})(e);
})(e),
(e => {
const t = wa(() => {
if (!e.removed && e.getBody().contains(document.activeElement)) {
const t = e.selection.getRng();
if (t.collapsed) {
const n = Lx(e, t, !1);
e.selection.setRng(n);
}
}
}, 0);
e.on("focus", () => {
t.throttle();
}),
e.on("blur", () => {
t.cancel();
});
})(e),
(e => {
e.on("init", () => {
e.on("focusin", t => {
const n = t.target;
if (wr(n)) {
const t = gb(e.getBody(), n),
o = vr(t) ? t : n;
e.selection.getNode() !== o && Dx(e, o).each(t => e.selection.setRng(t));
}
});
});
})(e)),
{
showCaret: d,
showBlockCaretContainer: e => {
e.hasAttribute("data-mce-caret") && (mi(e), t.scrollIntoView(e));
},
hideFakeCaret: p,
destroy: () => {
r.destroy(), (i = null);
}
}
);
},
lT = (e, t) => {
let n = t;
for (let t = e.previousSibling; dr(t); t = t.previousSibling) n += t.data.length;
return n;
},
dT = (e, t, n, o, r) => {
if (dr(n) && (o < 0 || o > n.data.length)) return [];
const s = r && dr(n) ? [lT(n, o)] : [o];
let a = n;
for (; a !== t && a.parentNode; ) s.push(e.nodeIndex(a, r)), (a = a.parentNode);
return a === t ? s.reverse() : [];
},
cT = (e, t, n, o, r, s, a = !1) => ({start: dT(e, t, n, o, a), end: dT(e, t, r, s, a)}),
uT = (e, t) => {
const n = t.slice(),
o = n.pop();
return x(o)
? X(n, (e, t) => e.bind(e => I.from(e.childNodes[t])), I.some(e)).bind(e =>
dr(e) && (o < 0 || o > e.data.length) ? I.none() : I.some({node: e, offset: o})
)
: I.none();
},
mT = (e, t) =>
uT(e, t.start).bind(({node: n, offset: o}) =>
uT(e, t.end).map(({node: e, offset: t}) => {
const r = document.createRange();
return r.setStart(n, o), r.setEnd(e, t), r;
})
),
fT = (e, t, n) => {
if (t && e.isEmpty(t) && !n(t)) {
const o = t.parentNode;
e.remove(t, dr(t.firstChild) && Go(t.firstChild.data)), fT(e, o, n);
}
},
gT = (e, t, n, o = !0) => {
const r = t.startContainer.parentNode,
s = t.endContainer.parentNode;
t.deleteContents(),
o &&
!n(t.startContainer) &&
(dr(t.startContainer) && 0 === t.startContainer.data.length && e.remove(t.startContainer),
dr(t.endContainer) && 0 === t.endContainer.data.length && e.remove(t.endContainer),
fT(e, r, n),
r !== s && fT(e, s, n));
},
pT = (e, t) => I.from(e.dom.getParent(t.startContainer, e.dom.isBlock)),
hT = (e, t, n) => {
const o = e.dynamicPatternsLookup({text: n, block: t});
return {...e, blockPatterns: Rl(o).concat(e.blockPatterns), inlinePatterns: Al(o).concat(e.inlinePatterns)};
},
bT = (e, t, n, o) => {
const r = e.createRng();
return r.setStart(t, 0), r.setEnd(n, o), r.toString();
},
vT = (e, t) => e.create("span", {"data-mce-type": "bookmark", id: t}),
yT = (e, t) => {
const n = e.createRng();
return n.setStartAfter(t.start), n.setEndBefore(t.end), n;
},
CT = (e, t, n) => {
const o = mT(e.getRoot(), n).getOrDie("Unable to resolve path range"),
r = o.startContainer,
s = o.endContainer,
a = 0 === o.endOffset ? s : s.splitText(o.endOffset),
i = 0 === o.startOffset ? r : r.splitText(o.startOffset),
l = i.parentNode;
return {
prefix: t,
end: a.parentNode.insertBefore(vT(e, t + "-end"), a),
start: l.insertBefore(vT(e, t + "-start"), i)
};
},
wT = (e, t, n) => {
fT(e, e.get(t.prefix + "-end"), n), fT(e, e.get(t.prefix + "-start"), n);
},
xT = e => 0 === e.start.length,
ET = (e, t, n, o) => {
const r = t.start;
var s;
return V_(
e,
o.container,
o.offset,
((s = r),
(e, t) => {
const n = e.data.substring(0, t),
o = n.lastIndexOf(s.charAt(s.length - 1)),
r = n.lastIndexOf(s);
return -1 !== r ? r + s.length : -1 !== o ? o + 1 : -1;
}),
n
).bind(o => {
var s, a;
const i =
null !== (a = null === (s = n.textContent) || void 0 === s ? void 0 : s.indexOf(r)) && void 0 !== a ? a : -1;
if (-1 !== i && o.offset >= i + r.length) {
const t = e.createRng();
return t.setStart(o.container, o.offset - r.length), t.setEnd(o.container, o.offset), I.some(t);
}
{
const s = o.offset - r.length;
return H_(o.container, s, n)
.map(t => {
const n = e.createRng();
return n.setStart(t.container, t.offset), n.setEnd(o.container, o.offset), n;
})
.filter(e => e.toString() === r)
.orThunk(() => ET(e, t, n, F_(o.container, 0)));
}
});
},
kT = (e, t, n, o) => {
const r = e.dom,
s = r.getRoot(),
a = n.pattern,
i = n.position.container,
l = n.position.offset;
return H_(i, l - n.pattern.end.length, t).bind(d => {
const c = cT(r, s, d.container, d.offset, i, l, o);
if (xT(a)) return I.some({matches: [{pattern: a, startRng: c, endRng: c}], position: d});
{
const i = _T(e, n.remainingPatterns, d.container, d.offset, t, o),
l = i.getOr({matches: [], position: d}),
u = l.position,
m = ((e, t, n, o, r, s = !1) => {
if (0 === t.start.length && !s) {
const t = e.createRng();
return t.setStart(n, o), t.setEnd(n, o), I.some(t);
}
return j_(n, o, r).bind(n =>
ET(e, t, r, n).bind(e => {
var t;
if (s) {
if (e.endContainer === n.container && e.endOffset === n.offset) return I.none();
if (
0 === n.offset &&
(null === (t = e.endContainer.textContent) || void 0 === t ? void 0 : t.length) === e.endOffset
)
return I.none();
}
return I.some(e);
})
);
})(r, a, u.container, u.offset, t, i.isNone());
return m.map(e => {
const t = ((e, t, n, o = !1) => cT(e, t, n.startContainer, n.startOffset, n.endContainer, n.endOffset, o))(
r,
s,
e,
o
);
return {
matches: l.matches.concat([{pattern: a, startRng: t, endRng: c}]),
position: F_(e.startContainer, e.startOffset)
};
});
}
});
},
_T = (e, t, n, o, r, s) => {
const a = e.dom;
return j_(n, o, a.getRoot()).bind(i => {
const l = bT(a, r, n, o);
for (let a = 0; a < t.length; a++) {
const d = t[a];
if (!Ve(l, d.end)) continue;
const c = t.slice();
c.splice(a, 1);
const u = kT(e, r, {pattern: d, remainingPatterns: c, position: i}, s);
if (u.isNone() && o > 0) return _T(e, t, n, o - 1, r, s);
if (u.isSome()) return u;
}
return I.none();
});
},
ST = (e, t, n) => {
e.selection.setRng(n),
"inline-format" === t.type
? q(t.format, t => {
e.formatter.apply(t);
})
: e.execCommand(t.cmd, !1, t.value);
},
NT = (e, t, n, o, r, s) => {
var a;
return ((e, t) => {
const n = ne(e, e => $(t, t => e.pattern.start === t.pattern.start && e.pattern.end === t.pattern.end));
return e.length === t.length ? (n ? e : t) : e.length > t.length ? e : t;
})(
_T(e, r.inlinePatterns, n, o, t, s).fold(
() => [],
e => e.matches
),
_T(e, ((a = r.inlinePatterns), ae(a, (e, t) => t.end.length - e.end.length)), n, o, t, s).fold(
() => [],
e => e.matches
)
);
},
RT = (e, t) => {
if (0 === t.length) return;
const n = e.dom,
o = e.selection.getBookmark(),
r = ((e, t) => {
const n = La("mce_textpattern"),
o = G(
t,
(t, o) => {
const r = CT(e, n + `_end${t.length}`, o.endRng);
return t.concat([{...o, endMarker: r}]);
},
[]
);
return G(
o,
(t, r) => {
const s = o.length - t.length - 1,
a = xT(r.pattern) ? r.endMarker : CT(e, n + `_start${s}`, r.startRng);
return t.concat([{...r, startMarker: a}]);
},
[]
);
})(n, t);
q(r, t => {
const o = n.getParent(t.startMarker.start, n.isBlock),
r = e => e === o;
xT(t.pattern)
? ((e, t, n, o) => {
const r = yT(e.dom, n);
gT(e.dom, r, o), ST(e, t, r);
})(e, t.pattern, t.endMarker, r)
: ((e, t, n, o, r) => {
const s = e.dom,
a = yT(s, o),
i = yT(s, n);
gT(s, i, r), gT(s, a, r);
const l = {prefix: n.prefix, start: n.end, end: o.start},
d = yT(s, l);
ST(e, t, d);
})(e, t.pattern, t.startMarker, t.endMarker, r),
wT(n, t.endMarker, r),
wT(n, t.startMarker, r);
}),
e.selection.moveToBookmark(o);
},
AT = (e, t, n) =>
((e, t, n) => {
if (dr(e) && 0 >= e.length) return I.some(F_(e, 0));
{
const t = za(U_);
return I.from(t.forwards(e, 0, z_(e), n)).map(e => F_(e.container, 0));
}
})(t, 0, t).map(o => {
const r = o.container;
return (
$_(r, n.start.length, t).each(n => {
const o = e.createRng();
o.setStart(r, 0), o.setEnd(n.container, n.offset), gT(e, o, e => e === t);
}),
r
);
}),
TT = e => (t, n) => {
const o = t.dom,
r = n.pattern,
s = mT(o.getRoot(), n.range).getOrDie("Unable to resolve path range");
return (
pT(t, s).each(n => {
"block-format" === r.type
? ((e, t) => {
const n = t.get(e);
return p(n) && le(n).exists(e => ke(e, "block"));
})(r.format, t.formatter) &&
t.undoManager.transact(() => {
e(t.dom, n, r), t.formatter.apply(r.format);
})
: "block-command" === r.type &&
t.undoManager.transact(() => {
e(t.dom, n, r), t.execCommand(r.cmd, !1, r.value);
});
}),
!0
);
},
OT = e => (t, n) => {
const o = (e => ae(e, (e, t) => t.start.length - e.start.length))(t),
r = n.replace(Wo, " ");
return Q(o, t => e(t, n, r));
},
BT = (e, t) => (n, o, r, s, a) => {
var i;
void 0 === a && (a = null !== (i = o.textContent) && void 0 !== i ? i : "");
const l = n.dom,
d = Wl(n);
return l.is(o, d)
? e(r.blockPatterns, a)
.map(e =>
t && Dt.trim(a).length === e.start.length ? [] : [{pattern: e, range: cT(l, l.getRoot(), o, 0, o, 0, s)}]
)
.getOr([])
: [];
},
PT = TT((e, t, n) => {
AT(e, t, n).each(e => {
const t = Cn(e),
n = Ha(t);
/^\s[^\s]/.test(n) &&
((e, t) => {
ja.set(e, t);
})(t, n.slice(1));
});
}),
DT = OT((e, t, n) => 0 === t.indexOf(e.start) || 0 === n.indexOf(e.start)),
LT = BT(DT, !0),
MT = TT(AT),
IT = OT((e, t, n) => t === e.start || n === e.start),
FT = BT(IT, !1),
UT = (e, t, n) => {
for (let o = 0; o < e.length; o++) if (n(e[o], t)) return !0;
return !1;
},
zT = e => {
const t = [",", ".", ";", ":", "!", "?"],
n = [32],
o = () => {
return (t = pc(e)), (n = hc(e)), {inlinePatterns: Al(t), blockPatterns: Rl(t), dynamicPatternsLookup: n};
var t, n;
},
r = () => (e => e.options.isSet("text_patterns_lookup"))(e);
e.on(
"keydown",
t => {
if (13 === t.keyCode && !Cf.modifierPressed(t) && e.selection.isCollapsed()) {
const n = Tl(o(), "enter");
(n.inlinePatterns.length > 0 || n.blockPatterns.length > 0 || r()) &&
((e, t) =>
((e, t) => {
const n = e.selection.getRng();
return pT(e, n)
.map(o => {
var r;
const s = Math.max(0, n.startOffset),
a = hT(t, o, null !== (r = o.textContent) && void 0 !== r ? r : "");
return {inlineMatches: NT(e, o, n.startContainer, s, a, !0), blockMatches: LT(e, o, a, !0)};
})
.filter(({inlineMatches: e, blockMatches: t}) => t.length > 0 || e.length > 0);
})(e, t).fold(
L,
({inlineMatches: t, blockMatches: n}) => (
e.undoManager.add(),
e.undoManager.extra(
() => {
e.execCommand("mceInsertNewLine");
},
() => {
(e => {
e.insertContent(Ja, {preserve_zwsp: !0});
})(e),
RT(e, t),
((e, t) => {
if (0 === t.length) return;
const n = e.selection.getBookmark();
q(t, t => PT(e, t)), e.selection.moveToBookmark(n);
})(e, n);
const o = e.selection.getRng(),
r = j_(o.startContainer, o.startOffset, e.dom.getRoot());
e.execCommand("mceInsertNewLine"),
r.each(t => {
const n = t.container;
n.data.charAt(t.offset - 1) === qo &&
(n.deleteData(t.offset - 1, 1), fT(e.dom, n.parentNode, t => t === e.dom.getRoot()));
});
}
),
!0
)
))(e, n) &&
t.preventDefault();
}
},
!0
),
e.on(
"keydown",
t => {
if (32 === t.keyCode && e.selection.isCollapsed()) {
const n = Tl(o(), "space");
(n.blockPatterns.length > 0 || r()) &&
((e, t) =>
((e, t) => {
const n = e.selection.getRng();
return pT(e, n)
.map(o => {
const r = Math.max(0, n.startOffset),
s = bT(e.dom, o, n.startContainer, r),
a = hT(t, o, s);
return FT(e, o, a, !1, s);
})
.filter(e => e.length > 0);
})(e, t).fold(
L,
t => (
e.undoManager.transact(() => {
((e, t) => {
q(t, t => MT(e, t));
})(e, t);
}),
!0
)
))(e, n) &&
t.preventDefault();
}
},
!0
);
const s = () => {
if (e.selection.isCollapsed()) {
const t = Tl(o(), "space");
(t.inlinePatterns.length > 0 || r()) &&
((e, t) => {
const n = e.selection.getRng();
pT(e, n).map(o => {
const r = Math.max(0, n.startOffset - 1),
s = bT(e.dom, o, n.startContainer, r),
a = hT(t, o, s),
i = NT(e, o, n.startContainer, r, a, !1);
i.length > 0 &&
e.undoManager.transact(() => {
RT(e, i);
});
});
})(e, t);
}
};
e.on("keyup", e => {
UT(n, e, (e, t) => e === t.keyCode && !Cf.modifierPressed(t)) && s();
}),
e.on("keypress", n => {
UT(t, n, (e, t) => e.charCodeAt(0) === t.charCode) && Og.setEditorTimeout(e, s);
});
},
jT = e => {
const t = Dt.each,
n = Cf.BACKSPACE,
o = Cf.DELETE,
r = e.dom,
s = e.selection,
a = e.parser,
i = Tt.browser,
l = i.isFirefox(),
d = i.isChromium() || i.isSafari(),
c = Tt.deviceType.isiPhone() || Tt.deviceType.isiPad(),
u = Tt.os.isMacOS() || Tt.os.isiOS(),
m = (t, n) => {
try {
e.getDoc().execCommand(t, !1, String(n));
} catch (e) {}
},
f = e => e.isDefaultPrevented(),
g = () => {
e.shortcuts.add("meta+a", null, "SelectAll");
},
p = () => {
e.inline ||
r.bind(e.getDoc(), "mousedown mouseup", t => {
let n;
if (t.target === e.getDoc().documentElement)
if (((n = s.getRng()), e.getBody().focus(), "mousedown" === t.type)) {
if (ai(n.startContainer)) return;
s.placeCaretAt(t.clientX, t.clientY);
} else s.setRng(n);
});
},
h = () => {
Range.prototype.getClientRects ||
e.on("mousedown", t => {
if (!f(t) && "HTML" === t.target.nodeName) {
const t = e.getBody();
t.blur(),
Og.setEditorTimeout(e, () => {
t.focus();
});
}
});
},
b = () => {
const t = Gd(e);
e.on("click", n => {
const o = n.target;
/^(IMG|HR)$/.test(o.nodeName) &&
r.isEditable(o) &&
(n.preventDefault(), e.selection.select(o), e.nodeChanged()),
"A" === o.nodeName &&
r.hasClass(o, t) &&
0 === o.childNodes.length &&
r.isEditable(o.parentNode) &&
(n.preventDefault(), s.select(o));
});
},
v = () => {
e.on("keydown", e => {
if (!f(e) && e.keyCode === n && s.isCollapsed() && 0 === s.getRng().startOffset) {
const t = s.getNode().previousSibling;
if (t && t.nodeName && "table" === t.nodeName.toLowerCase()) return e.preventDefault(), !1;
}
return !0;
});
},
y = () => {
jd(e) ||
e.on("BeforeExecCommand mousedown", () => {
m("StyleWithCSS", !1), m("enableInlineTableEditing", !1), yd(e) || m("enableObjectResizing", !1);
});
},
C = () => {
e.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}");
},
w = () => {
e.inline ||
e.on("keydown", () => {
document.activeElement === document.body && e.getWin().focus();
});
},
x = () => {
e.inline ||
(e.contentStyles.push("body {min-height: 150px}"),
e.on("click", t => {
let n;
"HTML" === t.target.nodeName &&
((n = e.selection.getRng()),
e.getBody().focus(),
e.selection.setRng(n),
e.selection.normalize(),
e.nodeChanged());
}));
},
E = () => {
u &&
e.on("keydown", t => {
!Cf.metaKeyPressed(t) ||
t.shiftKey ||
(37 !== t.keyCode && 39 !== t.keyCode) ||
(t.preventDefault(),
e.selection.getSel().modify("move", 37 === t.keyCode ? "backward" : "forward", "lineboundary"));
});
},
_ = () => {
e.on("click", e => {
let t = e.target;
do {
if ("A" === t.tagName) return void e.preventDefault();
} while ((t = t.parentNode));
}),
e.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}");
},
S = () => {
e.on("init", () => {
e.dom.bind(e.getBody(), "submit", e => {
e.preventDefault();
});
});
},
N = k;
return (
rw(e)
? (d && (p(), b(), S(), g(), c && (w(), x(), _())), l && (h(), y(), C(), E()))
: (e.on("keydown", t => {
if (f(t) || t.keyCode !== Cf.BACKSPACE) return;
let n = s.getRng();
const o = n.startContainer,
a = n.startOffset,
i = r.getRoot();
let l = o;
if (n.collapsed && 0 === a) {
for (; l.parentNode && l.parentNode.firstChild === l && l.parentNode !== i; ) l = l.parentNode;
"BLOCKQUOTE" === l.nodeName &&
(e.formatter.toggle("blockquote", void 0, l),
(n = r.createRng()),
n.setStart(o, 0),
n.setEnd(o, 0),
s.setRng(n));
}
}),
(() => {
const t = e => {
const t = r.create("body"),
n = e.cloneContents();
return t.appendChild(n), s.serializer.serialize(t, {format: "html"});
};
e.on("keydown", s => {
const a = s.keyCode;
if (!f(s) && (a === o || a === n) && e.selection.isEditable()) {
const n = e.selection.isCollapsed(),
o = e.getBody();
if (n && !Ar(e.schema, o)) return;
if (
!n &&
!(n => {
const o = t(n),
s = r.createRng();
return s.selectNode(e.getBody()), o === t(s);
})(e.selection.getRng())
)
return;
s.preventDefault(),
e.setContent(""),
o.firstChild && r.isBlock(o.firstChild)
? e.selection.setCursorLocation(o.firstChild, 0)
: e.selection.setCursorLocation(o, 0),
e.nodeChanged();
}
});
})(),
Tt.windowsPhone ||
e.on(
"keyup focusin mouseup",
t => {
Cf.modifierPressed(t) ||
(e => {
const t = e.getBody(),
n = e.selection.getRng();
return (
n.startContainer === n.endContainer &&
n.startContainer === t &&
0 === n.startOffset &&
n.endOffset === t.childNodes.length
);
})(e) ||
s.normalize();
},
!0
),
d &&
(p(),
b(),
e.on("init", () => {
m("DefaultParagraphSeparator", Wl(e));
}),
S(),
v(),
a.addNodeFilter("br", e => {
let t = e.length;
for (; t--; ) "Apple-interchange-newline" === e[t].attr("class") && e[t].remove();
}),
c ? (w(), x(), _()) : g()),
l &&
(e.on("keydown", t => {
if (!f(t) && t.keyCode === n) {
if (!e.getBody().getElementsByTagName("hr").length) return;
if (s.isCollapsed() && 0 === s.getRng().startOffset) {
const e = s.getNode(),
n = e.previousSibling;
if ("HR" === e.nodeName) return r.remove(e), void t.preventDefault();
n && n.nodeName && "hr" === n.nodeName.toLowerCase() && (r.remove(n), t.preventDefault());
}
}
}),
h(),
(() => {
const n = () => {
const n = r.getAttribs(s.getStart().cloneNode(!1));
return () => {
const o = s.getStart();
o !== e.getBody() &&
(r.setAttrib(o, "style", null),
t(n, e => {
o.setAttributeNode(e.cloneNode(!0));
}));
};
},
o = () =>
!s.isCollapsed() && r.getParent(s.getStart(), r.isBlock) !== r.getParent(s.getEnd(), r.isBlock);
e.on("keypress", t => {
let r;
return !(
!(f(t) || (8 !== t.keyCode && 46 !== t.keyCode)) &&
o() &&
((r = n()), e.getDoc().execCommand("delete", !1), r(), t.preventDefault(), 1)
);
}),
r.bind(e.getDoc(), "cut", t => {
if (!f(t) && o()) {
const t = n();
Og.setEditorTimeout(e, () => {
t();
});
}
});
})(),
y(),
e.on("SetContent ExecCommand", e => {
("setcontent" !== e.type && "mceInsertLink" !== e.command) ||
t(r.select("a:not([data-mce-block])"), e => {
var t;
let n = e.parentNode;
const o = r.getRoot();
if ((null == n ? void 0 : n.lastChild) === e) {
for (; n && !r.isBlock(n); ) {
if ((null === (t = n.parentNode) || void 0 === t ? void 0 : t.lastChild) !== n || n === o)
return;
n = n.parentNode;
}
r.add(n, "br", {"data-mce-bogus": 1});
}
});
}),
C(),
E(),
v())),
{
refreshContentEditable: N,
isHidden: () => {
if (!l || e.removed) return !1;
const t = e.selection.getSel();
return !t || !t.rangeCount || 0 === t.rangeCount;
}
}
);
},
HT = fa.DOM,
$T = e => (e.inline ? e.getElement().nodeName.toLowerCase() : void 0),
VT = e => Ce(e, e => !1 === v(e)),
qT = e => {
const t = e.options.get,
n = e.editorUpload.blobCache;
return VT({
allow_conditional_comments: t("allow_conditional_comments"),
allow_html_data_urls: t("allow_html_data_urls"),
allow_svg_data_urls: t("allow_svg_data_urls"),
allow_html_in_named_anchor: t("allow_html_in_named_anchor"),
allow_script_urls: t("allow_script_urls"),
allow_unsafe_link_target: t("allow_unsafe_link_target"),
convert_unsafe_embeds: t("convert_unsafe_embeds"),
convert_fonts_to_spans: t("convert_fonts_to_spans"),
fix_list_elements: t("fix_list_elements"),
font_size_legacy_values: t("font_size_legacy_values"),
forced_root_block: t("forced_root_block"),
forced_root_block_attrs: t("forced_root_block_attrs"),
preserve_cdata: t("preserve_cdata"),
inline_styles: t("inline_styles"),
root_name: $T(e),
sandbox_iframes: t("sandbox_iframes"),
sandbox_iframes_exclusions: Ac(e),
sanitize: t("xss_sanitization"),
validate: !0,
blob_cache: n,
document: e.getDoc()
});
},
WT = e => {
const t = e.options.get;
return VT({
custom_elements: t("custom_elements"),
extended_valid_elements: t("extended_valid_elements"),
invalid_elements: t("invalid_elements"),
invalid_styles: t("invalid_styles"),
schema: t("schema"),
valid_children: t("valid_children"),
valid_classes: t("valid_classes"),
valid_elements: t("valid_elements"),
valid_styles: t("valid_styles"),
verify_html: t("verify_html"),
padd_empty_block_inline_children: t("format_empty_lines")
});
},
KT = e => (e.inline ? e.ui.styleSheetLoader : e.dom.styleSheetLoader),
YT = e => {
const t = KT(e),
n = hd(e),
o = e.contentCSS,
r = () => {
t.unloadAll(o), e.inline || e.ui.styleSheetLoader.unloadAll(n);
},
s = () => {
e.removed ? r() : e.on("remove", r);
};
if (e.contentStyles.length > 0) {
let t = "";
Dt.each(e.contentStyles, e => {
t += e + "\r\n";
}),
e.dom.addStyle(t);
}
const a = Promise.all(
((e, t, n) => {
const {pass: o, fail: r} = K(t, e => tinymce.Resource.has(Kw(e))),
s = o.map(t => {
const n = tinymce.Resource.get(Kw(t));
return m(n) ? Promise.resolve(KT(e).loadRawCss(t, n)) : Promise.resolve();
}),
a = [...s, KT(e).loadAll(r)];
return e.inline ? a : a.concat([e.ui.styleSheetLoader.loadAll(n)]);
})(e, o, n)
)
.then(s)
.catch(s),
i = pd(e);
return (
i &&
((e, t) => {
const n = Cn(e.getBody()),
o = Wn(qn(n)),
r = vn("style");
Jt(r, "type", "text/css"),
yo(r, yn(t)),
yo(o, r),
e.on("remove", () => {
Eo(r);
});
})(e, i),
a
);
},
GT = e => {
!0 !== e.removed &&
((e => {
rw(e) || e.load({initial: !0, format: "html"}), (e.startContent = e.getContent({format: "raw"}));
})(e),
(e => {
e.bindPendingEventDelegates(),
(e.initialized = !0),
(e => {
e.dispatch("Init");
})(e),
e.focus(!0),
(e => {
const t = e.dom.getRoot();
e.inline ||
(vm(e) && e.selection.getStart(!0) !== t) ||
$u(t).each(t => {
const n = t.getNode(),
o = ar(n) ? $u(n).getOr(t) : t;
e.selection.setRng(o.toRange());
});
})(e),
e.nodeChanged({initial: !0});
const t = Qd(e);
w(t) && t.call(e, e),
(e => {
const t = ec(e);
t &&
Og.setEditorTimeout(
e,
() => {
let n;
(n = !0 === t ? e : e.editorManager.get(t)),
n && !n.destroyed && (n.focus(), n.selection.scrollIntoView());
},
100
);
})(e);
})(e));
},
XT = e => {
const t = e.getElement();
let n = e.getDoc();
e.inline &&
(HT.addClass(t, "mce-content-body"),
(e.contentDocument = n = document),
(e.contentWindow = window),
(e.bodyElement = t),
(e.contentAreaContainer = t));
const o = e.getBody();
(o.disabled = !0),
(e.readonly = jd(e)),
(e._editableRoot = Hd(e)),
!e.readonly &&
e.hasEditableRoot() &&
(e.inline && "static" === HT.getStyle(o, "position", !0) && (o.style.position = "relative"),
(o.contentEditable = "true")),
(o.disabled = !1),
(e.editorUpload = tx(e)),
(e.schema = Fs(WT(e))),
(e.dom = fa(n, {
keep_values: !0,
url_converter: e.convertURL,
url_converter_scope: e,
update_styles: !0,
root_element: e.inline ? e.getBody() : null,
collect: e.inline,
schema: e.schema,
contentCssCors: ld(e),
referrerPolicy: dd(e),
onSetAttrib: t => {
e.dispatch("SetAttrib", t);
}
})),
(e.parser = (e => {
const t = kC(qT(e), e.schema);
return (
t.addAttributeFilter("src,href,style,tabindex", (t, n) => {
const o = e.dom,
r = "data-mce-" + n;
let s = t.length;
for (; s--; ) {
const a = t[s];
let i = a.attr(n);
if (i && !a.attr(r)) {
if (0 === i.indexOf("data:") || 0 === i.indexOf("blob:")) continue;
"style" === n
? ((i = o.serializeStyle(o.parseStyle(i), a.name)),
i.length || (i = null),
a.attr(r, i),
a.attr(n, i))
: "tabindex" === n
? (a.attr(r, i), a.attr(n, null))
: a.attr(r, e.convertURL(i, n, a.name));
}
}
}),
t.addNodeFilter("script", e => {
let t = e.length;
for (; t--; ) {
const n = e[t],
o = n.attr("type") || "no/type";
0 !== o.indexOf("mce-") && n.attr("type", "mce-" + o);
}
}),
Cc(e) &&
t.addNodeFilter("#cdata", t => {
var n;
let o = t.length;
for (; o--; ) {
const r = t[o];
(r.type = 8),
(r.name = "#comment"),
(r.value = "[CDATA[" + e.dom.encode(null !== (n = r.value) && void 0 !== n ? n : "") + "]]");
}
}),
t.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div", t => {
let n = t.length;
const o = e.schema.getNonEmptyElements();
for (; n--; ) {
const e = t[n];
e.isEmpty(o) && 0 === e.getAll("br").length && e.append(new ep("br", 1));
}
}),
t
);
})(e)),
(e.serializer = pw(
(e => {
const t = e.options.get;
return {
...qT(e),
...WT(e),
...VT({
remove_trailing_brs: t("remove_trailing_brs"),
pad_empty_with_br: t("pad_empty_with_br"),
url_converter: t("url_converter"),
url_converter_scope: t("url_converter_scope"),
element_format: t("element_format"),
entities: t("entities"),
entity_encoding: t("entity_encoding"),
indent: t("indent"),
indent_after: t("indent_after"),
indent_before: t("indent_before")
})
};
})(e),
e
)),
(e.selection = mw(e.dom, e.getWin(), e.serializer, e)),
(e.annotator = cf(e)),
(e.formatter = mx(e)),
(e.undoManager = gx(e)),
(e._nodeChangeDispatcher = new kR(e)),
(e._selectionOverrides = iT(e)),
(e => {
const t = Dr(),
n = Br(!1),
o = xa(t => {
e.dispatch("longpress", {...t, type: "longpress"}), n.set(!0);
}, 400);
e.on(
"touchstart",
e => {
zk(e).each(r => {
o.cancel();
const s = {x: r.clientX, y: r.clientY, target: e.target};
o.throttle(e), n.set(!1), t.set(s);
});
},
!0
),
e.on(
"touchmove",
r => {
o.cancel(),
zk(r).each(o => {
t.on(r => {
((e, t) => {
const n = Math.abs(e.clientX - t.x),
o = Math.abs(e.clientY - t.y);
return n > 5 || o > 5;
})(o, r) && (t.clear(), n.set(!1), e.dispatch("longpresscancel"));
});
});
},
!0
),
e.on(
"touchend touchcancel",
r => {
o.cancel(),
"touchcancel" !== r.type &&
t
.get()
.filter(e => e.target.isEqualNode(r.target))
.each(() => {
n.get() ? r.preventDefault() : e.dispatch("tap", {...r, type: "tap"});
});
},
!0
);
})(e),
(e => {
(e => {
e.on("click", t => {
e.dom.getParent(t.target, "details") && t.preventDefault();
});
})(e),
(e => {
e.parser.addNodeFilter("details", t => {
const n = Sc(e);
q(t, e => {
"expanded" === n ? e.attr("open", "open") : "collapsed" === n && e.attr("open", null);
});
}),
e.serializer.addNodeFilter("details", t => {
const n = Nc(e);
q(t, e => {
"expanded" === n ? e.attr("open", "open") : "collapsed" === n && e.attr("open", null);
});
});
})(e);
})(e),
(e => {
const t = "contenteditable",
n = " " + Dt.trim(vc(e)) + " ",
o = " " + Dt.trim(bc(e)) + " ",
r = Kk(n),
s = Kk(o),
a = yc(e);
a.length > 0 &&
e.on("BeforeSetContent", t => {
((e, t, n) => {
let o = t.length,
r = n.content;
if ("raw" !== n.format) {
for (; o--; ) r = r.replace(t[o], Yk(e, r, bc(e)));
n.content = r;
}
})(e, a, t);
}),
e.parser.addAttributeFilter("class", e => {
let n = e.length;
for (; n--; ) {
const o = e[n];
r(o) ? o.attr(t, "true") : s(o) && o.attr(t, "false");
}
}),
e.serializer.addAttributeFilter(t, e => {
let n = e.length;
for (; n--; ) {
const o = e[n];
(r(o) || s(o)) &&
(a.length > 0 && o.attr("data-mce-content")
? ((o.name = "#text"), (o.type = 3), (o.raw = !0), (o.value = o.attr("data-mce-content")))
: o.attr(t, null));
}
});
})(e),
rw(e) ||
((e => {
e.on("mousedown", t => {
t.detail >= 3 && (t.preventDefault(), DA(e));
});
})(e),
(e => {
zT(e);
})(e));
const r = ER(e);
Uk(e, r),
(e => {
e.on("NodeChange", T(qk, e));
})(e),
(e => {
var t;
const n = e.dom,
o = Wl(e),
r = null !== (t = wd(e)) && void 0 !== t ? t : "",
s = (t, a) => {
if (
(e => {
if (bx(e)) {
const t = e.keyCode;
return !vx(e) && (Cf.metaKeyPressed(e) || e.altKey || (t >= 112 && t <= 123) || H(px, t));
}
return !1;
})(t)
)
return;
const i = e.getBody(),
l =
!(e => bx(e) && !(vx(e) || ("keyup" === e.type && 229 === e.keyCode)))(t) &&
((e, t, n) => {
if (e.isEmpty(t, void 0, {skipBogus: !1, includeZwsp: !0})) {
const o = t.firstElementChild;
return (
!o ||
(!e.getStyle(t.firstElementChild, "padding-left") &&
!e.getStyle(t.firstElementChild, "padding-right") &&
n === o.nodeName.toLowerCase())
);
}
return !1;
})(n, i, o);
(("" !== n.getAttrib(i, hx)) !== l || a) &&
(n.setAttrib(i, hx, l ? r : null),
((e, t) => {
e.dispatch("PlaceholderToggle", {state: t});
})(e, l),
e.on(l ? "keydown" : "keyup", s),
e.off(l ? "keyup" : "keydown", s));
};
Ge(r) &&
e.on("init", t => {
s(t, !0),
e.on("change SetContent ExecCommand", s),
e.on("paste", t => Og.setEditorTimeout(e, () => s(t)));
});
})(e),
NA(e);
const s = (e => {
const t = e;
return (e => Ee(e.plugins, "rtc").bind(e => I.from(e.setup)))(e).fold(
() => ((t.rtcInstance = ow(e)), I.none()),
e => (
(t.rtcInstance = (() => {
const e = N(null),
t = N("");
return {
init: {bindEvents: k},
undoManager: {
beforeChange: k,
add: e,
undo: e,
redo: e,
clear: k,
reset: k,
hasUndo: L,
hasRedo: L,
transact: e,
ignore: k,
extra: k
},
formatter: {
match: L,
matchAll: N([]),
matchNode: N(void 0),
canApply: L,
closest: t,
apply: k,
remove: k,
toggle: k,
formatChanged: N({unbind: k})
},
editor: {getContent: t, setContent: N({content: "", html: ""}), insertContent: N(""), addVisual: k},
selection: {getContent: t},
autocompleter: {addDecoration: k, removeDecoration: k},
raw: {getModel: N(I.none())}
};
})()),
I.some(() =>
e().then(
e => (
(t.rtcInstance = (e => {
const t = e => (f(e) ? e : {}),
{init: n, undoManager: o, formatter: r, editor: s, selection: a, autocompleter: i, raw: l} = e;
return {
init: {bindEvents: n.bindEvents},
undoManager: {
beforeChange: o.beforeChange,
add: o.add,
undo: o.undo,
redo: o.redo,
clear: o.clear,
reset: o.reset,
hasUndo: o.hasUndo,
hasRedo: o.hasRedo,
transact: (e, t, n) => o.transact(n),
ignore: (e, t) => o.ignore(t),
extra: (e, t, n, r) => o.extra(n, r)
},
formatter: {
match: (e, n, o, s) => r.match(e, t(n), s),
matchAll: r.matchAll,
matchNode: r.matchNode,
canApply: e => r.canApply(e),
closest: e => r.closest(e),
apply: (e, n, o) => r.apply(e, t(n)),
remove: (e, n, o, s) => r.remove(e, t(n)),
toggle: (e, n, o) => r.toggle(e, t(n)),
formatChanged: (e, t, n, o, s) => r.formatChanged(t, n, o, s)
},
editor: {
getContent: e => s.getContent(e),
setContent: (e, t) => ({content: s.setContent(e, t), html: ""}),
insertContent: (e, t) => (s.insertContent(e), ""),
addVisual: s.addVisual
},
selection: {getContent: (e, t) => a.getContent(t)},
autocompleter: {addDecoration: i.addDecoration, removeDecoration: i.removeDecoration},
raw: {getModel: () => I.some(l.getRawModel())}
};
})(e)),
e.rtc.isRemote
)
)
)
)
);
})(e);
(e => {
const t = e.getDoc(),
n = e.getBody();
(e => {
e.dispatch("PreInit");
})(e),
tc(e) || ((t.body.spellcheck = !1), HT.setAttrib(n, "spellcheck", "false")),
(e.quirks = jT(e)),
(e => {
e.dispatch("PostRender");
})(e);
const o = bd(e);
void 0 !== o && (n.dir = o);
const r = nc(e);
r &&
e.on("BeforeSetContent", e => {
Dt.each(r, t => {
e.content = e.content.replace(t, e => "\x3c!--mce:protected " + escape(e) + "--\x3e");
});
}),
e.on("SetContent", () => {
e.addVisual(e.getBody());
}),
e.on("compositionstart compositionend", t => {
e.composing = "compositionstart" === t.type;
});
})(e),
(e => {
const t = Oc(e);
m(Bc(e)) ||
(!v(t) &&
"INVALID" !==
(e =>
(e => "gpl" === e.toLowerCase())(e) || (e => e.length >= 64 && e.length <= 255)(e)
? "VALID"
: "INVALID")(t)) ||
console.warn(
"TinyMCE is running in evaluation mode. Provide a valid license key or add license_key: 'gpl' to the init config to agree to the open source license terms. Read more at https://www.tiny.cloud/license-key/"
);
})(e),
s.fold(
() => {
const t = (e => {
let t = !1;
const n = setTimeout(() => {
t || e.setProgressState(!0);
}, 500);
return () => {
clearTimeout(n), (t = !0), e.setProgressState(!1);
};
})(e);
YT(e).then(() => {
GT(e), t();
});
},
t => {
e.setProgressState(!0),
YT(e).then(() => {
t().then(
t => {
e.setProgressState(!1), GT(e), iw(e);
},
t => {
e.notificationManager.open({type: "error", text: String(t)}), GT(e), iw(e);
}
);
});
}
);
},
ZT = M,
QT = fa.DOM,
JT = fa.DOM,
eO = (e, t) => ({editorContainer: e, iframeContainer: t, api: {}}),
tO = e => {
const t = e.getElement();
return e.inline
? eO(null)
: (e => {
const t = JT.create("div");
return JT.insertAfter(t, e), eO(t, t);
})(t);
},
nO = async e => {
e.dispatch("ScriptsLoaded"),
(e => {
const t = Dt.trim(nd(e)),
n = e.ui.registry.getAll().icons,
o = {...Tw.get("default").icons, ...Tw.get(t).icons};
pe(o, (t, o) => {
ke(n, o) || e.ui.registry.addIcon(o, t);
});
})(e),
(e => {
const t = kd(e);
if (m(t)) {
const n = zw.get(t);
(e.theme = n(e, zw.urls[t]) || {}),
w(e.theme.init) && e.theme.init(e, zw.urls[t] || e.documentBaseUrl.replace(/\/$/, ""));
} else e.theme = {};
})(e),
(e => {
const t = Sd(e),
n = Ow.get(t);
e.model = n(e, Ow.urls[t]);
})(e),
(e => {
const t = [];
q(Vd(e), n => {
((e, t, n) => {
const o = Uw.get(n),
r = Uw.urls[n] || e.documentBaseUrl.replace(/\/$/, "");
if (((n = Dt.trim(n)), o && -1 === Dt.inArray(t, n))) {
if (e.plugins[n]) return;
try {
const s = o(e, r) || {};
(e.plugins[n] = s), w(s.init) && (s.init(e, r), t.push(n));
} catch (t) {
((e, t, n) => {
const o = ya.translate(["Failed to initialize plugin: {0}", t]);
ff(e, "PluginLoadError", {message: o}), Ww(o, n), $w(e, o);
})(e, n, t);
}
}
})(e, t, (e => e.replace(/^\-/, ""))(n));
});
})(e);
const t = await (e => {
const t = e.getElement();
return (
(e.orgDisplay = t.style.display),
m(kd(e))
? (e => {
const t = e.theme.renderUI;
return t ? t() : tO(e);
})(e)
: w(kd(e))
? (e => {
const t = e.getElement(),
n = kd(e)(e, t);
return (
n.editorContainer.nodeType && (n.editorContainer.id = n.editorContainer.id || e.id + "_parent"),
n.iframeContainer &&
n.iframeContainer.nodeType &&
(n.iframeContainer.id = n.iframeContainer.id || e.id + "_iframecontainer"),
(n.height = n.iframeHeight ? n.iframeHeight : t.offsetHeight),
n
);
})(e)
: tO(e)
);
})(e);
((e, t) => {
const n = {
show: I.from(t.show).getOr(k),
hide: I.from(t.hide).getOr(k),
isEnabled: I.from(t.isEnabled).getOr(M),
setEnabled: n => {
e.mode.isReadOnly() || I.from(t.setEnabled).each(e => e(n));
}
};
e.ui = {...e.ui, ...n};
})(e, I.from(t.api).getOr({})),
(e.editorContainer = t.editorContainer),
(e => {
e.contentCSS = e.contentCSS.concat((e => Yw(e, gd(e)))(e), (e => Yw(e, hd(e)))(e));
})(e),
e.inline
? XT(e)
: ((e, t) => {
((e, t) => {
const n = Tt.browser.isFirefox() ? Xd(e) : "Rich Text Area",
o = e.translate(n),
r = nn(Cn(e.getElement()), "tabindex").bind(Ze),
s = ((e, t, n, o) => {
const r = vn("iframe");
return (
o.each(e => Jt(r, "tabindex", e)),
en(r, n),
en(r, {id: e + "_ifr", frameBorder: "0", allowTransparency: "true", title: t}),
mn(r, "tox-edit-area__iframe"),
r
);
})(e.id, o, Ul(e), r).dom;
(s.onload = () => {
(s.onload = null), e.dispatch("load");
}),
(e.contentAreaContainer = t.iframeContainer),
(e.iframeElement = s),
(e.iframeHTML = (e => {
let t = zl(e) + "<html><head>";
jl(e) !== e.documentBaseUrl && (t += '<base href="' + e.documentBaseURI.getURI() + '" />'),
(t += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />');
const n = Hl(e),
o = $l(e),
r = e.translate(Xd(e));
return (
Vl(e) && (t += '<meta http-equiv="Content-Security-Policy" content="' + Vl(e) + '" />'),
(t += `</head><body id="${n}" class="mce-content-body ${o}" data-id="${e.id}" aria-label="${r}"><br></body></html>`),
t
);
})(e)),
QT.add(t.iframeContainer, s);
})(e, t),
t.editorContainer &&
((t.editorContainer.style.display = e.orgDisplay), (e.hidden = QT.isHidden(t.editorContainer))),
(e.getElement().style.display = "none"),
QT.setAttrib(e.id, "aria-hidden", "true"),
(e.getElement().style.visibility = e.orgVisibility),
(e => {
const t = e.iframeElement,
n = () => {
(e.contentDocument = t.contentDocument), XT(e);
};
if (Ec(e) || Tt.browser.isFirefox()) {
const t = e.getDoc();
t.open(), t.write(e.iframeHTML), t.close(), n();
} else {
const r =
((o = Cn(t)),
Ro(o, "load", ZT, () => {
r.unbind(), n();
}));
t.srcdoc = e.iframeHTML;
}
var o;
})(e);
})(e, {editorContainer: t.editorContainer, iframeContainer: t.iframeContainer});
},
oO = fa.DOM,
rO = e => "-" === e.charAt(0),
sO = (e, t, n) =>
I.from(t)
.filter(e => Ge(e) && !Tw.has(e))
.map(t => ({url: `${e.editorManager.baseURL}/icons/${t}/icons${n}.min.js`, name: I.some(t)})),
aO = (e, t) => {
const n = pa.ScriptLoader,
o = () => {
!e.removed &&
(e => {
const t = kd(e);
return !m(t) || C(zw.get(t));
})(e) &&
(e => {
const t = Sd(e);
return C(Ow.get(t));
})(e) &&
nO(e);
};
((e, t) => {
const n = kd(e);
if (m(n) && !rO(n) && !ke(zw.urls, n)) {
const o = _d(e),
r = o ? e.documentBaseURI.toAbsolute(o) : `themes/${n}/theme${t}.min.js`;
zw.load(n, r).catch(() => {
((e, t, n) => {
Vw(e, "ThemeLoadError", qw("theme", t, n));
})(e, r, n);
});
}
})(e, t),
((e, t) => {
const n = Sd(e);
if ("plugin" !== n && !ke(Ow.urls, n)) {
const o = Nd(e),
r = m(o) ? e.documentBaseURI.toAbsolute(o) : `models/${n}/model${t}.min.js`;
Ow.load(n, r).catch(() => {
((e, t, n) => {
Vw(e, "ModelLoadError", qw("model", t, n));
})(e, r, n);
});
}
})(e, t),
((e, t) => {
const n = cd(t),
o = ud(t);
if (!ya.hasCode(n) && "en" !== n) {
const r = Ge(o) ? o : `${t.editorManager.baseURL}/langs/${n}.min.js`;
e.add(r).catch(() => {
((e, t, n) => {
Vw(e, "LanguageLoadError", qw("language", t, n));
})(t, r, n);
});
}
})(n, e),
((e, t, n) => {
const o = sO(t, "default", n),
r = (e =>
I.from(od(e))
.filter(Ge)
.map(e => ({url: e, name: I.none()})))(t).orThunk(() => sO(t, nd(t), ""));
q(
(e => {
const t = [],
n = e => {
t.push(e);
};
for (let t = 0; t < e.length; t++) e[t].each(n);
return t;
})([o, r]),
n => {
e.add(n.url).catch(() => {
((e, t, n) => {
Vw(e, "IconsLoadError", qw("icons", t, n));
})(t, n.url, n.name.getOrUndefined());
});
}
);
})(n, e, t),
((e, t) => {
const n = (t, n) => {
Uw.load(t, n).catch(() => {
((e, t, n) => {
Vw(e, "PluginLoadError", qw("plugin", t, n));
})(e, n, t);
});
};
pe(qd(e), (t, o) => {
n(o, t), e.options.set("plugins", Vd(e).concat(o));
}),
q(Vd(e), e => {
!(e = Dt.trim(e)) || Uw.urls[e] || rO(e) || n(e, `plugins/${e}/plugin${t}.min.js`);
});
})(e, t),
n.loadQueue().then(o, o);
},
iO = Et().deviceType,
lO = iO.isPhone(),
dO = iO.isTablet(),
cO = e => {
if (y(e)) return [];
{
const t = p(e) ? e : e.split(/[ ,]/),
n = V(t, We);
return Y(n, Ge);
}
},
uO = (e, t) => {
const n = ((t, n) => {
const o = {},
r = {};
return ye(t, (t, n) => H(e, n), ve(o), ve(r)), {t: o, f: r};
})(t);
return (o = n.t), (r = n.f), {sections: N(o), options: N(r)};
var o, r;
},
mO = (e, t) => ke(e.sections(), t),
fO = (e, t) => ({
table_grid: !1,
object_resizing: !1,
resize: !1,
toolbar_mode: Ee(e, "toolbar_mode").getOr("scrolling"),
toolbar_sticky: !1,
...(t ? {menubar: !1} : {})
}),
gO = (e, t) => {
var n;
const o = null !== (n = t.external_plugins) && void 0 !== n ? n : {};
return e && e.external_plugins ? Dt.extend({}, e.external_plugins, o) : o;
},
pO = (e, t, n, o, r) => {
var s;
const a = e ? {mobile: fO(null !== (s = r.mobile) && void 0 !== s ? s : {}, t)} : {},
i = uO(["mobile"], aS(a, r)),
l = Dt.extend(
n,
o,
i.options(),
((e, t) => e && mO(t, "mobile"))(e, i)
? ((e, t, n = {}) => {
const o = e.sections(),
r = Ee(o, t).getOr({});
return Dt.extend({}, n, r);
})(i, "mobile")
: {},
{external_plugins: gO(o, i.options())}
);
return ((e, t, n, o) => {
const r = cO(n.forced_plugins),
s = cO(o.plugins),
a = ((e, t) => (mO(e, t) ? e.sections()[t] : {}))(t, "mobile"),
i = ((e, t, n, o) => (e && mO(t, "mobile") ? o : n))(e, t, s, a.plugins ? cO(a.plugins) : s),
l = ((e, t) => [...cO(e), ...cO(t)])(r, i);
return Dt.extend(o, {forced_plugins: r, plugins: l});
})(e, i, o, l);
},
hO = e => {
(e => {
const t = t => () => {
q("left,center,right,justify".split(","), n => {
t !== n && e.formatter.remove("align" + n);
}),
"none" !== t &&
((t, n) => {
e.formatter.toggle(t, void 0), e.nodeChanged();
})("align" + t);
};
e.editorCommands.addCommands({
JustifyLeft: t("left"),
JustifyCenter: t("center"),
JustifyRight: t("right"),
JustifyFull: t("justify"),
JustifyNone: t("none")
});
})(e),
(e => {
const t = t => () => {
const n = e.selection,
o = n.isCollapsed() ? [e.dom.getParent(n.getNode(), e.dom.isBlock)] : n.getSelectedBlocks();
return $(o, n => C(e.formatter.matchNode(n, t)));
};
e.editorCommands.addCommands(
{
JustifyLeft: t("alignleft"),
JustifyCenter: t("aligncenter"),
JustifyRight: t("alignright"),
JustifyFull: t("alignjustify")
},
"state"
);
})(e);
},
bO = (e, t) => {
const n = e.selection,
o = e.dom;
return /^ | $/.test(t)
? ((e, t, n, o) => {
const r = Cn(e.getRoot());
return (
(n = lh(r, Ji.fromRangeStart(t), o) ? n.replace(/^ /, "&nbsp;") : n.replace(/^&nbsp;/, " ")),
dh(r, Ji.fromRangeEnd(t), o)
? n.replace(/(&nbsp;| )(<br( \/)>)?$/, "&nbsp;")
: n.replace(/&nbsp;(<br( \/)?>)?$/, " ")
);
})(o, n.getRng(), t, e.schema)
: t;
},
vO = (e, t) => {
if (e.selection.isEditable()) {
const {content: n, details: o} = (e => {
if ("string" != typeof e) {
const t = Dt.extend({paste: e.paste, data: {paste: e.paste}}, e);
return {content: e.content, details: t};
}
return {content: e, details: {}};
})(t);
AC(e, {...o, content: bO(e, n), format: "html", set: !1, selection: !0}).each(t => {
const n = ((e, t, n) => sw(e).editor.insertContent(t, n))(e, t.content, o);
TC(e, n, t), e.addVisual();
});
}
},
yO = {"font-size": "size", "font-family": "face"},
CO = Zt("font"),
wO = e => (t, n) =>
I.from(n)
.map(Cn)
.filter(Kt)
.bind(n =>
((e, t, n) =>
jb(
Cn(n),
t => (t => fo(t, e).orThunk(() => (CO(t) ? Ee(yO, e).bind(e => nn(t, e)) : I.none())))(t),
e => _n(Cn(t), e)
))(e, t, n.dom).or(((e, t) => I.from(fa.DOM.getStyle(t, e, !0)))(e, n.dom))
)
.getOr(""),
xO = wO("font-size"),
EO = _(e => e.replace(/[\'\"\\]/g, "").replace(/,\s+/g, ","), wO("font-family")),
kO = e =>
$u(e.getBody()).bind(e => {
const t = e.container();
return I.from(dr(t) ? t.parentNode : t);
}),
_O = (e, t) =>
((e, t) =>
(e =>
I.from(e.selection.getRng()).bind(t => {
const n = e.getBody();
return t.startContainer === n && 0 === t.startOffset ? I.none() : I.from(e.selection.getStart(!0));
}))(e)
.orThunk(T(kO, e))
.map(Cn)
.filter(Kt)
.bind(t))(e, S(I.some, t)),
SO = (e, t) => {
if (/^[0-9.]+$/.test(t)) {
const n = parseInt(t, 10);
if (n >= 1 && n <= 7) {
const o = (e => Dt.explode(e.options.get("font_size_style_values")))(e),
r = (e => Dt.explode(e.options.get("font_size_classes")))(e);
return r.length > 0 ? r[n - 1] || t : o[n - 1] || t;
}
return t;
}
return t;
},
NO = e => {
const t = e.split(/\s*,\s*/);
return V(t, e => (-1 === e.indexOf(" ") || $e(e, '"') || $e(e, "'") ? e : `'${e}'`)).join(",");
},
RO = (e, t) => {
const n = e.dom,
o = e.selection.getRng(),
r = t ? e.selection.getStart() : e.selection.getEnd(),
s = t ? o.startContainer : o.endContainer,
a = kN(n, s);
if (!a || !a.isContentEditable) return;
const i = t ? ho : bo,
l = Wl(e);
((e, t, n, o) => {
const r = e.dom,
s = e => r.isBlock(e) && e.parentElement === n,
a = s(t) ? t : r.getParent(o, s, n);
return I.from(a).map(Cn);
})(e, r, a, s).each(t => {
const n = RN(e, s, t.dom, a, !1, l);
i(t, Cn(n)),
e.selection.setCursorLocation(n, 0),
e.dispatch("NewBlock", {newBlock: n}),
bN(e, "insertParagraph");
});
},
AO = e => {
hO(e),
(e => {
e.editorCommands.addCommands({
"Cut,Copy,Paste": t => {
const n = e.getDoc();
let o;
try {
n.execCommand(t);
} catch (e) {
o = !0;
}
if (("paste" !== t || n.queryCommandEnabled(t) || (o = !0), o || !n.queryCommandSupported(t))) {
let t = e.translate(
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead."
);
(Tt.os.isMacOS() || Tt.os.isiOS()) && (t = t.replace(/Ctrl\+/g, "\u2318+")),
e.notificationManager.open({text: t, type: "error"});
}
}
});
})(e),
(e => {
e.editorCommands.addCommands({
mceAddUndoLevel: () => {
e.undoManager.add();
},
mceEndUndoLevel: () => {
e.undoManager.add();
},
Undo: () => {
e.undoManager.undo();
},
Redo: () => {
e.undoManager.redo();
}
});
})(e),
(e => {
e.editorCommands.addCommands({
mceSelectNodeDepth: (t, n, o) => {
let r = 0;
e.dom.getParent(
e.selection.getNode(),
t => !er(t) || r++ !== o || (e.selection.select(t), !1),
e.getBody()
);
},
mceSelectNode: (t, n, o) => {
e.selection.select(o);
},
selectAll: () => {
const t = e.dom.getParent(e.selection.getStart(), br);
if (t) {
const n = e.dom.createRng();
n.selectNodeContents(t), e.selection.setRng(n);
}
}
});
})(e),
(e => {
e.editorCommands.addCommands({
mceCleanup: () => {
const t = e.selection.getBookmark();
e.setContent(e.getContent()), e.selection.moveToBookmark(t);
},
insertImage: (t, n, o) => {
vO(e, e.dom.createHTML("img", {src: o}));
},
insertHorizontalRule: () => {
e.execCommand("mceInsertContent", !1, "<hr>");
},
insertText: (t, n, o) => {
vO(e, e.dom.encode(o));
},
insertHTML: (t, n, o) => {
vO(e, o);
},
mceInsertContent: (t, n, o) => {
vO(e, o);
},
mceSetContent: (t, n, o) => {
e.setContent(o);
},
mceReplaceContent: (t, n, o) => {
e.execCommand(
"mceInsertContent",
!1,
o.replace(/\{\$selection\}/g, e.selection.getContent({format: "text"}))
);
},
mceNewDocument: () => {
e.setContent(ic(e));
}
});
})(e),
(e => {
const t = (t, n, o) => {
const r = m(o) ? {href: o} : o,
s = e.dom.getParent(e.selection.getNode(), "a");
f(r) &&
m(r.href) &&
((r.href = r.href.replace(/ /g, "%20")),
(s && r.href) || e.formatter.remove("link"),
r.href && e.formatter.apply("link", r, s));
};
e.editorCommands.addCommands({
unlink: () => {
if (e.selection.isEditable()) {
if (e.selection.isCollapsed()) {
const t = e.dom.getParent(e.selection.getStart(), "a");
return void (t && e.dom.remove(t, !0));
}
e.formatter.remove("link");
}
},
mceInsertLink: t,
createLink: t
});
})(e),
(e => {
e.editorCommands.addCommands({
Indent: () => {
(e => {
Lk(e, "indent");
})(e);
},
Outdent: () => {
Mk(e);
}
}),
e.editorCommands.addCommands({Outdent: () => Bk(e)}, "state");
})(e),
(e => {
e.editorCommands.addCommands({
InsertNewBlockBefore: () => {
(e => {
RO(e, !0);
})(e);
},
InsertNewBlockAfter: () => {
(e => {
RO(e, !1);
})(e);
}
});
})(e),
(e => {
e.editorCommands.addCommands({
insertParagraph: () => {
iR(UN, e);
},
mceInsertNewLine: (t, n, o) => {
lR(e, o);
},
InsertLineBreak: (t, n, o) => {
iR(KN, e);
}
});
})(e),
(e => {
(e => {
const t = (t, n) => {
e.formatter.toggle(t, n), e.nodeChanged();
};
e.editorCommands.addCommands({
"Bold,Italic,Underline,Strikethrough,Superscript,Subscript": e => {
t(e);
},
"ForeColor,HiliteColor": (e, n, o) => {
t(e, {value: o});
},
BackColor: (e, n, o) => {
t("hilitecolor", {value: o});
},
FontName: (t, n, o) => {
((e, t) => {
const n = SO(e, t);
e.formatter.toggle("fontname", {value: NO(n)}), e.nodeChanged();
})(e, o);
},
FontSize: (t, n, o) => {
((e, t) => {
e.formatter.toggle("fontsize", {value: SO(e, t)}), e.nodeChanged();
})(e, o);
},
LineHeight: (t, n, o) => {
((e, t) => {
e.formatter.toggle("lineheight", {value: String(t)}), e.nodeChanged();
})(e, o);
},
Lang: (e, n, o) => {
var r;
t(e, {value: o.code, customValue: null !== (r = o.customCode) && void 0 !== r ? r : null});
},
RemoveFormat: t => {
e.formatter.remove(t);
},
mceBlockQuote: () => {
t("blockquote");
},
FormatBlock: (e, n, o) => {
t(m(o) ? o : "p");
},
mceToggleFormat: (e, n, o) => {
t(o);
}
});
})(e),
(e => {
const t = t => e.formatter.match(t);
e.editorCommands.addCommands(
{
"Bold,Italic,Underline,Strikethrough,Superscript,Subscript": e => t(e),
mceBlockQuote: () => t("blockquote")
},
"state"
),
e.editorCommands.addQueryValueHandler("FontName", () =>
(e => _O(e, t => EO(e.getBody(), t.dom)).getOr(""))(e)
),
e.editorCommands.addQueryValueHandler("FontSize", () =>
(e => _O(e, t => xO(e.getBody(), t.dom)).getOr(""))(e)
),
e.editorCommands.addQueryValueHandler("LineHeight", () =>
(e =>
_O(e, t => {
const n = Cn(e.getBody()),
o = jb(t, e => fo(e, "line-height"), T(_n, n));
return o.getOrThunk(() => {
const e = parseFloat(uo(t, "line-height")),
n = parseFloat(uo(t, "font-size"));
return String(e / n);
});
}).getOr(""))(e)
);
})(e);
})(e),
(e => {
e.editorCommands.addCommands({
mceRemoveNode: (t, n, o) => {
const r = null != o ? o : e.selection.getNode();
if (r !== e.getBody()) {
const t = e.selection.getBookmark();
e.dom.remove(r, !0), e.selection.moveToBookmark(t);
}
},
mcePrint: () => {
e.getWin().print();
},
mceFocus: (t, n, o) => {
((e, t) => {
e.removed ||
(t
? $g(e)
: (e => {
const t = e.selection,
n = e.getBody();
let o = t.getRng();
e.quirks.refreshContentEditable(),
C(e.bookmark) &&
!jg(e) &&
Ag(e).each(t => {
e.selection.setRng(t), (o = t);
});
const r = ((e, t) => e.dom.getParent(t, t => "true" === e.dom.getContentEditable(t)))(
e,
t.getNode()
);
if (r && e.dom.isChildOf(r, n)) return zg(r), Ug(e, o), void $g(e);
e.inline || (Tt.browser.isOpera() || zg(n), e.getWin().focus()),
(Tt.browser.isFirefox() || e.inline) && (zg(n), Ug(e, o)),
$g(e);
})(e));
})(e, !0 === o);
},
mceToggleVisualAid: () => {
(e.hasVisual = !e.hasVisual), e.addVisual();
}
});
})(e);
},
TO = ["toggleview"],
OO = e => H(TO, e.toLowerCase());
class BO {
constructor(e) {
(this.commands = {state: {}, exec: {}, value: {}}), (this.editor = e);
}
execCommand(e, t = !1, n, o) {
const r = this.editor,
s = e.toLowerCase(),
a = null == o ? void 0 : o.skip_focus;
if (r.removed) return !1;
if (
("mcefocus" !== s &&
(/^(mceAddUndoLevel|mceEndUndoLevel)$/i.test(s) || a
? (e => {
Ag(e).each(t => e.selection.setRng(t));
})(r)
: r.focus()),
r.dispatch("BeforeExecCommand", {command: e, ui: t, value: n}).isDefaultPrevented())
)
return !1;
const i = this.commands.exec[s];
return !!w(i) && (i(s, t, n), r.dispatch("ExecCommand", {command: e, ui: t, value: n}), !0);
}
queryCommandState(e) {
if ((!OO(e) && this.editor.quirks.isHidden()) || this.editor.removed) return !1;
const t = e.toLowerCase(),
n = this.commands.state[t];
return !!w(n) && n(t);
}
queryCommandValue(e) {
if ((!OO(e) && this.editor.quirks.isHidden()) || this.editor.removed) return "";
const t = e.toLowerCase(),
n = this.commands.value[t];
return w(n) ? n(t) : "";
}
addCommands(e, t = "exec") {
const n = this.commands;
pe(e, (e, o) => {
q(o.toLowerCase().split(","), o => {
n[t][o] = e;
});
});
}
addCommand(e, t, n) {
const o = e.toLowerCase();
this.commands.exec[o] = (e, o, r) => t.call(null != n ? n : this.editor, o, r);
}
queryCommandSupported(e) {
const t = e.toLowerCase();
return !!this.commands.exec[t];
}
addQueryStateHandler(e, t, n) {
this.commands.state[e.toLowerCase()] = () => t.call(null != n ? n : this.editor);
}
addQueryValueHandler(e, t, n) {
this.commands.value[e.toLowerCase()] = () => t.call(null != n ? n : this.editor);
}
}
const PO = "data-mce-contenteditable",
DO = (e, t, n) => {
try {
e.getDoc().execCommand(t, !1, String(n));
} catch (e) {}
},
LO = (e, t) => {
e.dom.contentEditable = t ? "true" : "false";
},
MO = e => e.readonly,
IO = e => {
e.parser.addAttributeFilter("contenteditable", t => {
MO(e) &&
q(t, e => {
e.attr(PO, e.attr("contenteditable")), e.attr("contenteditable", "false");
});
}),
e.serializer.addAttributeFilter(PO, t => {
MO(e) &&
q(t, e => {
e.attr("contenteditable", e.attr(PO));
});
}),
e.serializer.addTempAttr(PO);
},
FO = ["copy"],
UO = Dt.makeMap(
"focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave wheel keydown keypress keyup input beforeinput contextmenu dragstart dragend dragover draggesture dragdrop drop drag submit compositionstart compositionend compositionupdate touchstart touchmove touchend touchcancel",
" "
);
class zO {
static isNative(e) {
return !!UO[e.toLowerCase()];
}
constructor(e) {
(this.bindings = {}),
(this.settings = e || {}),
(this.scope = this.settings.scope || this),
(this.toggleEvent = this.settings.toggleEvent || L);
}
fire(e, t) {
return this.dispatch(e, t);
}
dispatch(e, t) {
const n = e.toLowerCase(),
o = Zs(n, null != t ? t : {}, this.scope);
this.settings.beforeFire && this.settings.beforeFire(o);
const r = this.bindings[n];
if (r)
for (let e = 0, t = r.length; e < t; e++) {
const t = r[e];
if (!t.removed) {
if ((t.once && this.off(n, t.func), o.isImmediatePropagationStopped())) return o;
if (!1 === t.func.call(this.scope, o)) return o.preventDefault(), o;
}
}
return o;
}
on(e, t, n, o) {
if ((!1 === t && (t = L), t)) {
const r = {func: t, removed: !1};
o && Dt.extend(r, o);
const s = e.toLowerCase().split(" ");
let a = s.length;
for (; a--; ) {
const e = s[a];
let t = this.bindings[e];
t || ((t = []), this.toggleEvent(e, !0)), (t = n ? [r, ...t] : [...t, r]), (this.bindings[e] = t);
}
}
return this;
}
off(e, t) {
if (e) {
const n = e.toLowerCase().split(" ");
let o = n.length;
for (; o--; ) {
const r = n[o];
let s = this.bindings[r];
if (!r)
return (
pe(this.bindings, (e, t) => {
this.toggleEvent(t, !1), delete this.bindings[t];
}),
this
);
if (s) {
if (t) {
const e = K(s, e => e.func === t);
(s = e.fail),
(this.bindings[r] = s),
q(e.pass, e => {
e.removed = !0;
});
} else s.length = 0;
s.length || (this.toggleEvent(e, !1), delete this.bindings[r]);
}
}
} else
pe(this.bindings, (e, t) => {
this.toggleEvent(t, !1);
}),
(this.bindings = {});
return this;
}
once(e, t, n) {
return this.on(e, t, n, {once: !0});
}
has(e) {
e = e.toLowerCase();
const t = this.bindings[e];
return !(!t || 0 === t.length);
}
}
const jO = e => (
e._eventDispatcher ||
(e._eventDispatcher = new zO({
scope: e,
toggleEvent: (t, n) => {
zO.isNative(t) && e.toggleNativeEvent && e.toggleNativeEvent(t, n);
}
})),
e._eventDispatcher
),
HO = {
fire(e, t, n) {
return this.dispatch(e, t, n);
},
dispatch(e, t, n) {
const o = this;
if (o.removed && "remove" !== e && "detach" !== e) return Zs(e.toLowerCase(), null != t ? t : {}, o);
const r = jO(o).dispatch(e, t);
if (!1 !== n && o.parent) {
let t = o.parent();
for (; t && !r.isPropagationStopped(); ) t.dispatch(e, r, !1), (t = t.parent ? t.parent() : void 0);
}
return r;
},
on(e, t, n) {
return jO(this).on(e, t, n);
},
off(e, t) {
return jO(this).off(e, t);
},
once(e, t) {
return jO(this).once(e, t);
},
hasEventListeners(e) {
return jO(this).has(e);
}
},
$O = fa.DOM;
let VO;
const qO = (e, t) => {
if ("selectionchange" === t) return e.getDoc();
if (!e.inline && /^(?:mouse|touch|click|contextmenu|drop|dragover|dragend)/.test(t))
return e.getDoc().documentElement;
const n = xd(e);
return n ? (e.eventRoot || (e.eventRoot = $O.select(n)[0]), e.eventRoot) : e.getBody();
},
WO = (e, t, n) => {
(e => !e.hidden && !MO(e))(e)
? e.dispatch(t, n)
: MO(e) &&
((e, t) => {
if ((e => "click" === e.type)(t) && !Cf.metaKeyPressed(t)) {
const n = Cn(t.target);
((e, t) => oo(t, "a", t => _n(t, Cn(e.getBody()))).bind(e => nn(e, "href")))(e, n).each(n => {
if ((t.preventDefault(), /^#/.test(n))) {
const t = e.dom.select(`${n},[name="${je(n, "#")}"]`);
t.length && e.selection.scrollIntoView(t[0], !0);
} else
window.open(
n,
"_blank",
"rel=noopener noreferrer,menubar=yes,toolbar=yes,location=yes,status=yes,resizable=yes,scrollbars=yes"
);
});
} else (e => H(FO, e.type))(t) && e.dispatch(t.type, t);
})(e, n);
},
KO = (e, t) => {
if ((e.delegates || (e.delegates = {}), e.delegates[t] || e.removed)) return;
const n = qO(e, t);
if (xd(e)) {
if (
(VO ||
((VO = {}),
e.editorManager.on("removeEditor", () => {
e.editorManager.activeEditor ||
(VO &&
(pe(VO, (t, n) => {
e.dom.unbind(qO(e, n));
}),
(VO = null)));
})),
VO[t])
)
return;
const o = n => {
const o = n.target,
r = e.editorManager.get();
let s = r.length;
for (; s--; ) {
const e = r[s].getBody();
(e === o || $O.isChildOf(o, e)) && WO(r[s], t, n);
}
};
(VO[t] = o), $O.bind(n, t, o);
} else {
const o = n => {
WO(e, t, n);
};
$O.bind(n, t, o), (e.delegates[t] = o);
}
},
YO = {
...HO,
bindPendingEventDelegates() {
const e = this;
Dt.each(e._pendingNativeEvents, t => {
KO(e, t);
});
},
toggleNativeEvent(e, t) {
const n = this;
"focus" !== e &&
"blur" !== e &&
(n.removed ||
(t
? n.initialized
? KO(n, e)
: n._pendingNativeEvents
? n._pendingNativeEvents.push(e)
: (n._pendingNativeEvents = [e])
: n.initialized && n.delegates && (n.dom.unbind(qO(n, e), e, n.delegates[e]), delete n.delegates[e])));
},
unbindAllNativeEvents() {
const e = this,
t = e.getBody(),
n = e.dom;
e.delegates &&
(pe(e.delegates, (t, n) => {
e.dom.unbind(qO(e, n), n, t);
}),
delete e.delegates),
!e.inline && t && n && ((t.onload = null), n.unbind(e.getWin()), n.unbind(e.getDoc())),
n && (n.unbind(t), n.unbind(e.getContainer()));
}
},
GO = e =>
m(e)
? {value: e.split(/[ ,]/), valid: !0}
: E(e, m)
? {value: e, valid: !0}
: {valid: !1, message: "The value must be a string[] or a comma/space separated string."},
XO = (e, t) => e + (Xe(t.message) ? "" : `. ${t.message}`),
ZO = e => e.valid,
QO = (e, t, n = "") => {
const o = t(e);
return b(o) ? (o ? {value: e, valid: !0} : {valid: !1, message: n}) : o;
},
JO = ["design", "readonly"],
eB = (e, t, n, o) => {
const r = n[t.get()],
s = n[o];
try {
s.activate();
} catch (e) {
return void console.error(`problem while activating editor mode ${o}:`, e);
}
r.deactivate(),
r.editorReadOnly !== s.editorReadOnly &&
((e, t) => {
const n = Cn(e.getBody());
((e, t, n) => {
pn(e, t) && !n ? gn(e, t) : n && mn(e, t);
})(n, "mce-content-readonly", t),
t
? (e.selection.controlSelection.hideResizeRect(),
e._selectionOverrides.hideFakeCaret(),
(e => {
I.from(e.selection.getNode()).each(e => {
e.removeAttribute("data-mce-selected");
});
})(e),
(e.readonly = !0),
LO(n, !1),
q(zo(n, '*[contenteditable="true"]'), e => {
Jt(e, PO, "true"), LO(e, !1);
}))
: ((e.readonly = !1),
e.hasEditableRoot() && LO(n, !0),
q(zo(n, `*[${PO}="true"]`), e => {
rn(e, PO), LO(e, !0);
}),
DO(e, "StyleWithCSS", !1),
DO(e, "enableInlineTableEditing", !1),
DO(e, "enableObjectResizing", !1),
Hg(e) && e.focus(),
(e => {
e.selection.setRng(e.selection.getRng());
})(e),
e.nodeChanged());
})(e, s.editorReadOnly),
t.set(o),
((e, t) => {
e.dispatch("SwitchMode", {mode: t});
})(e, o);
},
tB = Dt.each,
nB = Dt.explode,
oB = {
f1: 112,
f2: 113,
f3: 114,
f4: 115,
f5: 116,
f6: 117,
f7: 118,
f8: 119,
f9: 120,
f10: 121,
f11: 122,
f12: 123
},
rB = Dt.makeMap("alt,ctrl,shift,meta,access"),
sB = e => {
const t = {},
n = Tt.os.isMacOS() || Tt.os.isiOS();
tB(nB(e.toLowerCase(), "+"), e => {
(e => e in rB)(e)
? (t[e] = !0)
: /^[0-9]{2,}$/.test(e)
? (t.keyCode = parseInt(e, 10))
: ((t.charCode = e.charCodeAt(0)), (t.keyCode = oB[e] || e.toUpperCase().charCodeAt(0)));
});
const o = [t.keyCode];
let r;
for (r in rB) t[r] ? o.push(r) : (t[r] = !1);
return (
(t.id = o.join(",")),
t.access && ((t.alt = !0), n ? (t.ctrl = !0) : (t.shift = !0)),
t.meta && (n ? (t.meta = !0) : ((t.ctrl = !0), (t.meta = !1))),
t
);
};
class aB {
constructor(e) {
(this.shortcuts = {}), (this.pendingPatterns = []), (this.editor = e);
const t = this;
e.on("keyup keypress keydown", e => {
(!t.hasModifier(e) && !t.isFunctionKey(e)) ||
e.isDefaultPrevented() ||
(tB(t.shortcuts, n => {
t.matchShortcut(e, n) &&
((t.pendingPatterns = n.subpatterns.slice(0)), "keydown" === e.type && t.executeShortcutAction(n));
}),
t.matchShortcut(e, t.pendingPatterns[0]) &&
(1 === t.pendingPatterns.length && "keydown" === e.type && t.executeShortcutAction(t.pendingPatterns[0]),
t.pendingPatterns.shift()));
});
}
add(e, t, n, o) {
const r = this,
s = r.normalizeCommandFunc(n);
return (
tB(nB(Dt.trim(e)), e => {
const n = r.createShortcut(e, t, s, o);
r.shortcuts[n.id] = n;
}),
!0
);
}
remove(e) {
const t = this.createShortcut(e);
return !!this.shortcuts[t.id] && (delete this.shortcuts[t.id], !0);
}
normalizeCommandFunc(e) {
const t = this,
n = e;
return "string" == typeof n
? () => {
t.editor.execCommand(n, !1, null);
}
: Dt.isArray(n)
? () => {
t.editor.execCommand(n[0], n[1], n[2]);
}
: n;
}
createShortcut(e, t, n, o) {
const r = Dt.map(nB(e, ">"), sB);
return (
(r[r.length - 1] = Dt.extend(r[r.length - 1], {func: n, scope: o || this.editor})),
Dt.extend(r[0], {desc: this.editor.translate(t), subpatterns: r.slice(1)})
);
}
hasModifier(e) {
return e.altKey || e.ctrlKey || e.metaKey;
}
isFunctionKey(e) {
return "keydown" === e.type && e.keyCode >= 112 && e.keyCode <= 123;
}
matchShortcut(e, t) {
return (
!!t &&
t.ctrl === e.ctrlKey &&
t.meta === e.metaKey &&
t.alt === e.altKey &&
t.shift === e.shiftKey &&
!!(e.keyCode === t.keyCode || (e.charCode && e.charCode === t.charCode)) &&
(e.preventDefault(), !0)
);
}
executeShortcutAction(e) {
return e.func ? e.func.call(e.scope) : null;
}
}
const iB = () => {
const e = (() => {
const e = {},
t = {},
n = {},
o = {},
r = {},
s = {},
a = {},
i = {},
l = (e, t) => (n, o) => {
e[n.toLowerCase()] = {...o, type: t};
};
return {
addButton: l(e, "button"),
addGroupToolbarButton: l(e, "grouptoolbarbutton"),
addToggleButton: l(e, "togglebutton"),
addMenuButton: l(e, "menubutton"),
addSplitButton: l(e, "splitbutton"),
addMenuItem: l(t, "menuitem"),
addNestedMenuItem: l(t, "nestedmenuitem"),
addToggleMenuItem: l(t, "togglemenuitem"),
addAutocompleter: l(n, "autocompleter"),
addContextMenu: l(r, "contextmenu"),
addContextToolbar: l(s, "contexttoolbar"),
addContextForm: l(s, "contextform"),
addSidebar: l(a, "sidebar"),
addView: l(i, "views"),
addIcon: (e, t) => (o[e.toLowerCase()] = t),
getAll: () => ({
buttons: e,
menuItems: t,
icons: o,
popups: n,
contextMenus: r,
contextToolbars: s,
sidebars: a,
views: i
})
};
})();
return {
addAutocompleter: e.addAutocompleter,
addButton: e.addButton,
addContextForm: e.addContextForm,
addContextMenu: e.addContextMenu,
addContextToolbar: e.addContextToolbar,
addIcon: e.addIcon,
addMenuButton: e.addMenuButton,
addMenuItem: e.addMenuItem,
addNestedMenuItem: e.addNestedMenuItem,
addSidebar: e.addSidebar,
addSplitButton: e.addSplitButton,
addToggleButton: e.addToggleButton,
addGroupToolbarButton: e.addGroupToolbarButton,
addToggleMenuItem: e.addToggleMenuItem,
addView: e.addView,
getAll: e.getAll
};
},
lB = fa.DOM,
dB = Dt.extend,
cB = Dt.each;
class uB {
constructor(e, t, n) {
(this.plugins = {}),
(this.contentCSS = []),
(this.contentStyles = []),
(this.loadedCSS = {}),
(this.isNotDirty = !1),
(this.composing = !1),
(this.destroyed = !1),
(this.hasHiddenInput = !1),
(this.iframeElement = null),
(this.initialized = !1),
(this.readonly = !1),
(this.removed = !1),
(this.startContent = ""),
(this._pendingNativeEvents = []),
(this._skinLoaded = !1),
(this._editableRoot = !0),
(this.editorManager = n),
(this.documentBaseUrl = n.documentBaseURL),
dB(this, YO);
const o = this;
(this.id = e), (this.hidden = !1);
const r = ((e, t) => pO(lO || dO, lO, t, e, t))(n.defaultOptions, t);
(this.options = ((e, t) => {
const n = {},
o = {},
r = (e, t, n) => {
const r = QO(t, n);
return ZO(r)
? ((o[e] = r.value), !0)
: (console.warn(XO(`Invalid value passed for the ${e} option`, r)), !1);
},
s = e => ke(n, e);
return {
register: (e, s) => {
const a = (e => m(e.processor))(s)
? (e => {
const t = (() => {
switch (e) {
case "array":
return p;
case "boolean":
return b;
case "function":
return w;
case "number":
return x;
case "object":
return f;
case "string":
return m;
case "string[]":
return GO;
case "object[]":
return e => E(e, f);
case "regexp":
return e => u(e, RegExp);
default:
return M;
}
})();
return n => QO(n, t, `The value must be a ${e}.`);
})(s.processor)
: s.processor,
i = ((e, t, n) => {
if (!v(t)) {
const o = QO(t, n);
if (ZO(o)) return o.value;
console.error(XO(`Invalid default value passed for the "${e}" option`, o));
}
})(e, s.default, a);
(n[e] = {...s, default: i, processor: a}),
Ee(o, e)
.orThunk(() => Ee(t, e))
.each(t => r(e, t, a));
},
isRegistered: s,
get: e =>
Ee(o, e)
.orThunk(() => Ee(n, e).map(e => e.default))
.getOrUndefined(),
set: (e, t) => {
if (s(e)) {
const o = n[e];
return o.immutable
? (console.error(`"${e}" is an immutable option and cannot be updated`), !1)
: r(e, t, o.processor);
}
return (
console.warn(
`"${e}" is not a registered option. Ensure the option has been registered before setting a value.`
),
!1
);
},
unset: e => {
const t = s(e);
return t && delete o[e], t;
},
isSet: e => ke(o, e)
};
})(0, r)),
(e => {
const t = e.options.register;
t("id", {processor: "string", default: e.id}),
t("selector", {processor: "string"}),
t("target", {processor: "object"}),
t("suffix", {processor: "string"}),
t("cache_suffix", {processor: "string"}),
t("base_url", {processor: "string"}),
t("referrer_policy", {processor: "string", default: ""}),
t("language_load", {processor: "boolean", default: !0}),
t("inline", {processor: "boolean", default: !1}),
t("iframe_attrs", {processor: "object", default: {}}),
t("doctype", {processor: "string", default: "<!DOCTYPE html>"}),
t("document_base_url", {processor: "string", default: e.documentBaseUrl}),
t("body_id", {processor: Fl(e, "tinymce"), default: "tinymce"}),
t("body_class", {processor: Fl(e), default: ""}),
t("content_security_policy", {processor: "string", default: ""}),
t("br_in_pre", {processor: "boolean", default: !0}),
t("forced_root_block", {
processor: e => {
const t = m(e) && Ge(e);
return t ? {value: e, valid: t} : {valid: !1, message: "Must be a non-empty string."};
},
default: "p"
}),
t("forced_root_block_attrs", {processor: "object", default: {}}),
t("newline_behavior", {
processor: e => {
const t = H(["block", "linebreak", "invert", "default"], e);
return t
? {value: e, valid: t}
: {valid: !1, message: "Must be one of: block, linebreak, invert or default."};
},
default: "default"
}),
t("br_newline_selector", {processor: "string", default: ".mce-toc h2,figcaption,caption"}),
t("no_newline_selector", {processor: "string", default: ""}),
t("keep_styles", {processor: "boolean", default: !0}),
t("end_container_on_empty_block", {
processor: e =>
b(e) || m(e) ? {valid: !0, value: e} : {valid: !1, message: "Must be boolean or a string"},
default: "blockquote"
}),
t("font_size_style_values", {
processor: "string",
default: "xx-small,x-small,small,medium,large,x-large,xx-large"
}),
t("font_size_legacy_values", {
processor: "string",
default: "xx-small,small,medium,large,x-large,xx-large,300%"
}),
t("font_size_classes", {processor: "string", default: ""}),
t("automatic_uploads", {processor: "boolean", default: !0}),
t("images_reuse_filename", {processor: "boolean", default: !1}),
t("images_replace_blob_uris", {processor: "boolean", default: !0}),
t("icons", {processor: "string", default: ""}),
t("icons_url", {processor: "string", default: ""}),
t("images_upload_url", {processor: "string", default: ""}),
t("images_upload_base_path", {processor: "string", default: ""}),
t("images_upload_credentials", {processor: "boolean", default: !1}),
t("images_upload_handler", {processor: "function"}),
t("language", {processor: "string", default: "en"}),
t("language_url", {processor: "string", default: ""}),
t("entity_encoding", {processor: "string", default: "named"}),
t("indent", {processor: "boolean", default: !0}),
t("indent_before", {
processor: "string",
default:
"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,details,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist"
}),
t("indent_after", {
processor: "string",
default:
"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,details,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist"
}),
t("indent_use_margin", {processor: "boolean", default: !1}),
t("indentation", {processor: "string", default: "40px"}),
t("content_css", {
processor: e => {
const t = !1 === e || m(e) || E(e, m);
return t
? m(e)
? {value: V(e.split(","), We), valid: t}
: p(e)
? {value: e, valid: t}
: !1 === e
? {value: [], valid: t}
: {value: e, valid: t}
: {valid: !1, message: "Must be false, a string or an array of strings."};
},
default: Dd(e) ? [] : ["default"]
}),
t("content_style", {processor: "string"}),
t("content_css_cors", {processor: "boolean", default: !1}),
t("font_css", {
processor: e => {
const t = m(e) || E(e, m);
return t
? {value: p(e) ? e : V(e.split(","), We), valid: t}
: {valid: !1, message: "Must be a string or an array of strings."};
},
default: []
}),
t("inline_boundaries", {processor: "boolean", default: !0}),
t("inline_boundaries_selector", {processor: "string", default: "a[href],code,span.mce-annotation"}),
t("object_resizing", {
processor: e => {
const t = b(e) || m(e);
return t
? !1 === e || Bl.isiPhone() || Bl.isiPad()
? {value: "", valid: t}
: {value: !0 === e ? "table,img,figure.image,div,video,iframe" : e, valid: t}
: {valid: !1, message: "Must be boolean or a string"};
},
default: !Pl
}),
t("resize_img_proportional", {processor: "boolean", default: !0}),
t("event_root", {processor: "string"}),
t("service_message", {processor: "string"}),
t("theme", {processor: e => !1 === e || m(e) || w(e), default: "silver"}),
t("theme_url", {processor: "string"}),
t("formats", {processor: "object"}),
t("format_empty_lines", {processor: "boolean", default: !1}),
t("format_noneditable_selector", {processor: "string", default: ""}),
t("preview_styles", {
processor: e => {
const t = !1 === e || m(e);
return t ? {value: !1 === e ? "" : e, valid: t} : {valid: !1, message: "Must be false or a string"};
},
default:
"font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow"
}),
t("custom_ui_selector", {processor: "string", default: ""}),
t("hidden_input", {processor: "boolean", default: !0}),
t("submit_patch", {processor: "boolean", default: !0}),
t("encoding", {processor: "string"}),
t("add_form_submit_trigger", {processor: "boolean", default: !0}),
t("add_unload_trigger", {processor: "boolean", default: !0}),
t("custom_undo_redo_levels", {processor: "number", default: 0}),
t("disable_nodechange", {processor: "boolean", default: !1}),
t("readonly", {processor: "boolean", default: !1}),
t("editable_root", {processor: "boolean", default: !0}),
t("plugins", {processor: "string[]", default: []}),
t("external_plugins", {processor: "object"}),
t("forced_plugins", {processor: "string[]"}),
t("model", {processor: "string", default: e.hasPlugin("rtc") ? "plugin" : "dom"}),
t("model_url", {processor: "string"}),
t("block_unsupported_drop", {processor: "boolean", default: !0}),
t("visual", {processor: "boolean", default: !0}),
t("visual_table_class", {processor: "string", default: "mce-item-table"}),
t("visual_anchor_class", {processor: "string", default: "mce-item-anchor"}),
t("iframe_aria_text", {processor: "string", default: "Rich Text Area. Press ALT-0 for help."}),
t("setup", {processor: "function"}),
t("init_instance_callback", {processor: "function"}),
t("url_converter", {processor: "function", default: e.convertURL}),
t("url_converter_scope", {processor: "object", default: e}),
t("urlconverter_callback", {processor: "function"}),
t("allow_conditional_comments", {processor: "boolean", default: !1}),
t("allow_html_data_urls", {processor: "boolean", default: !1}),
t("allow_svg_data_urls", {processor: "boolean"}),
t("allow_html_in_named_anchor", {processor: "boolean", default: !1}),
t("allow_script_urls", {processor: "boolean", default: !1}),
t("allow_unsafe_link_target", {processor: "boolean", default: !1}),
t("convert_fonts_to_spans", {processor: "boolean", default: !0, deprecated: !0}),
t("fix_list_elements", {processor: "boolean", default: !1}),
t("preserve_cdata", {processor: "boolean", default: !1}),
t("remove_trailing_brs", {processor: "boolean", default: !0}),
t("pad_empty_with_br", {processor: "boolean", default: !1}),
t("inline_styles", {processor: "boolean", default: !0, deprecated: !0}),
t("element_format", {processor: "string", default: "html"}),
t("entities", {processor: "string"}),
t("schema", {processor: "string", default: "html5"}),
t("convert_urls", {processor: "boolean", default: !0}),
t("relative_urls", {processor: "boolean", default: !0}),
t("remove_script_host", {processor: "boolean", default: !0}),
t("custom_elements", {processor: Il}),
t("extended_valid_elements", {processor: "string"}),
t("invalid_elements", {processor: "string"}),
t("invalid_styles", {processor: Il}),
t("valid_children", {processor: "string"}),
t("valid_classes", {processor: Il}),
t("valid_elements", {processor: "string"}),
t("valid_styles", {processor: Il}),
t("verify_html", {processor: "boolean", default: !0}),
t("auto_focus", {processor: e => m(e) || !0 === e}),
t("browser_spellcheck", {processor: "boolean", default: !1}),
t("protect", {processor: "array"}),
t("images_file_types", {processor: "string", default: "jpeg,jpg,jpe,jfi,jif,jfif,png,gif,bmp,webp"}),
t("deprecation_warnings", {processor: "boolean", default: !0}),
t("a11y_advanced_options", {processor: "boolean", default: !1}),
t("api_key", {processor: "string"}),
t("license_key", {processor: "string"}),
t("paste_block_drop", {processor: "boolean", default: !1}),
t("paste_data_images", {processor: "boolean", default: !0}),
t("paste_preprocess", {processor: "function"}),
t("paste_postprocess", {processor: "function"}),
t("paste_webkit_styles", {processor: "string", default: "none"}),
t("paste_remove_styles_if_webkit", {processor: "boolean", default: !0}),
t("paste_merge_formats", {processor: "boolean", default: !0}),
t("smart_paste", {processor: "boolean", default: !0}),
t("paste_as_text", {processor: "boolean", default: !1}),
t("paste_tab_spaces", {processor: "number", default: 4}),
t("text_patterns", {
processor: e =>
E(e, f) || !1 === e
? {value: Ol(!1 === e ? [] : e), valid: !0}
: {valid: !1, message: "Must be an array of objects or false."},
default: [
{start: "*", end: "*", format: "italic"},
{start: "**", end: "**", format: "bold"},
{start: "#", format: "h1", trigger: "space"},
{start: "##", format: "h2", trigger: "space"},
{start: "###", format: "h3", trigger: "space"},
{start: "####", format: "h4", trigger: "space"},
{start: "#####", format: "h5", trigger: "space"},
{start: "######", format: "h6", trigger: "space"},
{start: "1.", cmd: "InsertOrderedList", trigger: "space"},
{start: "*", cmd: "InsertUnorderedList", trigger: "space"},
{start: "-", cmd: "InsertUnorderedList", trigger: "space"},
{start: ">", cmd: "mceBlockQuote", trigger: "space"},
{start: "---", cmd: "InsertHorizontalRule", trigger: "space"}
]
}),
t("text_patterns_lookup", {
processor: e => {
return w(e)
? {
value:
((t = e),
e => {
const n = t(e);
return Ol(n);
}),
valid: !0
}
: {valid: !1, message: "Must be a single function"};
var t;
},
default: e => []
}),
t("noneditable_class", {processor: "string", default: "mceNonEditable"}),
t("editable_class", {processor: "string", default: "mceEditable"}),
t("noneditable_regexp", {
processor: e =>
E(e, Ll)
? {value: e, valid: !0}
: Ll(e)
? {value: [e], valid: !0}
: {valid: !1, message: "Must be a RegExp or an array of RegExp."},
default: []
}),
t("table_tab_navigation", {processor: "boolean", default: !0}),
t("highlight_on_focus", {processor: "boolean", default: !0}),
t("xss_sanitization", {processor: "boolean", default: !0}),
t("details_initial_state", {
processor: e => {
const t = H(["inherited", "collapsed", "expanded"], e);
return t
? {value: e, valid: t}
: {valid: !1, message: "Must be one of: inherited, collapsed, or expanded."};
},
default: "inherited"
}),
t("details_serialized_state", {
processor: e => {
const t = H(["inherited", "collapsed", "expanded"], e);
return t
? {value: e, valid: t}
: {valid: !1, message: "Must be one of: inherited, collapsed, or expanded."};
},
default: "inherited"
}),
t("init_content_sync", {processor: "boolean", default: !1}),
t("newdocument_content", {processor: "string", default: ""}),
t("sandbox_iframes", {processor: "boolean", default: !0}),
t("sandbox_iframes_exclusions", {
processor: "string[]",
default: [
"youtube.com",
"youtu.be",
"vimeo.com",
"player.vimeo.com",
"dailymotion.com",
"embed.music.apple.com",
"open.spotify.com",
"giphy.com",
"dai.ly",
"codepen.io"
]
}),
t("convert_unsafe_embeds", {processor: "boolean", default: !0}),
e.on("ScriptsLoaded", () => {
t("directionality", {processor: "string", default: ya.isRtl() ? "rtl" : void 0}),
t("placeholder", {processor: "string", default: Dl.getAttrib(e.getElement(), "placeholder")});
});
})(o);
const s = this.options.get;
s("deprecation_warnings") &&
((e, t) => {
((e, t) => {
const n = xw(e),
o = _w(t),
r = o.length > 0,
s = n.length > 0,
a = "mobile" === t.theme;
if (r || s || a) {
const e = "\n- ",
t = a ? `\n\nThemes:${e}mobile` : "",
i = r ? `\n\nPlugins:${e}${o.join(e)}` : "",
l = s ? `\n\nOptions:${e}${n.join(e)}` : "";
console.warn(
"The following deprecated features are currently enabled and have been removed in TinyMCE 7.0. These features will no longer work and should be removed from the TinyMCE configuration. See https://www.tiny.cloud/docs/tinymce/7/migration-from-6x/ for more information." +
t +
i +
l
);
}
})(e, t),
((e, t) => {
const n = Ew(e),
o = Sw(t),
r = o.length > 0,
s = n.length > 0;
if (r || s) {
const e = "\n- ",
t = r ? `\n\nPlugins:${e}${o.map(Nw).join(e)}` : "",
a = s ? `\n\nOptions:${e}${n.join(e)}` : "";
console.warn(
"The following deprecated features are currently enabled but will be removed soon." + t + a
);
}
})(e, t);
})(t, r);
const a = s("suffix");
a && (n.suffix = a), (this.suffix = n.suffix);
const i = s("base_url");
i && n._setBaseUrl(i), (this.baseUri = n.baseURI);
const l = dd(o);
l && (pa.ScriptLoader._setReferrerPolicy(l), fa.DOM.styleSheetLoader._setReferrerPolicy(l));
const d = $d(o);
C(d) && fa.DOM.styleSheetLoader._setContentCssCors(d),
(Ca.languageLoad = s("language_load")),
(Ca.baseURL = n.baseURL),
this.setDirty(!1),
(this.documentBaseURI = new cC(jl(o), {base_uri: this.baseUri})),
(this.baseURI = this.baseUri),
(this.inline = Dd(o)),
(this.hasVisual = Kd(o)),
(this.shortcuts = new aB(this)),
(this.editorCommands = new BO(this)),
AO(this);
const c = s("cache_suffix");
c && (Tt.cacheSuffix = c.replace(/^[\?\&]+/, "")),
(this.ui = {registry: iB(), styleSheetLoader: void 0, show: k, hide: k, setEnabled: k, isEnabled: M}),
(this.mode = (e => {
const t = Br("design"),
n = Br({
design: {activate: k, deactivate: k, editorReadOnly: !1},
readonly: {activate: k, deactivate: k, editorReadOnly: !0}
});
return (
(e => {
e.serializer
? IO(e)
: e.on("PreInit", () => {
IO(e);
});
})(e),
(e => {
e.on("ShowCaret", t => {
MO(e) && t.preventDefault();
}),
e.on("ObjectSelected", t => {
MO(e) && t.preventDefault();
});
})(e),
{
isReadOnly: () => MO(e),
set: o =>
((e, t, n, o) => {
if (o !== n.get()) {
if (!ke(t, o)) throw new Error(`Editor mode '${o}' is invalid`);
e.initialized ? eB(e, n, t, o) : e.on("init", () => eB(e, n, t, o));
}
})(e, n.get(), t, o),
get: () => t.get(),
register: (e, t) => {
n.set(
((e, t, n) => {
if (H(JO, t)) throw new Error(`Cannot override default mode ${t}`);
return {
...e,
[t]: {
...n,
deactivate: () => {
try {
n.deactivate();
} catch (e) {
console.error(`problem while deactivating editor mode ${t}:`, e);
}
}
}
};
})(n.get(), e, t)
);
}
}
);
})(o)),
n.dispatch("SetupEditor", {editor: this});
const g = Zd(o);
w(g) && g.call(o, o);
}
render() {
(e => {
const t = e.id;
ya.setCode(cd(e));
const n = () => {
oO.unbind(window, "ready", n), e.render();
};
if (!oa.Event.domLoaded) return void oO.bind(window, "ready", n);
if (!e.getElement()) return;
const o = Cn(e.getElement()),
r = sn(o);
e.on("remove", () => {
W(o.dom.attributes, e => rn(o, e.name)), en(o, r);
}),
(e.ui.styleSheetLoader = ((e, t) => rs.forElement(e, {contentCssCors: $d(t), referrerPolicy: dd(t)}))(o, e)),
Dd(e)
? (e.inline = !0)
: ((e.orgVisibility = e.getElement().style.visibility), (e.getElement().style.visibility = "hidden"));
const s = e.getElement().form || oO.getParent(t, "form");
s &&
((e.formElement = s),
Ld(e) &&
!lr(e.getElement()) &&
(oO.insertAfter(oO.create("input", {type: "hidden", name: t}), t), (e.hasHiddenInput = !0)),
(e.formEventDelegate = t => {
e.dispatch(t.type, t);
}),
oO.bind(s, "submit reset", e.formEventDelegate),
e.on("reset", () => {
e.resetContent();
}),
!Md(e) ||
s.submit.nodeType ||
s.submit.length ||
s._mceOldSubmit ||
((s._mceOldSubmit = s.submit),
(s.submit = () => (e.editorManager.triggerSave(), e.setDirty(!1), s._mceOldSubmit(s))))),
(e.windowManager = jw(e)),
(e.notificationManager = Fw(e)),
(e => "xml" === e.options.get("encoding"))(e) &&
e.on("GetContent", e => {
e.save && (e.content = oO.encode(e.content));
}),
Id(e) &&
e.on("submit", () => {
e.initialized && e.save();
}),
Fd(e) &&
((e._beforeUnload = () => {
!e.initialized || e.destroyed || e.isHidden() || e.save({format: "raw", no_events: !0, set_dirty: !1});
}),
e.editorManager.on("BeforeUnload", e._beforeUnload)),
e.editorManager.add(e),
aO(e, e.suffix);
})(this);
}
focus(e) {
this.execCommand("mceFocus", !1, e);
}
hasFocus() {
return jg(this);
}
translate(e) {
return ya.translate(e);
}
getParam(e, t, n) {
const o = this.options;
return (
o.isRegistered(e) ||
(C(n) ? o.register(e, {processor: n, default: t}) : o.register(e, {processor: M, default: t})),
o.isSet(e) || v(t) ? o.get(e) : t
);
}
hasPlugin(e, t) {
return !(!H(Vd(this), e) || (t && void 0 === Uw.get(e)));
}
nodeChanged(e) {
this._nodeChangeDispatcher.nodeChanged(e);
}
addCommand(e, t, n) {
this.editorCommands.addCommand(e, t, n);
}
addQueryStateHandler(e, t, n) {
this.editorCommands.addQueryStateHandler(e, t, n);
}
addQueryValueHandler(e, t, n) {
this.editorCommands.addQueryValueHandler(e, t, n);
}
addShortcut(e, t, n, o) {
this.shortcuts.add(e, t, n, o);
}
execCommand(e, t, n, o) {
return this.editorCommands.execCommand(e, t, n, o);
}
queryCommandState(e) {
return this.editorCommands.queryCommandState(e);
}
queryCommandValue(e) {
return this.editorCommands.queryCommandValue(e);
}
queryCommandSupported(e) {
return this.editorCommands.queryCommandSupported(e);
}
show() {
const e = this;
e.hidden &&
((e.hidden = !1),
e.inline ? (e.getBody().contentEditable = "true") : (lB.show(e.getContainer()), lB.hide(e.id)),
e.load(),
e.dispatch("show"));
}
hide() {
const e = this;
e.hidden ||
(e.save(),
e.inline
? ((e.getBody().contentEditable = "false"),
e === e.editorManager.focusedEditor && (e.editorManager.focusedEditor = null))
: (lB.hide(e.getContainer()), lB.setStyle(e.id, "display", e.orgDisplay)),
(e.hidden = !0),
e.dispatch("hide"));
}
isHidden() {
return this.hidden;
}
setProgressState(e, t) {
this.dispatch("ProgressState", {state: e, time: t});
}
load(e = {}) {
const t = this,
n = t.getElement();
if (t.removed) return "";
if (n) {
const o = {...e, load: !0},
r = lr(n) ? n.value : n.innerHTML,
s = t.setContent(r, o);
return o.no_events || t.dispatch("LoadContent", {...o, element: n}), s;
}
return "";
}
save(e = {}) {
const t = this;
let n = t.getElement();
if (!n || !t.initialized || t.removed) return "";
const o = {...e, save: !0, element: n};
let r = t.getContent(o);
const s = {...o, content: r};
if (
(s.no_events || t.dispatch("SaveContent", s),
"raw" === s.format && t.dispatch("RawSaveContent", s),
(r = s.content),
lr(n))
)
n.value = r;
else {
(!e.is_removing && t.inline) || (n.innerHTML = r);
const o = lB.getParent(t.id, "form");
o && cB(o.elements, e => e.name !== t.id || ((e.value = r), !1));
}
return (s.element = o.element = n = null), !1 !== s.set_dirty && t.setDirty(!1), r;
}
setContent(e, t) {
return hw(this, e, t);
}
getContent(e) {
return ((e, t = {}) => {
const n = ((e, t) => ({...e, format: t, get: !0, getInner: !0}))(t, t.format ? t.format : "html");
return NC(e, n).fold(R, t => {
const n = ((e, t) => sw(e).editor.getContent(t))(e, t);
return RC(e, n, t);
});
})(this, e);
}
insertContent(e, t) {
t && (e = dB({content: e}, t)), this.execCommand("mceInsertContent", !1, e);
}
resetContent(e) {
void 0 === e ? hw(this, this.startContent, {format: "raw"}) : hw(this, e),
this.undoManager.reset(),
this.setDirty(!1),
this.nodeChanged();
}
isDirty() {
return !this.isNotDirty;
}
setDirty(e) {
const t = !this.isNotDirty;
(this.isNotDirty = !e), e && e !== t && this.dispatch("dirty");
}
getContainer() {
const e = this;
return e.container || (e.container = e.editorContainer || lB.get(e.id + "_parent")), e.container;
}
getContentAreaContainer() {
return this.contentAreaContainer;
}
getElement() {
return this.targetElm || (this.targetElm = lB.get(this.id)), this.targetElm;
}
getWin() {
const e = this;
if (!e.contentWindow) {
const t = e.iframeElement;
t && (e.contentWindow = t.contentWindow);
}
return e.contentWindow;
}
getDoc() {
const e = this;
if (!e.contentDocument) {
const t = e.getWin();
t && (e.contentDocument = t.document);
}
return e.contentDocument;
}
getBody() {
var e, t;
const n = this.getDoc();
return null !== (t = null !== (e = this.bodyElement) && void 0 !== e ? e : null == n ? void 0 : n.body) &&
void 0 !== t
? t
: null;
}
convertURL(e, t, n) {
const o = this,
r = o.options.get,
s = Jd(o);
if (w(s)) return s.call(o, e, n, !0, t);
if (
!r("convert_urls") ||
"link" === n ||
(f(n) && "LINK" === n.nodeName) ||
0 === e.indexOf("file:") ||
0 === e.length
)
return e;
const a = new cC(e);
return "http" !== a.protocol && "https" !== a.protocol && "" !== a.protocol
? e
: r("relative_urls")
? o.documentBaseURI.toRelative(e)
: (e = o.documentBaseURI.toAbsolute(e, r("remove_script_host")));
}
addVisual(e) {
((e, t) => {
((e, t) => {
aw(e).editor.addVisual(t);
})(e, t);
})(this, e);
}
setEditableRoot(e) {
((e, t) => {
e._editableRoot !== t &&
((e._editableRoot = t),
e.readonly || ((e.getBody().contentEditable = String(e.hasEditableRoot())), e.nodeChanged()),
((e, t) => {
e.dispatch("EditableRootStateChange", {state: t});
})(e, t));
})(this, e);
}
hasEditableRoot() {
return this._editableRoot;
}
remove() {
(e => {
if (!e.removed) {
const {_selectionOverrides: t, editorUpload: n} = e,
o = e.getBody(),
r = e.getElement();
o && e.save({is_removing: !0}),
(e.removed = !0),
e.unbindAllNativeEvents(),
e.hasHiddenInput && C(null == r ? void 0 : r.nextSibling) && Rw.remove(r.nextSibling),
(e => {
e.dispatch("remove");
})(e),
e.editorManager.remove(e),
!e.inline &&
o &&
(e => {
Rw.setStyle(e.id, "display", e.orgDisplay);
})(e),
(e => {
e.dispatch("detach");
})(e),
Rw.remove(e.getContainer()),
Aw(t),
Aw(n),
e.destroy();
}
})(this);
}
destroy(e) {
((e, t) => {
const {selection: n, dom: o} = e;
e.destroyed ||
(t || e.removed
? (t ||
(e.editorManager.off("beforeunload", e._beforeUnload),
e.theme && e.theme.destroy && e.theme.destroy(),
Aw(n),
Aw(o)),
(e => {
const t = e.formElement;
t &&
(t._mceOldSubmit && ((t.submit = t._mceOldSubmit), delete t._mceOldSubmit),
Rw.unbind(t, "submit reset", e.formEventDelegate));
})(e),
(e => {
const t = e;
(t.contentAreaContainer = t.formElement = t.container = t.editorContainer = null),
(t.bodyElement = t.contentDocument = t.contentWindow = null),
(t.iframeElement = t.targetElm = null);
const n = e.selection;
if (n) {
const e = n.dom;
t.selection = n.win = n.dom = e.doc = null;
}
})(e),
(e.destroyed = !0))
: e.remove());
})(this, e);
}
uploadImages() {
return this.editorUpload.uploadImages();
}
_scanForImages() {
return this.editorUpload.scanForImages();
}
}
const mB = fa.DOM,
fB = Dt.each;
let gB,
pB = !1,
hB = [];
const bB = e => {
const t = e.type;
fB(wB.get(), n => {
switch (t) {
case "scroll":
n.dispatch("ScrollWindow", e);
break;
case "resize":
n.dispatch("ResizeWindow", e);
}
});
},
vB = e => {
if (e !== pB) {
const t = fa.DOM;
e
? (t.bind(window, "resize", bB), t.bind(window, "scroll", bB))
: (t.unbind(window, "resize", bB), t.unbind(window, "scroll", bB)),
(pB = e);
}
},
yB = e => {
const t = hB;
return (
(hB = Y(hB, t => e !== t)),
wB.activeEditor === e && (wB.activeEditor = hB.length > 0 ? hB[0] : null),
wB.focusedEditor === e && (wB.focusedEditor = null),
t.length !== hB.length
);
},
CB = "CSS1Compat" !== document.compatMode,
wB = {
...HO,
baseURI: null,
baseURL: null,
defaultOptions: {},
documentBaseURL: null,
suffix: null,
majorVersion: "7",
minorVersion: "1.0",
releaseDate: "2024-05-08",
i18n: ya,
activeEditor: null,
focusedEditor: null,
setup() {
const e = this;
let t = "",
n = "",
o = cC.getDocumentBaseUrl(document.location);
/^[^:]+:\/\/\/?[^\/]+\//.test(o) &&
((o = o.replace(/[\?#].*$/, "").replace(/[\/\\][^\/]+$/, "")), /[\/\\]$/.test(o) || (o += "/"));
const r = window.tinymce || window.tinyMCEPreInit;
if (r) (t = r.base || r.baseURL), (n = r.suffix);
else {
const e = document.getElementsByTagName("script");
for (let o = 0; o < e.length; o++) {
const r = e[o].src || "";
if ("" === r) continue;
const s = r.substring(r.lastIndexOf("/"));
if (/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(r)) {
-1 !== s.indexOf(".min") && (n = ".min"), (t = r.substring(0, r.lastIndexOf("/")));
break;
}
}
if (!t && document.currentScript) {
const e = document.currentScript.src;
-1 !== e.indexOf(".min") && (n = ".min"), (t = e.substring(0, e.lastIndexOf("/")));
}
}
var s;
(e.baseURL = new cC(o).toAbsolute(t)),
(e.documentBaseURL = o),
(e.baseURI = new cC(e.baseURL)),
(e.suffix = n),
(s = e).on("AddEditor", T(Ig, s)),
s.on("RemoveEditor", T(Fg, s));
},
overrideDefaults(e) {
const t = e.base_url;
t && this._setBaseUrl(t);
const n = e.suffix;
n && (this.suffix = n), (this.defaultOptions = e);
const o = e.plugin_base_urls;
void 0 !== o &&
pe(o, (e, t) => {
Ca.PluginManager.urls[t] = e;
});
},
init(e) {
const t = this;
let n;
const o = Dt.makeMap(
"area base basefont br col frame hr img input isindex link meta param embed source wbr track colgroup option table tbody tfoot thead tr th td script noscript style textarea video audio iframe object menu",
" "
);
let r = e => {
n = e;
};
const s = () => {
let n = 0;
const a = [];
let i;
mB.unbind(window, "ready", s),
(n => {
const o = e.onpageload;
o && o.apply(t, []);
})(),
(i = me(
(e =>
Tt.browser.isIE() || Tt.browser.isEdge()
? (Ww(
"TinyMCE does not support the browser you are using. For a list of supported browsers please see: https://www.tiny.cloud/docs/tinymce/7/support/#supportedwebbrowsers"
),
[])
: CB
? (Ww(
"Failed to initialize the editor as the document is not in standards mode. TinyMCE requires standards mode."
),
[])
: m(e.selector)
? mB.select(e.selector)
: C(e.target)
? [e.target]
: [])(e)
)),
Dt.each(i, e => {
var n;
(n = t.get(e.id)) &&
n.initialized &&
!(n.getContainer() || n.getBody()).parentNode &&
(yB(n), n.unbindAllNativeEvents(), n.destroy(!0), (n.removed = !0));
}),
(i = Dt.grep(i, e => !t.get(e.id))),
0 === i.length
? r([])
: fB(i, s => {
((e, t) => e.inline && t.tagName.toLowerCase() in o)(e, s)
? Ww("Could not initialize inline editor on invalid inline target element", s)
: ((e, o, s) => {
const l = new uB(e, o, t);
a.push(l),
l.on("init", () => {
++n === i.length && r(a);
}),
(l.targetElm = l.targetElm || s),
l.render();
})(
(e => {
let t = e.id;
return (
t ||
((t = Ee(e, "name")
.filter(e => !mB.get(e))
.getOrThunk(mB.uniqueId)),
e.setAttribute("id", t)),
t
);
})(s),
e,
s
);
});
};
return (
mB.bind(window, "ready", s),
new Promise(e => {
n
? e(n)
: (r = t => {
e(t);
});
})
);
},
get(e) {
return 0 === arguments.length
? hB.slice(0)
: m(e)
? Q(hB, t => t.id === e).getOr(null)
: x(e) && hB[e]
? hB[e]
: null;
},
add(e) {
const t = this,
n = t.get(e.id);
return (
n === e ||
(null === n && hB.push(e),
vB(!0),
(t.activeEditor = e),
t.dispatch("AddEditor", {editor: e}),
gB ||
((gB = e => {
const n = t.dispatch("BeforeUnload");
if (n.returnValue) return e.preventDefault(), (e.returnValue = n.returnValue), n.returnValue;
}),
window.addEventListener("beforeunload", gB))),
e
);
},
createEditor(e, t) {
return this.add(new uB(e, t, this));
},
remove(e) {
const t = this;
let n;
if (e) {
if (!m(e))
return (
(n = e),
h(t.get(n.id))
? null
: (yB(n) && t.dispatch("RemoveEditor", {editor: n}),
0 === hB.length && window.removeEventListener("beforeunload", gB),
n.remove(),
vB(hB.length > 0),
n)
);
fB(mB.select(e), e => {
(n = t.get(e.id)), n && t.remove(n);
});
} else for (let e = hB.length - 1; e >= 0; e--) t.remove(hB[e]);
},
execCommand(e, t, n) {
var o;
const r = this,
s = f(n) ? (null !== (o = n.id) && void 0 !== o ? o : n.index) : n;
switch (e) {
case "mceAddEditor":
if (!r.get(s)) {
const e = n.options;
new uB(s, e, r).render();
}
return !0;
case "mceRemoveEditor": {
const e = r.get(s);
return e && e.remove(), !0;
}
case "mceToggleEditor": {
const e = r.get(s);
return e ? (e.isHidden() ? e.show() : e.hide(), !0) : (r.execCommand("mceAddEditor", !1, n), !0);
}
}
return !!r.activeEditor && r.activeEditor.execCommand(e, t, n);
},
triggerSave: () => {
fB(hB, e => {
e.save();
});
},
addI18n: (e, t) => {
ya.add(e, t);
},
translate: e => ya.translate(e),
setActive(e) {
const t = this.activeEditor;
this.activeEditor !== e &&
(t && t.dispatch("deactivate", {relatedTarget: e}), e.dispatch("activate", {relatedTarget: t})),
(this.activeEditor = e);
},
_setBaseUrl(e) {
(this.baseURL = new cC(this.documentBaseURL).toAbsolute(e.replace(/\/+$/, ""))),
(this.baseURI = new cC(this.baseURL));
}
};
wB.setup();
const xB = (() => {
const e = Dr();
return {
FakeClipboardItem: e => ({items: e, types: fe(e), getType: t => Ee(e, t).getOrUndefined()}),
write: t => {
e.set(t);
},
read: () => e.get().getOrUndefined(),
clear: e.clear
};
})(),
EB = Math.min,
kB = Math.max,
_B = Math.round,
SB = (e, t, n) => {
let o = t.x,
r = t.y;
const s = e.w,
a = e.h,
i = t.w,
l = t.h,
d = (n || "").split("");
return (
"b" === d[0] && (r += l),
"r" === d[1] && (o += i),
"c" === d[0] && (r += _B(l / 2)),
"c" === d[1] && (o += _B(i / 2)),
"b" === d[3] && (r -= a),
"r" === d[4] && (o -= s),
"c" === d[3] && (r -= _B(a / 2)),
"c" === d[4] && (o -= _B(s / 2)),
NB(o, r, s, a)
);
},
NB = (e, t, n, o) => ({x: e, y: t, w: n, h: o}),
RB = {
inflate: (e, t, n) => NB(e.x - t, e.y - n, e.w + 2 * t, e.h + 2 * n),
relativePosition: SB,
findBestRelativePosition: (e, t, n, o) => {
for (let r = 0; r < o.length; r++) {
const s = SB(e, t, o[r]);
if (s.x >= n.x && s.x + s.w <= n.w + n.x && s.y >= n.y && s.y + s.h <= n.h + n.y) return o[r];
}
return null;
},
intersect: (e, t) => {
const n = kB(e.x, t.x),
o = kB(e.y, t.y),
r = EB(e.x + e.w, t.x + t.w),
s = EB(e.y + e.h, t.y + t.h);
return r - n < 0 || s - o < 0 ? null : NB(n, o, r - n, s - o);
},
clamp: (e, t, n) => {
let o = e.x,
r = e.y,
s = e.x + e.w,
a = e.y + e.h;
const i = t.x + t.w,
l = t.y + t.h,
d = kB(0, t.x - o),
c = kB(0, t.y - r),
u = kB(0, s - i),
m = kB(0, a - l);
return (
(o += d), (r += c), n && ((s += d), (a += c), (o -= u), (r -= m)), (s -= u), (a -= m), NB(o, r, s - o, a - r)
);
},
create: NB,
fromClientRect: e => NB(e.left, e.top, e.width, e.height)
},
AB = (() => {
const e = {},
t = {},
n = {};
return {
load: (n, o) => {
const r = `Script at URL "${o}" failed to load`,
s = `Script at URL "${o}" did not call \`tinymce.Resource.add('${n}', data)\` within 1 second`;
if (void 0 !== e[n]) return e[n];
{
const a = new Promise((e, a) => {
const i = ((e, t, n = 1e3) => {
let o = !1,
r = null;
const s =
e =>
(...t) => {
o || ((o = !0), null !== r && (clearTimeout(r), (r = null)), e.apply(null, t));
},
a = s(e),
i = s(t);
return {
start: (...e) => {
o || null !== r || (r = setTimeout(() => i.apply(null, e), n));
},
resolve: a,
reject: i
};
})(e, a);
(t[n] = i.resolve),
pa.ScriptLoader.loadScript(o).then(
() => i.start(s),
() => i.reject(r)
);
});
return (e[n] = a), a;
}
},
add: (o, r) => {
void 0 !== t[o] && (t[o](r), delete t[o]), (e[o] = Promise.resolve(r)), (n[o] = r);
},
has: e => e in n,
get: e => n[e],
unload: t => {
delete e[t], delete n[t];
}
};
})();
let TB;
try {
const e = "__storage_test__";
(TB = window.localStorage), TB.setItem(e, e), TB.removeItem(e);
} catch (e) {
TB = (() => {
let e = {},
t = [];
const n = {
getItem: t => e[t] || null,
setItem: (n, o) => {
t.push(n), (e[n] = String(o));
},
key: e => t[e],
removeItem: n => {
(t = t.filter(e => e === n)), delete e[n];
},
clear: () => {
(t = []), (e = {});
},
length: 0
};
return Object.defineProperty(n, "length", {get: () => t.length, configurable: !1, enumerable: !1}), n;
})();
}
const OB = {
geom: {Rect: RB},
util: {
Delay: Og,
Tools: Dt,
VK: Cf,
URI: cC,
EventDispatcher: zO,
Observable: HO,
I18n: ya,
LocalStorage: TB,
ImageUploader: e => {
const t = Xw(),
n = ex(e, t);
return {upload: (t, o = !0) => n.upload(t, o ? Jw(e) : void 0)};
}
},
dom: {
EventUtils: oa,
TreeWalker: Vo,
TextSeeker: za,
DOMUtils: fa,
ScriptLoader: pa,
RangeUtils: Qf,
Serializer: pw,
StyleSheetLoader: os,
ControlSelection: _f,
BookmarkManager: uf,
Selection: mw,
Event: oa.Event
},
html: {Styles: Ys, Entities: ws, Node: ep, Schema: Fs, DomParser: kC, Writer: vp, Serializer: yp},
Env: Tt,
AddOnManager: Ca,
Annotator: cf,
Formatter: mx,
UndoManager: gx,
EditorCommands: BO,
WindowManager: jw,
NotificationManager: Fw,
EditorObservable: YO,
Shortcuts: aB,
Editor: uB,
FocusManager: Tg,
EditorManager: wB,
DOM: fa.DOM,
ScriptLoader: pa.ScriptLoader,
PluginManager: Uw,
ThemeManager: zw,
ModelManager: Ow,
IconManager: Tw,
Resource: AB,
FakeClipboard: xB,
trim: Dt.trim,
isArray: Dt.isArray,
is: Dt.is,
toArray: Dt.toArray,
makeMap: Dt.makeMap,
each: Dt.each,
map: Dt.map,
grep: Dt.grep,
inArray: Dt.inArray,
extend: Dt.extend,
walk: Dt.walk,
resolve: Dt.resolve,
explode: Dt.explode,
_addCacheSuffix: Dt._addCacheSuffix
},
BB = Dt.extend(wB, OB);
(e => {
(window.tinymce = e), (window.tinyMCE = e);
})(BB),
(e => {
if ("object" == typeof module)
try {
module.exports = e;
} catch (e) {}
})(BB);
})();