diff --git a/assets/build-dist.js b/assets/build-dist.js
new file mode 100644
index 00000000..940e95d4
--- /dev/null
+++ b/assets/build-dist.js
@@ -0,0 +1 @@
+import './scripts/admin-cms';
diff --git a/assets/dist/cms-bundle.min.js b/assets/dist/cms-bundle.min.js
new file mode 100644
index 00000000..2161f6c3
--- /dev/null
+++ b/assets/dist/cms-bundle.min.js
@@ -0,0 +1,15612 @@
+(() => {
+ var e = {
+ 199: e => {
+ !function () {
+ "use strict";
+ var t = 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
+ }, n = function (e) {
+ return {eq: e}
+ }, o = n((function (e, t) {
+ return e === t
+ })), r = function (e) {
+ return n((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
+ }))
+ }, a = function (e, t) {
+ return function (e, t) {
+ return n((function (n, o) {
+ return e.eq(t(n), t(o))
+ }))
+ }(r(e), (function (e) {
+ return function (e, t) {
+ return Array.prototype.slice.call(e).sort(t)
+ }(e, t)
+ }))
+ }, s = function (e) {
+ return n((function (t, n) {
+ var r = Object.keys(t), s = Object.keys(n);
+ if (!a(o).eq(r, s)) return !1;
+ for (var i = r.length, l = 0; l < i; l++) {
+ var d = r[l];
+ if (!e.eq(t[d], n[d])) return !1
+ }
+ return !0
+ }))
+ }, i = n((function (e, n) {
+ if (e === n) return !0;
+ var o = t(e);
+ return o === t(n) && (function (e) {
+ return -1 !== ["undefined", "boolean", "number", "string", "function", "xml", "null"].indexOf(e)
+ }(o) ? e === n : "array" === o ? r(i).eq(e, n) : "object" === o && s(i).eq(e, n))
+ }));
+ const l = Object.getPrototypeOf, d = (e, t, n) => {
+ var o;
+ return !!n(e, t.prototype) || (null === (o = e.constructor) || void 0 === o ? void 0 : o.name) === t.name
+ }, c = e => t => (e => {
+ const t = typeof e;
+ return null === e ? "null" : "object" === t && Array.isArray(e) ? "array" : "object" === t && d(e, String, ((e, t) => t.isPrototypeOf(e))) ? "string" : t
+ })(t) === e, u = e => t => typeof t === e, m = e => t => e === t,
+ f = (e, t) => p(e) && d(e, t, ((e, t) => l(e) === t)), g = c("string"), p = c("object"),
+ h = e => f(e, Object), v = c("array"), b = m(null), y = u("boolean"), C = m(void 0),
+ E = e => null == e, w = e => !E(e), _ = u("function"), S = u("number"), k = (e, t) => {
+ if (v(e)) {
+ for (let n = 0, o = e.length; n < o; ++n) if (!t(e[n])) return !1;
+ return !0
+ }
+ return !1
+ }, x = () => {
+ }, A = (e, t) => (...n) => e(t.apply(null, n)), N = (e, t) => n => e(t(n)), T = e => () => e,
+ R = e => e, D = (e, t) => e === t;
+
+ function L(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(), I = e => {
+ e()
+ }, M = T(!1), F = T(!0);
+
+ class U {
+ constructor(e, t) {
+ this.tag = e, this.value = t
+ }
+
+ static some(e) {
+ return new U(!0, e)
+ }
+
+ static none() {
+ return U.singletonNone
+ }
+
+ fold(e, t) {
+ return this.tag ? t(this.value) : e()
+ }
+
+ isSome() {
+ return this.tag
+ }
+
+ isNone() {
+ return !this.tag
+ }
+
+ map(e) {
+ return this.tag ? U.some(e(this.value)) : U.none()
+ }
+
+ bind(e) {
+ return this.tag ? e(this.value) : U.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 : U.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 w(e) ? U.some(e) : U.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()"
+ }
+ }
+
+ U.singletonNone = new U(!1);
+ const q = Array.prototype.slice, j = Array.prototype.indexOf, H = Array.prototype.push,
+ z = (e, t) => j.call(e, t), $ = (e, t) => z(e, t) > -1, V = (e, t) => {
+ for (let n = 0, o = e.length; n < o; n++) {
+ if (t(e[n], n)) return !0
+ }
+ return !1
+ }, W = (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
+ }, K = (e, t) => {
+ for (let n = 0, o = e.length; n < o; n++) {
+ t(e[n], n)
+ }
+ }, Y = (e, t) => {
+ for (let n = e.length - 1; n >= 0; n--) {
+ t(e[n], n)
+ }
+ }, G = (e, t) => {
+ const n = [], o = [];
+ for (let r = 0, a = e.length; r < a; r++) {
+ const a = e[r];
+ (t(a, r) ? n : o).push(a)
+ }
+ return {pass: n, fail: o}
+ }, X = (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
+ }, J = (e, t, n) => (Y(e, ((e, o) => {
+ n = t(n, e, o)
+ })), n), Q = (e, t, n) => (K(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 U.some(r);
+ if (n(r, o)) break
+ }
+ return U.none()
+ }, ee = (e, t) => Z(e, t, M), te = (e, t) => {
+ for (let n = 0, o = e.length; n < o; n++) {
+ if (t(e[n], n)) return U.some(n)
+ }
+ return U.none()
+ }, ne = e => {
+ const t = [];
+ for (let n = 0, o = e.length; n < o; ++n) {
+ if (!v(e[n])) throw new Error("Arr.flatten item " + n + " was not an array, input: " + e);
+ H.apply(t, e[n])
+ }
+ return t
+ }, oe = (e, t) => ne(W(e, t)), re = (e, t) => {
+ for (let n = 0, o = e.length; n < o; ++n) {
+ if (!0 !== t(e[n], n)) return !1
+ }
+ return !0
+ }, ae = e => {
+ const t = q.call(e, 0);
+ return t.reverse(), t
+ }, se = (e, t) => X(e, (e => !$(t, e))), ie = (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
+ }, le = (e, t) => {
+ const n = q.call(e, 0);
+ return n.sort(t), n
+ }, de = (e, t) => t >= 0 && t < e.length ? U.some(e[t]) : U.none(), ce = e => de(e, 0),
+ ue = e => de(e, e.length - 1), me = _(Array.from) ? Array.from : e => q.call(e), fe = (e, t) => {
+ for (let n = 0; n < e.length; n++) {
+ const o = t(e[n], n);
+ if (o.isSome()) return o
+ }
+ return U.none()
+ }, ge = Object.keys, pe = Object.hasOwnProperty, he = (e, t) => {
+ const n = ge(e);
+ for (let o = 0, r = n.length; o < r; o++) {
+ const r = n[o];
+ t(e[r], r)
+ }
+ }, ve = (e, t) => be(e, ((e, n) => ({k: n, v: t(e, n)}))), be = (e, t) => {
+ const n = {};
+ return he(e, ((e, o) => {
+ const r = t(e, o);
+ n[r.k] = r.v
+ })), n
+ }, ye = e => (t, n) => {
+ e[n] = t
+ }, Ce = (e, t, n, o) => {
+ he(e, ((e, r) => {
+ (t(e, r) ? n : o)(e, r)
+ }))
+ }, Ee = (e, t) => {
+ const n = {};
+ return Ce(e, t, ye(n), x), n
+ }, we = (e, t) => {
+ const n = [];
+ return he(e, ((e, o) => {
+ n.push(t(e, o))
+ })), n
+ }, _e = e => we(e, R), Se = (e, t) => ke(e, t) ? U.from(e[t]) : U.none(), ke = (e, t) => pe.call(e, t),
+ xe = (e, t) => ke(e, t) && void 0 !== e[t] && null !== e[t], Ae = e => {
+ const t = {};
+ return K(e, (e => {
+ t[e] = {}
+ })), ge(t)
+ }, Ne = e => void 0 !== e.length, Te = Array.isArray, Re = (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
+ }, De = (e, t) => {
+ const n = [];
+ return Re(e, ((o, r) => {
+ n.push(t(o, r, e))
+ })), n
+ }, Le = (e, t) => {
+ const n = [];
+ return Re(e, ((o, r) => {
+ t && !t(o, r, e) || n.push(o)
+ })), n
+ }, Oe = (e, t, n, o) => {
+ let r = C(n) ? e[0] : n;
+ for (let n = 0; n < e.length; n++) r = t.call(o, r, e[n], n);
+ return r
+ }, Be = (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
+ }, Pe = e => e[e.length - 1], Ie = e => {
+ let t, n = !1;
+ return (...o) => (n || (n = !0, t = e.apply(null, o)), t)
+ }, Me = () => Fe(0, 0), Fe = (e, t) => ({major: e, minor: t}), Ue = {
+ nu: Fe, 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 Fe(o(1), o(2))
+ })(e, n)
+ }, unknown: Me
+ }, qe = (e, t) => {
+ const n = String(t).toLowerCase();
+ return ee(e, (e => e.search(n)))
+ }, je = (e, t, n) => "" === t || e.length >= t.length && e.substr(n, n + t.length) === t,
+ He = (e, t) => $e(e, t) ? ((e, t) => e.substring(t))(e, t.length) : e, ze = (e, t, n = 0, o) => {
+ const r = e.indexOf(t, n);
+ return -1 !== r && (!!C(o) || r + t.length <= o)
+ }, $e = (e, t) => je(e, t, 0), Ve = (e, t) => je(e, t, e.length - t.length),
+ We = e => t => t.replace(e, ""), Ke = We(/^\s+|\s+$/g), Ye = We(/^\s+/g), Ge = We(/\s+$/g),
+ Xe = e => e.length > 0, Je = e => !Xe(e), Qe = (e, t = 10) => {
+ const n = parseInt(e, t);
+ return isNaN(n) ? U.none() : U.some(n)
+ }, Ze = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/, et = e => t => ze(t, e), tt = [{
+ name: "Edge",
+ versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],
+ search: e => ze(e, "edge/") && ze(e, "chrome") && ze(e, "safari") && ze(e, "applewebkit")
+ }, {
+ name: "Chromium",
+ brand: "Chromium",
+ versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/, Ze],
+ search: e => ze(e, "chrome") && !ze(e, "chromeframe")
+ }, {
+ name: "IE",
+ versionRegexes: [/.*?msie\ ?([0-9]+)\.([0-9]+).*/, /.*?rv:([0-9]+)\.([0-9]+).*/],
+ search: e => ze(e, "msie") || ze(e, "trident")
+ }, {
+ name: "Opera",
+ versionRegexes: [Ze, /.*?opera\/([0-9]+)\.([0-9]+).*/],
+ search: et("opera")
+ }, {
+ name: "Firefox",
+ versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],
+ search: et("firefox")
+ }, {
+ name: "Safari",
+ versionRegexes: [Ze, /.*?cpu os ([0-9]+)_([0-9]+).*/],
+ search: e => (ze(e, "safari") || ze(e, "mobile/")) && ze(e, "applewebkit")
+ }], nt = [{
+ name: "Windows",
+ search: et("win"),
+ versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]
+ }, {
+ name: "iOS",
+ search: e => ze(e, "iphone") || ze(e, "ipad"),
+ versionRegexes: [/.*?version\/\ ?([0-9]+)\.([0-9]+).*/, /.*cpu os ([0-9]+)_([0-9]+).*/, /.*cpu iphone os ([0-9]+)_([0-9]+).*/]
+ }, {
+ name: "Android",
+ search: et("android"),
+ versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/]
+ }, {
+ name: "macOS",
+ search: et("mac os x"),
+ versionRegexes: [/.*?mac\ os\ x\ ?([0-9]+)_([0-9]+).*/]
+ }, {name: "Linux", search: et("linux"), versionRegexes: []}, {
+ name: "Solaris",
+ search: et("sunos"),
+ versionRegexes: []
+ }, {name: "FreeBSD", search: et("freebsd"), versionRegexes: []}, {
+ name: "ChromeOS",
+ search: et("cros"),
+ versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/]
+ }], ot = {browsers: T(tt), oses: T(nt)}, rt = "Edge", at = "Chromium", st = "Opera", it = "Firefox",
+ lt = "Safari", dt = e => {
+ const t = e.current, n = e.version, o = e => () => t === e;
+ return {
+ current: t,
+ version: n,
+ isEdge: o(rt),
+ isChromium: o(at),
+ isIE: o("IE"),
+ isOpera: o(st),
+ isFirefox: o(it),
+ isSafari: o(lt)
+ }
+ }, ct = {
+ unknown: () => dt({current: void 0, version: Ue.unknown()}),
+ nu: dt,
+ edge: T(rt),
+ chromium: T(at),
+ ie: T("IE"),
+ opera: T(st),
+ firefox: T(it),
+ safari: T(lt)
+ }, ut = "Windows", mt = "Android", ft = "Linux", gt = "macOS", pt = "Solaris", ht = "FreeBSD",
+ vt = "ChromeOS", bt = 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(vt)
+ }
+ }, yt = {
+ unknown: () => bt({current: void 0, version: Ue.unknown()}),
+ nu: bt,
+ windows: T(ut),
+ ios: T("iOS"),
+ android: T(mt),
+ linux: T(ft),
+ macos: T(gt),
+ solaris: T(pt),
+ freebsd: T(ht),
+ chromeos: T(vt)
+ }, Ct = (e, t, n) => {
+ const o = ot.browsers(), r = ot.oses(), a = t.bind((e => ((e, t) => fe(t.brands, (t => {
+ const n = t.brand.toLowerCase();
+ return ee(e, (e => {
+ var t;
+ return n === (null === (t = e.brand) || void 0 === t ? void 0 : t.toLowerCase())
+ })).map((e => ({current: e.name, version: Ue.nu(parseInt(t.version, 10), 0)})))
+ })))(o, e))).orThunk((() => ((e, t) => qe(e, t).map((e => {
+ const n = Ue.detect(e.versionRegexes, t);
+ return {current: e.name, version: n}
+ })))(o, e))).fold(ct.unknown, ct.nu), s = ((e, t) => qe(e, t).map((e => {
+ const n = Ue.detect(e.versionRegexes, t);
+ return {current: e.name, version: n}
+ })))(r, e).fold(yt.unknown, yt.nu), i = ((e, t, n, o) => {
+ const r = e.isiOS() && !0 === /ipad/i.test(n), a = e.isiOS() && !r,
+ s = e.isiOS() || e.isAndroid(), i = s || o("(pointer:coarse)"),
+ l = r || !a && s && o("(min-device-width:768px)"), d = a || s && !l,
+ c = t.isSafari() && e.isiOS() && !1 === /safari/i.test(n), u = !d && !l && !c;
+ return {
+ isiPad: T(r),
+ isiPhone: T(a),
+ isTablet: T(l),
+ isPhone: T(d),
+ isTouch: T(i),
+ isAndroid: e.isAndroid,
+ isiOS: e.isiOS,
+ isWebView: T(c),
+ isDesktop: T(u)
+ }
+ })(s, a, e, n);
+ return {browser: a, os: s, deviceType: i}
+ }, Et = e => window.matchMedia(e).matches;
+ let wt = Ie((() => Ct(navigator.userAgent, U.from(navigator.userAgentData), Et)));
+ const _t = () => wt(), St = navigator.userAgent, kt = _t(), xt = kt.browser, At = kt.os,
+ Nt = kt.deviceType, Tt = -1 !== St.indexOf("Windows Phone"), Rt = {
+ transparentSrc: "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",
+ documentMode: xt.isIE() ? document.documentMode || 7 : 10,
+ cacheSuffix: null,
+ container: null,
+ canHaveCSP: !xt.isIE(),
+ windowsPhone: Tt,
+ browser: {
+ current: xt.current,
+ version: xt.version,
+ isChromium: xt.isChromium,
+ isEdge: xt.isEdge,
+ isFirefox: xt.isFirefox,
+ isIE: xt.isIE,
+ isOpera: xt.isOpera,
+ isSafari: xt.isSafari
+ },
+ os: {
+ current: At.current,
+ version: At.version,
+ isAndroid: At.isAndroid,
+ isChromeOS: At.isChromeOS,
+ isFreeBSD: At.isFreeBSD,
+ isiOS: At.isiOS,
+ isLinux: At.isLinux,
+ isMacOS: At.isMacOS,
+ isSolaris: At.isSolaris,
+ isWindows: At.isWindows
+ },
+ deviceType: {
+ isDesktop: Nt.isDesktop,
+ isiPad: Nt.isiPad,
+ isiPhone: Nt.isiPhone,
+ isPhone: Nt.isPhone,
+ isTablet: Nt.isTablet,
+ isTouch: Nt.isTouch,
+ isWebView: Nt.isWebView
+ }
+ }, Dt = /^\s*|\s*$/g, Lt = e => E(e) ? "" : ("" + e).replace(Dt, ""), Ot = function (e, t, n, o) {
+ o = o || this, e && (n && (e = e[n]), Re(e, ((e, r) => !1 !== t.call(o, e, r, n) && (Ot(e, t, n, o), !0))))
+ }, Bt = {
+ trim: Lt,
+ isArray: Te,
+ is: (e, t) => t ? !("array" !== t || !Te(e)) || typeof e === t : void 0 !== e,
+ toArray: e => {
+ if (Te(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 = g(e) ? e.split(t || ",") : e || [];
+ let r = o.length;
+ for (; r--;) n[o[r]] = {};
+ return n
+ },
+ each: Re,
+ map: De,
+ grep: Le,
+ 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: Ot,
+ 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) => v(e) ? e : "" === e ? [] : De(e.split(t || ","), Lt),
+ _addCacheSuffix: e => {
+ const t = Rt.cacheSuffix;
+ return t && (e += (-1 === e.indexOf("?") ? "?" : "&") + t), e
+ }
+ }, Pt = (e, t, n = D) => e.exists((e => n(e, t))),
+ It = (e, t, n = D) => Mt(e, t, n).getOr(e.isNone() && t.isNone()),
+ Mt = (e, t, n) => e.isSome() && t.isSome() ? U.some(n(e.getOrDie(), t.getOrDie())) : U.none(),
+ Ft = (e, t) => e ? U.some(t) : U.none(),
+ Ut = "undefined" != typeof window ? window : Function("return this;")(), qt = (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 = (e, t) => {
+ const n = ((e, t) => qt(e, t))(e, t);
+ if (null == n) throw new Error(e + " not available on this browser");
+ return n
+ }, Ht = Object.getPrototypeOf, zt = e => {
+ const t = qt("ownerDocument.defaultView", e);
+ return p(e) && ((e => jt("HTMLElement", e))(t).prototype.isPrototypeOf(e) || /^HTML\w*Element$/.test(Ht(e).constructor.name))
+ }, $t = e => e.dom.nodeName.toLowerCase(), Vt = e => e.dom.nodeType, Wt = e => t => Vt(t) === e,
+ Kt = e => Yt(e) && zt(e.dom), Yt = Wt(1), Gt = Wt(3), Xt = Wt(9), Jt = Wt(11),
+ Qt = e => t => Yt(t) && $t(t) === e, Zt = (e, t, n) => {
+ if (!(g(n) || y(n) || S(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 + "")
+ }, en = (e, t, n) => {
+ Zt(e.dom, t, n)
+ }, tn = (e, t) => {
+ const n = e.dom;
+ he(t, ((e, t) => {
+ Zt(n, t, e)
+ }))
+ }, nn = (e, t) => {
+ const n = e.dom.getAttribute(t);
+ return null === n ? void 0 : n
+ }, on = (e, t) => U.from(nn(e, t)), rn = (e, t) => {
+ const n = e.dom;
+ return !(!n || !n.hasAttribute) && n.hasAttribute(t)
+ }, an = (e, t) => {
+ e.dom.removeAttribute(t)
+ }, sn = e => Q(e.dom.attributes, ((e, t) => (e[t.name] = t.value, e)), {}), ln = (e, t) => {
+ const n = nn(e, t);
+ return void 0 === n || "" === n ? [] : n.split(" ")
+ }, dn = e => void 0 !== e.dom.classList, cn = e => ln(e, "class"), un = (e, t) => ((e, t, n) => {
+ const o = ln(e, t).concat([n]);
+ return en(e, t, o.join(" ")), !0
+ })(e, "class", t), mn = (e, t) => ((e, t, n) => {
+ const o = X(ln(e, t), (e => e !== n));
+ return o.length > 0 ? en(e, t, o.join(" ")) : an(e, t), !1
+ })(e, "class", t), fn = (e, t) => {
+ dn(e) ? e.dom.classList.add(t) : un(e, t)
+ }, gn = e => {
+ 0 === (dn(e) ? e.dom.classList : cn(e)).length && an(e, "class")
+ }, pn = (e, t) => {
+ if (dn(e)) {
+ e.dom.classList.remove(t)
+ } else mn(e, t);
+ gn(e)
+ }, hn = (e, t) => {
+ const n = dn(e) ? e.dom.classList.toggle(t) : ((e, t) => $(cn(e), t) ? mn(e, t) : un(e, t))(e, t);
+ return gn(e), n
+ }, vn = (e, t) => dn(e) && e.dom.classList.contains(t), bn = e => {
+ if (null == e) throw new Error("Node cannot be null or undefined");
+ return {dom: e}
+ }, yn = {
+ fromHtml: (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 bn(n.childNodes[0])
+ }, fromTag: (e, t) => {
+ const n = (t || document).createElement(e);
+ return bn(n)
+ }, fromText: (e, t) => {
+ const n = (t || document).createTextNode(e);
+ return bn(n)
+ }, fromDom: bn, fromPoint: (e, t, n) => U.from(e.dom.elementFromPoint(t, n)).map(bn)
+ }, Cn = (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")
+ }
+ }, wn = 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)
+ }, kn = e => yn.fromDom(e.dom.ownerDocument), xn = e => Xt(e) ? e : kn(e),
+ An = e => yn.fromDom(xn(e).dom.defaultView), Nn = e => U.from(e.dom.parentNode).map(yn.fromDom),
+ Tn = e => U.from(e.dom.parentElement).map(yn.fromDom), Rn = (e, t) => {
+ const n = _(t) ? t : M;
+ let o = e.dom;
+ const r = [];
+ for (; null !== o.parentNode && void 0 !== o.parentNode;) {
+ const e = o.parentNode, t = yn.fromDom(e);
+ if (r.push(t), !0 === n(t)) break;
+ o = e
+ }
+ return r
+ }, Dn = e => U.from(e.dom.previousSibling).map(yn.fromDom),
+ Ln = e => U.from(e.dom.nextSibling).map(yn.fromDom), On = e => ae(Cn(e, Dn)), Bn = e => Cn(e, Ln),
+ Pn = e => W(e.dom.childNodes, yn.fromDom), In = (e, t) => {
+ const n = e.dom.childNodes;
+ return U.from(n[t]).map(yn.fromDom)
+ }, Mn = e => In(e, 0), Fn = e => In(e, e.dom.childNodes.length - 1), Un = e => e.dom.childNodes.length,
+ qn = e => Jt(e) && w(e.dom.host),
+ jn = _(Element.prototype.attachShadow) && _(Node.prototype.getRootNode), Hn = T(jn),
+ zn = jn ? e => yn.fromDom(e.dom.getRootNode()) : xn, $n = e => qn(e) ? e : (e => {
+ const t = e.dom.head;
+ if (null == t) throw new Error("Head is not available yet");
+ return yn.fromDom(t)
+ })(xn(e)), Vn = e => yn.fromDom(e.dom.host), Wn = e => {
+ if (Hn() && w(e.target)) {
+ const t = yn.fromDom(e.target);
+ if (Yt(t) && Kn(t) && e.composed && e.composedPath) {
+ const t = e.composedPath();
+ if (t) return ce(t)
+ }
+ }
+ return U.from(e.target)
+ }, Kn = e => w(e.dom.shadowRoot), Yn = e => {
+ const t = Gt(e) ? e.dom.parentNode : e.dom;
+ if (null == t || null === t.ownerDocument) return !1;
+ const n = t.ownerDocument;
+ return (e => {
+ const t = zn(e);
+ return qn(t) ? U.some(t) : U.none()
+ })(yn.fromDom(t)).fold((() => n.body.contains(t)), N(Yn, Vn))
+ };
+ var Gn = (e, t, n, o, r) => e(n, o) ? U.some(n) : _(r) && r(n) ? U.none() : t(n, o, r);
+ const Xn = (e, t, n) => {
+ let o = e.dom;
+ const r = _(n) ? n : M;
+ for (; o.parentNode;) {
+ o = o.parentNode;
+ const e = yn.fromDom(o);
+ if (t(e)) return U.some(e);
+ if (r(e)) break
+ }
+ return U.none()
+ }, Jn = (e, t, n) => Gn(((e, t) => t(e)), Xn, e, t, n),
+ Qn = (e, t) => ee(e.dom.childNodes, (e => t(yn.fromDom(e)))).map(yn.fromDom), Zn = (e, t) => {
+ const n = e => {
+ for (let o = 0; o < e.childNodes.length; o++) {
+ const r = yn.fromDom(e.childNodes[o]);
+ if (t(r)) return U.some(r);
+ const a = n(e.childNodes[o]);
+ if (a.isSome()) return a
+ }
+ return U.none()
+ };
+ return n(e.dom)
+ }, eo = (e, t, n) => Xn(e, (e => En(e, t)), n), to = (e, t) => ((e, t) => {
+ const n = void 0 === t ? document : t.dom;
+ return wn(n) ? U.none() : U.from(n.querySelector(e)).map(yn.fromDom)
+ })(t, e), no = (e, t, n) => Gn(((e, t) => En(e, t)), eo, e, t, n), oo = (e, t = !1) => {
+ return Yn(e) ? e.dom.isContentEditable : (n = e, no(n, "[contenteditable]")).fold(T(t), (e => "true" === ro(e)));
+ var n
+ }, ro = e => e.dom.contentEditable, ao = e => void 0 !== e.style && _(e.style.getPropertyValue),
+ so = (e, t, n) => {
+ if (!g(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)
+ }, io = (e, t, n) => {
+ const o = e.dom;
+ so(o, t, n)
+ }, lo = (e, t) => {
+ const n = e.dom;
+ he(t, ((e, t) => {
+ so(n, t, e)
+ }))
+ }, co = (e, t) => {
+ const n = e.dom, o = window.getComputedStyle(n).getPropertyValue(t);
+ return "" !== o || Yn(e) ? o : uo(n, t)
+ }, uo = (e, t) => ao(e) ? e.style.getPropertyValue(t) : "", mo = (e, t) => {
+ const n = e.dom, o = uo(n, t);
+ return U.from(o).filter((e => e.length > 0))
+ }, fo = 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
+ }, go = (e, t) => {
+ ((e, t) => {
+ ao(e) && e.style.removeProperty(t)
+ })(e.dom, t), Pt(on(e, "style").map(Ke), "") && an(e, "style")
+ }, po = (e, t) => {
+ Nn(e).each((n => {
+ n.dom.insertBefore(t.dom, e.dom)
+ }))
+ }, ho = (e, t) => {
+ Ln(e).fold((() => {
+ Nn(e).each((e => {
+ bo(e, t)
+ }))
+ }), (e => {
+ po(e, t)
+ }))
+ }, vo = (e, t) => {
+ Mn(e).fold((() => {
+ bo(e, t)
+ }), (n => {
+ e.dom.insertBefore(t.dom, n.dom)
+ }))
+ }, bo = (e, t) => {
+ e.dom.appendChild(t.dom)
+ }, yo = (e, t) => {
+ po(e, t), bo(t, e)
+ }, Co = (e, t) => {
+ K(t, (t => {
+ bo(e, t)
+ }))
+ }, Eo = e => {
+ e.dom.textContent = "", K(Pn(e), (e => {
+ wo(e)
+ }))
+ }, wo = e => {
+ const t = e.dom;
+ null !== t.parentNode && t.parentNode.removeChild(t)
+ }, _o = e => {
+ const t = Pn(e);
+ var n, o;
+ t.length > 0 && (n = e, K(o = t, ((e, t) => {
+ const r = 0 === t ? n : o[t - 1];
+ ho(r, e)
+ }))), wo(e)
+ }, So = e => W(e, yn.fromDom), ko = e => e.dom.innerHTML, xo = (e, t) => {
+ const n = kn(e).dom, o = yn.fromDom(n.createDocumentFragment()), r = ((e, t) => {
+ const n = (t || document).createElement("div");
+ return n.innerHTML = e, Pn(yn.fromDom(n))
+ })(t, n);
+ Co(o, r), Eo(e), bo(e, o)
+ }, Ao = (e, t) => n => {
+ e(n) && t((e => {
+ const t = yn.fromDom(Wn(e).getOr(e.target)), n = () => e.stopPropagation(),
+ o = () => e.preventDefault(), r = A(o, n);
+ return ((e, t, n, o, r, a, s) => ({
+ target: e,
+ x: t,
+ y: n,
+ stop: o,
+ prevent: r,
+ kill: a,
+ raw: s
+ }))(t, e.clientX, e.clientY, n, o, r, e)
+ })(n))
+ }, No = (e, t, n, o) => ((e, t, n, o, r) => {
+ const a = Ao(n, o);
+ return e.dom.addEventListener(t, a, r), {unbind: L(To, e, t, a, r)}
+ })(e, t, n, o, !1), To = (e, t, n, o) => {
+ e.dom.removeEventListener(t, n, o)
+ }, Ro = (e, t) => ({left: e, top: t, translate: (n, o) => Ro(e + n, t + o)}), Do = Ro,
+ Lo = (e, t) => void 0 !== e ? e : void 0 !== t ? t : 0, Oo = e => {
+ const t = e.dom, n = t.ownerDocument.body;
+ return n === t ? Do(n.offsetLeft, n.offsetTop) : Yn(e) ? (e => {
+ const t = e.getBoundingClientRect();
+ return Do(t.left, t.top)
+ })(t) : Do(0, 0)
+ }, Bo = e => {
+ const t = void 0 !== e ? e.dom : document, n = t.body.scrollLeft || t.documentElement.scrollLeft,
+ o = t.body.scrollTop || t.documentElement.scrollTop;
+ return Do(n, o)
+ }, Po = (e, t, n) => {
+ const o = (void 0 !== n ? n.dom : document).defaultView;
+ o && o.scrollTo(e, t)
+ }, Io = (e, t) => {
+ _t().browser.isSafari() && _(e.dom.scrollIntoViewIfNeeded) ? e.dom.scrollIntoViewIfNeeded(!1) : e.dom.scrollIntoView(t)
+ }, Mo = (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 = Bo(yn.fromDom(n));
+ return (e => {
+ const t = void 0 === e ? window : e;
+ return _t().browser.isFirefox() ? U.none() : U.from(t.visualViewport)
+ })(t).fold((() => {
+ const e = t.document.documentElement, n = e.clientWidth, r = e.clientHeight;
+ return Mo(o.left, o.top, n, r)
+ }), (e => Mo(Math.max(e.pageLeft, o.left), Math.max(e.pageTop, o.top), e.width, e.height)))
+ }, Uo = (e, t) => {
+ let n = [];
+ return K(Pn(e), (e => {
+ t(e) && (n = n.concat([e])), n = n.concat(Uo(e, t))
+ })), n
+ }, qo = (e, t) => ((e, t) => {
+ const n = void 0 === t ? document : t.dom;
+ return wn(n) ? [] : W(n.querySelectorAll(e), yn.fromDom)
+ })(t, e), jo = (e, t, n) => eo(e, t, n).isSome();
+
+ class Ho {
+ 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 zo = e => t => !!t && t.nodeType === e, $o = e => !!e && !Object.getPrototypeOf(e), Vo = zo(1),
+ Wo = e => Vo(e) && Kt(yn.fromDom(e)), Ko = e => {
+ const t = e.toLowerCase();
+ return e => w(e) && e.nodeName.toLowerCase() === t
+ }, Yo = e => {
+ const t = e.map((e => e.toLowerCase()));
+ return e => {
+ if (e && e.nodeName) {
+ const n = e.nodeName.toLowerCase();
+ return $(t, n)
+ }
+ return !1
+ }
+ }, Go = (e, t) => {
+ const n = t.toLowerCase().split(" ");
+ return t => {
+ if (Vo(t)) {
+ const o = t.ownerDocument.defaultView;
+ if (o) for (let r = 0; r < n.length; r++) {
+ const a = o.getComputedStyle(t, null);
+ if ((a ? a.getPropertyValue(e) : null) === n[r]) return !0
+ }
+ }
+ return !1
+ }
+ }, Xo = e => t => Vo(t) && t.hasAttribute(e), Jo = e => Vo(e) && e.hasAttribute("data-mce-bogus"),
+ Qo = e => Vo(e) && "TABLE" === e.tagName, Zo = e => t => {
+ if (Wo(t)) {
+ if (t.contentEditable === e) return !0;
+ if (t.getAttribute("data-mce-contenteditable") === e) return !0
+ }
+ return !1
+ }, er = Yo(["textarea", "input"]), tr = zo(3), nr = zo(4), or = zo(7), rr = zo(8), ar = zo(9),
+ sr = zo(11), ir = Ko("br"), lr = Ko("img"), dr = Zo("true"), cr = Zo("false"),
+ ur = Yo(["td", "th"]), mr = Yo(["td", "th", "caption"]),
+ fr = Yo(["video", "audio", "object", "embed"]), gr = Ko("li"), pr = Ko("details"),
+ hr = Ko("summary"), vr = "\ufeff", br = " ", yr = e => e === vr, Cr = ((e, t) => {
+ const n = t => e(t) ? U.from(t.dom.nodeValue) : U.none();
+ return {
+ get: o => {
+ if (!e(o)) throw new Error("Can only get " + t + " value of a " + t + " node");
+ return n(o).getOr("")
+ }, getOption: n, set: (n, o) => {
+ if (!e(n)) throw new Error("Can only set raw " + t + " value of a " + t + " node");
+ n.dom.nodeValue = o
+ }
+ }
+ })(Gt, "text"), Er = e => Cr.get(e), wr = e => Cr.getOption(e), _r = e => {
+ let t;
+ return n => (t = t || ie(e, F), ke(t, $t(n)))
+ }, Sr = e => Yt(e) && "br" === $t(e),
+ kr = _r(["h1", "h2", "h3", "h4", "h5", "h6", "p", "div", "address", "pre", "form", "blockquote", "center", "dir", "fieldset", "header", "footer", "article", "section", "hgroup", "aside", "nav", "figure"]),
+ xr = _r(["ul", "ol", "dl"]), Ar = _r(["li", "dd", "dt"]), Nr = _r(["thead", "tbody", "tfoot"]),
+ Tr = _r(["td", "th"]), Rr = _r(["pre", "script", "textarea", "style"]), Dr = e => {
+ const t = qo(e, "br"), n = X((e => {
+ const t = [];
+ let n = e.dom;
+ for (; n;) t.push(yn.fromDom(n)), n = n.lastChild;
+ return t
+ })(e).slice(-1), Sr);
+ t.length === n.length && K(n, wo)
+ }, Lr = () => {
+ const e = yn.fromTag("br");
+ return en(e, "data-mce-bogus", "1"), e
+ }, Or = e => {
+ Eo(e), bo(e, Lr())
+ }, Br = vr, Pr = yr, Ir = e => e.replace(/\uFEFF/g, ""), Mr = Vo, Fr = tr,
+ Ur = e => (Fr(e) && (e = e.parentNode), Mr(e) && e.hasAttribute("data-mce-caret")),
+ qr = e => Fr(e) && Pr(e.data), jr = e => Ur(e) || qr(e),
+ Hr = e => e.firstChild !== e.lastChild || !ir(e.firstChild), zr = e => {
+ const t = e.container();
+ return !!tr(t) && (t.data.charAt(e.offset()) === Br || e.isAtStart() && qr(t.previousSibling))
+ }, $r = e => {
+ const t = e.container();
+ return !!tr(t) && (t.data.charAt(e.offset() - 1) === Br || e.isAtEnd() && qr(t.nextSibling))
+ }, Vr = e => Fr(e) && e.data[0] === Br, Wr = e => Fr(e) && e.data[e.data.length - 1] === Br,
+ Kr = e => e && e.hasAttribute("data-mce-caret") ? ((e => {
+ var t;
+ const n = e.getElementsByTagName("br"), o = n[n.length - 1];
+ Jo(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,
+ Yr = e => Ur(e.startContainer), Gr = dr, Xr = cr, Jr = ir, Qr = tr,
+ Zr = Yo(["script", "style", "textarea"]),
+ ea = Yo(["img", "input", "textarea", "hr", "iframe", "video", "audio", "object", "embed"]),
+ ta = Yo(["table"]), na = jr,
+ oa = e => !na(e) && (Qr(e) ? !Zr(e.parentNode) : ea(e) || Jr(e) || ta(e) || ra(e)),
+ ra = e => !(e => Vo(e) && "true" === e.getAttribute("unselectable"))(e) && Xr(e),
+ aa = (e, t) => oa(e) && ((e, t) => {
+ for (let n = e.parentNode; n && n !== t; n = n.parentNode) {
+ if (ra(n)) return !1;
+ if (Gr(n)) return !0
+ }
+ return !0
+ })(e, t), sa = /^[ \t\r\n]*$/, ia = e => sa.test(e), la = e => {
+ for (const t of e) if (!yr(t)) return !1;
+ return !0
+ }, da = e => "\n" === e || "\r" === e, ca = (e, t = 4, n = !0, o = !0) => {
+ const r = ((e, t) => t <= 0 ? "" : new Array(t + 1).join(e))(" ", t), a = e.replace(/\t/g, r),
+ s = Q(a, ((e, t) => (e => -1 !== " \f\t\v".indexOf(e))(t) || t === br ? e.pcIsSpace || "" === e.str && n || e.str.length === a.length - 1 && o || ((e, t) => t < e.length && t >= 0 && da(e[t]))(a, e.str.length + 1) ? {
+ pcIsSpace: !1,
+ str: e.str + br
+ } : {pcIsSpace: !0, str: e.str + " "} : {pcIsSpace: da(t), str: e.str + t}), {
+ pcIsSpace: !1,
+ str: ""
+ });
+ return s.str
+ }, ua = (e, t) => tr(e) && ia(e.data) && !((e, t) => {
+ const n = yn.fromDom(t), o = yn.fromDom(e);
+ return jo(o, "pre,code", L(_n, n))
+ })(e, t),
+ ma = (e, t) => oa(e) && !ua(e, t) || (e => Vo(e) && "A" === e.nodeName && !e.hasAttribute("href") && (e.hasAttribute("name") || e.hasAttribute("id")))(e) || fa(e),
+ fa = Xo("data-mce-bookmark"), ga = Xo("data-mce-bogus"),
+ pa = (ha = "data-mce-bogus", va = "all", e => Vo(e) && e.getAttribute(ha) === va);
+ var ha, va;
+ const ba = e => Tn(yn.fromDom(e)).exists((e => !oo(e))), ya = (e, t = !0) => ((e, t) => {
+ let n = 0;
+ if (ma(e, e)) return !1;
+ {
+ let o = e.firstChild;
+ if (!o) return !0;
+ const r = new Ho(o, e);
+ do {
+ if (t) {
+ if (pa(o)) {
+ o = r.next(!0);
+ continue
+ }
+ if (ga(o)) {
+ o = r.next();
+ continue
+ }
+ }
+ if (dr(o) && ba(o)) return !1;
+ if (ir(o)) n++, o = r.next(); else {
+ if (ma(o, e)) return !1;
+ o = r.next()
+ }
+ } while (o);
+ return n <= 1
+ }
+ })(e.dom, t), Ca = e => "svg" === e.toLowerCase(), Ea = e => Ca(e.nodeName),
+ wa = e => "svg" === (null == e ? void 0 : e.nodeName) ? "svg" : "html", _a = ["svg"],
+ Sa = "data-mce-block",
+ ka = e => W((e => X(ge(e), (e => !/[A-Z]/.test(e))))(e), (e => `${e}:` + W(_a, (t => `not(${t} ${e})`)).join(":"))).join(","),
+ xa = (e, t) => w(t.querySelector(e)) ? (t.setAttribute(Sa, "true"), "inline-boundary" === t.getAttribute("data-mce-selected") && t.removeAttribute("data-mce-selected"), !0) : (t.removeAttribute(Sa), !1),
+ Aa = (e, t) => {
+ const n = ka(e.getTransparentElements()), o = ka(e.getBlockElements());
+ return X(t.querySelectorAll(n), (e => xa(o, e)))
+ }, Na = (e, t) => {
+ var n;
+ const o = t ? "lastChild" : "firstChild";
+ for (let t = e[o]; t; t = t[o]) if (ya(yn.fromDom(t))) return void (null === (n = t.parentNode) || void 0 === n || n.removeChild(t))
+ }, Ta = (e, t, n) => {
+ const o = e.getBlockElements(), r = yn.fromDom(t), a = e => $t(e) in o, s = e => _n(e, r);
+ K(So(n), (t => {
+ Xn(t, a, s).each((n => {
+ const o = ((e, t) => X(Pn(e), t))(t, (t => a(t) && !e.isValidChild($t(n), $t(t))));
+ if (o.length > 0) {
+ const t = Tn(n);
+ K(o, (e => {
+ Xn(e, a, s).each((t => {
+ ((e, t) => {
+ const n = document.createRange(), o = e.parentNode;
+ if (o) {
+ n.setStartBefore(e), n.setEndBefore(t);
+ const r = n.extractContents();
+ Na(r, !0), n.setStartAfter(t), n.setEndAfter(e);
+ const a = n.extractContents();
+ Na(a, !1), ya(yn.fromDom(r)) || o.insertBefore(r, e), ya(yn.fromDom(t)) || o.insertBefore(t, e), ya(yn.fromDom(a)) || o.insertBefore(a, e), o.removeChild(e)
+ }
+ })(t.dom, e.dom)
+ }))
+ })), t.each((t => Aa(e, t.dom)))
+ }
+ }))
+ }))
+ }, Ra = (e, t) => {
+ const n = Aa(e, t);
+ Ta(e, t, n), ((e, t, n) => {
+ K([...n, ...Pa(e, t) ? [t] : []], (t => K(qo(yn.fromDom(t), t.nodeName.toLowerCase()), (t => {
+ Ia(e, t.dom) && _o(t)
+ }))))
+ })(e, t, n)
+ }, Da = (e, t) => {
+ if (Ba(e, t)) {
+ const n = ka(e.getBlockElements());
+ xa(n, t)
+ }
+ }, La = e => e.hasAttribute(Sa), Oa = (e, t) => ke(e.getTransparentElements(), t),
+ Ba = (e, t) => Vo(t) && Oa(e, t.nodeName), Pa = (e, t) => Ba(e, t) && La(t),
+ Ia = (e, t) => Ba(e, t) && !La(t), Ma = (e, t) => 1 === t.type && Oa(e, t.name) && g(t.attr(Sa)),
+ Fa = _t().browser, Ua = e => ee(e, Yt), qa = (e, t) => e.children && $(e.children, t),
+ ja = (e, t, n) => {
+ let o = 0, r = 0;
+ const a = e.ownerDocument;
+ if (n = n || e, t) {
+ if (n === e && t.getBoundingClientRect && "static" === co(yn.fromDom(e), "position")) {
+ const n = t.getBoundingClientRect();
+ return o = n.left + (a.documentElement.scrollLeft || e.scrollLeft) - a.documentElement.clientLeft, r = n.top + (a.documentElement.scrollTop || e.scrollTop) - a.documentElement.clientTop, {
+ x: o,
+ y: r
+ }
+ }
+ let s = t;
+ for (; s && s !== n && s.nodeType && !qa(s, n);) {
+ const e = s;
+ o += e.offsetLeft || 0, r += e.offsetTop || 0, s = e.offsetParent
+ }
+ for (s = t.parentNode; s && s !== n && s.nodeType && !qa(s, n);) o -= s.scrollLeft || 0, r -= s.scrollTop || 0, s = s.parentNode;
+ r += (e => Fa.isFirefox() && "table" === $t(e) ? Ua(Pn(e)).filter((e => "caption" === $t(e))).bind((e => Ua(Bn(e)).map((t => {
+ const n = t.dom.offsetTop, o = e.dom.offsetTop, r = e.dom.offsetHeight;
+ return n <= o ? -r : 0
+ })))).getOr(0) : 0)(yn.fromDom(t))
+ }
+ return {x: o, y: r}
+ }, Ha = (e, t = {}) => {
+ let n = 0;
+ const o = {}, r = yn.fromDom(e), a = xn(r), s = e => {
+ bo($n(r), e)
+ }, i = e => {
+ const t = $n(r);
+ to(t, "#" + e).each(wo)
+ }, l = e => Se(o, e).getOrThunk((() => ({id: "mce-u" + n++, passed: [], failed: [], count: 0}))),
+ d = e => new Promise(((n, r) => {
+ let i;
+ const d = Bt._addCacheSuffix(e), c = l(d);
+ o[d] = c, c.count++;
+ const u = (e, t) => {
+ K(e, I), 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 = yn.fromTag("link", a.dom);
+ tn(g, {
+ rel: "stylesheet",
+ type: "text/css",
+ id: c.id
+ }), t.contentCssCors && en(g, "crossOrigin", "anonymous"), t.referrerPolicy && en(g, "referrerpolicy", t.referrerPolicy), i = g.dom, i.onload = m, i.onerror = f, s(g), en(g, "href", d)
+ })), c = e => {
+ const t = Bt._addCacheSuffix(e);
+ Se(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 = yn.fromTag("style", a.dom);
+ tn(r, {rel: "stylesheet", type: "text/css", id: n.id}), r.dom.innerHTML = t, s(r)
+ }, loadAll: e => Promise.allSettled(W(e, (e => d(e).then(T(e))))).then((e => {
+ const t = G(e, (e => "fulfilled" === e.status));
+ return t.fail.length > 0 ? Promise.reject(W(t.fail, (e => e.reason))) : W(t.pass, (e => e.value))
+ })), unload: c, unloadRawCss: e => {
+ Se(o, e).each((t => {
+ 0 === --t.count && (delete o[e], i(t.id))
+ }))
+ }, unloadAll: e => {
+ K(e, (e => {
+ c(e)
+ }))
+ }, _setReferrerPolicy: e => {
+ t.referrerPolicy = e
+ }, _setContentCssCors: e => {
+ t.contentCssCors = e
+ }
+ }
+ }, za = (() => {
+ const e = new WeakMap;
+ return {
+ forElement: (t, n) => {
+ const o = zn(t).dom;
+ return U.from(e.get(o)).getOrThunk((() => {
+ const t = Ha(o, n);
+ return e.set(o, t), t
+ }))
+ }
+ }
+ })(), $a = (e, t, n) => w(e) && (ma(e, t) || n.isInline(e.nodeName.toLowerCase())),
+ Va = e => (e => "span" === e.nodeName.toLowerCase())(e) && "bookmark" === e.getAttribute("data-mce-type"),
+ Wa = (e, t, n) => tr(e) && e.data.length > 0 && ((e, t, n) => {
+ const o = new Ho(e, t).prev(!1), r = new Ho(e, t).next(!1), a = C(o) || $a(o, t, n),
+ s = C(r) || $a(r, t, n);
+ return a && s
+ })(e, t, n), Ka = (e, t, n, o) => {
+ var r;
+ const a = o || t;
+ if (Vo(t) && Va(t)) return t;
+ const s = t.childNodes;
+ for (let t = s.length - 1; t >= 0; t--) Ka(e, s[t], n, a);
+ if (Vo(t)) {
+ const e = t.childNodes;
+ 1 === e.length && Va(e[0]) && (null === (r = t.parentNode) || void 0 === r || r.insertBefore(e[0], t))
+ }
+ return (e => sr(e) || ar(e))(t) || ma(t, a) || (e => !!Vo(e) && e.childNodes.length > 0)(t) || Wa(t, a, n) || e.remove(t), t
+ }, Ya = Bt.makeMap, Ga = /[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
+ Xa = /[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g, Ja = /[<>&\"\']/g,
+ Qa = /([a-z0-9]+);?|&([a-z0-9]+);/gi, Za = {
+ 128: "€",
+ 130: "‚",
+ 131: "ƒ",
+ 132: "„",
+ 133: "…",
+ 134: "†",
+ 135: "‡",
+ 136: "ˆ",
+ 137: "‰",
+ 138: "Š",
+ 139: "‹",
+ 140: "Œ",
+ 142: "Ž",
+ 145: "‘",
+ 146: "’",
+ 147: "“",
+ 148: "”",
+ 149: "•",
+ 150: "–",
+ 151: "—",
+ 152: "˜",
+ 153: "™",
+ 154: "š",
+ 155: "›",
+ 156: "œ",
+ 158: "ž",
+ 159: "Ÿ"
+ }, es = {'"': """, "'": "'", "<": "<", ">": ">", "&": "&", "`": "`"},
+ ts = {"<": "<", ">": ">", "&": "&", """: '"', "'": "'"}, ns = (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 (!es[r]) {
+ const t = "&" + o[e + 1] + ";";
+ n[r] = t, n[t] = r
+ }
+ }
+ return n
+ }
+ },
+ os = ns("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),
+ rs = (e, t) => e.replace(t ? Ga : Xa, (e => es[e] || e)),
+ as = (e, t) => e.replace(t ? Ga : Xa, (e => e.length > 1 ? "" + (1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320) + 65536) + ";" : es[e] || "" + e.charCodeAt(0) + ";")),
+ ss = (e, t, n) => {
+ const o = n || os;
+ return e.replace(t ? Ga : Xa, (e => es[e] || o[e] || e))
+ }, is = {
+ encodeRaw: rs,
+ encodeAllRaw: e => ("" + e).replace(Ja, (e => es[e] || e)),
+ encodeNumeric: as,
+ encodeNamed: ss,
+ getEncodeFunc: (e, t) => {
+ const n = ns(t) || os,
+ o = (e, t) => e.replace(t ? Ga : Xa, (e => void 0 !== es[e] ? es[e] : void 0 !== n[e] ? n[e] : e.length > 1 ? "" + (1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320) + 65536) + ";" : "" + e.charCodeAt(0) + ";")),
+ r = (e, t) => ss(e, t, n), a = Ya(e.replace(/\+/g, ","));
+ return a.named && a.numeric ? o : a.named ? t ? r : ss : a.numeric ? as : rs
+ },
+ decode: e => e.replace(Qa, ((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))) : Za[t] || String.fromCharCode(t) : ts[e] || os[e] || (e => {
+ const t = yn.fromTag("div").dom;
+ return t.innerHTML = e, t.textContent || t.innerText || e
+ })(e)))
+ }, ls = (e, t) => (e = Bt.trim(e)) ? e.split(t || " ") : [],
+ ds = e => new RegExp("^" + e.replace(/([?+*])/g, ".$1") + "$"), cs = (e, t) => {
+ const n = /^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)])?$/;
+ return oe(ls(t, ","), (t => {
+ const o = n.exec(t);
+ if (o) {
+ const t = o[1], n = o[2], r = o[3], a = o[4], s = o[5],
+ i = {attributes: {}, attributesOrder: []};
+ if (e.each((e => ((e, t) => {
+ he(e.attributes, ((e, n) => {
+ t.attributes[n] = e
+ })), t.attributesOrder.push(...e.attributesOrder)
+ })(e, i))), "#" === t ? i.paddEmpty = !0 : "-" === t && (i.removeEmpty = !0), "!" === a && (i.removeEmptyAttrs = !0), s && ((e, t) => {
+ const n = /^([!\-])?(\w+[\\:]:\w+|[^=~<]+)?(?:([=~<])(.*))?$/,
+ o = /[*?+]/, {attributes: r, attributesOrder: a} = t;
+ K(ls(e, "|"), (e => {
+ const s = n.exec(e);
+ if (s) {
+ const e = {}, n = s[1], i = s[2].replace(/[\\:]:/g, ":"), l = s[3], d = s[4];
+ if ("!" === n && (t.attributesRequired = t.attributesRequired || [], t.attributesRequired.push(i), e.required = !0), "-" === n) return delete r[i], void a.splice(Bt.inArray(a, 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 = Bt.makeMap(d, "?"))), o.test(i)) {
+ const n = e;
+ t.attributePatterns = t.attributePatterns || [], n.pattern = ds(i), t.attributePatterns.push(n)
+ } else r[i] || a.push(i), r[i] = e
+ }
+ }))
+ })(s, i), r && (i.outputName = n), "@" === n) {
+ if (!e.isNone()) return [];
+ e = U.some(i)
+ }
+ return [r ? {name: n, element: i, aliasName: r} : {name: n, element: i}]
+ }
+ return []
+ }))
+ }, us = {}, ms = Bt.makeMap, fs = Bt.each, gs = Bt.extend, ps = Bt.explode, hs = (e, t = {}) => {
+ const n = ms(e, " ", ms(e.toUpperCase(), " "));
+ return gs(n, t)
+ }, vs = e => hs("td th li dt dd figcaption caption details summary", e.getTextBlockElements()),
+ bs = (e, t) => {
+ if (e) {
+ const n = {};
+ return g(e) && (e = {"*": e}), fs(e, ((e, o) => {
+ n[o] = n[o.toUpperCase()] = "map" === t ? ms(e, /[, ]/) : ps(e, /[, ]/)
+ })), n
+ }
+ }, ys = (e = {}) => {
+ var t;
+ const n = {}, o = {};
+ let r = [];
+ const a = {}, s = {}, i = (t, n, o) => {
+ const r = e[t];
+ if (r) return ms(r, /[, ]/, ms(r.toUpperCase(), /[, ]/));
+ {
+ let e = us[t];
+ return e || (e = hs(n, o), us[t] = e), e
+ }
+ }, l = null !== (t = e.schema) && void 0 !== t ? t : "html5", d = (e => {
+ const {globalAttributes: t, phrasingContent: n, flowContent: o} = (e => {
+ let t, n, o;
+ t = "id accesskey class dir lang style tabindex title role", n = "address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul", o = "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 += " contenteditable contextmenu draggable dropzone hidden spellcheck translate", n += " article aside details dialog figure main header footer hgroup section nav a ins del canvas map", o += " audio canvas command datalist mark meter output picture progress time wbr video ruby bdi keygen svg"), "html5-strict" !== e && (t += " xml:lang", o = [o, "acronym applet basefont big font strike tt"].join(" "), n = [n, "center dir isindex noframes"].join(" "));
+ const r = [n, o].join(" ");
+ return {globalAttributes: t, blockContent: n, phrasingContent: o, flowContent: r}
+ })(e), r = {}, a = (e, t, n) => {
+ r[e] = {attributes: ie(t, T({})), attributesOrder: t, children: ie(n, T({}))}
+ }, s = (e, n = "", o = "") => {
+ const r = ls(o), s = ls(e);
+ let i = s.length;
+ const l = ls([t, n].join(" "));
+ for (; i--;) a(s[i], l.slice(), r)
+ }, i = (e, t) => {
+ const n = ls(e), o = ls(t);
+ let a = n.length;
+ for (; a--;) {
+ const e = r[n[a]];
+ for (let t = 0, n = o.length; t < n; t++) e.attributes[o[t]] = {}, e.attributesOrder.push(o[t])
+ }
+ };
+ "html5-strict" !== e && (K(ls("acronym applet basefont big font strike tt"), (e => {
+ s(e, "", n)
+ })), K(ls("center dir isindex noframes"), (e => {
+ s(e, "", o)
+ })));
+ return s("html", "manifest", "head body"), s("head", "", "base command link meta noscript script style title"), s("title hr noscript br"), s("base", "href target"), s("link", "href rel media hreflang type sizes hreflang"), s("meta", "name http-equiv content charset"), s("style", "media type scoped"), s("script", "src async defer type charset"), s("body", "onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload", o), s("dd div", "", o), s("address dt caption", "", "html4" === e ? n : o), s("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), s("blockquote", "cite", o), s("ol", "reversed start type", "li"), s("ul", "", "li"), s("li", "value", o), s("dl", "", "dt dd"), s("a", "href target rel media hreflang type", "html4" === e ? n : o), s("q", "cite", n), s("ins del", "cite datetime", o), s("img", "src sizes srcset alt usemap ismap width height"), s("iframe", "src name width height", o), s("embed", "src type width height"), s("object", "data type typemustmatch name usemap form width height", [o, "param"].join(" ")), s("param", "name value"), s("map", "name", [o, "area"].join(" ")), s("area", "alt coords shape href target rel media hreflang type"), s("table", "border", "caption colgroup thead tfoot tbody tr" + ("html4" === e ? " col" : "")), s("colgroup", "span", "col"), s("col", "span"), s("tbody thead tfoot", "", "tr"), s("tr", "", "td th"), s("td", "colspan rowspan headers", o), s("th", "colspan rowspan headers scope abbr", o), s("form", "accept-charset action autocomplete enctype method name novalidate target", o), s("fieldset", "disabled form name", [o, "legend"].join(" ")), s("label", "form for", n), s("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"), s("button", "disabled form formaction formenctype formmethod formnovalidate formtarget name type value", "html4" === e ? o : n), s("select", "disabled form multiple name required size", "option optgroup"), s("optgroup", "disabled label", "option"), s("option", "disabled label selected value"), s("textarea", "cols dirname disabled form maxlength name readonly required rows wrap"), s("menu", "type label", [o, "li"].join(" ")), s("noscript", "", o), "html4" !== e && (s("wbr"), s("ruby", "", [n, "rt rp"].join(" ")), s("figcaption", "", o), s("mark rt rp bdi", "", n), s("summary", "", [n, "h1 h2 h3 h4 h5 h6"].join(" ")), s("canvas", "width height", o), s("video", "src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered", [o, "track source"].join(" ")), s("audio", "src crossorigin preload autoplay mediagroup loop muted controls buffered volume", [o, "track source"].join(" ")), s("picture", "", "img source"), s("source", "src srcset type media sizes"), s("track", "kind src srclang label default"), s("datalist", "", [n, "option"].join(" ")), s("article section nav aside main header footer", "", o), s("hgroup", "", "h1 h2 h3 h4 h5 h6"), s("figure", "", [o, "figcaption"].join(" ")), s("time", "datetime", n), s("dialog", "open", o), s("command", "type label icon disabled checked radiogroup command"), s("output", "for form name", n), s("progress", "value max", n), s("meter", "value min max low high optimum", n), s("details", "open", [o, "summary"].join(" ")), s("keygen", "autofocus challenge disabled form keytype name"), a("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 && K([r.video, r.audio], (e => {
+ delete e.children.audio, delete e.children.video
+ })), K(ls("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 = bs(e.valid_styles), u = bs(e.invalid_styles, "map"), m = bs(e.valid_classes, "map"),
+ f = i("whitespace_elements", "pre script noscript style textarea video audio iframe object code"),
+ g = i("self_closing_elements", "colgroup dd dt li option p td tfoot th thead tr"),
+ p = i("void_elements", "area base basefont br col frame hr img input isindex link meta param embed source wbr track"),
+ h = i("boolean_attributes", "checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls allowfullscreen"),
+ v = "td th iframe video audio object script code",
+ b = i("non_empty_elements", v + " pre svg", p),
+ y = i("move_caret_before_on_enter_elements", v + " table", p), C = "h1 h2 h3 h4 h5 h6",
+ E = i("text_block_elements", C + " p div address pre form blockquote center dir fieldset header footer article section hgroup aside main nav figure"),
+ w = 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", E),
+ _ = i("text_inline_elements", "span strong b em i font s strike u var cite dfn code mark q sup sub samp"),
+ S = i("transparent_elements", "a ins del canvas map"), k = i("wrap_block_elements", "pre " + C);
+ fs("script noscript iframe noframes noembed title style textarea xmp plaintext".split(" "), (e => {
+ s[e] = new RegExp("" + e + "[^>]*>", "gi")
+ }));
+ const x = e => {
+ const t = U.from(n["@"]), o = /[*?+]/;
+ K(cs(t, null != e ? e : ""), (({name: e, element: t, aliasName: a}) => {
+ if (a && (n[a] = t), o.test(e)) {
+ const n = t;
+ n.pattern = ds(e), r.push(n)
+ } else n[e] = t
+ }))
+ }, A = e => {
+ r = [], K(ge(n), (e => {
+ delete n[e]
+ })), x(e)
+ }, N = e => {
+ delete us.text_block_elements, delete us.block_elements, K((e => {
+ const t = /^(~)?(.+)$/;
+ return oe(ls(e, ","), (e => {
+ const n = t.exec(e);
+ if (n) {
+ const e = "~" === n[1];
+ return [{inline: e, cloneName: e ? "span" : "div", name: n[2]}]
+ }
+ return []
+ }))
+ })(null != e ? e : ""), (({inline: e, name: t, cloneName: r}) => {
+ if (o[t] = o[r], a[t] = r, b[t.toUpperCase()] = {}, b[t] = {}, e || (w[t.toUpperCase()] = {}, w[t] = {}), !n[t]) {
+ let e = n[r];
+ e = gs({}, e), delete e.removeEmptyAttrs, delete e.removeEmpty, n[t] = e
+ }
+ he(o, ((e, n) => {
+ e[r] && (o[n] = e = gs({}, o[n]), e[t] = e[r])
+ }))
+ }))
+ }, R = e => {
+ K((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 oe(ls(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: ls(n[3], "|")}]
+ }
+ return []
+ }))
+ })(null != e ? e : ""), (({operation: e, name: t, validChildren: n}) => {
+ const r = "replace" === e ? {"#comment": {}} : o[t];
+ K(n, (t => {
+ "remove" === e ? delete r[t] : r[t] = {}
+ })), o[t] = r
+ }))
+ }, D = 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
+ }
+ };
+ e.valid_elements ? (A(e.valid_elements), fs(d, ((e, t) => {
+ o[t] = e.children
+ }))) : (fs(d, ((e, t) => {
+ n[t] = {attributes: e.attributes, attributesOrder: e.attributesOrder}, o[t] = e.children
+ })), fs(ls("strong/b em/i"), (e => {
+ const t = ls(e, "/");
+ n[t[1]].outputName = t[0]
+ })), fs(_, ((t, o) => {
+ n[o] && (e.padd_empty_block_inline_children && (n[o].paddInEmptyBlock = !0), n[o].removeEmpty = !0)
+ })), fs(ls("ol ul blockquote a table tbody"), (e => {
+ n[e] && (n[e].removeEmpty = !0)
+ })), fs(ls("p h1 h2 h3 h4 h5 h6 th td pre div address caption li summary"), (e => {
+ n[e] && (n[e].paddEmpty = !0)
+ })), fs(ls("span"), (e => {
+ n[e].removeEmptyAttrs = !0
+ }))), delete n.svg, N(e.custom_elements), R(e.valid_children), x(e.extended_valid_elements), R("+ol[ul|ol],+ul[ul|ol]"), fs({
+ 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 = ls(e))
+ })), e.invalid_elements && fs(ps(e.invalid_elements), (e => {
+ n[e] && delete n[e]
+ })), D("span") || x("span[!data-mce-type|*]");
+ const L = T(c), O = T(u), B = T(m), P = T(h), I = T(w), M = T(E), F = T(_), q = T(Object.seal(p)),
+ j = T(g), H = T(b), z = T(y), $ = T(f), V = T(S), W = T(k), Y = T(Object.seal(s)),
+ G = (e, t) => {
+ const n = D(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
+ }, X = e => ke(I(), e), J = e => !$e(e, "#") && G(e) && !X(e), Q = T(a);
+ return {
+ type: l,
+ children: o,
+ elements: n,
+ getValidStyles: L,
+ getValidClasses: B,
+ getBlockElements: I,
+ getInvalidStyles: O,
+ getVoidElements: q,
+ getTextBlockElements: M,
+ getTextInlineElements: F,
+ getBoolAttrs: P,
+ getElementRule: D,
+ getSelfClosingElements: j,
+ getNonEmptyElements: H,
+ getMoveCaretBeforeOnEnterElements: z,
+ getWhitespaceElements: $,
+ getTransparentElements: V,
+ getSpecialElements: Y,
+ isValidChild: (e, t) => {
+ const n = o[e.toLowerCase()];
+ return !(!n || !n[t.toLowerCase()])
+ },
+ isValid: G,
+ isBlock: X,
+ isInline: J,
+ isWrapper: e => ke(W(), e) || J(e),
+ getCustomElements: Q,
+ addValidElements: x,
+ setValidElements: A,
+ addCustomElements: N,
+ addValidChildren: R
+ }
+ }, Cs = e => He(e, "#").toUpperCase(), Es = e => {
+ const t = e.toString(16);
+ return (1 === t.length ? "0" + t : t).toUpperCase()
+ }, ws = e => (e => ({value: Cs(e)}))(Es(e.red) + Es(e.green) + Es(e.blue)),
+ _s = /^\s*rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)\s*$/i,
+ Ss = /^\s*rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d?(?:\.\d+)?)\s*\)\s*$/i,
+ ks = (e, t, n, o) => ({red: e, green: t, blue: n, alpha: o}), xs = (e, t, n, o) => {
+ const r = parseInt(e, 10), a = parseInt(t, 10), s = parseInt(n, 10), i = parseFloat(o);
+ return ks(r, a, s, i)
+ }, As = e => {
+ if ("transparent" === e) return U.some(ks(0, 0, 0, 0));
+ const t = _s.exec(e);
+ if (null !== t) return U.some(xs(t[1], t[2], t[3], "1"));
+ const n = Ss.exec(e);
+ return null !== n ? U.some(xs(n[1], n[2], n[3], n[4])) : U.none()
+ }, Ns = e => `rgba(${e.red},${e.green},${e.blue},${e.alpha})`,
+ Ts = e => As(e).map(ws).map((e => "#" + e.value)).getOr(e), Rs = (e = {}, t) => {
+ const n = /(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,
+ o = /\s*([^:]+):\s*([^;]+);?/g, r = /\s+$/, a = {};
+ let s, i;
+ const l = vr;
+ t && (s = t.getValidStyles(), i = t.getInvalidStyles());
+ const d = "\\\" \\' \\; \\: ; : \ufeff".split(" ");
+ for (let e = 0; e < d.length; e++) a[d[e]] = l + e, a[l + e] = d[e];
+ const c = {
+ parse: t => {
+ const s = {};
+ let i = !1;
+ const d = e.url_converter, u = e.url_converter_scope || c, m = (e, t, n) => {
+ const o = s[e + "-top" + t];
+ if (!o) return;
+ const r = s[e + "-right" + t];
+ if (!r) return;
+ const a = s[e + "-bottom" + t];
+ if (!a) return;
+ const i = s[e + "-left" + t];
+ if (!i) return;
+ const l = [o, r, a, i];
+ let d = l.length - 1;
+ for (; d-- && l[d] === l[d + 1];) ;
+ d > -1 && n || (s[e + t] = -1 === d ? l[0] : l.join(" "), delete s[e + "-top" + t], delete s[e + "-right" + t], delete s[e + "-bottom" + t], delete s[e + "-left" + t])
+ }, f = e => {
+ const t = s[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 s[e] = n[0], !0
+ }, p = e => (i = !0, a[e]),
+ h = (e, t) => (i && (e = e.replace(/\uFEFF[0-9]/g, (e => a[e]))), t || (e = e.replace(/\\([\'\";:])/g, "$1")), e),
+ v = e => String.fromCharCode(parseInt(e.slice(1), 16)),
+ b = e => e.replace(/\\[0-9a-f]+/gi, v), y = (t, n, o, r, a, s) => {
+ if (a = a || s) return "'" + (a = h(a)).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 d && (n = d.call(u, 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(), d = a[2].replace(r, "");
+ if (t && d) {
+ if (t = b(t), d = b(d), -1 !== t.indexOf(l) || -1 !== t.indexOf('"')) continue;
+ if (!e.allow_script_urls && ("behavior" === t || /expression\s*\(|\/\*|\*\//.test(d))) continue;
+ "font-weight" === t && "700" === d ? d = "bold" : "color" !== t && "background-color" !== t || (d = d.toLowerCase()), g(e.force_hex_color) && "off" !== e.force_hex_color && As(d).each((t => {
+ "always" !== e.force_hex_color && 1 !== t.alpha || (d = Ts(Ns(t)))
+ })), d = d.replace(n, y), s[t] = i ? h(d, !0) : d
+ }
+ }
+ m("border", "", !0), m("border", "-width"), m("border", "-color"), m("border", "-style"), m("padding", ""), m("margin", ""), C = "border", w = "border-style", _ = "border-color", f(E = "border-width") && f(w) && f(_) && (s[C] = s[E] + " " + s[w] + " " + s[_], delete s[E], delete s[w], delete s[_]), "medium none" === s.border && delete s.border, "none" === s["border-image"] && delete s["border-image"]
+ }
+ var C, E, w, _;
+ return s
+ }, 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], a = e[o];
+ a && (n += (n.length > 0 ? " " : "") + o + ": " + a + ";")
+ }
+ };
+ return t && s ? (o("*", s), o(t, s)) : he(e, ((e, o) => {
+ e && ((e, t) => {
+ if (!i || !t) return !0;
+ let n = i["*"];
+ return !(n && n[e] || (n = i[t], n && n[e]))
+ })(o, t) && (n += (n.length > 0 ? " " : "") + o + ": " + e + ";")
+ })), n
+ }
+ };
+ return c
+ }, Ds = {
+ keyLocation: !0,
+ layerX: !0,
+ layerY: !0,
+ returnValue: !0,
+ webkitMovementX: !0,
+ webkitMovementY: !0,
+ keyIdentifier: !0,
+ mozPressure: !0
+ }, Ls = e => E(e.preventDefault) || (e => e instanceof Event || _(e.initEvent))(e), Os = (e, t) => {
+ const n = null != t ? t : {};
+ for (const t in e) ke(Ds, t) || (n[t] = e[t]);
+ return w(e.composedPath) && (n.composedPath = () => e.composedPath()), w(e.getModifierState) && (n.getModifierState = t => e.getModifierState(t)), w(e.getTargetRanges) && (n.getTargetRanges = () => e.getTargetRanges()), n
+ }, Bs = (e, t, n, o) => {
+ var r;
+ const a = Os(t, o);
+ return a.type = e, E(a.target) && (a.target = null !== (r = a.srcElement) && void 0 !== r ? r : n), Ls(t) && (a.preventDefault = () => {
+ a.defaultPrevented = !0, a.isDefaultPrevented = F, _(t.preventDefault) && t.preventDefault()
+ }, a.stopPropagation = () => {
+ a.cancelBubble = !0, a.isPropagationStopped = F, _(t.stopPropagation) && t.stopPropagation()
+ }, a.stopImmediatePropagation = () => {
+ a.isImmediatePropagationStopped = F, a.stopPropagation()
+ }, (e => e.isDefaultPrevented === F || e.isDefaultPrevented === M)(a) || (a.isDefaultPrevented = !0 === a.defaultPrevented ? F : M, a.isPropagationStopped = !0 === a.cancelBubble ? F : M, a.isImmediatePropagationStopped = M)), a
+ }, Ps = /^(?:mouse|contextmenu)|click/, Is = (e, t, n, o) => {
+ e.addEventListener(t, n, o || !1)
+ }, Ms = (e, t, n, o) => {
+ e.removeEventListener(t, n, o || !1)
+ }, Fs = (e, t) => {
+ const n = Bs(e.type, e, document, t);
+ if ((e => w(e) && Ps.test(e.type))(e) && C(e.pageX) && !C(e.clientX)) {
+ const t = n.target.ownerDocument || document, o = t.documentElement, r = t.body, a = n;
+ a.pageX = e.clientX + (o && o.scrollLeft || r && r.scrollLeft || 0) - (o && o.clientLeft || r && r.clientLeft || 0), a.pageY = e.clientY + (o && o.scrollTop || r && r.scrollTop || 0) - (o && o.clientTop || r && r.clientTop || 0)
+ }
+ return n
+ }, Us = (e, t, n) => {
+ const o = e.document, r = {type: "ready"};
+ if (n.domLoaded) return void t(r);
+ const a = () => {
+ Ms(e, "DOMContentLoaded", a), Ms(e, "load", a), n.domLoaded || (n.domLoaded = !0, t(r)), e = null
+ };
+ "complete" === o.readyState || "interactive" === o.readyState && o.body ? a() : Is(e, "DOMContentLoaded", a), n.domLoaded || Is(e, "load", a)
+ };
+
+ class qs {
+ 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 a;
+ const s = window, i = e => {
+ r.executeHandlers(Fs(e || s.event), l)
+ };
+ if (!e || tr(e) || rr(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, Fs({type: t})) : (r.hasFocusIn || "focusin" !== t && "focusout" !== t || (m = !0, f = "focusin" === t ? "focus" : "blur", u = e => {
+ const t = Fs(e || s.event);
+ t.type = "focus" === t.type ? "focusin" : "focusout", r.executeHandlers(t, l)
+ }), a = r.events[l][t], a ? "ready" === t && r.domLoaded ? n(Fs({type: t})) : a.push({
+ func: n,
+ scope: o
+ }) : (r.events[l][t] = a = [{
+ func: n,
+ scope: o
+ }], a.fakeName = f, a.capture = m, a.nativeHandler = u, "ready" === t ? Us(e, u, r) : Is(e, f || t, u, m)))
+ }
+ return e = a = null, n
+ }
+
+ unbind(e, t, n) {
+ if (!e || tr(e) || rr(e)) return this;
+ const o = e[this.expando];
+ if (o) {
+ let r = this.events[o];
+ if (t) {
+ const o = t.split(" ");
+ let a = o.length;
+ for (; a--;) {
+ const t = o[a], s = r[t];
+ if (s) {
+ if (n) {
+ let e = s.length;
+ for (; e--;) if (s[e].func === n) {
+ const n = s.nativeHandler, o = s.fakeName, a = s.capture,
+ i = s.slice(0, e).concat(s.slice(e + 1));
+ i.nativeHandler = n, i.fakeName = o, i.capture = a, r[t] = i
+ }
+ }
+ n && 0 !== s.length || (delete r[t], Ms(e, s.fakeName || t, s.nativeHandler, s.capture))
+ }
+ }
+ } else he(r, ((t, n) => {
+ Ms(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 || tr(e) || rr(e)) return this;
+ const o = Fs({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 || tr(e) || rr(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
+ }
+ }
+ }
+
+ qs.Event = new qs;
+ const js = Bt.each, Hs = Bt.grep, zs = "data-mce-style",
+ $s = Bt.makeMap("fill-opacity font-weight line-height opacity orphans widows z-index zoom", " "),
+ Vs = (e, t, n) => {
+ E(n) || "" === n ? an(e, t) : en(e, t, n)
+ }, Ws = e => e.replace(/[A-Z]/g, (e => "-" + e.toLowerCase())), Ks = (e, t) => {
+ let n = 0;
+ if (e) for (let o = e.nodeType, r = e.previousSibling; r; r = r.previousSibling) {
+ const e = r.nodeType;
+ (!t || !tr(r) || e !== o && r.data.length) && (n++, o = e)
+ }
+ return n
+ }, Ys = (e, t) => {
+ const n = nn(t, "style"), o = e.serialize(e.parse(n), $t(t));
+ Vs(t, zs, o)
+ }, Gs = (e, t, n) => {
+ const o = Ws(t);
+ E(n) || "" === n ? go(e, o) : io(e, o, ((e, t) => S(e) ? ke($s, t) ? e + "" : e + "px" : e)(n, o))
+ }, Xs = (e, t = {}) => {
+ const n = {}, o = window, r = {};
+ let a = 0;
+ const s = za.forElement(yn.fromDom(e), {
+ contentCssCors: t.contentCssCors,
+ referrerPolicy: t.referrerPolicy
+ }), i = [], l = t.schema ? t.schema : ys({}), d = Rs({
+ url_converter: t.url_converter,
+ url_converter_scope: t.url_converter_scope,
+ force_hex_color: t.force_hex_color
+ }, t.schema), c = t.ownEvents ? new qs : qs.Event, u = l.getBlockElements(),
+ m = t => t && e && g(t) ? e.getElementById(t) : t, f = e => {
+ const t = m(e);
+ return w(t) ? yn.fromDom(t) : null
+ }, p = (e, t, n = "") => {
+ let o;
+ const r = f(e);
+ if (w(r) && Yt(r)) {
+ const e = Y[t];
+ o = e && e.get ? e.get(r.dom, t) : nn(r, t)
+ }
+ return w(o) ? o : n
+ }, h = e => {
+ const t = m(e);
+ return E(t) ? [] : t.attributes
+ }, b = (e, n, o) => {
+ D(e, (e => {
+ if (Vo(e)) {
+ const r = yn.fromDom(e), a = "" === o ? null : o, s = nn(r, n), i = Y[n];
+ i && i.set ? i.set(r.dom, a, n) : Vs(r, n, a), s !== a && t.onSetAttrib && t.onSetAttrib({
+ attrElm: r.dom,
+ attrName: n,
+ attrValue: a
+ })
+ }
+ }))
+ }, y = () => t.root_element || e.body, C = (t, n) => ja(e.body, m(t), n), S = (e, t, n) => {
+ const o = m(e);
+ var r;
+ if (!E(o) && (Wo(o) || Vo(r = o) && "http://www.w3.org/2000/svg" === r.namespaceURI)) return n ? co(yn.fromDom(o), Ws(t)) : ("float" === (t = t.replace(/-(\D)/g, ((e, t) => t.toUpperCase()))) && (t = "cssFloat"), o.style ? o.style[t] : void 0)
+ }, k = e => {
+ const t = m(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 = v(e) ? e : [e];
+ return V(n, (e => En(yn.fromDom(e), t)))
+ }, N = (e, t, n, o) => {
+ const r = [];
+ let a = m(e);
+ o = void 0 === o;
+ const s = n || ("BODY" !== y().nodeName ? y().parentNode : null);
+ if (g(t)) if ("*" === t) t = Vo; else {
+ const e = t;
+ t = t => A(t, e)
+ }
+ for (; a && !(a === s || E(a.nodeType) || ar(a) || sr(a));) {
+ if (!t || t(a)) {
+ if (!o) return [a];
+ r.push(a)
+ }
+ a = a.parentNode
+ }
+ return o ? r : null
+ }, R = (e, t, n) => {
+ let o = t;
+ if (e) {
+ g(t) && (o = e => A(e, t));
+ for (let t = e[n]; t; t = t[n]) if (_(o) && o(t)) return t
+ }
+ return null
+ }, D = function (e, t, n) {
+ const o = null != n ? n : this;
+ if (v(e)) {
+ const n = [];
+ return js(e, ((e, r) => {
+ const a = m(e);
+ a && n.push(t.call(o, a, r))
+ })), n
+ }
+ {
+ const n = m(e);
+ return !!n && t.call(o, n)
+ }
+ }, L = (e, t) => {
+ D(e, (e => {
+ he(t, ((t, n) => {
+ b(e, n, t)
+ }))
+ }))
+ }, O = (e, t) => {
+ D(e, (e => {
+ const n = yn.fromDom(e);
+ xo(n, t)
+ }))
+ }, B = (t, n, o, r, a) => D(t, (t => {
+ const s = g(n) ? e.createElement(n) : n;
+ return w(o) && L(s, o), r && (!g(r) && r.nodeType ? s.appendChild(r) : g(r) && O(s, r)), a ? s : t.appendChild(s)
+ })), P = (t, n, o) => B(e.createElement(t), t, n, o, !0), I = is.encodeAllRaw,
+ M = (e, t) => D(e, (e => {
+ const n = yn.fromDom(e);
+ return t && K(Pn(n), (e => {
+ Gt(e) && 0 === e.dom.length ? wo(e) : po(n, e)
+ })), wo(n), n.dom
+ })), F = (e, t, n) => {
+ D(e, (e => {
+ if (Vo(e)) {
+ const o = yn.fromDom(e), r = t.split(" ");
+ K(r, (e => {
+ if (w(n)) {
+ (n ? fn : pn)(o, e)
+ } else hn(o, e)
+ }))
+ }
+ }))
+ }, U = (e, t, n) => D(t, (o => {
+ var r;
+ const a = v(t) ? e.cloneNode(!0) : e;
+ return n && js(Hs(o.childNodes), (e => {
+ a.appendChild(e)
+ })), null === (r = o.parentNode) || void 0 === r || r.replaceChild(a, o), o
+ })), q = e => {
+ if (Vo(e)) {
+ const t = "a" === e.nodeName.toLowerCase() && !p(e, "href") && p(e, "id");
+ if (p(e, "name") || p(e, "data-mce-bookmark") || t) return !0
+ }
+ return !1
+ }, j = () => e.createRange(), H = (n, r, a, s) => {
+ if (v(n)) {
+ let e = n.length;
+ const t = [];
+ for (; e--;) t[e] = H(n[e], r, a, s);
+ return t
+ }
+ return !t.collect || n !== e && n !== o || i.push([n, r, a, s]), c.bind(n, r, a, s || W)
+ }, z = (t, n, r) => {
+ if (v(t)) {
+ let e = t.length;
+ const o = [];
+ for (; e--;) o[e] = z(t[e], n, r);
+ return o
+ }
+ if (i.length > 0 && (t === e || t === o)) {
+ let e = i.length;
+ for (; e--;) {
+ const [o, a, s] = i[e];
+ t !== o || n && n !== a || r && r !== s || c.unbind(o, a, s)
+ }
+ }
+ return c.unbind(t, n, r)
+ }, $ = e => {
+ if (e && Wo(e)) {
+ const t = e.getAttribute("data-mce-contenteditable");
+ return t && "inherit" !== t ? t : "inherit" !== e.contentEditable ? e.contentEditable : null
+ }
+ return null
+ }, W = {
+ doc: e,
+ settings: t,
+ win: o,
+ files: r,
+ stdMode: !0,
+ boxModel: !0,
+ styleSheetLoader: s,
+ boundEvents: i,
+ styles: d,
+ schema: l,
+ events: c,
+ isBlock: e => g(e) ? ke(u, e) : Vo(e) && (ke(u, e.nodeName) || Pa(l, e)),
+ root: null,
+ clone: (e, t) => e.cloneNode(t),
+ getRoot: y,
+ getViewPort: e => {
+ const t = Fo(e);
+ return {x: t.x, y: t.y, w: t.width, h: t.height}
+ },
+ getRect: e => {
+ const t = m(e), n = C(t), o = k(t);
+ return {x: n.x, y: n.y, w: o.w, h: o.h}
+ },
+ getSize: k,
+ getParent: (e, t, n) => {
+ const o = N(e, t, n, !1);
+ return o && o.length > 0 ? o[0] : null
+ },
+ getParents: N,
+ get: m,
+ getNext: (e, t) => R(e, t, "nextSibling"),
+ getPrev: (e, t) => R(e, t, "previousSibling"),
+ select: (n, o) => {
+ var r, a;
+ const s = null !== (a = null !== (r = m(o)) && void 0 !== r ? r : t.root_element) && void 0 !== a ? a : e;
+ return _(s.querySelectorAll) ? me(s.querySelectorAll(n)) : []
+ },
+ is: A,
+ add: B,
+ create: P,
+ createHTML: (e, t, n = "") => {
+ let o = "<" + e;
+ for (const e in t) xe(t, e) && (o += " " + e + '="' + I(t[e]) + '"');
+ return Je(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: M,
+ setStyle: (e, n, o) => {
+ D(e, (e => {
+ const r = yn.fromDom(e);
+ Gs(r, n, o), t.update_styles && Ys(d, r)
+ }))
+ },
+ getStyle: S,
+ setStyles: (e, n) => {
+ D(e, (e => {
+ const o = yn.fromDom(e);
+ he(n, ((e, t) => {
+ Gs(o, t, e)
+ })), t.update_styles && Ys(d, o)
+ }))
+ },
+ removeAllAttribs: e => D(e, (e => {
+ const t = e.attributes;
+ for (let n = t.length - 1; n >= 0; n--) e.removeAttributeNode(t.item(n))
+ })),
+ setAttrib: b,
+ setAttribs: L,
+ getAttrib: p,
+ getPos: C,
+ parseStyle: e => d.parse(e),
+ serializeStyle: (e, t) => d.serialize(e, t),
+ addStyle: t => {
+ if (W !== Xs.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 = ""), K(e.split(","), (e => {
+ r[e] = !0, s.load(e).catch(x)
+ }))
+ },
+ addClass: (e, t) => {
+ F(e, t, !0)
+ },
+ removeClass: (e, t) => {
+ F(e, t, !1)
+ },
+ hasClass: (e, t) => {
+ const n = f(e), o = t.split(" ");
+ return w(n) && re(o, (e => vn(n, e)))
+ },
+ toggleClass: F,
+ show: e => {
+ D(e, (e => go(yn.fromDom(e), "display")))
+ },
+ hide: e => {
+ D(e, (e => io(yn.fromDom(e), "display", "none")))
+ },
+ isHidden: e => {
+ const t = f(e);
+ return w(t) && Pt(mo(t, "display"), "none")
+ },
+ uniqueId: e => (e || "mce_") + a++,
+ setHTML: O,
+ getOuterHTML: e => {
+ const t = f(e);
+ return w(t) ? Vo(t.dom) ? t.dom.outerHTML : (e => {
+ const t = yn.fromTag("div"), n = yn.fromDom(e.dom.cloneNode(!0));
+ return bo(t, n), ko(t)
+ })(t) : ""
+ },
+ setOuterHTML: (e, t) => {
+ D(e, (e => {
+ Vo(e) && (e.outerHTML = t)
+ }))
+ },
+ decode: is.decode,
+ encode: I,
+ insertAfter: (e, t) => {
+ const n = m(t);
+ return D(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: U,
+ rename: (e, t) => {
+ if (e.nodeName !== t.toUpperCase()) {
+ const n = P(t);
+ return js(h(e), (t => {
+ b(n, t.nodeName, p(e, t.nodeName))
+ })), U(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: D,
+ getAttribs: h,
+ isEmpty: (e, t, n) => {
+ let o = 0;
+ if (q(e)) return !1;
+ const r = e.firstChild;
+ if (r) {
+ const a = new Ho(r, e), s = l ? l.getWhitespaceElements() : {},
+ i = t || (l ? l.getNonEmptyElements() : null);
+ let d = r;
+ do {
+ if (Vo(d)) {
+ const e = d.getAttribute("data-mce-bogus");
+ if (e) {
+ d = a.next("all" === e);
+ continue
+ }
+ const t = d.nodeName.toLowerCase();
+ if (i && i[t]) {
+ if ("br" === t) {
+ o++, d = a.next();
+ continue
+ }
+ return !1
+ }
+ if (q(d)) return !1
+ }
+ if (rr(d)) return !1;
+ if (tr(d) && !ia(d.data) && (!(null == n ? void 0 : n.includeZwsp) || !la(d.data))) return !1;
+ if (tr(d) && d.parentNode && s[d.parentNode.nodeName] && ia(d.data)) return !1;
+ d = a.next()
+ } while (d)
+ }
+ return o <= 1
+ },
+ createRng: j,
+ nodeIndex: Ks,
+ split: (e, t, n) => {
+ let o, r, a = j();
+ if (e && t && e.parentNode && t.parentNode) {
+ const s = e.parentNode;
+ return a.setStart(s, Ks(e)), a.setEnd(t.parentNode, Ks(t)), o = a.extractContents(), a = j(), a.setStart(t.parentNode, Ks(t) + 1), a.setEnd(s, Ks(e) + 1), r = a.extractContents(), s.insertBefore(Ka(W, o, l), e), n ? s.insertBefore(n, e) : s.insertBefore(t, e), s.insertBefore(Ka(W, r, l), e), M(e), n || t
+ }
+ },
+ bind: H,
+ unbind: z,
+ fire: (e, t, n) => c.dispatch(e, t, n),
+ dispatch: (e, t, n) => c.dispatch(e, t, n),
+ getContentEditable: $,
+ getContentEditableParent: e => {
+ const t = y();
+ let n = null;
+ for (let o = e; o && o !== t && (n = $(o), null === n); o = o.parentNode) ;
+ return n
+ },
+ isEditable: e => {
+ if (w(e)) {
+ const t = Vo(e) ? e : e.parentElement;
+ return w(t) && Wo(t) && oo(yn.fromDom(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)
+ }
+ }
+ he(r, ((e, t) => {
+ s.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
+ }, Y = ((e, t, n) => {
+ const o = t.keep_values, r = {
+ set: (e, o, r) => {
+ const a = yn.fromDom(e);
+ _(t.url_converter) && w(o) && (o = t.url_converter.call(t.url_converter_scope || n(), String(o), r, e)), Vs(a, "data-mce-" + r, o), Vs(a, r, o)
+ }, get: (e, t) => {
+ const n = yn.fromDom(e);
+ return nn(n, "data-mce-" + t) || nn(n, t)
+ }
+ }, a = {
+ style: {
+ set: (t, n) => {
+ const r = yn.fromDom(t);
+ o && Vs(r, zs, n), an(r, "style"), g(n) && lo(r, e.parse(n))
+ }, get: t => {
+ const n = yn.fromDom(t), o = nn(n, zs) || nn(n, "style");
+ return e.serialize(e.parse(o), $t(n))
+ }
+ }
+ };
+ return o && (a.href = a.src = r), a
+ })(d, t, T(W));
+ return W
+ };
+ Xs.DOM = Xs(document), Xs.nodeIndex = Ks;
+ const Js = Xs.DOM;
+
+ class Qs {
+ 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 = Js;
+ let r;
+ const a = () => {
+ o.remove(s), r && (r.onerror = r.onload = r = null)
+ }, s = o.uniqueId();
+ r = document.createElement("script"), r.id = s, r.type = "text/javascript", r.src = Bt._addCacheSuffix(e), this.settings.referrerPolicy && o.setAttrib(r, "referrerpolicy", this.settings.referrerPolicy), r.onload = () => {
+ a(), t()
+ }, r.onerror = () => {
+ a(), 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;
+ t.queue.push(e);
+ return 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) => {
+ Se(t.scriptLoadedCallbacks, n).each((t => {
+ K(t, (t => t[e](n)))
+ })), delete t.scriptLoadedCallbacks[n]
+ }, o = e => {
+ const t = X(e, (e => "rejected" === e.status));
+ return t.length > 0 ? Promise.reject(oe(t, (({reason: e}) => v(e) ? e : [e]))) : Promise.resolve()
+ },
+ r = e => Promise.allSettled(W(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 a = t.queue;
+ return a.length > 0 ? (t.queue = [], r(a).then(o)) : Promise.resolve()
+ }), (() => (t.states[e] = 3, n("reject", e), Promise.reject(e)))))))),
+ a = e => (t.loading = !0, r(e).then((e => {
+ t.loading = !1;
+ const n = t.queueLoadedCallbacks.shift();
+ return U.from(n).each(I), o(e)
+ }))), s = Ae(e);
+ return t.loading ? new Promise(((e, n) => {
+ t.queueLoadedCallbacks.push((() => {
+ a(s).then(e, n)
+ }))
+ })) : a(s)
+ }
+ }
+
+ Qs.ScriptLoader = new Qs;
+ const Zs = e => {
+ let t = e;
+ return {
+ get: () => t, set: e => {
+ t = e
+ }
+ }
+ }, ei = {}, ti = Zs("en"), ni = () => Se(ei, ti.get()), oi = {
+ getData: () => ve(ei, (e => ({...e}))),
+ setCode: e => {
+ e && ti.set(e)
+ },
+ getCode: () => ti.get(),
+ add: (e, t) => {
+ let n = ei[e];
+ n || (ei[e] = n = {});
+ const o = W(ge(t), (e => e.toLowerCase()));
+ he(t, ((e, r) => {
+ const a = r.toLowerCase();
+ a !== r && ((e, t) => {
+ const n = e.indexOf(t);
+ return -1 !== n && e.indexOf(t, n + 1) > n
+ })(o, a) ? (ke(t, a) || (n[a] = e), n[r] = e) : n[a] = e
+ }))
+ },
+ translate: e => {
+ const t = ni().getOr({}),
+ n = e => _(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]) : Se(t, o.toLowerCase()).map(n).getOr(o)
+ }, a = e => e.replace(/{context:\w+}$/, "");
+ if (o(e)) return "";
+ if (p(s = e) && ke(s, "raw")) return n(e.raw);
+ var s;
+ if ((e => v(e) && e.length > 1)(e)) {
+ const t = e.slice(1);
+ return a(r(e[0]).replace(/\{([0-9]+)\}/g, ((e, o) => ke(t, o) ? n(t[o]) : e)))
+ }
+ return a(r(e))
+ },
+ isRtl: () => ni().bind((e => Se(e, "_dir"))).exists((e => "rtl" === e)),
+ hasCode: e => ke(ei, e)
+ }, ri = () => {
+ const e = [], t = {}, n = {}, o = [], r = (e, t) => {
+ const n = X(o, (n => n.name === e && n.state === t));
+ K(n, (e => e.resolve()))
+ }, a = e => ke(t, e), s = (e, n) => {
+ const o = oi.getCode();
+ !o || n && -1 === ("," + (n || "") + ",").indexOf("," + o + ",") || Qs.ScriptLoader.add(t[e] + "/langs/" + o + ".js")
+ },
+ i = (e, t = "added") => "added" === t && (e => ke(n, e))(e) || "loaded" === t && a(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 !== ri.languageLoad && (a(e) ? s(e, t) : i(e, "loaded").then((() => s(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) => g(t) ? g(e) ? {prefix: "", resource: t, suffix: ""} : {
+ prefix: e.prefix,
+ resource: t,
+ suffix: e.suffix
+ } : t,
+ load: (e, o) => {
+ if (t[e]) return Promise.resolve();
+ let a = g(o) ? o : o.prefix + o.resource + o.suffix;
+ 0 !== a.indexOf("/") && -1 === a.indexOf("://") && (a = ri.baseURL + "/" + a), t[e] = a.substring(0, a.lastIndexOf("/"));
+ const s = () => (r(e, "loaded"), Promise.resolve());
+ return n[e] ? s() : Qs.ScriptLoader.add(a).then(s)
+ },
+ waitFor: i
+ }
+ };
+ ri.languageLoad = !0, ri.baseURL = "", ri.PluginManager = ri(), ri.ThemeManager = ri(), ri.ModelManager = ri();
+ const ai = e => {
+ const t = Zs(U.none()), n = () => t.get().each((e => clearInterval(e)));
+ return {
+ clear: () => {
+ n(), t.set(U.none())
+ }, isSet: () => t.get().isSome(), get: () => t.get(), set: o => {
+ n(), t.set(U.some(setInterval(o, e)))
+ }
+ }
+ }, si = () => {
+ const e = (e => {
+ const t = Zs(U.none()), n = () => t.get().each(e);
+ return {
+ clear: () => {
+ n(), t.set(U.none())
+ }, isSet: () => t.get().isSome(), get: () => t.get(), set: e => {
+ n(), t.set(U.some(e))
+ }
+ }
+ })(x);
+ return {...e, on: t => e.get().each(t)}
+ }, ii = (e, t) => {
+ let n = null;
+ return {
+ cancel: () => {
+ b(n) || (clearTimeout(n), n = null)
+ }, throttle: (...o) => {
+ b(n) && (n = setTimeout((() => {
+ n = null, e.apply(null, o)
+ }), t))
+ }
+ }
+ }, li = (e, t) => {
+ let n = null;
+ const o = () => {
+ b(n) || (clearTimeout(n), n = null)
+ };
+ return {
+ cancel: o, throttle: (...r) => {
+ o(), n = setTimeout((() => {
+ n = null, e.apply(null, r)
+ }), t)
+ }
+ }
+ }, di = T("mce-annotation"), ci = T("data-mce-annotation"), ui = T("data-mce-annotation-uid"),
+ mi = T("data-mce-annotation-active"), fi = T("data-mce-annotation-classes"),
+ gi = T("data-mce-annotation-attrs"), pi = e => t => _n(t, e), hi = (e, t) => {
+ const n = e.selection.getRng(), o = yn.fromDom(n.startContainer), r = yn.fromDom(e.getBody()),
+ a = t.fold((() => "." + di()), (e => `[${ci()}="${e}"]`)), s = In(o, n.startOffset).getOr(o);
+ return no(s, a, pi(r)).bind((t => on(t, `${ui()}`).bind((n => on(t, `${ci()}`).map((t => {
+ const o = bi(e, n);
+ return {uid: n, name: t, elements: o}
+ }))))))
+ }, vi = (e, t) => rn(e, "data-mce-bogus") || jo(e, '[data-mce-bogus="all"]', pi(t)), bi = (e, t) => {
+ const n = yn.fromDom(e.getBody()), o = qo(n, `[${ui()}="${t}"]`);
+ return X(o, (e => !vi(e, n)))
+ }, yi = (e, t) => {
+ const n = yn.fromDom(e.getBody()), o = qo(n, `[${ci()}="${t}"]`), r = {};
+ return K(o, (e => {
+ if (!vi(e, n)) {
+ const t = nn(e, ui()), n = Se(r, t).getOr([]);
+ r[t] = n.concat([e])
+ }
+ })), r
+ }, Ci = (e, t) => {
+ const n = Zs({}), o = () => ({listeners: [], previous: si()}), r = (e, t) => {
+ a(e, (e => (t(e), e)))
+ }, a = (e, t) => {
+ const r = n.get(), a = t(Se(r, e).getOrThunk(o));
+ r[e] = a, n.set(r)
+ }, s = (t, n) => {
+ K(bi(e, t), (e => {
+ n ? en(e, mi(), "true") : an(e, mi())
+ }))
+ }, i = li((() => {
+ const n = le(t.getNames());
+ K(n, (t => {
+ a(t, (n => {
+ const o = n.previous.get();
+ return hi(e, U.some(t)).fold((() => {
+ o.each((e => {
+ (e => {
+ r(e, (t => {
+ K(t.listeners, (t => t(!1, e)))
+ }))
+ })(t), n.previous.clear(), s(e, !1)
+ }))
+ }), (({uid: e, name: t, elements: a}) => {
+ Pt(o, e) || (o.each((e => s(e, !1))), ((e, t, n) => {
+ r(e, (o => {
+ K(o.listeners, (o => o(!0, e, {uid: t, nodes: W(n, (e => e.dom))})))
+ }))
+ })(t, e, a), n.previous.set(e), s(e, !0))
+ })), {previous: n.previous, listeners: n.listeners}
+ }))
+ }))
+ }), 30);
+ e.on("remove", (() => {
+ i.cancel()
+ })), e.on("NodeChange", (() => {
+ i.throttle()
+ }));
+ return {
+ addListener: (e, t) => {
+ a(e, (e => ({previous: e.previous, listeners: e.listeners.concat([t])})))
+ }
+ }
+ };
+ let Ei = 0;
+ const wi = e => {
+ const t = (new Date).getTime(), n = Math.floor(1e9 * Math.random());
+ return Ei++, e + "_" + n + Ei + String(t)
+ }, _i = (e, t) => yn.fromDom(e.dom.cloneNode(t)), Si = e => _i(e, !1), ki = e => _i(e, !0),
+ xi = (e, t) => {
+ const n = ((e, t) => {
+ const n = yn.fromTag(t), o = sn(e);
+ return tn(n, o), n
+ })(e, t);
+ ho(e, n);
+ const o = Pn(e);
+ return Co(n, o), wo(e), n
+ }, Ai = (e, t, n = M) => {
+ const o = new Ho(e, t), r = e => {
+ let t;
+ do {
+ t = o[e]()
+ } while (t && !tr(t) && !n(t));
+ return U.from(t).filter(tr)
+ };
+ return {
+ current: () => U.from(o.current()).filter(tr),
+ next: () => r("next"),
+ prev: () => r("prev"),
+ prev2: () => r("prev2")
+ }
+ }, Ni = (e, t) => {
+ const n = t || (t => e.isBlock(t) || ir(t) || cr(t)), o = (e, t, n, r) => {
+ if (tr(e)) {
+ const n = r(e, t, e.data);
+ if (-1 !== n) return U.some({container: e, offset: n})
+ }
+ return n().bind((e => o(e.container, e.offset, n, r)))
+ };
+ return {
+ backwards: (t, r, a, s) => {
+ const i = Ai(t, null != s ? s : e.getRoot(), n);
+ return o(t, r, (() => i.prev().map((e => ({
+ container: e,
+ offset: e.length
+ })))), a).getOrNull()
+ }, forwards: (t, r, a, s) => {
+ const i = Ai(t, null != s ? s : e.getRoot(), n);
+ return o(t, r, (() => i.next().map((e => ({container: e, offset: 0})))), a).getOrNull()
+ }
+ }
+ }, Ti = Math.round, Ri = e => e ? {
+ left: Ti(e.left),
+ top: Ti(e.top),
+ bottom: Ti(e.bottom),
+ right: Ti(e.right),
+ width: Ti(e.width),
+ height: Ti(e.height)
+ } : {left: 0, top: 0, bottom: 0, right: 0, width: 0, height: 0},
+ Di = (e, t) => (e = Ri(e), t || (e.left = e.left + e.width), e.right = e.left, e.width = 0, e),
+ Li = (e, t, n) => e >= 0 && e <= Math.min(t.height, n.height) / 2, Oi = (e, t) => {
+ const n = Math.min(t.height / 2, e.height / 2);
+ return e.bottom - n < t.top || !(e.top > t.bottom) && Li(t.top - e.bottom, e, t)
+ }, Bi = (e, t) => e.top > t.bottom || !(e.bottom < t.top) && Li(t.bottom - e.top, e, t),
+ Pi = (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))
+ }, Ii = e => {
+ const t = e.startContainer, n = e.startOffset;
+ return t === e.endContainer && t.hasChildNodes() && e.endOffset === n + 1 ? t.childNodes[n] : null
+ }, Mi = (e, t) => {
+ if (Vo(e) && e.hasChildNodes()) {
+ const n = e.childNodes, o = ((e, t, n) => Math.min(Math.max(e, t), n))(t, 0, n.length - 1);
+ return n[o]
+ }
+ return e
+ },
+ Fi = new RegExp("[̀-ͯ҃-҇҈-҉֑-ֽֿׁ-ׂׄ-ׇׅؐ-ًؚ-ٰٟۖ-ۜ۟-ۤۧ-۪ۨ-ܑۭܰ-݊ަ-ް߫-߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛ࣣ-ंऺ़ु-ै्॑-ॗॢ-ॣঁ়াু-ৄ্ৗৢ-ৣਁ-ਂ਼ੁ-ੂੇ-ੈੋ-੍ੑੰ-ੱੵઁ-ં઼ુ-ૅે-ૈ્ૢ-ૣଁ଼ାିୁ-ୄ୍ୖୗୢ-ୣஂாீ்ௗఀా-ీె-ైొ-్ౕ-ౖౢ-ౣಁ಼ಿೂೆೌ-್ೕ-ೖೢ-ೣഁാു-ൄ്ൗൢ-ൣ්ාි-ුූෟัิ-ฺ็-๎ັິ-ູົ-ຼ່-ໍ༘-ཱ༹༙༵༷-ཾྀ-྄྆-྇ྍ-ྗྙ-ྼ࿆ိ-ူဲ-့္-်ွ-ှၘ-ၙၞ-ၠၱ-ၴႂႅ-ႆႍႝ፝-፟ᜒ-᜔ᜲ-᜴ᝒ-ᝓᝲ-ᝳ឴-឵ិ-ួំ៉-៓៝᠋-᠍ᢩᤠ-ᤢᤧ-ᤨᤲ᤹-᤻ᨗ-ᨘᨛᩖᩘ-ᩞ᩠ᩢᩥ-ᩬᩳ-᩿᩼᪰-᪽᪾ᬀ-ᬃ᬴ᬶ-ᬺᬼᭂ᭫-᭳ᮀ-ᮁᮢ-ᮥᮨ-ᮩ᮫-ᮭ᯦ᯨ-ᯩᯭᯯ-ᯱᰬ-ᰳᰶ-᰷᳐-᳔᳒-᳢᳠-᳨᳭᳴᳸-᳹᷀-᷵᷼-᷿-⃐-⃜⃝-⃠⃡⃢-⃤⃥-⃰⳯-⵿⳱ⷠ-〪ⷿ-〭〮-゙〯-゚꙯꙰-꙲ꙴ-꙽ꚞ-ꚟ꛰-꛱ꠂ꠆ꠋꠥ-ꠦ꣄꣠-꣱ꤦ-꤭ꥇ-ꥑꦀ-ꦂ꦳ꦶ-ꦹꦼꧥꨩ-ꨮꨱ-ꨲꨵ-ꨶꩃꩌꩼꪰꪲ-ꪴꪷ-ꪸꪾ-꪿꫁ꫬ-ꫭ꫶ꯥꯨ꯭ﬞ︀-️︠-゙︯-゚]"),
+ Ui = e => g(e) && e.charCodeAt(0) >= 768 && Fi.test(e), qi = Vo, ji = oa,
+ Hi = Go("display", "block table"), zi = Go("float", "left right"), $i = ((...e) => t => {
+ for (let n = 0; n < e.length; n++) if (!e[n](t)) return !1;
+ return !0
+ })(qi, ji, O(zi)), Vi = O(Go("white-space", "pre pre-line pre-wrap")), Wi = tr, Ki = ir,
+ Yi = Xs.nodeIndex, Gi = (e, t) => t < 0 && Vo(e) && e.hasChildNodes() ? void 0 : Mi(e, t),
+ Xi = e => e ? e.createRange() : Xs.DOM.createRng(), Ji = e => g(e) && /[\r\n\t ]/.test(e),
+ Qi = e => !!e.setStart && !!e.setEnd, Zi = e => {
+ const t = e.startContainer, n = e.startOffset;
+ if (Ji(e.toString()) && Vi(t.parentNode) && tr(t)) {
+ const e = t.data;
+ if (Ji(e[n - 1]) || Ji(e[n + 1])) return !0
+ }
+ return !1
+ }, el = e => 0 === e.left && 0 === e.right && 0 === e.top && 0 === e.bottom, tl = e => {
+ var t;
+ let n;
+ const o = e.getClientRects();
+ return n = o.length > 0 ? Ri(o[0]) : Ri(e.getBoundingClientRect()), !Qi(e) && Ki(e) && el(n) ? (e => {
+ const t = e.ownerDocument, n = Xi(t), o = t.createTextNode(br), r = e.parentNode;
+ r.insertBefore(o, e), n.setStart(o, 0), n.setEnd(o, 1);
+ const a = Ri(n.getBoundingClientRect());
+ return r.removeChild(o), a
+ })(e) : el(n) && Qi(e) && null !== (t = (e => {
+ const t = e.startContainer, n = e.endContainer, o = e.startOffset, r = e.endOffset;
+ if (t === n && tr(n) && 0 === o && 1 === r) {
+ const t = e.cloneRange();
+ return t.setEndAfter(n), tl(t)
+ }
+ return null
+ })(e)) && void 0 !== t ? t : n
+ }, nl = (e, t) => {
+ const n = Di(e, t);
+ return n.width = 1, n.right = n.left + 1, n
+ }, ol = 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 = Xi(e.ownerDocument);
+ if (t < e.data.length) {
+ if (Ui(e.data[t])) return;
+ if (Ui(e.data[t - 1]) && (o.setStart(e, t), o.setEnd(e, t + 1), !Zi(o))) return void n(nl(tl(o), !1))
+ }
+ t > 0 && (o.setStart(e, t - 1), o.setEnd(e, t), Zi(o) || n(nl(tl(o), !1))), t < e.data.length && (o.setStart(e, t), o.setEnd(e, t + 1), Zi(o) || n(nl(tl(o), !0)))
+ }, r = e.container(), a = e.offset();
+ if (Wi(r)) return o(r, a), t;
+ if (qi(r)) if (e.isAtEnd()) {
+ const e = Gi(r, a);
+ Wi(e) && o(e, e.data.length), $i(e) && !Ki(e) && n(nl(tl(e), !1))
+ } else {
+ const s = Gi(r, a);
+ if (Wi(s) && o(s, 0), $i(s) && e.isAtEnd()) return n(nl(tl(s), !1)), t;
+ const i = Gi(e.container(), e.offset() - 1);
+ $i(i) && !Ki(i) && (Hi(i) || Hi(s) || !$i(s)) && n(nl(tl(i), !1)), $i(s) && n(nl(tl(s), !0))
+ }
+ return t
+ }, rl = (e, t, n) => {
+ const o = () => (n || (n = ol(rl(e, t))), n);
+ return {
+ container: T(e),
+ offset: T(t),
+ toRange: () => {
+ const n = Xi(e.ownerDocument);
+ return n.setStart(e, t), n.setEnd(e, t), n
+ },
+ getClientRects: o,
+ isVisible: () => o().length > 0,
+ isAtStart: () => (Wi(e), 0 === t),
+ isAtEnd: () => Wi(e) ? t >= e.data.length : t >= e.childNodes.length,
+ isEqual: n => n && e === n.container() && t === n.offset(),
+ getNode: n => Gi(e, n ? t - 1 : t)
+ }
+ };
+ rl.fromRangeStart = e => rl(e.startContainer, e.startOffset), rl.fromRangeEnd = e => rl(e.endContainer, e.endOffset), rl.after = e => rl(e.parentNode, Yi(e) + 1), rl.before = e => rl(e.parentNode, Yi(e)), rl.isAbove = (e, t) => Mt(ce(t.getClientRects()), ue(e.getClientRects()), Oi).getOr(!1), rl.isBelow = (e, t) => Mt(ue(t.getClientRects()), ce(e.getClientRects()), Bi).getOr(!1), rl.isAtStart = e => !!e && e.isAtStart(), rl.isAtEnd = e => !!e && e.isAtEnd(), rl.isTextPosition = e => !!e && tr(e.container()), rl.isElementPosition = e => !rl.isTextPosition(e);
+ const al = (e, t) => {
+ tr(t) && 0 === t.data.length && e.remove(t)
+ }, sl = (e, t, n) => {
+ sr(n) ? ((e, t, n) => {
+ const o = U.from(n.firstChild), r = U.from(n.lastChild);
+ t.insertNode(n), o.each((t => al(e, t.previousSibling))), r.each((t => al(e, t.nextSibling)))
+ })(e, t, n) : ((e, t, n) => {
+ t.insertNode(n), al(e, n.previousSibling), al(e, n.nextSibling)
+ })(e, t, n)
+ }, il = tr, ll = Jo, dl = Xs.nodeIndex, cl = e => {
+ const t = e.parentNode;
+ return ll(t) ? cl(t) : t
+ },
+ ul = e => e ? Oe(e.childNodes, ((e, t) => (ll(t) && "BR" !== t.nodeName ? e = e.concat(ul(t)) : e.push(t), e)), []) : [],
+ ml = e => t => e === t, fl = e => (il(e) ? "text()" : e.nodeName.toLowerCase()) + "[" + (e => {
+ let t, n;
+ t = ul(cl(e)), n = Be(t, ml(e), e), t = t.slice(0, n + 1);
+ const o = Oe(t, ((e, n, o) => (il(n) && il(t[o - 1]) && e++, e)), 0);
+ return t = Le(t, Yo([e.nodeName])), n = Be(t, ml(e), e), n - o
+ })(e) + "]", gl = (e, t) => {
+ let n, o = [], r = t.container(), a = t.offset();
+ if (il(r)) n = ((e, t) => {
+ let n = e;
+ for (; (n = n.previousSibling) && il(n);) t += n.data.length;
+ return t
+ })(r, a); else {
+ const e = r.childNodes;
+ a >= e.length ? (n = "after", a = e.length - 1) : n = "before", r = e[a]
+ }
+ o.push(fl(r));
+ let s = ((e, t, n) => {
+ const o = [];
+ for (let r = t.parentNode; r && r !== e && (!n || !n(r)); r = r.parentNode) o.push(r);
+ return o
+ })(e, r);
+ return s = Le(s, O(Jo)), o = o.concat(De(s, (e => fl(e)))), o.reverse().join("/") + "," + n
+ }, pl = (e, t) => {
+ if (!t) return null;
+ const n = t.split(","), o = n[0].split("/"), r = n.length > 1 ? n[1] : "before",
+ a = Oe(o, ((e, t) => {
+ const n = /([\w\-\(\)]+)\[([0-9]+)\]/.exec(t);
+ return n ? ("text()" === n[1] && (n[1] = "#text"), ((e, t, n) => {
+ let o = ul(e);
+ return o = Le(o, ((e, t) => !il(e) || !il(o[t - 1]))), o = Le(o, Yo([t])), o[n]
+ })(e, n[1], parseInt(n[2], 10))) : null
+ }), e);
+ if (!a) return null;
+ if (!il(a) && a.parentNode) {
+ let e;
+ return e = "after" === r ? dl(a) + 1 : dl(a), rl(a.parentNode, e)
+ }
+ return ((e, t) => {
+ let n = e, o = 0;
+ for (; il(n);) {
+ const r = n.data.length;
+ if (t >= o && t <= o + r) {
+ e = n, t -= o;
+ break
+ }
+ if (!il(n.nextSibling)) {
+ e = n, t = r;
+ break
+ }
+ o += r, n = n.nextSibling
+ }
+ return il(e) && t > e.data.length && (t = e.data.length), rl(e, t)
+ })(a, parseInt(r, 10))
+ }, hl = cr, vl = (e, t, n, o, r) => {
+ const a = r ? o.startContainer : o.endContainer;
+ let s = r ? o.startOffset : o.endOffset;
+ const i = [], l = e.getRoot();
+ if (tr(a)) i.push(n ? ((e, t, n) => {
+ let o = e(t.data.slice(0, n)).length;
+ for (let n = t.previousSibling; n && tr(n); n = n.previousSibling) o += e(n.data).length;
+ return o
+ })(t, a, s) : s); else {
+ let t = 0;
+ const o = a.childNodes;
+ s >= o.length && o.length && (t = 1, s = Math.max(0, o.length - 1)), i.push(e.nodeIndex(o[s], n) + t)
+ }
+ for (let t = a; t && t !== l; t = t.parentNode) i.push(e.nodeIndex(t, n));
+ return i
+ }, bl = (e, t, n) => {
+ let o = 0;
+ return Bt.each(e.select(t), (e => "all" === e.getAttribute("data-mce-bogus") ? void 0 : e !== n && void o++)), o
+ }, yl = (e, t) => {
+ let n = t ? e.startContainer : e.endContainer, o = t ? e.startOffset : e.endOffset;
+ if (Vo(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))
+ }
+ }, Cl = e => (yl(e, !0), yl(e, !1), e), El = (e, t) => {
+ if (Vo(e) && (e = Mi(e, t), hl(e))) return e;
+ if (jr(e)) {
+ tr(e) && Ur(e) && (e = e.parentNode);
+ let t = e.previousSibling;
+ if (hl(t)) return t;
+ if (t = e.nextSibling, hl(t)) return t
+ }
+ }, wl = (e, t, n) => {
+ const o = n.getNode(), r = n.getRng();
+ if ("IMG" === o.nodeName || hl(o)) {
+ const e = o.nodeName;
+ return {name: e, index: bl(n.dom, e, o)}
+ }
+ const a = (e => El(e.startContainer, e.startOffset) || El(e.endContainer, e.endOffset))(r);
+ if (a) {
+ const e = a.tagName;
+ return {name: e, index: bl(n.dom, e, a)}
+ }
+ return ((e, t, n, o) => {
+ const r = t.dom, a = vl(r, e, n, o, !0), s = t.isForward(), i = Yr(o) ? {isFakeCaret: !0} : {};
+ return t.isCollapsed() ? {start: a, forward: s, ...i} : {
+ start: a,
+ end: vl(r, e, n, o, !1),
+ forward: s, ...i
+ }
+ })(e, n, t, r)
+ }, _l = (e, t, n) => {
+ const o = {"data-mce-type": "bookmark", id: t, style: "overflow:hidden;line-height:0px"};
+ return n ? e.create("span", o, "") : e.create("span", o)
+ }, Sl = (e, t) => {
+ const n = e.dom;
+ let o = e.getRng();
+ const r = n.uniqueId(), a = e.isCollapsed(), s = e.getNode(), i = s.nodeName, l = e.isForward();
+ if ("IMG" === i) return {name: i, index: bl(n, i, s)};
+ const d = Cl(o.cloneRange());
+ if (!a) {
+ d.collapse(!1);
+ const e = _l(n, r + "_end", t);
+ sl(n, d, e)
+ }
+ o = Cl(o), o.collapse(!0);
+ const c = _l(n, r + "_start", t);
+ return sl(n, o, c), e.moveToBookmark({id: r, keep: !0, forward: l}), {id: r, forward: l}
+ }, kl = (e, t, n = !1) => 2 === t ? wl(Ir, n, e) : 3 === t ? (e => {
+ const t = e.getRng();
+ return {
+ start: gl(e.dom.getRoot(), rl.fromRangeStart(t)),
+ end: gl(e.dom.getRoot(), rl.fromRangeEnd(t)),
+ forward: e.isForward()
+ }
+ })(e) : t ? (e => ({rng: e.getRng(), forward: e.isForward()}))(e) : Sl(e, !1), xl = L(wl, R, !0),
+ Al = e => {
+ const t = t => t(e), n = T(e), o = () => r, r = {
+ tag: !0,
+ inner: e,
+ fold: (t, n) => n(e),
+ isValue: F,
+ isError: M,
+ map: t => Tl.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: () => U.some(e)
+ };
+ return r
+ }, Nl = e => {
+ const t = () => n, n = {
+ tag: !1,
+ inner: e,
+ fold: (t, n) => t(e),
+ isValue: M,
+ isError: F,
+ map: t,
+ mapError: t => Tl.error(t(e)),
+ bind: t,
+ exists: M,
+ forall: F,
+ getOr: R,
+ or: R,
+ getOrThunk: P,
+ orThunk: P,
+ getOrDie: B(String(e)),
+ each: x,
+ toOptional: U.none
+ };
+ return n
+ }, Tl = {value: Al, error: Nl, fromOption: (e, t) => e.fold((() => Nl(t)), Al)}, Rl = e => {
+ if (!v(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 K(e, ((o, r) => {
+ const a = ge(o);
+ if (1 !== a.length) throw new Error("one and only one name per case");
+ const s = a[0], i = o[s];
+ if (void 0 !== n[s]) throw new Error("duplicate key detected:" + s);
+ if ("cata" === s) throw new Error("cannot have a case named cata (sorry)");
+ if (!v(i)) throw new Error("case arguments must be an array");
+ t.push(s), n[s] = (...n) => {
+ const o = n.length;
+ if (o !== i.length) throw new Error("Wrong number of arguments to case " + s + ". 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 = ge(e);
+ if (t.length !== o.length) throw new Error("Wrong number of arguments to match. Expected: " + t.join(",") + "\nActual: " + o.join(","));
+ if (!re(t, (e => $(o, e)))) throw new Error("Not all branches were specified when using match. Specified: " + o.join(", ") + "\nRequired: " + t.join(", "));
+ return e[s].apply(null, n)
+ }, log: e => {
+ console.log(e, {constructors: t, constructor: s, params: n})
+ }
+ }
+ }
+ })), n
+ };
+ Rl([{bothErrors: ["error1", "error2"]}, {firstError: ["error1", "value2"]}, {secondError: ["value1", "error2"]}, {bothValues: ["value1", "value2"]}]);
+ const Dl = e => "inline-command" === e.type || "inline-format" === e.type,
+ Ll = e => "block-command" === e.type || "block-format" === e.type, Ol = e => {
+ const t = t => Tl.error({message: t, pattern: e}), n = (n, o, r) => {
+ if (void 0 !== e.format) {
+ let r;
+ if (v(e.format)) {
+ if (!re(e.format, g)) return t(n + " pattern has non-string items in the `format` array");
+ r = e.format
+ } else {
+ if (!g(e.format)) return t(n + " pattern has non-string `format` parameter");
+ r = [e.format]
+ }
+ return Tl.value(o(r))
+ }
+ return void 0 !== e.cmd ? g(e.cmd) ? Tl.value(r(e.cmd, e.value)) : t(n + " pattern has non-string `cmd` parameter") : t(n + " pattern is missing both `format` and `cmd` parameters")
+ };
+ if (!p(e)) return t("Raw pattern is not an object");
+ if (!g(e.start)) return t("Raw pattern is missing `start` parameter");
+ if (void 0 !== e.end) {
+ if (!g(e.end)) return t("Inline pattern has non-string `end` parameter");
+ if (0 === e.start.length && 0 === e.end.length) return t("Inline pattern has empty `start` and `end` parameters");
+ let o = e.start, r = e.end;
+ return 0 === r.length && (r = o, o = ""), n("Inline", (e => ({
+ type: "inline-format",
+ start: o,
+ end: r,
+ format: e
+ })), ((e, t) => ({type: "inline-command", start: o, end: r, cmd: e, value: t})))
+ }
+ return void 0 !== e.replacement ? g(e.replacement) ? 0 === e.start.length ? t("Replacement pattern has empty `start` parameter") : Tl.value({
+ type: "inline-command",
+ start: "",
+ end: e.start,
+ cmd: "mceInsertContent",
+ value: e.replacement
+ }) : t("Replacement pattern has non-string `replacement` parameter") : 0 === e.start.length ? t("Block pattern has empty `start` parameter") : n("Block", (t => ({
+ type: "block-format",
+ start: e.start,
+ format: t[0]
+ })), ((t, n) => ({type: "block-command", start: e.start, cmd: t, value: n})))
+ }, Bl = e => X(e, Ll), Pl = e => X(e, Dl), Il = e => {
+ const t = (e => {
+ const t = [], n = [];
+ return K(e, (e => {
+ e.fold((e => {
+ t.push(e)
+ }), (e => {
+ n.push(e)
+ }))
+ })), {errors: t, values: n}
+ })(W(e, Ol));
+ return K(t.errors, (e => console.error(e.message, e.pattern))), t.values
+ }, Ml = _t().deviceType, Fl = Ml.isTouch(), Ul = Xs.DOM, ql = e => f(e, RegExp),
+ jl = e => t => t.options.get(e), Hl = e => g(e) || p(e), zl = (e, t = "") => n => {
+ const o = g(n);
+ if (o) {
+ if (-1 !== n.indexOf("=")) {
+ const r = (e => {
+ const t = e.indexOf("=") > 0 ? e.split(/[;,](?![^=;,]*(?:[;,]|$))/) : e.split(",");
+ return Q(t, ((e, t) => {
+ const n = t.split("="), o = n[0], r = n.length > 1 ? n[1] : o;
+ return e[Ke(o)] = Ke(r), e
+ }), {})
+ })(n);
+ return {value: Se(r, e.id).getOr(t), valid: o}
+ }
+ return {value: n, valid: o}
+ }
+ return {valid: !1, message: "Must be a string."}
+ }, $l = jl("iframe_attrs"), Vl = jl("doctype"), Wl = jl("document_base_url"), Kl = jl("body_id"),
+ Yl = jl("body_class"), Gl = jl("content_security_policy"), Xl = jl("br_in_pre"),
+ Jl = jl("forced_root_block"), Ql = jl("forced_root_block_attrs"), Zl = jl("newline_behavior"),
+ ed = jl("br_newline_selector"), td = jl("no_newline_selector"), nd = jl("keep_styles"),
+ od = jl("end_container_on_empty_block"), rd = jl("automatic_uploads"),
+ ad = jl("images_reuse_filename"), sd = jl("images_replace_blob_uris"), id = jl("icons"),
+ ld = jl("icons_url"), dd = jl("images_upload_url"), cd = jl("images_upload_base_path"),
+ ud = jl("images_upload_credentials"), md = jl("images_upload_handler"), fd = jl("content_css_cors"),
+ gd = jl("referrer_policy"), pd = jl("language"), hd = jl("language_url"),
+ vd = jl("indent_use_margin"), bd = jl("indentation"), yd = jl("content_css"),
+ Cd = jl("content_style"), Ed = jl("font_css"), wd = jl("directionality"),
+ _d = jl("inline_boundaries_selector"), Sd = jl("object_resizing"),
+ kd = jl("resize_img_proportional"), xd = jl("placeholder"), Ad = jl("event_root"),
+ Nd = jl("service_message"), Td = jl("theme"), Rd = jl("theme_url"), Dd = jl("model"),
+ Ld = jl("model_url"), Od = jl("inline_boundaries"), Bd = jl("formats"), Pd = jl("preview_styles"),
+ Id = jl("format_empty_lines"), Md = jl("format_noneditable_selector"),
+ Fd = jl("custom_ui_selector"), Ud = jl("inline"), qd = jl("hidden_input"), jd = jl("submit_patch"),
+ Hd = jl("add_form_submit_trigger"), zd = jl("add_unload_trigger"),
+ $d = jl("custom_undo_redo_levels"), Vd = jl("disable_nodechange"), Wd = jl("readonly"),
+ Kd = jl("editable_root"), Yd = jl("content_css_cors"), Gd = jl("plugins"),
+ Xd = jl("external_plugins"), Jd = jl("block_unsupported_drop"), Qd = jl("visual"),
+ Zd = jl("visual_table_class"), ec = jl("visual_anchor_class"), tc = jl("iframe_aria_text"),
+ nc = jl("setup"), oc = jl("init_instance_callback"), rc = jl("urlconverter_callback"),
+ ac = jl("auto_focus"), sc = jl("browser_spellcheck"), ic = jl("protect"),
+ lc = jl("paste_block_drop"), dc = jl("paste_data_images"), cc = jl("paste_preprocess"),
+ uc = jl("paste_postprocess"), mc = jl("newdocument_content"), fc = jl("paste_webkit_styles"),
+ gc = jl("paste_remove_styles_if_webkit"), pc = jl("paste_merge_formats"), hc = jl("smart_paste"),
+ vc = jl("paste_as_text"), bc = jl("paste_tab_spaces"), yc = jl("allow_html_data_urls"),
+ Cc = jl("text_patterns"), Ec = jl("text_patterns_lookup"), wc = jl("noneditable_class"),
+ _c = jl("editable_class"), Sc = jl("noneditable_regexp"), kc = jl("preserve_cdata"),
+ xc = jl("highlight_on_focus"), Ac = jl("xss_sanitization"), Nc = jl("init_content_sync"),
+ Tc = e => Bt.explode(e.options.get("images_file_types")), Rc = jl("table_tab_navigation"),
+ Dc = jl("details_initial_state"), Lc = jl("details_serialized_state"), Oc = jl("force_hex_color"),
+ Bc = jl("sandbox_iframes"), Pc = Vo, Ic = tr, Mc = e => {
+ const t = e.parentNode;
+ t && t.removeChild(e)
+ }, Fc = e => {
+ const t = Ir(e);
+ return {count: e.length - t.length, text: t}
+ }, Uc = e => {
+ let t;
+ for (; -1 !== (t = e.data.lastIndexOf(Br));) e.deleteData(t, 1)
+ }, qc = (e, t) => ($c(e), t), jc = (e, t) => {
+ const n = t.container(), o = ((e, t) => {
+ const n = z(e, t);
+ return -1 === n ? U.none() : U.some(n)
+ })(me(n.childNodes), e).map((e => e < t.offset() ? rl(n, t.offset() - 1) : t)).getOr(t);
+ return $c(e), o
+ }, Hc = (e, t) => Ic(e) && t.container() === e ? ((e, t) => {
+ const n = Fc(e.data.substr(0, t.offset())), o = Fc(e.data.substr(t.offset()));
+ return (n.text + o.text).length > 0 ? (Uc(e), rl(e, t.offset() - n.count)) : t
+ })(e, t) : qc(e, t),
+ zc = (e, t) => rl.isTextPosition(t) ? Hc(e, t) : ((e, t) => t.container() === e.parentNode ? jc(e, t) : qc(e, t))(e, t),
+ $c = e => {
+ Pc(e) && jr(e) && (Hr(e) ? e.removeAttribute("data-mce-caret") : Mc(e)), Ic(e) && (Uc(e), 0 === e.data.length && Mc(e))
+ }, Vc = cr, Wc = fr, Kc = ur, Yc = (e, t, n) => {
+ const o = Di(t.getBoundingClientRect(), n);
+ let r, a;
+ if ("BODY" === e.tagName) {
+ const t = e.ownerDocument.documentElement;
+ r = e.scrollLeft || t.scrollLeft, a = e.scrollTop || t.scrollTop
+ } else {
+ const t = e.getBoundingClientRect();
+ r = e.scrollLeft - t.left, a = e.scrollTop - t.top
+ }
+ o.left += r, o.right += r, o.top += a, o.bottom += a, o.width = 1;
+ let s = t.offsetWidth - t.clientWidth;
+ return s > 0 && (n && (s *= -1), o.left += s, o.right += s), o
+ }, Gc = (e, t, n, o) => {
+ const r = si();
+ let a, s;
+ const i = Jl(e), l = e.dom, d = () => {
+ (e => {
+ var t, n;
+ const o = qo(yn.fromDom(e), "*[contentEditable=false],video,audio,embed,object");
+ for (let e = 0; e < o.length; e++) {
+ const r = o[e].dom;
+ let a = r.previousSibling;
+ if (Wr(a)) {
+ const e = a.data;
+ 1 === e.length ? null === (t = a.parentNode) || void 0 === t || t.removeChild(a) : a.deleteData(e.length - 1, 1)
+ }
+ a = r.nextSibling, Vr(a) && (1 === a.data.length ? null === (n = a.parentNode) || void 0 === n || n.removeChild(a) : a.deleteData(0, 1))
+ }
+ })(t), s && ($c(s), s = null), r.on((e => {
+ l.remove(e.caret), r.clear()
+ })), a && (clearInterval(a), a = void 0)
+ }, c = () => {
+ a = setInterval((() => {
+ r.on((e => {
+ o() ? l.toggleClass(e.caret, "mce-visual-caret-hidden") : l.addClass(e.caret, "mce-visual-caret-hidden")
+ }))
+ }), 500)
+ };
+ return {
+ show: (e, o) => {
+ let a;
+ if (d(), Kc(o)) return null;
+ if (!n(o)) return s = ((e, t) => {
+ var n;
+ const o = (null !== (n = e.ownerDocument) && void 0 !== n ? n : document).createTextNode(Br),
+ r = e.parentNode;
+ if (t) {
+ const t = e.previousSibling;
+ if (Fr(t)) {
+ if (jr(t)) return t;
+ if (Wr(t)) return t.splitText(t.data.length - 1)
+ }
+ null == r || r.insertBefore(o, e)
+ } else {
+ const t = e.nextSibling;
+ if (Fr(t)) {
+ if (jr(t)) return t;
+ if (Vr(t)) return t.splitText(1), t
+ }
+ e.nextSibling ? null == r || r.insertBefore(o, e.nextSibling) : null == r || r.appendChild(o)
+ }
+ return o
+ })(o, e), a = o.ownerDocument.createRange(), Jc(s.nextSibling) ? (a.setStart(s, 0), a.setEnd(s, 0)) : (a.setStart(s, 1), a.setEnd(s, 1)), a;
+ {
+ 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(Lr().dom);
+ const a = t.parentNode;
+ return n ? null == a || a.insertBefore(r, t) : t.nextSibling ? null == a || a.insertBefore(r, t.nextSibling) : null == a || a.appendChild(r), r
+ })(i, o, e), d = Yc(t, o, e);
+ l.setStyle(n, "top", d.top), s = n;
+ const u = l.create("div", {class: "mce-visual-caret", "data-mce-bogus": "all"});
+ l.setStyles(u, {...d}), l.add(t, u), r.set({
+ caret: u,
+ element: o,
+ before: e
+ }), e && l.addClass(u, "mce-visual-caret-before"), c(), a = o.ownerDocument.createRange(), a.setStart(n, 0), a.setEnd(n, 0)
+ }
+ return a
+ },
+ 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 = Yc(t, e.element, e.before);
+ l.setStyles(e.caret, {...n})
+ }))
+ },
+ destroy: () => clearInterval(a)
+ }
+ }, Xc = () => Rt.browser.isFirefox(), Jc = e => Vc(e) || Wc(e),
+ Qc = e => (Jc(e) || Qo(e) && Xc()) && Tn(yn.fromDom(e)).exists(oo), Zc = dr, eu = cr, tu = fr,
+ nu = Go("display", "block table table-cell table-caption list-item"), ou = jr, ru = Ur, au = Vo,
+ su = tr, iu = oa, lu = e => e > 0, du = e => e < 0, cu = (e, t) => {
+ let n;
+ for (; n = e(t);) if (!ru(n)) return n;
+ return null
+ }, uu = (e, t, n, o, r) => {
+ const a = new Ho(e, o), s = eu(e) || ru(e);
+ let i;
+ if (du(t)) {
+ if (s && (i = cu(a.prev.bind(a), !0), n(i))) return i;
+ for (; i = cu(a.prev.bind(a), r);) if (n(i)) return i
+ }
+ if (lu(t)) {
+ if (s && (i = cu(a.next.bind(a), !0), n(i))) return i;
+ for (; i = cu(a.next.bind(a), r);) if (n(i)) return i
+ }
+ return null
+ }, mu = (e, t) => {
+ for (; e && e !== t;) {
+ if (nu(e)) return e;
+ e = e.parentNode
+ }
+ return null
+ }, fu = (e, t, n) => mu(e.container(), n) === mu(t.container(), n), gu = (e, t) => {
+ if (!t) return U.none();
+ const n = t.container(), o = t.offset();
+ return au(n) ? U.from(n.childNodes[o + e]) : U.none()
+ }, pu = (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
+ }, hu = (e, t, n) => mu(t, e) === mu(n, e), vu = (e, t, n) => {
+ const o = e ? "previousSibling" : "nextSibling";
+ let r = n;
+ for (; r && r !== t;) {
+ let e = r[o];
+ if (e && ou(e) && (e = e[o]), eu(e) || tu(e)) {
+ if (hu(t, e, r)) return e;
+ break
+ }
+ if (iu(e)) break;
+ r = r.parentNode
+ }
+ return null
+ }, bu = L(pu, !0), yu = L(pu, !1), Cu = (e, t, n) => {
+ let o;
+ const r = L(vu, !0, t), a = L(vu, !1, t), s = n.startContainer, i = n.startOffset;
+ if (Ur(s)) {
+ const e = su(s) ? s.parentNode : s, t = e.getAttribute("data-mce-caret");
+ if ("before" === t && (o = e.nextSibling, Qc(o))) return bu(o);
+ if ("after" === t && (o = e.previousSibling, Qc(o))) return yu(o)
+ }
+ if (!n.collapsed) return n;
+ if (tr(s)) {
+ if (ou(s)) {
+ if (1 === e) {
+ if (o = a(s), o) return bu(o);
+ if (o = r(s), o) return yu(o)
+ }
+ if (-1 === e) {
+ if (o = r(s), o) return yu(o);
+ if (o = a(s), o) return bu(o)
+ }
+ return n
+ }
+ if (Wr(s) && i >= s.data.length - 1) return 1 === e && (o = a(s), o) ? bu(o) : n;
+ if (Vr(s) && i <= 1) return -1 === e && (o = r(s), o) ? yu(o) : n;
+ if (i === s.data.length) return o = a(s), o ? bu(o) : n;
+ if (0 === i) return o = r(s), o ? yu(o) : n
+ }
+ return n
+ }, Eu = (e, t) => gu(e ? 0 : -1, t).filter(eu), wu = (e, t, n) => {
+ const o = Cu(e, t, n);
+ return -1 === e ? rl.fromRangeStart(o) : rl.fromRangeEnd(o)
+ }, _u = e => U.from(e.getNode()).map(yn.fromDom), Su = (e, t) => {
+ let n = t;
+ for (; n = e(n);) if (n.isVisible()) return n;
+ return n
+ }, ku = (e, t) => {
+ const n = fu(e, t);
+ return !(n || !ir(e.getNode())) || n
+ };
+ var xu;
+ !function (e) {
+ e[e.Backwards = -1] = "Backwards", e[e.Forwards = 1] = "Forwards"
+ }(xu || (xu = {}));
+ const Au = cr, Nu = tr, Tu = Vo, Ru = ir, Du = oa,
+ Lu = e => ea(e) || (e => !!ra(e) && !Q(me(e.getElementsByTagName("*")), ((e, t) => e || Gr(t)), !1))(e),
+ Ou = aa, Bu = (e, t) => e.hasChildNodes() && t < e.childNodes.length ? e.childNodes[t] : null,
+ Pu = (e, t) => {
+ if (lu(e)) {
+ if (Du(t.previousSibling) && !Nu(t.previousSibling)) return rl.before(t);
+ if (Nu(t)) return rl(t, 0)
+ }
+ if (du(e)) {
+ if (Du(t.nextSibling) && !Nu(t.nextSibling)) return rl.after(t);
+ if (Nu(t)) return rl(t, t.data.length)
+ }
+ return du(e) ? Ru(t) ? rl.before(t) : rl.after(t) : rl.before(t)
+ }, Iu = (e, t, n) => {
+ let o, r, a, s;
+ if (!Tu(n) || !t) return null;
+ if (t.isEqual(rl.after(n)) && n.lastChild) {
+ if (s = rl.after(n.lastChild), du(e) && Du(n.lastChild) && Tu(n.lastChild)) return Ru(n.lastChild) ? rl.before(n.lastChild) : s
+ } else s = t;
+ const i = s.container();
+ let l = s.offset();
+ if (Nu(i)) {
+ if (du(e) && l > 0) return rl(i, --l);
+ if (lu(e) && l < i.length) return rl(i, ++l);
+ o = i
+ } else {
+ if (du(e) && l > 0 && (r = Bu(i, l - 1), Du(r))) return !Lu(r) && (a = uu(r, e, Ou, r), a) ? Nu(a) ? rl(a, a.data.length) : rl.after(a) : Nu(r) ? rl(r, r.data.length) : rl.before(r);
+ if (lu(e) && l < i.childNodes.length && (r = Bu(i, l), Du(r))) return Ru(r) ? ((e, t) => {
+ const n = t.nextSibling;
+ return n && Du(n) ? Nu(n) ? rl(n, 0) : rl.before(n) : Iu(xu.Forwards, rl.after(t), e)
+ })(n, r) : !Lu(r) && (a = uu(r, e, Ou, r), a) ? Nu(a) ? rl(a, 0) : rl.before(a) : Nu(r) ? rl(r, 0) : rl.after(r);
+ o = r || s.getNode()
+ }
+ if (o && (lu(e) && s.isAtEnd() || du(e) && s.isAtStart()) && (o = uu(o, e, F, n, !0), Ou(o, n))) return Pu(e, o);
+ r = o ? uu(o, e, Ou, n) : o;
+ const d = Pe(X(((e, t) => {
+ const n = [];
+ let o = e;
+ for (; o && o !== t;) n.push(o), o = o.parentNode;
+ return n
+ })(i, n), Au));
+ return !d || r && d.contains(r) ? r ? Pu(e, r) : null : (s = lu(e) ? rl.after(d) : rl.before(d), s)
+ }, Mu = e => ({next: t => Iu(xu.Forwards, t, e), prev: t => Iu(xu.Backwards, t, e)}),
+ Fu = e => rl.isTextPosition(e) ? 0 === e.offset() : oa(e.getNode()), Uu = e => {
+ if (rl.isTextPosition(e)) {
+ const t = e.container();
+ return e.offset() === t.data.length
+ }
+ return oa(e.getNode(!0))
+ }, qu = (e, t) => !rl.isTextPosition(e) && !rl.isTextPosition(t) && e.getNode() === t.getNode(!0),
+ ju = (e, t, n) => {
+ return e ? !qu(t, n) && (o = t, !(!rl.isTextPosition(o) && ir(o.getNode()))) && Uu(t) && Fu(n) : !qu(n, t) && Fu(t) && Uu(n);
+ var o
+ }, Hu = (e, t, n) => {
+ const o = Mu(t);
+ return U.from(e ? o.next(n) : o.prev(n))
+ }, zu = (e, t, n) => Hu(e, t, n).bind((o => fu(n, o, t) && ju(e, n, o) ? Hu(e, t, o) : U.some(o))),
+ $u = (e, t, n, o) => zu(e, t, n).bind((n => o(n) ? $u(e, t, n, o) : U.some(n))), Vu = (e, t) => {
+ const n = e ? t.firstChild : t.lastChild;
+ return tr(n) ? U.some(rl(n, e ? 0 : n.data.length)) : n ? oa(n) ? U.some(e ? rl.before(n) : ir(o = n) ? rl.before(o) : rl.after(o)) : ((e, t, n) => {
+ const o = e ? rl.before(n) : rl.after(n);
+ return Hu(e, t, o)
+ })(e, t, n) : U.none();
+ var o
+ }, Wu = L(Hu, !0), Ku = L(Hu, !1), Yu = L(Vu, !0), Gu = L(Vu, !1), Xu = "_mce_caret",
+ Ju = e => Vo(e) && e.id === Xu, Qu = (e, t) => {
+ let n = t;
+ for (; n && n !== e;) {
+ if (Ju(n)) return n;
+ n = n.parentNode
+ }
+ return null
+ }, Zu = e => ke(e, "name"), em = e => Bt.isArray(e.start),
+ tm = e => !(!Zu(e) && y(e.forward)) || e.forward,
+ nm = (e, t) => (Vo(t) && e.isBlock(t) && !t.innerHTML && (t.innerHTML = '
'), t),
+ om = (e, t) => Gu(e).fold(M, (e => (t.setStart(e.container(), e.offset()), t.setEnd(e.container(), e.offset()), !0))),
+ rm = (e, t, n) => !(!(e => !e.hasChildNodes())(t) || !Qu(e, t)) && (((e, t) => {
+ var n;
+ const o = (null !== (n = e.ownerDocument) && void 0 !== n ? n : document).createTextNode(Br);
+ e.appendChild(o), t.setStart(o, 0), t.setEnd(o, 0)
+ })(t, n), !0), am = (e, t, n, o) => {
+ const r = n[t ? "start" : "end"], a = e.getRoot();
+ if (r) {
+ let e = a, n = r[0];
+ for (let t = r.length - 1; e && t >= 1; t--) {
+ const n = e.childNodes;
+ if (rm(a, e, o)) return !0;
+ if (r[t] > n.length - 1) return !!rm(a, e, o) || om(e, o);
+ e = n[r[t]]
+ }
+ tr(e) && (n = Math.min(r[0], e.data.length)), Vo(e) && (n = Math.min(r[0], e.childNodes.length)), t ? o.setStart(e, n) : o.setEnd(e, n)
+ }
+ return !0
+ }, sm = e => tr(e) && e.data.length > 0, im = (e, t, n) => {
+ const o = e.get(n.id + "_" + t), r = null == o ? void 0 : o.parentNode, a = n.keep;
+ if (o && r) {
+ let s, i;
+ if ("start" === t ? a ? o.hasChildNodes() ? (s = o.firstChild, i = 1) : sm(o.nextSibling) ? (s = o.nextSibling, i = 0) : sm(o.previousSibling) ? (s = o.previousSibling, i = o.previousSibling.data.length) : (s = r, i = e.nodeIndex(o) + 1) : (s = r, i = e.nodeIndex(o)) : a ? o.hasChildNodes() ? (s = o.firstChild, i = 1) : sm(o.previousSibling) ? (s = o.previousSibling, i = o.previousSibling.data.length) : (s = r, i = e.nodeIndex(o)) : (s = r, i = e.nodeIndex(o)), !a) {
+ const r = o.previousSibling, a = o.nextSibling;
+ let l;
+ for (Bt.each(Bt.grep(o.childNodes), (e => {
+ tr(e) && (e.data = e.data.replace(/\uFEFF/g, ""))
+ })); l = e.get(n.id + "_" + t);) e.remove(l, !0);
+ if (tr(a) && tr(r) && !Rt.browser.isOpera()) {
+ const t = r.data.length;
+ r.appendData(a.data), e.remove(a), s = r, i = t
+ }
+ }
+ return U.some(rl(s, i))
+ }
+ return U.none()
+ }, lm = (e, t) => {
+ const n = e.dom;
+ if (t) {
+ if (em(t)) return ((e, t) => {
+ const n = e.createRng();
+ return am(e, !0, t, n) && am(e, !1, t, n) ? U.some({range: n, forward: tm(t)}) : U.none()
+ })(n, t);
+ if ((e => g(e.start))(t)) return ((e, t) => {
+ const n = U.from(pl(e.getRoot(), t.start)), o = U.from(pl(e.getRoot(), t.end));
+ return Mt(n, o, ((n, o) => {
+ const r = e.createRng();
+ return r.setStart(n.container(), n.offset()), r.setEnd(o.container(), o.offset()), {
+ range: r,
+ forward: tm(t)
+ }
+ }))
+ })(n, t);
+ if ((e => ke(e, "id"))(t)) return ((e, t) => {
+ const n = im(e, "start", t), o = im(e, "end", t);
+ return Mt(n, o.or(n), ((n, o) => {
+ const r = e.createRng();
+ return r.setStart(nm(e, n.container()), n.offset()), r.setEnd(nm(e, o.container()), o.offset()), {
+ range: r,
+ forward: tm(t)
+ }
+ }))
+ })(n, t);
+ if (Zu(t)) return ((e, t) => U.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 U.some({range: t.rng, forward: tm(t)})
+ }
+ return U.none()
+ }, dm = (e, t, n) => kl(e, t, n), cm = (e, t) => {
+ lm(e, t).each((({range: t, forward: n}) => {
+ e.setRng(t, n)
+ }))
+ }, um = e => Vo(e) && "SPAN" === e.tagName && "bookmark" === e.getAttribute("data-mce-type"),
+ mm = (fm = br, e => fm === e);
+ var fm;
+ const gm = e => "" !== e && -1 !== " \f\n\r\t\v".indexOf(e), pm = e => !gm(e) && !mm(e) && !yr(e),
+ hm = e => {
+ const t = [];
+ if (e) for (let n = 0; n < e.rangeCount; n++) t.push(e.getRangeAt(n));
+ return t
+ }, vm = e => X((e => oe(e, (e => {
+ const t = Ii(e);
+ return t ? [yn.fromDom(t)] : []
+ })))(e), Tr), bm = (e, t) => {
+ const n = qo(t, "td[data-mce-selected],th[data-mce-selected]");
+ return n.length > 0 ? n : vm(e)
+ }, ym = e => bm(hm(e.selection.getSel()), yn.fromDom(e.getBody())), Cm = (e, t) => eo(e, "table", t),
+ Em = e => Mn(e).fold(T([e]), (t => [e].concat(Em(t)))),
+ wm = e => Fn(e).fold(T([e]), (t => "br" === $t(t) ? Dn(t).map((t => [e].concat(wm(t)))).getOr([]) : [e].concat(wm(t)))),
+ _m = (e, t) => Mt((e => {
+ const t = e.startContainer, n = e.startOffset;
+ return tr(t) ? 0 === n ? U.some(yn.fromDom(t)) : U.none() : U.from(t.childNodes[n]).map(yn.fromDom)
+ })(t), (e => {
+ const t = e.endContainer, n = e.endOffset;
+ return tr(t) ? n === t.data.length ? U.some(yn.fromDom(t)) : U.none() : U.from(t.childNodes[n - 1]).map(yn.fromDom)
+ })(t), ((t, n) => {
+ const o = ee(Em(e), L(_n, t)), r = ee(wm(e), L(_n, n));
+ return o.isSome() && r.isSome()
+ })).getOr(!1), Sm = (e, t, n, o) => {
+ const r = n, a = new Ho(n, r),
+ s = Ee(e.schema.getMoveCaretBeforeOnEnterElements(), ((e, t) => !$(["td", "th", "table"], t.toLowerCase())));
+ let i = n;
+ do {
+ if (tr(i) && 0 !== Bt.trim(i.data).length) return void (o ? t.setStart(i, 0) : t.setEnd(i, i.data.length));
+ if (s[i.nodeName]) return void (o ? t.setStartBefore(i) : "BR" === i.nodeName ? t.setEndBefore(i) : t.setEndAfter(i))
+ } while (i = o ? a.next() : a.prev());
+ "BODY" === r.nodeName && (o ? t.setStart(r, 0) : t.setEnd(r, r.childNodes.length))
+ }, km = e => {
+ const t = e.selection.getSel();
+ return w(t) && t.rangeCount > 0
+ }, xm = (e, t) => {
+ const n = ym(e);
+ n.length > 0 ? K(n, (n => {
+ const o = n.dom, r = e.dom.createRng();
+ r.setStartBefore(o), r.setEndAfter(o), t(r, !0)
+ })) : t(e.selection.getRng(), !1)
+ }, Am = (e, t, n) => {
+ const o = Sl(e, t);
+ n(o), e.moveToBookmark(o)
+ }, Nm = e => S(null == e ? void 0 : e.nodeType), Tm = e => Vo(e) && !um(e) && !Ju(e) && !Jo(e),
+ Rm = (e, t, n) => {
+ const {selection: o, dom: r} = e, a = o.getNode(), s = cr(a);
+ Am(o, !0, (() => {
+ t()
+ }));
+ s && cr(a) && r.isChildOf(a, e.getBody()) ? e.selection.select(a) : n(o.getStart()) && Dm(r, o)
+ }, Dm = (e, t) => {
+ var n, o;
+ const r = t.getRng(), {startContainer: a, startOffset: s} = r;
+ if (!((e, t) => {
+ if (Tm(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()) && Vo(a)) {
+ const i = a.childNodes, l = e.getRoot();
+ let d;
+ if (s < i.length) {
+ const t = i[s];
+ d = new Ho(t, null !== (n = e.getParent(t, e.isBlock)) && void 0 !== n ? n : l)
+ } else {
+ const t = i[i.length - 1];
+ d = new Ho(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 (tr(n) && !Pm(n)) return r.setStart(n, 0), void t.setRng(r)
+ }
+ }
+ }, Lm = (e, t, n) => {
+ if (e) {
+ const o = t ? "nextSibling" : "previousSibling";
+ for (e = n ? e : e[o]; e; e = e[o]) if (Vo(e) || !Pm(e)) return e
+ }
+ }, Om = (e, t) => !!e.getTextBlockElements()[t.nodeName.toLowerCase()] || Pa(e, t),
+ Bm = (e, t, n) => e.schema.isValidChild(t, n), Pm = (e, t = !1) => {
+ if (w(e) && tr(e)) {
+ const n = t ? e.data.replace(/ /g, " ") : e.data;
+ return ia(n)
+ }
+ return !1
+ }, Im = (e, t) => {
+ const n = e.dom;
+ return Tm(t) && "false" === n.getContentEditable(t) && ((e, t) => {
+ const n = "[data-mce-cef-wrappable]", o = Md(e), r = Je(o) ? n : `${n},${o}`;
+ return En(yn.fromDom(t), r)
+ })(e, t) && 0 === n.select('[contenteditable="true"]', t).length
+ }, Mm = (e, t) => _(e) ? e(t) : (w(t) && (e = e.replace(/%(\w+)/g, ((e, n) => t[n] || e))), e),
+ Fm = (e, t) => (t = t || "", e = "" + ((e = e || "").nodeName || e), t = "" + (t.nodeName || t), e.toLowerCase() === t.toLowerCase()),
+ Um = (e, t) => {
+ if (E(e)) return null;
+ {
+ let n = String(e);
+ return "color" !== t && "backgroundColor" !== t || (n = Ts(n)), "fontWeight" === t && 700 === e && (n = "bold"), "fontFamily" === t && (n = n.replace(/[\'\"]/g, "").replace(/,\s+/g, ",")), n
+ }
+ }, qm = (e, t, n) => {
+ const o = e.getStyle(t, n);
+ return Um(o, n)
+ }, jm = (e, t) => {
+ let n;
+ return e.getParent(t, (t => !!Vo(t) && (n = e.getStyle(t, "text-decoration"), !!n && "none" !== n))), n
+ }, Hm = (e, t, n) => e.getParents(t, n, e.getRoot()), zm = (e, t, n) => {
+ const o = e.formatter.get(t);
+ return w(o) && V(o, n)
+ }, $m = (e, t, n) => {
+ const o = ["inline", "block", "selector", "attributes", "styles", "classes"],
+ r = e => Ee(e, ((e, t) => V(o, (e => e === t))));
+ return zm(e, t, (t => {
+ const o = r(t);
+ return zm(e, n, (e => {
+ const t = r(e);
+ return ((e, t, n = i) => s(n).eq(e, t))(o, t)
+ }))
+ }))
+ }, Vm = e => xe(e, "block"), Wm = e => xe(e, "selector"), Km = e => xe(e, "inline"),
+ Ym = e => Wm(e) && !1 !== e.expand && !Km(e), Gm = e => (e => {
+ const t = [];
+ let n = e;
+ for (; n;) {
+ if (tr(n) && n.data !== Br || n.childNodes.length > 1) return [];
+ Vo(n) && t.push(n), n = n.firstChild
+ }
+ return t
+ })(e).length > 0, Xm = e => Ju(e.dom) && Gm(e.dom), Jm = um, Qm = Hm, Zm = Pm, ef = Om, tf = (e, t) => {
+ let n = t;
+ for (; n;) {
+ if (Vo(n) && e.getContentEditable(n)) return "false" === e.getContentEditable(n) ? n : t;
+ n = n.parentNode
+ }
+ return t
+ }, nf = (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
+ }, of = (e, t, n) => nf(e, t, n, (e => mm(e) || gm(e))), rf = (e, t, n) => nf(e, t, n, pm),
+ af = (e, t, n, o, r, a) => {
+ let s;
+ const i = e.getParent(n, e.isBlock) || t, l = (t, n, o) => {
+ const a = Ni(e), l = r ? a.backwards : a.forwards;
+ return U.from(l(t, n, ((e, t) => Jm(e.parentNode) ? -1 : (s = e, o(r, e, t))), i))
+ };
+ return l(n, o, of).bind((e => a ? l(e.container, e.offset + (r ? -1 : 0), rf) : U.some(e))).orThunk((() => s ? U.some({
+ container: s,
+ offset: r ? 0 : s.length
+ }) : U.none()))
+ }, sf = (e, t, n, o, r) => {
+ const a = o[r];
+ tr(o) && Je(o.data) && a && (o = a);
+ const s = Qm(e, o);
+ for (let o = 0; o < s.length; o++) for (let r = 0; r < t.length; r++) {
+ const a = t[r];
+ if ((!w(a.collapsed) || a.collapsed === n.collapsed) && (Wm(a) && e.is(s[o], a.selector))) return s[o]
+ }
+ return o
+ }, lf = (e, t, n, o) => {
+ var r;
+ let a = n;
+ const s = e.getRoot(), i = t[0];
+ if (Vm(i) && (a = i.wrapper ? null : e.getParent(n, i.block, s)), !a) {
+ const t = null !== (r = e.getParent(n, "LI,TD,TH,SUMMARY")) && void 0 !== r ? r : s;
+ a = e.getParent(tr(n) ? n.parentNode : n, (t => t !== s && ef(e.schema, t)), t)
+ }
+ if (a && Vm(i) && i.wrapper && (a = Qm(e, a, "ul,ol").reverse()[0] || a), !a) for (a = n; a && a[o] && !e.isBlock(a[o]) && (a = a[o], !Fm(a, "br"));) ;
+ return a || n
+ }, df = (e, t, n, o) => {
+ const r = n.parentNode;
+ return !w(n[o]) && (!(r !== t && !E(r) && !e.isBlock(r)) || df(e, t, r, o))
+ }, cf = (e, t, n, o, r) => {
+ let a = n;
+ const s = r ? "previousSibling" : "nextSibling", i = e.getRoot();
+ if (tr(n) && !Zm(n) && (r ? o > 0 : o < n.data.length)) return n;
+ for (; a;) {
+ if (!t[0].block_expand && e.isBlock(a)) return a;
+ for (let t = a[s]; t; t = t[s]) {
+ const n = tr(t) && !df(e, i, t, s);
+ if (!Jm(t) && (!ir(l = t) || !l.getAttribute("data-mce-bogus") || l.nextSibling) && !Zm(t, n)) return a
+ }
+ if (a === i || a.parentNode === i) {
+ n = a;
+ break
+ }
+ a = a.parentNode
+ }
+ var l;
+ return n
+ }, uf = e => Jm(e.parentNode) || Jm(e), mf = (e, t, n, o = !1) => {
+ let {startContainer: r, startOffset: a, endContainer: s, endOffset: i} = t;
+ const l = n[0];
+ if (Vo(r) && r.hasChildNodes() && (r = Mi(r, a), tr(r) && (a = 0)), Vo(s) && s.hasChildNodes() && (s = Mi(s, t.collapsed ? i : i - 1), tr(s) && (i = s.data.length)), r = tf(e, r), s = tf(e, s), uf(r) && (r = Jm(r) ? r : r.parentNode, r = t.collapsed ? r.previousSibling || r : r.nextSibling || r, tr(r) && (a = t.collapsed ? r.length : 0)), uf(s) && (s = Jm(s) ? s : s.parentNode, s = t.collapsed ? s.nextSibling || s : s.previousSibling || s, tr(s) && (i = t.collapsed ? 0 : s.length)), t.collapsed) {
+ af(e, e.getRoot(), r, a, !0, o).each((({container: e, offset: t}) => {
+ r = e, a = t
+ }));
+ af(e, e.getRoot(), s, i, !1, o).each((({container: e, offset: t}) => {
+ s = e, i = t
+ }))
+ }
+ return (Km(l) || l.block_expand) && (Km(l) && tr(r) && 0 !== a || (r = cf(e, n, r, a, !0)), Km(l) && tr(s) && i !== s.data.length || (s = cf(e, n, s, i, !1))), Ym(l) && (r = sf(e, n, t, r, "previousSibling"), s = sf(e, n, t, s, "nextSibling")), (Vm(l) || Wm(l)) && (r = lf(e, n, r, "previousSibling"), s = lf(e, n, s, "nextSibling"), Vm(l) && (e.isBlock(r) || (r = cf(e, n, r, a, !0)), e.isBlock(s) || (s = cf(e, n, s, i, !1)))), Vo(r) && r.parentNode && (a = e.nodeIndex(r), r = r.parentNode), Vo(s) && s.parentNode && (i = e.nodeIndex(s) + 1, s = s.parentNode), {
+ startContainer: r,
+ startOffset: a,
+ endContainer: s,
+ endOffset: i
+ }
+ }, ff = (e, t, n) => {
+ var o;
+ const r = t.startOffset, a = Mi(t.startContainer, r), s = t.endOffset,
+ i = Mi(t.endContainer, s - 1), l = e => {
+ const t = e[0];
+ tr(t) && t === a && r >= t.data.length && e.splice(0, 1);
+ const n = e[e.length - 1];
+ return 0 === s && e.length > 0 && n === i && tr(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 a = e, s = a.parentNode; a && a !== t; a = s) {
+ s = a.parentNode;
+ const t = d(a === e ? a : a[r], r);
+ t.length && (o || t.reverse(), n(l(t)))
+ }
+ };
+ if (a === i) return n(l([a]));
+ const m = null !== (o = e.findCommonAncestor(a, i)) && void 0 !== o ? o : e.getRoot();
+ if (e.isChildOf(a, i)) return u(a, m, !0);
+ if (e.isChildOf(i, a)) return u(i, m);
+ const f = c(a, m) || a, g = c(i, m) || i;
+ u(a, f, !0);
+ const p = d(f === a ? f : f.nextSibling, "nextSibling", g === i ? g.nextSibling : g);
+ p.length && n(l(p)), u(i, g)
+ },
+ gf = ['pre[class*=language-][contenteditable="false"]', "figure.image", "div[data-ephox-embed-iri]", "div.tiny-pageembed", "div.mce-toc", "div[data-mce-toc]"],
+ pf = (e, t, n, o) => Nn(t).fold((() => "skipping"), (r => "br" === o || (e => Gt(e) && Er(e) === Br)(t) ? "valid" : (e => Yt(e) && vn(e, di()))(t) ? "existing" : Ju(t.dom) ? "caret" : V(gf, (e => En(t, e))) ? "valid-block" : Bm(e, n, o) && Bm(e, $t(r), n) ? "valid" : "invalid-child")),
+ hf = (e, t, n, o, r, a) => {
+ const {uid: s = t, ...i} = n;
+ fn(e, di()), en(e, `${ui()}`, s), en(e, `${ci()}`, o);
+ const {attributes: l = {}, classes: d = []} = r(s, i);
+ if (tn(e, l), ((e, t) => {
+ K(t, (t => {
+ fn(e, t)
+ }))
+ })(e, d), a) {
+ d.length > 0 && en(e, `${fi()}`, d.join(","));
+ const t = ge(l);
+ t.length > 0 && en(e, `${gi()}`, t.join(","))
+ }
+ }, vf = e => {
+ pn(e, di()), an(e, `${ui()}`), an(e, `${ci()}`), an(e, `${mi()}`);
+ const t = on(e, `${gi()}`).map((e => e.split(","))).getOr([]),
+ n = on(e, `${fi()}`).map((e => e.split(","))).getOr([]);
+ var o;
+ K(t, (t => an(e, t))), o = e, K(n, (e => {
+ pn(o, e)
+ })), an(e, `${fi()}`), an(e, `${gi()}`)
+ }, bf = (e, t, n, o, r) => {
+ const a = yn.fromTag("span", e);
+ return hf(a, t, n, o, r, !1), a
+ }, yf = (e, t, n, o, r, a) => {
+ const s = [], i = bf(e.getDoc(), n, a, o, r), l = si(), d = () => {
+ l.clear()
+ }, c = e => {
+ K(e, u)
+ }, u = t => {
+ switch (pf(e, t, "span", $t(t))) {
+ case"invalid-child": {
+ d();
+ const e = Pn(t);
+ c(e), d();
+ break
+ }
+ case"valid-block":
+ d(), hf(t, n, a, o, r, !0);
+ break;
+ case"valid": {
+ const e = l.get().getOrThunk((() => {
+ const e = Si(i);
+ return s.push(e), l.set(e), e
+ }));
+ yo(t, e);
+ break
+ }
+ }
+ };
+ return ff(e.dom, t, (e => {
+ d(), (e => {
+ const t = W(e, yn.fromDom);
+ c(t)
+ })(e)
+ })), s
+ }, Cf = (e, t, n, o) => {
+ e.undoManager.transact((() => {
+ const r = e.selection, a = r.getRng(), s = ym(e).length > 0, i = wi("mce-annotation");
+ if (a.collapsed && !s && ((e, t) => {
+ const n = mf(e.dom, t, [{inline: "span"}]);
+ t.setStart(n.startContainer, n.startOffset), t.setEnd(n.endContainer, n.endOffset), e.selection.setRng(t)
+ })(e, a), r.getRng().collapsed && !s) {
+ const a = bf(e.getDoc(), i, o, t, n.decorate);
+ xo(a, br), r.getRng().insertNode(a.dom), r.select(a.dom)
+ } else Am(r, !1, (() => {
+ xm(e, (r => {
+ yf(e, r, i, t, n.decorate, o)
+ }))
+ }))
+ }))
+ }, Ef = e => {
+ const t = (() => {
+ const e = {};
+ return {
+ register: (t, n) => {
+ e[t] = {name: t, settings: n}
+ }, lookup: t => Se(e, t).map((e => e.settings)), getNames: () => ge(e)
+ }
+ })();
+ ((e, t) => {
+ const n = ci(), o = e => U.from(e.attr(n)).bind(t.lookup), r = e => {
+ var t, n;
+ e.attr(ui(), null), e.attr(ci(), null), e.attr(mi(), null);
+ const o = U.from(e.attr(gi())).map((e => e.split(","))).getOr([]),
+ r = U.from(e.attr(fi())).map((e => e.split(","))).getOr([]);
+ K(o, (t => e.attr(t, null)));
+ const a = null !== (n = null === (t = e.attr("class")) || void 0 === t ? void 0 : t.split(" ")) && void 0 !== n ? n : [],
+ s = se(a, [di()].concat(r));
+ e.attr("class", s.length > 0 ? s.join(" ") : null), e.attr(fi(), null), e.attr(gi(), null)
+ };
+ e.serializer.addTempAttr(mi()), 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 = Ci(e, t), o = Qt("span"), r = e => {
+ K(e, (e => {
+ o(e) ? _o(e) : vf(e)
+ }))
+ };
+ return {
+ register: (e, n) => {
+ t.register(e, n)
+ }, annotate: (n, o) => {
+ t.lookup(n).each((t => {
+ Cf(e, n, t, o)
+ }))
+ }, annotationChanged: (e, t) => {
+ n.addListener(e, t)
+ }, remove: t => {
+ hi(e, U.some(t)).each((({elements: t}) => {
+ const n = e.selection.getBookmark();
+ r(t), e.selection.moveToBookmark(n)
+ }))
+ }, removeAll: t => {
+ const n = e.selection.getBookmark();
+ he(yi(e, t), ((e, t) => {
+ r(e)
+ })), e.selection.moveToBookmark(n)
+ }, getAll: t => {
+ const n = yi(e, t);
+ return ve(n, (e => W(e, (e => e.dom))))
+ }
+ }
+ }, wf = e => ({getBookmark: L(dm, e), moveToBookmark: L(cm, e)});
+ wf.isBookmarkNode = um;
+ const _f = (e, t, n) => !n.collapsed && V(n.getClientRects(), (n => ((e, t, n) => t >= e.left && t <= e.right && n >= e.top && n <= e.bottom)(n, e, t))),
+ Sf = (e, t, n) => {
+ e.dispatch(t, n)
+ }, kf = (e, t, n, o) => {
+ e.dispatch("FormatApply", {format: t, node: n, vars: o})
+ }, xf = (e, t, n, o) => {
+ e.dispatch("FormatRemove", {format: t, node: n, vars: o})
+ }, Af = (e, t) => e.dispatch("SetContent", t), Nf = (e, t) => e.dispatch("GetContent", t),
+ Tf = (e, t) => e.dispatch("PastePlainTextToggle", {state: t}), Rf = {
+ 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 || Rf.metaKeyPressed(e),
+ metaKeyPressed: e => Rt.os.isMacOS() || Rt.os.isiOS() ? e.metaKey : e.ctrlKey && !e.altKey
+ }, Df = "data-mce-selected", Lf = Math.abs, Of = Math.round,
+ Bf = {nw: [0, 0, -1, -1], ne: [1, 0, 1, -1], se: [1, 1, 1, 1], sw: [0, 1, -1, 1]}, Pf = (e, t) => {
+ const n = t.dom, o = t.getDoc(), r = document, a = t.getBody();
+ let s, i, l, d, c, u, m, f, g, p, h, v, b, y, C;
+ const E = e => w(e) && (lr(e) || n.is(e, "figure.image")),
+ _ = e => fr(e) || n.hasClass(e, "mce-preview-object"), S = e => {
+ const n = e.target;
+ ((e, t) => {
+ if ((e => "longpress" === e.type || 0 === e.type.indexOf("touch"))(e)) {
+ const n = e.touches[0];
+ return E(e.target) && !_f(n.clientX, n.clientY, t)
+ }
+ return E(e.target) && !_f(e.clientX, e.clientY, t)
+ })(e, t.selection.getRng()) && !e.isDefaultPrevented() && t.selection.select(n)
+ },
+ k = e => n.hasClass(e, "mce-preview-object") && w(e.firstElementChild) ? [e, e.firstElementChild] : n.is(e, "figure.image") ? [e.querySelector("img")] : [e],
+ x = e => {
+ const o = Sd(t);
+ return !!o && ("false" !== e.getAttribute("data-mce-resize") && (e !== t.getBody() && (n.hasClass(e, "mce-preview-object") && w(e.firstElementChild) ? En(yn.fromDom(e.firstElementChild), o) : En(yn.fromDom(e), o))))
+ }, A = (e, o, r) => {
+ if (w(r)) {
+ const a = k(e);
+ K(a, (e => {
+ e.style[o] || !t.schema.isValid(e.nodeName.toLowerCase(), o) ? n.setStyle(e, o, r) : n.setAttrib(e, o, "" + r)
+ }))
+ }
+ }, N = (e, t, n) => {
+ A(e, "width", t), A(e, "height", n)
+ }, T = e => {
+ let o, r, c, w, S;
+ o = e.screenX - u, r = e.screenY - m, v = o * d[2] + f, b = r * d[3] + g, v = v < 5 ? 5 : v, b = b < 5 ? 5 : b, c = (E(s) || _(s)) && !1 !== kd(t) ? !Rf.modifierPressed(e) : Rf.modifierPressed(e), c && (Lf(o) > Lf(r) ? (b = Of(v * p), v = Of(b / p)) : (v = Of(b / p), b = Of(v * p))), N(i, v, b), w = d.startPos.x + o, S = d.startPos.y + r, w = w > 0 ? w : 0, S = S > 0 ? S : 0, n.setStyles(l, {
+ left: w,
+ top: S,
+ display: "block"
+ }), l.innerHTML = v + " × " + b, d[2] < 0 && i.clientWidth <= v && n.setStyle(i, "left", undefined + (f - v)), d[3] < 0 && i.clientHeight <= b && n.setStyle(i, "top", undefined + (g - b)), o = a.scrollWidth - y, r = a.scrollHeight - C, o + r !== 0 && n.setStyles(l, {
+ left: w - o,
+ top: S - r
+ }), h || (((e, t, n, o, r) => {
+ e.dispatch("ObjectResizeStart", {target: t, width: n, height: o, origin: r})
+ })(t, s, f, g, "corner-" + d.name), h = !0)
+ }, R = () => {
+ const e = h;
+ h = !1, e && (A(s, "width", v), A(s, "height", b)), n.unbind(o, "mousemove", T), n.unbind(o, "mouseup", R), r !== o && (n.unbind(r, "mousemove", T), n.unbind(r, "mouseup", R)), n.remove(i), n.remove(l), n.remove(c), D(s), e && (((e, t, n, o, r) => {
+ e.dispatch("ObjectResized", {target: t, width: n, height: o, origin: r})
+ })(t, s, v, b, "corner-" + d.name), n.setAttrib(s, "style", n.getAttrib(s, "style"))), t.nodeChanged()
+ }, D = e => {
+ I();
+ const h = n.getPos(e, a), E = h.x, w = h.y, S = e.getBoundingClientRect(),
+ A = S.width || S.right - S.left, D = S.height || S.bottom - S.top;
+ s !== e && (O(), s = e, v = b = 0);
+ const L = t.dispatch("ObjectSelected", {target: e});
+ x(e) && !L.isDefaultPrevented() ? he(Bf, ((e, t) => {
+ const h = h => {
+ const v = k(s)[0];
+ var b;
+ u = h.screenX, m = h.screenY, f = v.clientWidth, g = v.clientHeight, p = g / f, d = e, d.name = t, d.startPos = {
+ x: A * e[0] + E,
+ y: D * e[1] + w
+ }, y = a.scrollWidth, C = a.scrollHeight, c = n.add(a, "div", {
+ class: "mce-resize-backdrop",
+ "data-mce-bogus": "all"
+ }), n.setStyles(c, {
+ position: "fixed",
+ left: "0",
+ top: "0",
+ width: "100%",
+ height: "100%"
+ }), i = _(b = s) ? n.create("img", {src: Rt.transparentSrc}) : b.cloneNode(!0), n.addClass(i, "mce-clonedresizable"), n.setAttrib(i, "data-mce-bogus", "all"), i.contentEditable = "false", n.setStyles(i, {
+ left: E,
+ top: w,
+ margin: 0
+ }), N(i, A, D), i.removeAttribute(Df), a.appendChild(i), n.bind(o, "mousemove", T), n.bind(o, "mouseup", R), r !== o && (n.bind(r, "mousemove", T), n.bind(r, "mouseup", R)), l = n.add(a, "div", {
+ class: "mce-resize-helper",
+ "data-mce-bogus": "all"
+ }, f + " × " + g)
+ };
+ let v = n.get("mceResizeHandle" + t);
+ v && n.remove(v), v = n.add(a, "div", {
+ id: "mceResizeHandle" + t,
+ "data-mce-bogus": "all",
+ class: "mce-resizehandle",
+ unselectable: !0,
+ style: "cursor:" + t + "-resize; margin:0; padding:0"
+ }), n.bind(v, "mousedown", (e => {
+ e.stopImmediatePropagation(), e.preventDefault(), h(e)
+ })), e.elm = v, n.setStyles(v, {
+ left: A * e[0] + E - v.offsetWidth / 2,
+ top: D * e[1] + w - v.offsetHeight / 2
+ })
+ })) : O(!1)
+ }, L = ii(D, 0), O = (e = !0) => {
+ L.cancel(), I(), s && e && s.removeAttribute(Df), he(Bf, ((e, t) => {
+ const o = n.get("mceResizeHandle" + t);
+ o && (n.unbind(o), n.remove(o))
+ }))
+ }, B = (e, t) => n.isChildOf(e, t), P = o => {
+ if (h || t.removed || t.composing) return;
+ const r = "mousedown" === o.type ? o.target : e.getNode(),
+ s = no(yn.fromDom(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 = w(s) ? n.getAttrib(s, Df, "1") : "1";
+ if (K(n.select(`img[${Df}],hr[${Df}]`), (e => {
+ e.removeAttribute(Df)
+ })), w(s) && B(s, a) && t.hasFocus()) {
+ M();
+ const t = e.getStart(!0);
+ if (B(t, s) && B(e.getEnd(!0), s)) return n.setAttrib(s, Df, i), void L.throttle(s)
+ }
+ O()
+ }, I = () => {
+ he(Bf, (e => {
+ e.elm && (n.unbind(e.elm), delete e.elm)
+ }))
+ }, M = () => {
+ try {
+ t.getDoc().execCommand("enableObjectResizing", !1, "false")
+ } catch (e) {
+ }
+ };
+ t.on("init", (() => {
+ M(), t.on("NodeChange ResizeEditor ResizeWindow ResizeContent drop", P), t.on("keyup compositionend", (e => {
+ s && "TABLE" === s.nodeName && P(e)
+ })), t.on("hide blur", O), t.on("contextmenu longpress", S, !0)
+ })), t.on("remove", I);
+ return {
+ isResizable: x, showResizeRect: D, hideResizeRect: O, updateResizeRect: P, destroy: () => {
+ L.cancel(), s = i = c = null
+ }
+ }
+ }, If = (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
+ }, Mf = (e, t, n, o, r) => {
+ const a = e.document.createRange();
+ return a.setStart(t.dom, n), a.setEnd(o.dom, r), a
+ },
+ Ff = Rl([{ltr: ["start", "soffset", "finish", "foffset"]}, {rtl: ["start", "soffset", "finish", "foffset"]}]),
+ Uf = (e, t, n) => t(yn.fromDom(n.startContainer), n.startOffset, yn.fromDom(n.endContainer), n.endOffset),
+ qf = (e, t) => {
+ const n = ((e, t) => t.match({
+ domRange: e => ({ltr: T(e), rtl: U.none}),
+ relative: (t, n) => ({ltr: Ie((() => If(e, t, n))), rtl: Ie((() => U.some(If(e, n, t))))}),
+ exact: (t, n, o, r) => ({
+ ltr: Ie((() => Mf(e, t, n, o, r))),
+ rtl: Ie((() => U.some(Mf(e, o, r, t, n))))
+ })
+ }))(e, t);
+ return ((e, t) => {
+ const n = t.ltr();
+ if (n.collapsed) return t.rtl().filter((e => !1 === e.collapsed)).map((e => Ff.rtl(yn.fromDom(e.endContainer), e.endOffset, yn.fromDom(e.startContainer), e.startOffset))).getOrThunk((() => Uf(0, Ff.ltr, n)));
+ return Uf(0, Ff.ltr, n)
+ })(0, n)
+ };
+ Ff.ltr, Ff.rtl;
+ const jf = (e, t, n, o) => ({start: e, soffset: t, finish: n, foffset: o}), Hf = (e, t, n) => {
+ var o, r;
+ return U.from(null === (r = (o = e.dom).caretPositionFromPoint) || void 0 === r ? void 0 : r.call(o, t, n)).bind((t => {
+ if (null === t.offsetNode) return U.none();
+ const n = e.dom.createRange();
+ return n.setStart(t.offsetNode, t.offset), n.collapse(), U.some(n)
+ }))
+ }, zf = (e, t, n) => {
+ var o, r;
+ return U.from(null === (r = (o = e.dom).caretRangeFromPoint) || void 0 === r ? void 0 : r.call(o, t, n))
+ }, $f = document.caretPositionFromPoint ? Hf : document.caretRangeFromPoint ? zf : U.none,
+ Vf = Rl([{before: ["element"]}, {on: ["element", "offset"]}, {after: ["element"]}]), Wf = {
+ before: Vf.before,
+ on: Vf.on,
+ after: Vf.after,
+ cata: (e, t, n, o) => e.fold(t, n, o),
+ getStart: e => e.fold(R, R, R)
+ },
+ Kf = Rl([{domRange: ["rng"]}, {relative: ["startSitu", "finishSitu"]}, {exact: ["start", "soffset", "finish", "foffset"]}]),
+ Yf = {
+ domRange: Kf.domRange,
+ relative: Kf.relative,
+ exact: Kf.exact,
+ exactFromRange: e => Kf.exact(e.start, e.soffset, e.finish, e.foffset),
+ getWin: e => {
+ const t = (e => e.match({
+ domRange: e => yn.fromDom(e.startContainer),
+ relative: (e, t) => Wf.getStart(e),
+ exact: (e, t, n, o) => e
+ }))(e);
+ return An(t)
+ },
+ range: jf
+ }, Gf = (e, t) => {
+ const n = $t(e);
+ return "input" === n ? Wf.after(e) : $(["br", "img"], n) ? 0 === t ? Wf.before(e) : Wf.after(e) : Wf.on(e, t)
+ }, Xf = (e, t) => {
+ const n = e.fold(Wf.before, Gf, Wf.after), o = t.fold(Wf.before, Gf, Wf.after);
+ return Yf.relative(n, o)
+ }, Jf = (e, t, n, o) => {
+ const r = Gf(e, t), a = Gf(n, o);
+ return Yf.relative(r, a)
+ }, Qf = (e, t) => {
+ const n = (t || document).createDocumentFragment();
+ return K(e, (e => {
+ n.appendChild(e.dom)
+ })), yn.fromDom(n)
+ }, Zf = e => {
+ const t = Yf.getWin(e).dom, n = (e, n, o, r) => Mf(t, e, n, o, r), o = (e => e.match({
+ domRange: e => {
+ const t = yn.fromDom(e.startContainer), n = yn.fromDom(e.endContainer);
+ return Jf(t, e.startOffset, n, e.endOffset)
+ }, relative: Xf, exact: Jf
+ }))(e);
+ return qf(t, o).match({ltr: n, rtl: n})
+ }, eg = (e, t, n) => ((e, t, n) => {
+ const o = yn.fromDom(e.document);
+ return $f(o, t, n).map((e => jf(yn.fromDom(e.startContainer), e.startOffset, yn.fromDom(e.endContainer), e.endOffset)))
+ })(e, t, n), tg = (e, t, n) => {
+ const o = An(yn.fromDom(n));
+ return eg(o.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()
+ },
+ ng = (e, t) => w(e) && w(t) && e.startContainer === t.startContainer && e.startOffset === t.startOffset && e.endContainer === t.endContainer && e.endOffset === t.endOffset,
+ og = (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), rg = (e, t, n) => og(e, t, (e => e.nodeName === n)),
+ ag = (e, t) => jr(e) && !og(e, t, Ju), sg = (e, t, n) => {
+ const o = t.parentNode;
+ if (o) {
+ const r = new Ho(t, e.getParent(o, e.isBlock) || e.getRoot());
+ let a;
+ for (; a = r[n ? "prev" : "next"]();) if (ir(a)) return !0
+ }
+ return !1
+ }, ig = (e, t, n, o, r) => {
+ const a = e.getRoot(), s = e.schema.getNonEmptyElements(), i = r.parentNode;
+ let l, d;
+ if (!i) return U.none();
+ const c = e.getParent(i, e.isBlock) || a;
+ if (o && ir(r) && t && e.isEmpty(c)) return U.some(rl(i, e.nodeIndex(r)));
+ const u = new Ho(r, c);
+ for (; d = u[o ? "prev" : "next"]();) {
+ if ("false" === e.getContentEditableParent(d) || ag(d, a)) return U.none();
+ if (tr(d) && d.data.length > 0) return rg(d, a, "A") ? U.none() : U.some(rl(d, o ? d.data.length : 0));
+ if (e.isBlock(d) || s[d.nodeName.toLowerCase()]) return U.none();
+ l = d
+ }
+ return rr(l) ? U.none() : n && l ? U.some(rl(l, 0)) : U.none()
+ }, lg = (e, t, n, o) => {
+ const r = e.getRoot();
+ let a, s = !1, i = n ? o.startContainer : o.endContainer, l = n ? o.startOffset : o.endOffset;
+ const d = Vo(i) && l === i.childNodes.length, c = e.schema.getNonEmptyElements();
+ let u = n;
+ if (jr(i)) return U.none();
+ if (Vo(i) && l > i.childNodes.length - 1 && (u = !1), ar(i) && (i = r, l = 0), i === r) {
+ if (u && (a = i.childNodes[l > 0 ? l - 1 : 0], a)) {
+ if (jr(a)) return U.none();
+ if (c[a.nodeName] || Qo(a)) return U.none()
+ }
+ if (i.hasChildNodes()) {
+ if (l = Math.min(!u && l > 0 ? l - 1 : l, i.childNodes.length - 1), i = i.childNodes[l], l = tr(i) && d ? i.data.length : 0, !t && i === r.lastChild && Qo(i)) return U.none();
+ if (((e, t) => {
+ let n = t;
+ for (; n && n !== e;) {
+ if (cr(n)) return !0;
+ n = n.parentNode
+ }
+ return !1
+ })(r, i) || jr(i)) return U.none();
+ if (pr(i)) return U.none();
+ if (i.hasChildNodes() && !Qo(i)) {
+ a = i;
+ const t = new Ho(i, r);
+ do {
+ if (cr(a) || jr(a)) {
+ s = !1;
+ break
+ }
+ if (tr(a) && a.data.length > 0) {
+ l = u ? 0 : a.data.length, i = a, s = !0;
+ break
+ }
+ if (c[a.nodeName.toLowerCase()] && !mr(a)) {
+ l = e.nodeIndex(a), i = a.parentNode, u || l++, s = !0;
+ break
+ }
+ } while (a = u ? t.next() : t.prev())
+ }
+ }
+ }
+ return t && (tr(i) && 0 === l && ig(e, d, t, !0, i).each((e => {
+ i = e.container(), l = e.offset(), s = !0
+ })), Vo(i) && (a = i.childNodes[l], a || (a = i.childNodes[l - 1]), !a || !ir(a) || ((e, t) => {
+ var n;
+ return (null === (n = e.previousSibling) || void 0 === n ? void 0 : n.nodeName) === t
+ })(a, "A") || sg(e, a, !1) || sg(e, a, !0) || ig(e, d, t, !0, a).each((e => {
+ i = e.container(), l = e.offset(), s = !0
+ })))), u && !t && tr(i) && l === i.data.length && ig(e, d, t, !1, i).each((e => {
+ i = e.container(), l = e.offset(), s = !0
+ })), s && i ? U.some(rl(i, l)) : U.none()
+ }, dg = (e, t) => {
+ const n = t.collapsed, o = t.cloneRange(), r = rl.fromRangeStart(t);
+ return lg(e, n, !0, o).each((e => {
+ n && rl.isAbove(r, e) || o.setStart(e.container(), e.offset())
+ })), n || lg(e, n, !1, o).each((e => {
+ o.setEnd(e.container(), e.offset())
+ })), n && o.collapse(!0), ng(t, o) ? U.none() : U.some(o)
+ }, cg = (e, t) => e.splitText(t), ug = e => {
+ let t = e.startContainer, n = e.startOffset, o = e.endContainer, r = e.endOffset;
+ if (t === o && tr(t)) {
+ if (n > 0 && n < t.data.length) if (o = cg(t, n), t = o.previousSibling, r > n) {
+ r -= n;
+ const e = cg(o, r).previousSibling;
+ t = o = e, r = e.data.length, n = 0
+ } else r = 0
+ } else if (tr(t) && n > 0 && n < t.data.length && (t = cg(t, n), n = 0), tr(o) && r > 0 && r < o.data.length) {
+ const e = cg(o, r).previousSibling;
+ o = e, r = e.data.length
+ }
+ return {startContainer: t, startOffset: n, endContainer: o, endOffset: r}
+ }, mg = e => ({
+ walk: (t, n) => ff(e, t, n),
+ split: ug,
+ expand: (t, n = {type: "word"}) => {
+ if ("word" === n.type) {
+ const n = mf(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 => dg(e, t).fold(M, (e => (t.setStart(e.startContainer, e.startOffset), t.setEnd(e.endContainer, e.endOffset), !0)))
+ });
+ mg.compareRanges = ng, mg.getCaretRangeFromPoint = tg, mg.getSelectedNode = Ii, mg.getNode = Mi;
+ const fg = ((e, t) => {
+ const n = n => {
+ const o = t(n);
+ if (o <= 0 || null === o) {
+ const t = co(n, e);
+ return parseFloat(t) || 0
+ }
+ return o
+ }, o = (e, t) => Q(t, ((t, n) => {
+ const o = co(e, n), r = void 0 === o ? 0 : parseInt(o, 10);
+ return isNaN(r) ? t : t + r
+ }), 0);
+ return {
+ set: (t, n) => {
+ if (!S(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", (e => {
+ const t = e.dom;
+ return Yn(e) ? t.getBoundingClientRect().height : t.offsetHeight
+ })), gg = () => yn.fromDom(document), pg = (e, t) => e.view(t).fold(T([]), (t => {
+ const n = e.owner(t), o = pg(e, n);
+ return [t].concat(o)
+ }));
+ var hg = Object.freeze({
+ __proto__: null, view: e => {
+ var t;
+ return (e.dom === document ? U.none() : U.from(null === (t = e.dom.defaultView) || void 0 === t ? void 0 : t.frameElement)).map(yn.fromDom)
+ }, owner: e => xn(e)
+ });
+ const vg = e => {
+ const t = gg(), n = Bo(t), o = ((e, t) => {
+ const n = t.owner(e);
+ return pg(t, n)
+ })(e, hg), r = Oo(e), a = J(o, ((e, t) => {
+ const n = Oo(t);
+ return {left: e.left + n.left, top: e.top + n.top}
+ }), {left: 0, top: 0});
+ return Do(a.left + r.left + n.left, a.top + r.top + n.top)
+ }, bg = e => "textarea" === $t(e), yg = (e, t) => {
+ const n = (e => {
+ const t = e.dom.ownerDocument, n = t.body, o = t.defaultView, r = t.documentElement;
+ if (n === e.dom) return Do(n.offsetLeft, n.offsetTop);
+ const a = Lo(null == o ? void 0 : o.pageYOffset, r.scrollTop),
+ s = Lo(null == o ? void 0 : o.pageXOffset, r.scrollLeft), i = Lo(r.clientTop, n.clientTop),
+ l = Lo(r.clientLeft, n.clientLeft);
+ return Oo(e).translate(s - l, a - i)
+ })(e), o = (e => fg.get(e))(e);
+ return {element: e, bottom: n.top + o, height: o, pos: n, cleanup: t}
+ }, Cg = (e, t) => {
+ const n = ((e, t) => {
+ const n = Pn(e);
+ if (0 === n.length || bg(e)) return {element: e, offset: t};
+ if (t < n.length && !bg(n[t])) return {element: n[t], offset: 0};
+ {
+ const o = n[n.length - 1];
+ return bg(o) ? {element: e, offset: t} : "img" === $t(o) ? {
+ element: o,
+ offset: 1
+ } : Gt(o) ? {element: o, offset: Er(o).length} : {element: o, offset: Pn(o).length}
+ }
+ })(e, t),
+ o = yn.fromHtml('\ufeff');
+ return po(n.element, o), yg(o, (() => wo(o)))
+ }, Eg = (e, t, n, o) => {
+ kg(e, ((r, a) => _g(e, t, n, o)), n)
+ }, wg = (e, t, n, o, r) => {
+ const a = {elm: o.element.dom, alignToTop: r};
+ if (((e, t) => e.dispatch("ScrollIntoView", t).isDefaultPrevented())(e, a)) return;
+ n(e, t, Bo(t).top, o, r), ((e, t) => {
+ e.dispatch("AfterScrollIntoView", t)
+ })(e, a)
+ }, _g = (e, t, n, o) => {
+ const r = yn.fromDom(e.getBody()), a = yn.fromDom(e.getDoc());
+ r.dom.offsetWidth;
+ const s = Cg(yn.fromDom(n.startContainer), n.startOffset);
+ wg(e, a, t, s, o), s.cleanup()
+ }, Sg = (e, t, n, o) => {
+ const r = yn.fromDom(e.getDoc());
+ wg(e, r, n, (e => yg(yn.fromDom(e), x))(t), o)
+ }, kg = (e, t, n) => {
+ const o = n.startContainer, r = n.startOffset, a = n.endContainer, s = n.endOffset;
+ t(yn.fromDom(o), yn.fromDom(a));
+ const i = e.dom.createRng();
+ i.setStart(o, r), i.setEnd(a, s), e.selection.setRng(n)
+ }, xg = (e, t, n, o, r) => {
+ const a = t.pos;
+ if (o) Po(a.left, a.top, r); else {
+ const o = a.top - n + t.height;
+ Po(-e.getBody().getBoundingClientRect().left, o, r)
+ }
+ }, Ag = (e, t, n, o, r, a) => {
+ const s = o + n, i = r.pos.top, l = r.bottom, d = l - i >= o;
+ if (i < n) xg(e, r, o, !1 !== a, t); else if (i > s) {
+ xg(e, r, o, d ? !1 !== a : !0 === a, t)
+ } else l > s && !d && xg(e, r, o, !0 === a, t)
+ }, Ng = (e, t, n, o, r) => {
+ const a = An(t).dom.innerHeight;
+ Ag(e, t, n, a, o, r)
+ }, Tg = (e, t, n, o, r) => {
+ const a = An(t).dom.innerHeight;
+ Ag(e, t, n, a, o, r);
+ const s = vg(o.element), i = Fo(window);
+ s.top < i.y ? Io(o.element, !1 !== r) : s.top > i.bottom && Io(o.element, !0 === r)
+ }, Rg = (e, t, n) => Eg(e, Ng, t, n), Dg = (e, t, n) => Sg(e, t, Ng, n),
+ Lg = (e, t, n) => Eg(e, Tg, t, n), Og = (e, t, n) => Sg(e, t, Tg, n), Bg = (e, t, n) => {
+ (e.inline ? Rg : Lg)(e, t, n)
+ }, Pg = (e, t = !1) => e.dom.focus({preventScroll: t}), Ig = e => {
+ const t = zn(e).dom;
+ return e.dom === t.activeElement
+ }, Mg = (e = gg()) => U.from(e.dom.activeElement).map(yn.fromDom), Fg = (e, t) => {
+ const n = Gt(t) ? Er(t).length : Pn(t).length + 1;
+ return e > n ? n : e < 0 ? 0 : e
+ }, Ug = e => Yf.range(e.start, Fg(e.soffset, e.start), e.finish, Fg(e.foffset, e.finish)),
+ qg = (e, t) => !$o(t.dom) && (Sn(e, t) || _n(e, t)),
+ jg = e => t => qg(e, t.start) && qg(e, t.finish),
+ Hg = e => Yf.range(yn.fromDom(e.startContainer), e.startOffset, yn.fromDom(e.endContainer), e.endOffset),
+ zg = e => (e => {
+ const t = e.getSelection();
+ return (t && 0 !== t.rangeCount ? U.from(t.getRangeAt(0)) : U.none()).map(Hg)
+ })(An(e).dom).filter(jg(e)), $g = e => {
+ const t = document.createRange();
+ try {
+ return t.setStart(e.start.dom, e.soffset), t.setEnd(e.finish.dom, e.foffset), U.some(t)
+ } catch (e) {
+ return U.none()
+ }
+ }, Vg = e => {
+ const t = (e => e.inline || Rt.browser.isFirefox())(e) ? zg(yn.fromDom(e.getBody())) : U.none();
+ e.bookmark = t.isSome() ? t : e.bookmark
+ },
+ Wg = e => (e.bookmark ? e.bookmark : U.none()).bind((t => ((e, t) => U.from(t).filter(jg(e)).map(Ug))(yn.fromDom(e.getBody()), t))).bind($g),
+ Kg = {
+ isEditorUIElement: e => {
+ const t = e.className.toString();
+ return -1 !== t.indexOf("tox-") || -1 !== t.indexOf("mce-")
+ }
+ }, Yg = {
+ setEditorTimeout: (e, t, n) => ((e, t) => (S(t) || (t = 0), setTimeout(e, t)))((() => {
+ e.removed || t()
+ }), n), setEditorInterval: (e, t, n) => {
+ const o = ((e, t) => (S(t) || (t = 0), setInterval(e, t)))((() => {
+ e.removed ? clearInterval(o) : t()
+ }), n);
+ return o
+ }
+ }, Gg = e => {
+ const t = ii((() => {
+ Vg(e)
+ }), 0);
+ e.on("init", (() => {
+ e.inline && ((e, t) => {
+ const n = () => {
+ t.throttle()
+ };
+ Xs.DOM.bind(document, "mouseup", n), e.on("remove", (() => {
+ Xs.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) || Vg(e)
+ }))
+ })(e, t)
+ })), e.on("remove", (() => {
+ t.cancel()
+ }))
+ };
+ let Xg;
+ const Jg = Xs.DOM, Qg = 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"))
+ }, Zg = (e, t) => {
+ const n = Fd(e),
+ o = Jg.getParent(t, (t => (e => Vo(e) && Kg.isEditorUIElement(e))(t) || !!n && e.dom.is(t, n)));
+ return null !== o
+ }, ep = e => {
+ try {
+ const t = zn(yn.fromDom(e.getElement()));
+ return Mg(t).fold((() => document.body), (e => e.dom))
+ } catch (e) {
+ return document.body
+ }
+ }, tp = (e, t) => {
+ const n = t.editor;
+ Gg(n);
+ const o = (e, t) => {
+ if (xc(e) && !0 !== e.inline) {
+ t(yn.fromDom(e.getContainer()), "tox-edit-focus")
+ }
+ };
+ n.on("focusin", (() => {
+ const t = e.focusedEditor;
+ Qg(ep(n)) && o(n, fn), 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", (() => {
+ Yg.setEditorTimeout(n, (() => {
+ const t = e.focusedEditor;
+ Qg(ep(n)) && t === n || o(n, pn), Zg(n, ep(n)) || t !== n || (n.dispatch("blur", {focusedEditor: null}), e.focusedEditor = null)
+ }))
+ })), Xg || (Xg = t => {
+ const n = e.activeEditor;
+ n && Wn(t).each((t => {
+ const o = t;
+ o.ownerDocument === document && (o === document.body || Zg(n, o) || e.focusedEditor !== n || (n.dispatch("blur", {focusedEditor: null}), e.focusedEditor = null))
+ }))
+ }, Jg.bind(document, "focusin", Xg))
+ }, np = (e, t) => {
+ e.focusedEditor === t.editor && (e.focusedEditor = null), !e.activeEditor && Xg && (Jg.unbind(document, "focusin", Xg), Xg = null)
+ },
+ op = (e, t) => (e => e.collapsed ? U.from(Mi(e.startContainer, e.startOffset)).map(yn.fromDom) : U.none())(t).bind((t => Nr(t) ? U.some(t) : Sn(e, t) ? U.none() : U.some(e))),
+ rp = (e, t) => {
+ op(yn.fromDom(e.getBody()), t).bind((e => Yu(e.dom))).fold((() => {
+ e.selection.normalize()
+ }), (t => e.selection.setRng(t.toRange())))
+ }, ap = e => {
+ if (e.setActive) try {
+ e.setActive()
+ } catch (t) {
+ e.focus()
+ } else e.focus()
+ }, sp = e => {
+ return Ig(e) || (t = e, Mg(zn(t)).filter((e => t.dom.contains(e.dom)))).isSome();
+ var t
+ }, ip = e => e.inline ? (e => {
+ const t = e.getBody();
+ return t && sp(yn.fromDom(t))
+ })(e) : (e => w(e.iframeElement) && Ig(yn.fromDom(e.iframeElement)))(e), lp = e => ip(e) || (e => {
+ const t = zn(yn.fromDom(e.getElement()));
+ return Mg(t).filter((t => !Qg(t.dom) && Zg(e, t.dom))).isSome()
+ })(e), dp = e => e.editorManager.setActive(e), cp = (e, t) => {
+ e.removed || (t ? dp(e) : (e => {
+ const t = e.selection, n = e.getBody();
+ let o = t.getRng();
+ e.quirks.refreshContentEditable(), w(e.bookmark) && !ip(e) && Wg(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 ap(r), rp(e, o), void dp(e);
+ e.inline || (Rt.browser.isOpera() || ap(n), e.getWin().focus()), (Rt.browser.isFirefox() || e.inline) && (ap(n), rp(e, o)), dp(e)
+ })(e))
+ },
+ up = (e, t) => t.collapsed ? e.isEditable(t.startContainer) : e.isEditable(t.startContainer) && e.isEditable(t.endContainer),
+ mp = (e, t, n, o, r) => {
+ const a = n ? t.startContainer : t.endContainer, s = n ? t.startOffset : t.endOffset;
+ return U.from(a).map(yn.fromDom).map((e => o && t.collapsed ? e : In(e, r(e, s)).getOr(e))).bind((e => Yt(e) ? U.some(e) : Nn(e).filter(Yt))).map((e => e.dom)).getOr(e)
+ }, fp = (e, t, n = !1) => mp(e, t, !0, n, ((e, t) => Math.min(Un(e), t))),
+ gp = (e, t, n = !1) => mp(e, t, !1, n, ((e, t) => t > 0 ? t - 1 : t)), pp = (e, t) => {
+ const n = e;
+ for (; e && tr(e) && 0 === e.length;) e = t ? e.nextSibling : e.previousSibling;
+ return e || n
+ }, hp = (e, t) => W(t, (t => {
+ const n = e.dispatch("GetSelectionRange", {range: t});
+ return n.range !== t ? n.range : t
+ })), vp = ["img", "br"], bp = e => {
+ const t = wr(e).filter((e => 0 !== e.trim().length || e.indexOf(br) > -1)).isSome();
+ return t || $(vp, $t(e)) || (e => Kt(e) && "false" === nn(e, "contenteditable"))(e)
+ }, yp = (e, t) => {
+ const n = e => {
+ const o = Pn(e);
+ for (let e = o.length - 1; e >= 0; e--) {
+ const r = o[e];
+ if (t(r)) return U.some(r);
+ const a = n(r);
+ if (a.isSome()) return a
+ }
+ return U.none()
+ };
+ return n(e)
+ }, Cp = "[data-mce-autocompleter]", Ep = (e, t) => {
+ if (wp(yn.fromDom(e.getBody())).isNone()) {
+ const o = yn.fromHtml('', e.getDoc());
+ bo(o, yn.fromDom(t.extractContents())), t.insertNode(o.dom), Nn(o).each((e => e.dom.normalize())), (n = o, yp(n, bp)).map((t => {
+ e.selection.setCursorLocation(t.dom, (e => "img" === $t(e) ? 1 : wr(e).fold((() => Pn(e).length), (e => e.length)))(t))
+ }))
+ }
+ var n
+ }, wp = e => to(e, Cp),
+ _p = {"#text": 3, "#comment": 8, "#cdata": 4, "#pi": 7, "#doctype": 10, "#document-fragment": 11},
+ Sp = (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
+ }
+ }, kp = e => {
+ var t;
+ const n = null !== (t = e.value) && void 0 !== t ? t : "";
+ if (!ia(n)) return !1;
+ const o = e.parent;
+ return !o || "span" === o.name && !o.attr("style") || !/^[ ]+$/.test(n)
+ }, xp = 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 Ap {
+ static create(e, t) {
+ const n = new Ap(e, _p[e] || 1);
+ return t && he(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 (!g(e)) return w(e) && he(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 Ap(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 = Sp(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 = Sp(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 a = r.firstChild;
+ if (xp(r)) return !1;
+ if (a) do {
+ if (1 === a.type) {
+ if (a.attr("data-mce-bogus")) continue;
+ if (e[a.name]) return !1;
+ if (xp(a)) return !1
+ }
+ if (8 === a.type) return !1;
+ if (3 === a.type && !kp(a)) return !1;
+ if (3 === a.type && a.parent && t[a.parent.name] && ia(null !== (o = a.value) && void 0 !== o ? o : "")) return !1;
+ if (n && n(a)) return !1
+ } while (a = Sp(a, r));
+ return !0
+ }
+
+ walk(e) {
+ return Sp(this, null, e)
+ }
+ }
+
+ const Np = Bt.makeMap("NOSCRIPT STYLE SCRIPT XMP IFRAME NOEMBED NOFRAMES PLAINTEXT", " "),
+ Tp = e => g(e.nodeValue) && e.nodeValue.includes(Br),
+ Rp = e => (0 === e.length ? "" : `${W(e, (e => `[${e}]`)).join(",")},`) + '[data-mce-bogus="all"]',
+ Dp = e => document.createTreeWalker(e, NodeFilter.SHOW_COMMENT, (e => Tp(e) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP)),
+ Lp = e => document.createTreeWalker(e, NodeFilter.SHOW_TEXT, (e => {
+ if (Tp(e)) {
+ const t = e.parentNode;
+ return t && ke(Np, t.nodeName) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP
+ }
+ return NodeFilter.FILTER_SKIP
+ })), Op = e => null !== Dp(e).nextNode(), Bp = e => null !== Lp(e).nextNode(),
+ Pp = (e, t) => null !== t.querySelector(Rp(e)), Ip = (e, t) => {
+ K(((e, t) => t.querySelectorAll(Rp(e)))(e, t), (t => {
+ const n = yn.fromDom(t);
+ "all" === nn(n, "data-mce-bogus") ? wo(n) : K(e, (e => {
+ rn(n, e) && an(n, e)
+ }))
+ }))
+ }, Mp = e => {
+ let t = e.nextNode();
+ for (; null !== t;) t.nodeValue = null, t = e.nextNode()
+ }, Fp = A(Mp, Dp), Up = A(Mp, Lp), qp = (e, t) => {
+ const n = [{condition: L(Pp, t), action: L(Ip, t)}, {condition: Op, action: Fp}, {
+ condition: Bp,
+ action: Up
+ }];
+ let o = e, r = !1;
+ return K(n, (({condition: t, action: n}) => {
+ t(o) && (r || (o = e.cloneNode(!0), r = !0), n(o))
+ })), o
+ }, jp = e => {
+ const t = qo(e, "[data-mce-bogus]");
+ K(t, (e => {
+ "all" === nn(e, "data-mce-bogus") ? wo(e) : Sr(e) ? (po(e, yn.fromText(vr)), wo(e)) : _o(e)
+ }))
+ }, Hp = e => {
+ const t = qo(e, "input");
+ K(t, (e => {
+ an(e, "name")
+ }))
+ }, zp = (e, t) => {
+ const n = e.getDoc(), o = zn(yn.fromDom(e.getBody())), r = yn.fromTag("div", n);
+ en(r, "data-mce-bogus", "all"), lo(r, {
+ position: "fixed",
+ left: "-9999999px",
+ top: "0"
+ }), xo(r, t.innerHTML), jp(r), Hp(r);
+ const a = (e => qn(e) ? e : yn.fromDom(xn(e).dom.body))(o);
+ bo(a, r);
+ const s = Ir(r.dom.innerText);
+ return wo(r), s
+ }, $p = (e, t, n) => {
+ let o;
+ o = "raw" === t.format ? Bt.trim(Ir(qp(n, e.serializer.getTempAttrs()).innerHTML)) : "text" === t.format ? zp(e, n) : "tree" === t.format ? e.serializer.serialize(n, t) : ((e, t) => {
+ const n = Jl(e),
+ o = new RegExp(`^(<${n}[^>]*>( | |\\s| |
|)<\\/${n}>[\r\n]*|
[\r\n]*)$`);
+ return t.replace(o, "")
+ })(e, e.serializer.serialize(n, t));
+ return "text" !== t.format && !Rr(yn.fromDom(n)) && g(o) ? Bt.trim(o) : o
+ }, Vp = Bt.makeMap, Wp = e => {
+ const t = [], n = (e = e || {}).indent, o = Vp(e.indent_before || ""), r = Vp(e.indent_after || ""),
+ a = is.getEncodeFunc(e.entity_encoding || "raw", e.entities), s = "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, '="', a(n.value, !0), '"')
+ }
+ if (t[t.length] = !l || s ? ">" : " />", 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 : a(e))
+ }, cdata: e => {
+ t.push("")
+ }, comment: e => {
+ t.push("\x3c!--", e, "--\x3e")
+ }, pi: (e, o) => {
+ o ? t.push("", e, " ", a(o), "?>") : t.push("", e, "?>"), n && t.push("\n")
+ }, doctype: e => {
+ t.push("", n ? "\n" : "")
+ }, reset: () => {
+ t.length = 0
+ }, getContent: () => t.join("").replace(/\n$/, "")
+ }
+ }, Kp = (e = {}, t = ys()) => {
+ const n = Wp(e);
+ e.validate = !("validate" in e) || e.validate;
+ return {
+ serialize: o => {
+ const r = e.validate, a = {
+ 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 {
+ s(t)
+ } while (t = t.next)
+ }
+ };
+ n.reset();
+ const s = e => {
+ var o;
+ const i = a[e.type];
+ if (i) i(e); else {
+ const a = e.name, i = a 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(a, l, i), Ca(a)) g(e.value) && n.text(e.value, !0), n.end(a); else if (!i) {
+ let t = e.firstChild;
+ if (t) {
+ "pre" !== a && "textarea" !== a || 3 !== t.type || "\n" !== (null === (o = t.value) || void 0 === o ? void 0 : o[0]) || n.text("\n", !0);
+ do {
+ s(t)
+ } while (t = t.next)
+ }
+ n.end(a)
+ }
+ }
+ };
+ return 1 !== o.type || e.inner ? 3 === o.type ? a[3](o) : a[11](o) : s(o), n.getContent()
+ }
+ }
+ }, Yp = new Set;
+ K(["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 => {
+ Yp.add(e)
+ }));
+ const Gp = ["font", "text-decoration", "text-emphasis"],
+ Xp = (e, t) => ge(e.parseStyle(e.getAttrib(t, "style"))),
+ Jp = (e, t) => re(Xp(e, t), (e => !(e => Yp.has(e))(e))), Qp = (e, t, n) => {
+ const o = Xp(e, t), r = Xp(e, n), a = o => {
+ var r, a;
+ const s = null !== (r = e.getStyle(t, o)) && void 0 !== r ? r : "",
+ i = null !== (a = e.getStyle(n, o)) && void 0 !== a ? a : "";
+ return Xe(s) && Xe(i) && s !== i
+ };
+ return V(o, (e => {
+ const t = t => V(t, (t => t === e));
+ if (!t(r) && t(Gp)) {
+ const e = X(r, (e => V(Gp, (t => $e(e, t)))));
+ return V(e, a)
+ }
+ return a(e)
+ }))
+ }, Zp = (e, t, n) => U.from(n.container()).filter(tr).exists((o => {
+ const r = e ? 0 : -1;
+ return t(o.data.charAt(n.offset() + r))
+ })), eh = L(Zp, !0, gm), th = L(Zp, !1, gm), nh = e => {
+ const t = e.container();
+ return tr(t) && (0 === t.data.length || Pr(t.data) && wf.isBookmarkNode(t.parentNode))
+ }, oh = (e, t) => n => gu(e ? 0 : -1, n).filter(t).isSome(),
+ rh = e => lr(e) && "block" === co(yn.fromDom(e), "display"),
+ ah = e => cr(e) && !(e => Vo(e) && "all" === e.getAttribute("data-mce-bogus"))(e), sh = oh(!0, rh),
+ ih = oh(!1, rh), lh = oh(!0, fr), dh = oh(!1, fr), ch = oh(!0, Qo), uh = oh(!1, Qo),
+ mh = oh(!0, ah), fh = oh(!1, ah),
+ gh = (e, t) => ((e, t, n) => Sn(t, e) ? Rn(e, (e => n(e) || _n(e, t))).slice(0, -1) : [])(e, t, M),
+ ph = (e, t) => [e].concat(gh(e, t)), hh = (e, t, n) => $u(e, t, n, nh),
+ vh = (e, t, n) => ee(ph(yn.fromDom(t.container()), e), (e => t => e.isBlock($t(t)))(n)),
+ bh = (e, t, n, o) => hh(e, t.dom, n).forall((e => vh(t, n, o).fold((() => !fu(e, n, t.dom)), (o => !fu(e, n, t.dom) && Sn(o, yn.fromDom(e.container())))))),
+ yh = (e, t, n, o) => vh(t, n, o).fold((() => hh(e, t.dom, n).forall((e => !fu(e, n, t.dom)))), (t => hh(e, t.dom, n).isNone())),
+ Ch = L(yh, !1), Eh = L(yh, !0), wh = L(bh, !1), _h = L(bh, !0), Sh = e => _u(e).exists(Sr),
+ kh = (e, t, n, o) => {
+ const r = X(ph(yn.fromDom(n.container()), t), (e => o.isBlock($t(e)))), a = ce(r).getOr(t);
+ return Hu(e, a.dom, n).filter(Sh)
+ }, xh = (e, t, n) => _u(t).exists(Sr) || kh(!0, e, t, n).isSome(),
+ Ah = (e, t, n) => (e => U.from(e.getNode(!0)).map(yn.fromDom))(t).exists(Sr) || kh(!1, e, t, n).isSome(),
+ Nh = L(kh, !1), Th = L(kh, !0), Rh = e => rl.isTextPosition(e) && !e.isAtStart() && !e.isAtEnd(),
+ Dh = (e, t, n) => {
+ const o = X(ph(yn.fromDom(t.container()), e), (e => n.isBlock($t(e))));
+ return ce(o).getOr(e)
+ }, Lh = (e, t, n) => Rh(t) ? th(t) : th(t) || Ku(Dh(e, t, n).dom, t).exists(th),
+ Oh = (e, t, n) => Rh(t) ? eh(t) : eh(t) || Wu(Dh(e, t, n).dom, t).exists(eh),
+ Bh = e => _u(e).bind((e => Jn(e, Yt))).exists((e => (e => $(["pre", "pre-wrap"], e))(co(e, "white-space")))),
+ Ph = (e, t, n) => ((e, t) => Ku(e.dom, t).isNone())(e, t) || ((e, t) => Wu(e.dom, t).isNone())(e, t) || Ch(e, t, n) || Eh(e, t, n) || Ah(e, t, n) || xh(e, t, n),
+ Ih = (e, t) => n => {
+ return o = new Ho(n, e)[t](), w(o) && cr(o) && nu(o);
+ var o
+ }, Mh = (e, t, n) => !Bh(t) && (Ph(e, t, n) || Lh(e, t, n) || Oh(e, t, n)),
+ Fh = (e, t, n) => !Bh(t) && (Ch(e, t, n) || wh(e, t, n) || Ah(e, t, n) || Lh(e, t, n) || ((e, t) => {
+ const n = Ku(e.dom, t).getOr(t), o = Ih(e.dom, "prev");
+ return t.isAtStart() && (o(t.container()) || o(n.container()))
+ })(e, t)),
+ Uh = (e, t, n) => !Bh(t) && (Eh(e, t, n) || _h(e, t, n) || xh(e, t, n) || Oh(e, t, n) || ((e, t) => {
+ const n = Wu(e.dom, t).getOr(t), o = Ih(e.dom, "next");
+ return t.isAtEnd() && (o(t.container()) || o(n.container()))
+ })(e, t)), qh = (e, t, n) => Fh(e, t, n) || Uh(e, (e => {
+ const t = e.container(), n = e.offset();
+ return tr(t) && n < t.data.length ? rl(t, n + 1) : e
+ })(t), n), jh = (e, t) => mm(e.charAt(t)), Hh = (e, t) => gm(e.charAt(t)), zh = (e, t, n, o) => {
+ const r = t.data, a = rl(t, 0);
+ return n || !jh(r, 0) || qh(e, a, o) ? !!(n && Hh(r, 0) && Fh(e, a, o)) && (t.data = br + r.slice(1), !0) : (t.data = " " + r.slice(1), !0)
+ }, $h = e => {
+ const t = e.data, n = (e => {
+ const t = e.split("");
+ return W(t, ((e, n) => mm(e) && n > 0 && n < t.length - 1 && pm(t[n - 1]) && pm(t[n + 1]) ? " " : e)).join("")
+ })(t);
+ return n !== t && (e.data = n, !0)
+ }, Vh = (e, t, n, o) => {
+ const r = t.data, a = rl(t, r.length - 1);
+ return n || !jh(r, r.length - 1) || qh(e, a, o) ? !!(n && Hh(r, r.length - 1) && Uh(e, a, o)) && (t.data = r.slice(0, -1) + br, !0) : (t.data = r.slice(0, -1) + " ", !0)
+ }, Wh = (e, t, n) => {
+ const o = t.container();
+ if (!tr(o)) return U.none();
+ if ((e => {
+ const t = e.container();
+ return tr(t) && ze(t.data, br)
+ })(t)) {
+ const r = zh(e, o, !1, n) || $h(o) || Vh(e, o, !1, n);
+ return Ft(r, t)
+ }
+ if (qh(e, t, n)) {
+ const r = zh(e, o, !0, n) || Vh(e, o, !0, n);
+ return Ft(r, t)
+ }
+ return U.none()
+ }, Kh = (e, t, n, o) => {
+ if (0 === n) return;
+ const r = yn.fromDom(e), a = Xn(r, (e => o.isBlock($t(e)))).getOr(r), s = e.data.slice(t, t + n),
+ i = t + n >= e.data.length && Uh(a, rl(e, e.data.length), o), l = 0 === t && Fh(a, rl(e, 0), o);
+ e.replaceData(t, n, ca(s, 4, l, i))
+ }, Yh = (e, t, n) => {
+ const o = e.data.slice(t), r = o.length - Ye(o).length;
+ Kh(e, t, r, n)
+ }, Gh = (e, t, n) => {
+ const o = e.data.slice(0, t), r = o.length - Ge(o).length;
+ Kh(e, t - r, r, n)
+ }, Xh = (e, t, n, o, r = !0) => {
+ const a = Ge(e.data).length, s = r ? e : t, i = r ? t : e;
+ return r ? s.appendData(i.data) : s.insertData(0, i.data), wo(yn.fromDom(i)), o && Yh(s, a, n), s
+ }, Jh = (e, t) => ((e, t) => {
+ const n = e.container(), o = e.offset();
+ return !rl.isTextPosition(e) && n === t.parentNode && o > rl.before(t).offset()
+ })(t, e) ? rl(t.container(), t.offset() - 1) : t, Qh = e => {
+ return oa(e.previousSibling) ? U.some((t = e.previousSibling, tr(t) ? rl(t, t.data.length) : rl.after(t))) : e.previousSibling ? Gu(e.previousSibling) : U.none();
+ var t
+ }, Zh = e => {
+ return oa(e.nextSibling) ? U.some((t = e.nextSibling, tr(t) ? rl(t, 0) : rl.before(t))) : e.nextSibling ? Yu(e.nextSibling) : U.none();
+ var t
+ },
+ ev = (e, t) => Qh(t).orThunk((() => Zh(t))).orThunk((() => ((e, t) => U.from(t.previousSibling ? t.previousSibling : t.parentNode).bind((t => Ku(e, rl.before(t)))).orThunk((() => Wu(e, rl.after(t)))))(e, t))),
+ tv = (e, t) => Zh(t).orThunk((() => Qh(t))).orThunk((() => ((e, t) => Wu(e, rl.after(t)).orThunk((() => Ku(e, rl.before(t)))))(e, t))),
+ nv = (e, t, n) => ((e, t, n) => e ? tv(t, n) : ev(t, n))(e, t, n).map(L(Jh, n)), ov = (e, t, n) => {
+ n.fold((() => {
+ e.focus()
+ }), (n => {
+ e.selection.setRng(n.toRange(), t)
+ }))
+ }, rv = (e, t) => t && ke(e.schema.getBlockElements(), $t(t)), av = (e, t, n, o) => {
+ const r = Dn(e).filter(Gt), a = Ln(e).filter(Gt);
+ return wo(e), (s = r, i = a, l = t, d = (e, t, r) => {
+ const a = e.dom, s = t.dom, i = a.data.length;
+ return Xh(a, s, n, o), r.container() === s ? rl(a, i) : r
+ }, s.isSome() && i.isSome() && l.isSome() ? U.some(d(s.getOrDie(), i.getOrDie(), l.getOrDie())) : U.none()).orThunk((() => (o && (r.each((e => Gh(e.dom, e.dom.length, n))), a.each((e => Yh(e.dom, 0, n)))), t)));
+ var s, i, l, d
+ }, sv = (e, t, n, o = !0, r = !1) => {
+ const a = nv(t, e.getBody(), n.dom), s = Xn(n, L(rv, e), (i = e.getBody(), e => e.dom === i));
+ var i;
+ const l = av(n, a, e.schema, ((e, t) => ke(e.schema.getTextInlineElements(), $t(t)))(e, n));
+ e.dom.isEmpty(e.getBody()) ? (e.setContent(""), e.selection.setCursorLocation()) : s.bind((e => ((e, t) => {
+ if (ya(e)) {
+ const n = yn.fromHtml('
');
+ return t ? K(Pn(e), (e => {
+ Xm(e) || wo(e)
+ })) : Eo(e), bo(e, n), U.some(rl.before(n.dom))
+ }
+ return U.none()
+ })(e, r))).fold((() => {
+ o && ov(e, t, l)
+ }), (n => {
+ o && ov(e, t, U.some(n))
+ }))
+ }, iv = /[\u0591-\u07FF\uFB1D-\uFDFF\uFE70-\uFEFC]/,
+ lv = (e, t) => En(yn.fromDom(t), _d(e)) && !Pa(e.schema, t) && e.dom.isEditable(t), dv = e => {
+ var t;
+ return "rtl" === Xs.DOM.getStyle(e, "direction", !0) || (e => iv.test(e))(null !== (t = e.textContent) && void 0 !== t ? t : "")
+ }, cv = (e, t, n) => {
+ const o = ((e, t, n) => X(Xs.DOM.getParents(n.container(), "*", t), e))(e, t, n);
+ return U.from(o[o.length - 1])
+ }, uv = (e, t) => {
+ const n = t.container(), o = t.offset();
+ return e ? qr(n) ? tr(n.nextSibling) ? rl(n.nextSibling, 0) : rl.after(n) : zr(t) ? rl(n, o + 1) : t : qr(n) ? tr(n.previousSibling) ? rl(n.previousSibling, n.previousSibling.data.length) : rl.before(n) : $r(t) ? rl(n, o - 1) : t
+ }, mv = L(uv, !0), fv = L(uv, !1), gv = (e, t) => {
+ const n = e => e.stopImmediatePropagation();
+ e.on("beforeinput input", n, !0), e.getDoc().execCommand(t), e.off("beforeinput input", n)
+ }, pv = e => gv(e, "Delete"), hv = e => kr(e) || Ar(e),
+ vv = (e, t) => Sn(e, t) ? Jn(t, hv, (e => t => Pt(Nn(t), e, _n))(e)) : U.none(),
+ bv = (e, t = !0) => {
+ e.dom.isEmpty(e.getBody()) && e.setContent("", {no_selection: !t})
+ }, yv = (e, t, n) => Mt(Yu(n), Gu(n), ((o, r) => {
+ const a = uv(!0, o), s = uv(!1, r), i = uv(!1, t);
+ return e ? Wu(n, i).exists((e => e.isEqual(s) && t.isEqual(a))) : Ku(n, i).exists((e => e.isEqual(a) && t.isEqual(s)))
+ })).getOr(!0), Cv = e => {
+ var t;
+ return (8 === Vt(t = e) || "#comment" === $t(t) ? Dn(e) : Fn(e)).bind(Cv).orThunk((() => U.some(e)))
+ }, Ev = (e, t, n, o = !0) => {
+ var r;
+ t.deleteContents();
+ const a = Cv(n).getOr(n),
+ s = yn.fromDom(null !== (r = e.dom.getParent(a.dom, e.dom.isBlock)) && void 0 !== r ? r : n.dom);
+ if (s.dom === e.getBody() ? bv(e, o) : ya(s) && (Or(s), o && e.selection.setCursorLocation(s.dom, 0)), !_n(n, s)) {
+ const e = Pt(Nn(s), n) ? [] : Nn(i = s).map(Pn).map((e => X(e, (e => !_n(i, e))))).getOr([]);
+ K(e.concat(Pn(n)), (e => {
+ _n(e, s) || Sn(e, s) || !ya(e) || wo(e)
+ }))
+ }
+ var i
+ }, wv = (e, t) => ((e, t) => {
+ const n = e.dom;
+ return n.parentNode ? Qn(yn.fromDom(n.parentNode), (n => !_n(e, n) && t(n))) : U.none()
+ })(e, t).isSome(), _v = (e, t) => Zn(e, t).isSome(), Sv = e => qo(e, "td,th"),
+ kv = (e, t) => Cm(yn.fromDom(e), t), xv = e => (e => Mt(e.startTable, e.endTable, ((t, n) => {
+ const o = _v(t, (e => _n(e, n))), r = _v(n, (e => _n(e, t)));
+ return o || r ? {
+ ...e,
+ startTable: o ? U.none() : e.startTable,
+ endTable: r ? U.none() : e.endTable,
+ isSameTable: !1,
+ isMultiTable: !1
+ } : e
+ })).getOr(e))(e), Av = (e, t) => ({start: e, end: t}),
+ Nv = Rl([{singleCellTable: ["rng", "cell"]}, {fullTable: ["table"]}, {partialTable: ["cells", "outsideDetails"]}, {multiTable: ["startTableCells", "endTableCells", "betweenRng"]}]),
+ Tv = (e, t) => no(yn.fromDom(e), "td,th", t), Rv = e => !_n(e.start, e.end),
+ Dv = (e, t) => Cm(e.start, t).bind((n => Cm(e.end, t).bind((e => Ft(_n(n, e), n))))),
+ Lv = e => t => Dv(t, e).map((e => ((e, t, n) => ({rng: e, table: t, cells: n}))(t, e, Sv(e)))),
+ Ov = (e, t, n, o) => {
+ if (n.collapsed || !e.forall(Rv)) return U.none();
+ if (t.isSameTable) {
+ const t = e.bind(Lv(o));
+ return U.some({start: t, end: t})
+ }
+ {
+ const e = Tv(n.startContainer, o), t = Tv(n.endContainer, o),
+ r = e.bind((e => t => Cm(t, e).bind((e => ue(Sv(e)).map((e => Av(t, e))))))(o)).bind(Lv(o)),
+ a = t.bind((e => t => Cm(t, e).bind((e => ce(Sv(e)).map((e => Av(e, t))))))(o)).bind(Lv(o));
+ return U.some({start: r, end: a})
+ }
+ }, Bv = (e, t) => te(e, (e => _n(e, t))),
+ Pv = e => Mt(Bv(e.cells, e.rng.start), Bv(e.cells, e.rng.end), ((t, n) => e.cells.slice(t, n + 1))),
+ Iv = (e, t, n) => e.exists((e => ((e, t) => !Rv(e) && Dv(e, t).exists((e => {
+ const t = e.dom.rows;
+ return 1 === t.length && 1 === t[0].cells.length
+ })))(e, n) && _m(e.start, t))), Mv = (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
+ }, Fv = (e, t) => {
+ const n = (e => t => _n(e, t))(e), o = ((e, t) => {
+ const n = Tv(e.startContainer, t), o = Tv(e.endContainer, t);
+ return Mt(n, o, Av)
+ })(t, n), r = ((e, t) => {
+ const n = kv(e.startContainer, t), o = kv(e.endContainer, t), r = n.isSome(), a = o.isSome(),
+ s = Mt(n, o, _n).getOr(!1);
+ return xv({
+ startTable: n,
+ endTable: o,
+ isStartInTable: r,
+ isEndInTable: a,
+ isSameTable: s,
+ isMultiTable: !s && r && a
+ })
+ })(t, n);
+ return Iv(o, t, n) ? o.map((e => Nv.singleCellTable(t, e.start))) : r.isMultiTable ? ((e, t, n, o) => Ov(e, t, n, o).bind((({
+ start: e,
+ end: o
+ }) => {
+ const r = e.bind(Pv).getOr([]), a = o.bind(Pv).getOr([]);
+ if (r.length > 0 && a.length > 0) {
+ const e = Mv(n, t);
+ return U.some(Nv.multiTable(r, a, e))
+ }
+ return U.none()
+ })))(o, r, t, n) : ((e, t, n, o) => Ov(e, t, n, o).bind((({
+ start: e,
+ end: t
+ }) => e.or(t))).bind((e => {
+ const {isSameTable: o} = t, r = Pv(e).getOr([]);
+ if (o && e.cells.length === r.length) return U.some(Nv.fullTable(e.table));
+ if (r.length > 0) {
+ if (o) return U.some(Nv.partialTable(r, U.none()));
+ {
+ const e = Mv(n, t);
+ return U.some(Nv.partialTable(r, U.some({...t, rng: e})))
+ }
+ }
+ return U.none()
+ })))(o, r, t, n)
+ }, Uv = e => K(e, (e => {
+ an(e, "contenteditable"), Or(e)
+ })), qv = (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)), $v(e, r, t, !1).each((e => e()))
+ }, jv = e => {
+ const t = ym(e), n = yn.fromDom(e.selection.getNode());
+ ur(n.dom) && ya(n) ? e.selection.setCursorLocation(n.dom, 0) : e.selection.collapse(!0), t.length > 1 && V(t, (e => _n(e, n))) && en(n, "data-mce-selected", "1")
+ }, Hv = (e, t, n) => U.some((() => {
+ const o = e.selection.getRng(), r = n.bind((({rng: n, isStartInTable: r}) => {
+ const a = ((e, t) => U.from(e.dom.getParent(t, e.dom.isBlock)).map(yn.fromDom))(e, r ? n.endContainer : n.startContainer);
+ n.deleteContents(), ((e, t, n) => {
+ n.each((n => {
+ t ? wo(n) : (Or(n), e.selection.setCursorLocation(n.dom, 0))
+ }))
+ })(e, r, a.filter(ya));
+ const s = r ? t[0] : t[t.length - 1];
+ return qv(e, s, o, r), ya(s) ? U.none() : U.some(r ? t.slice(1) : t.slice(0, -1))
+ })).getOr(t);
+ Uv(r), jv(e)
+ })), zv = (e, t, n, o) => U.some((() => {
+ const r = e.selection.getRng(), a = t[0], s = n[n.length - 1];
+ qv(e, a, r, !0), qv(e, s, r, !1);
+ const i = ya(a) ? t : t.slice(1), l = ya(s) ? n : n.slice(0, -1);
+ Uv(i.concat(l)), o.deleteContents(), jv(e)
+ })), $v = (e, t, n, o = !0) => U.some((() => {
+ Ev(e, t, n, o)
+ })), Vv = (e, t) => U.some((() => sv(e, !1, t))),
+ Wv = (e, t, n, o) => Yv(t, o).fold((() => ((e, t, n) => Fv(t, n).bind((t => t.fold(L($v, e), L(Vv, e), L(Hv, e), L(zv, e)))))(e, t, n)), (t => ((e, t) => Gv(e, t))(e, t))),
+ Kv = (e, t) => ee(ph(t, e), Tr), Yv = (e, t) => ee(ph(t, e), Qt("caption")),
+ Gv = (e, t) => U.some((() => {
+ Or(t), e.selection.setCursorLocation(t.dom, 0)
+ })),
+ Xv = (e, t, n, o, r) => zu(n, e.getBody(), r).fold((() => U.some(x)), (a => ((e, t, n, o) => Yu(e.dom).bind((r => Gu(e.dom).map((e => t ? n.isEqual(r) && o.isEqual(e) : n.isEqual(e) && o.isEqual(r))))).getOr(!0))(o, n, r, a) ? ((e, t) => Gv(e, t))(e, o) : ((e, t, n) => Yv(e, yn.fromDom(n.getNode())).fold((() => U.some(x)), (e => Ft(!_n(e, t), x))))(t, o, a))),
+ Jv = (e, t, n, o) => {
+ const r = rl.fromRangeStart(e.selection.getRng());
+ return Kv(n, o).bind((o => ya(o) ? Gv(e, o) : ((e, t, n, o, r) => zu(n, e.getBody(), r).bind((e => Kv(t, yn.fromDom(e.getNode())).bind((e => _n(e, o) ? U.none() : U.some(x))))))(e, n, t, o, r)))
+ }, Qv = (e, t) => e ? ch(t) : uh(t), Zv = (e, t, n) => {
+ const o = yn.fromDom(e.getBody());
+ return Yv(o, n).fold((() => Jv(e, t, o, n).orThunk((() => Ft(((e, t) => {
+ const n = rl.fromRangeStart(e.selection.getRng());
+ return Qv(t, n) || Hu(t, e.getBody(), n).exists((e => Qv(t, e)))
+ })(e, t), x)))), (n => ((e, t, n, o) => {
+ const r = rl.fromRangeStart(e.selection.getRng());
+ return ya(o) ? Gv(e, o) : Xv(e, n, t, o, r)
+ })(e, t, o, n)))
+ }, eb = (e, t) => {
+ const n = yn.fromDom(e.selection.getStart(!0)), o = ym(e);
+ return e.selection.isCollapsed() && 0 === o.length ? Zv(e, t, n) : ((e, t, n) => {
+ const o = yn.fromDom(e.getBody()), r = e.selection.getRng();
+ return 0 !== n.length ? Hv(e, n, U.none()) : Wv(e, o, r, t)
+ })(e, n, o)
+ }, tb = (e, t) => {
+ let n = t;
+ for (; n && n !== e;) {
+ if (dr(n) || cr(n)) return n;
+ n = n.parentNode
+ }
+ return null
+ }, nb = ["data-ephox-", "data-mce-", "data-alloy-", "data-snooker-", "_"], ob = Bt.each, rb = e => {
+ const t = e.dom, n = new Set(e.serializer.getTempAttrs()),
+ o = e => V(nb, (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 ob(t.getAttribs(e), (r => {
+ const a = r.nodeName.toLowerCase();
+ "style" === a || o(a) || (n[a] = t.getAttrib(e, a))
+ })), n
+ }, a = (e, t) => {
+ for (const n in e) if (ke(e, n)) {
+ const o = t[n];
+ if (C(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 (Vo(e) && Vo(n)) {
+ if (!a(r(e), r(n))) return !1;
+ if (!a(t.parseStyle(t.getAttrib(e, "style")), t.parseStyle(t.getAttrib(n, "style")))) return !1
+ }
+ return !um(e) && !um(n)
+ }, isAttributeInternal: o
+ }
+ }, ab = e => ["h1", "h2", "h3", "h4", "h5", "h6"].includes(e.name), sb = (e, t, n, o) => {
+ const r = n.name;
+ for (let t = 0, a = e.length; t < a; t++) {
+ const a = e[t];
+ if (a.name === r) {
+ const e = o.nodes[r];
+ e ? e.nodes.push(n) : o.nodes[r] = {filter: a, nodes: [n]}
+ }
+ }
+ if (n.attributes) for (let e = 0, r = t.length; e < r; e++) {
+ const r = t[e], a = r.name;
+ if (a in n.attributes.map) {
+ const e = o.attributes[a];
+ e ? e.nodes.push(n) : o.attributes[a] = {filter: r, nodes: [n]}
+ }
+ }
+ }, ib = (e, t) => {
+ const n = (e, n) => {
+ he(e, (e => {
+ const o = me(e.nodes);
+ K(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) && !E(r.parent) || o.splice(t, 1)
+ }
+ o.length > 0 && r(o, e.filter.name, t)
+ }))
+ }))
+ };
+ n(e.nodes, !1), n(e.attributes, !0)
+ }, lb = (e, t, n, o = {}) => {
+ const r = ((e, t, n) => {
+ const o = {nodes: {}, attributes: {}};
+ return n.firstChild && ((e, t) => {
+ let n = e;
+ for (; n = n.walk();) t(n)
+ })(n, (n => {
+ sb(e, t, n, o)
+ })), o
+ })(e, t, n);
+ ib(r, o)
+ }, db = (e, t, n, o) => {
+ if ((e.pad_empty_with_br || t.insert) && n(o)) {
+ const e = new Ap("br", 1);
+ t.insert && e.attr("data-mce-bogus", "1"), o.empty().append(e)
+ } else o.empty().append(new Ap("#text", 3)).value = br
+ }, cb = (e, t) => {
+ const n = null == e ? void 0 : e.firstChild;
+ return w(n) && n === e.lastChild && n.name === t
+ }, ub = (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))), mb = 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 U.from(t)
+ }, fb = (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) && fb(e, t, n);
+ e.unwrap()
+ }
+ }, gb = (e, t, n, o = x) => {
+ const r = t.getTextBlockElements(), a = t.getNonEmptyElements(), s = t.getWhitespaceElements(),
+ i = Bt.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 (pb(t, i, c)) fb(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
+ }
+ ub(t, a, s, u) ? c.insert(i, f[0], !0) : (c.insert(u, f[0], !0), c.insert(i, u)), c = f[0], (ub(t, a, s, c) || cb(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 Ap("ul", 1);
+ o(t), i.wrap(t);
+ continue
+ }
+ if (t.isValidChild(i.parent.name, "div") && t.isValidChild("div", i.name)) {
+ const e = new Ap("div", 1);
+ o(e), i.wrap(e)
+ } else fb(i, t)
+ }
+ }
+ },
+ pb = (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 (n.name === t) return !0;
+ n = n.parent
+ }
+ return !1
+ })(n, "a")) || !(!(e => "summary" === e.name)(n) || !ab(t)) && !((null == n ? void 0 : n.firstChild) === t && (null == n ? void 0 : n.lastChild) === t))),
+ hb = e => {
+ const t = rl.fromRangeStart(e), n = rl.fromRangeEnd(e), o = e.commonAncestorContainer;
+ return Hu(!1, o, n).map((r => !fu(t, n, o) && fu(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)
+ }, vb = e => e.collapsed ? e : hb(e),
+ bb = (e, t) => e.getBlockElements()[t.name] && (e => w(e.firstChild) && e.firstChild === e.lastChild)(t) && (e => "br" === e.name || e.value === br)(t.firstChild),
+ yb = (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 w(t) && (t.isEmpty(n) || bb(e, t))
+ })(e, o) && (o = null == o ? void 0 : o.prev), !(!n || n !== o) && ("ul" === n.name || "ol" === n.name)
+ },
+ Cb = e => w(null == e ? void 0 : e.firstChild) && e.firstChild === e.lastChild && (e => e.data === br || ir(e))(e.firstChild),
+ Eb = e => {
+ return e.length > 0 && (!(t = e[e.length - 1]).firstChild || Cb(t)) ? e.slice(0, -1) : e;
+ var t
+ }, wb = (e, t) => {
+ const n = e.getParent(t, e.isBlock);
+ return n && "LI" === n.nodeName ? n : null
+ }, _b = (e, t) => {
+ const n = rl.after(e), o = Mu(t).prev(n);
+ return o ? o.toRange() : null
+ }, Sb = (e, t, n) => {
+ const o = e.parentNode;
+ return o && Bt.each(t, (t => {
+ o.insertBefore(t, e)
+ })), ((e, t) => {
+ const n = rl.before(e), o = Mu(t).next(n);
+ return o ? o.toRange() : null
+ })(e, n)
+ }, kb = (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), a = wb(t, n.startContainer),
+ s = Eb((i = r.firstChild, X(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 = rl.fromRangeStart(n), r = Mu(t.getRoot()), s = 1 === e ? r.prev(o) : r.next(o),
+ i = null == s ? void 0 : s.getNode();
+ return !i || wb(t, i) !== a
+ };
+ return a ? c(1) ? Sb(a, s, d) : c(2) ? ((e, t, n, o) => (o.insertAfter(t.reverse(), e), _b(t[0], n)))(a, s, 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), a = e.parentNode;
+ return a && (a.insertBefore(r[0], e), Bt.each(t, (t => {
+ a.insertBefore(t, e)
+ })), a.insertBefore(r[1], e), a.removeChild(e)), _b(t[t.length - 1], n)
+ })(a, s, d, n) : null
+ }, xb = ["pre"], Ab = ur, Nb = (e, t, n) => {
+ U.from(e.getParent(t, "td,th")).map(yn.fromDom).each((e => ((e, t) => {
+ Fn(e).each((n => {
+ Dn(n).each((o => {
+ t.isBlock($t(e)) && Sr(n) && t.isBlock($t(o)) && wo(n)
+ }))
+ }))
+ })(e, n)))
+ }, Tb = (e, t) => {
+ var n, o, r;
+ let a;
+ const s = e.dom, i = e.selection;
+ if (!t) return;
+ i.scrollIntoView(t);
+ const l = tb(e.getBody(), t);
+ if (l && "false" === s.getContentEditable(l)) return s.remove(t), void i.select(l);
+ let d = s.createRng();
+ const c = t.previousSibling;
+ if (tr(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;
+ tr(e) && (c.appendData(e.data), null === (r = e.parentNode) || void 0 === r || r.removeChild(e))
+ } else d.setStartBefore(t), d.setEndBefore(t);
+ const u = s.getParent(t, s.isBlock);
+ if (s.remove(t), u && s.isEmpty(u)) {
+ const t = Ab(u);
+ Eo(yn.fromDom(u)), d.setStart(u, 0), d.setEnd(u, 0), t || (e => !!e.getAttribute("data-mce-fragment"))(u) || !(a = (t => {
+ let n = rl.fromRangeStart(t);
+ return n = Mu(e.getBody()).next(n), null == n ? void 0 : n.toRange()
+ })(d)) ? s.add(u, s.create("br", t ? {} : {"data-mce-bogus": "1"})) : (d = a, s.remove(u))
+ }
+ i.setRng(d)
+ }, Rb = e => {
+ const t = e.dom, n = vb(e.selection.getRng());
+ e.selection.setRng(n);
+ const o = t.getParent(n.startContainer, Ab);
+ ((e, t, n) => {
+ if (w(n)) return n === e.getParent(t.endContainer, Ab) && _m(yn.fromDom(n), t);
+ return !1
+ })(t, n, o) ? $v(e, n, yn.fromDom(o)) : n.startContainer === n.endContainer && n.endOffset - n.startOffset == 1 && tr(n.startContainer.childNodes[n.startOffset]) ? n.deleteContents() : e.getDoc().execCommand("Delete", !1)
+ }, Db = (e, t, n) => {
+ var o, r;
+ const a = e.selection, s = e.dom, i = e.parser, l = n.merge, d = Kp({validate: !0}, e.schema),
+ c = '';
+ n.preserve_zwsp || (t = Ir(t)), -1 === t.indexOf("{$caret}") && (t += "{$caret}"), t = t.replace(/\{\$caret\}/, c);
+ let u = a.getRng();
+ const m = u.startContainer, f = e.getBody();
+ m === f && a.isCollapsed() && s.isBlock(f.firstChild) && ((e, t) => w(t) && !e.schema.getVoidElements()[t.nodeName])(e, f.firstChild) && s.isEmpty(f.firstChild) && (u = s.createRng(), u.setStart(f.firstChild, 0), u.setEnd(f.firstChild, 0), a.setRng(u)), a.isCollapsed() || Rb(e);
+ const g = a.getNode(), p = {context: g.nodeName.toLowerCase(), data: n.data, insert: !0},
+ h = i.parse(t, p);
+ if (!0 === n.paste && yb(e.schema, h) && ((e, t) => !!wb(e, t))(s, g)) return u = kb(d, s, a.getRng(), h), u && a.setRng(u), t;
+ !0 === n.paste && ((e, t, n, o) => {
+ var r;
+ const a = t.firstChild, s = t.lastChild,
+ i = a === ("bookmark" === s.attr("data-mce-type") ? s.prev : s), l = $(xb, a.name);
+ if (i && l) {
+ const t = "false" !== a.attr("contenteditable"),
+ s = (null === (r = e.getParent(n, e.isBlock)) || void 0 === r ? void 0 : r.nodeName.toLowerCase()) === a.name,
+ i = U.from(tb(o, n)).forall(dr);
+ return t && s && i
+ }
+ return !1
+ })(s, 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 v = h.lastChild;
+ if (v && "mce_marker" === v.attr("id")) {
+ const t = v;
+ for (v = v.prev; v; v = v.walk(!0)) if (3 === v.type || !s.isBlock(v.name)) {
+ v.parent && e.schema.isValidChild(v.parent.name, "span") && v.parent.insert(t, v, "br" === v.name);
+ break
+ }
+ }
+ if (e._selectionOverrides.showBlockCaretContainer(g), p.invalid || ((e, t, n) => {
+ var o;
+ return V(n.children(), ab) && "SUMMARY" === (null === (o = e.getParent(t, e.isBlock)) || void 0 === o ? void 0 : o.nodeName)
+ })(s, g, h)) {
+ e.selection.setContent(c);
+ let n, o = a.getNode();
+ const l = e.getBody();
+ for (ar(o) ? o = n = l : n = o; n && n !== l;) o = n, n = n.parentNode;
+ t = o === l ? l.innerHTML : s.getOuterHTML(o);
+ const u = i.parse(t), m = (e => {
+ for (let t = e; t; t = t.walk()) if ("mce_marker" === t.attr("id")) return U.some(t);
+ return U.none()
+ })(u), f = m.bind(mb).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 v = X(g, (t => pb(e.schema, t, p)));
+ gb(v, e.schema, f), lb(i.getNodeFilters(), i.getAttributeFilters(), u), t = d.serialize(u), o === l ? s.setHTML(l, t) : s.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 b;
+ return ((e, t) => {
+ const n = e.schema.getTextInlineElements(), o = e.dom;
+ if (t) {
+ const t = e.getBody(), r = rb(e);
+ Bt.each(o.select("*[data-mce-fragment]"), (e => {
+ if (w(n[e.nodeName.toLowerCase()]) && Jp(o, e)) for (let n = e.parentElement; w(n) && n !== t && !Qp(o, e, n); n = n.parentElement) if (r.compare(n, e)) {
+ o.remove(e, !0);
+ break
+ }
+ }))
+ }
+ })(e, l), Tb(e, s.get("mce_marker")), b = e.getBody(), Bt.each(b.getElementsByTagName("*"), (e => {
+ e.removeAttribute("data-mce-fragment")
+ })), Nb(s, a.getStart(), e.schema), ((e, t, n) => {
+ const o = Rn(yn.fromDom(n), (e => _n(e, yn.fromDom(t))));
+ de(o, o.length - 2).filter(Yt).fold((() => Ra(e, t)), (t => Ra(e, t.dom)))
+ })(e.schema, e.getBody(), a.getStart()), t
+ }, Lb = e => e instanceof Ap, Ob = (e, t, n) => {
+ e.dom.setHTML(e.getBody(), t), !0 !== n && (e => {
+ ip(e) && Yu(e.getBody()).each((t => {
+ const n = t.getNode(), o = Qo(n) ? Yu(n).getOr(t) : t;
+ e.selection.setRng(o.toRange())
+ }))
+ })(e)
+ }, Bb = (e, t, n) => U.from(e.getBody()).map((o => Lb(t) ? ((e, t, n, o) => {
+ lb(e.parser.getNodeFilters(), e.parser.getAttributeFilters(), n);
+ const r = Kp({validate: !1}, e.schema).serialize(n), a = Ir(Rr(yn.fromDom(t)) ? r : Bt.trim(r));
+ return Ob(e, a, o.no_selection), {content: n, html: a}
+ })(e, o, t, n) : ((e, t, n, o) => {
+ if (0 === (n = Ir(n)).length || /^\s+$/.test(n)) {
+ const r = '
';
+ "TABLE" === t.nodeName ? n = "