192 lines
5.4 KiB
JavaScript
192 lines
5.4 KiB
JavaScript
/**
|
|
* TinyMCE version 6.7.0 (2023-08-30)
|
|
*/
|
|
!(function () {
|
|
"use strict";
|
|
var t = tinymce.util.Tools.resolve("tinymce.PluginManager");
|
|
const e =
|
|
("string",
|
|
(t) =>
|
|
"string" ===
|
|
((t) => {
|
|
const e = typeof t;
|
|
return null === t
|
|
? "null"
|
|
: "object" === e && Array.isArray(t)
|
|
? "array"
|
|
: "object" === e &&
|
|
((r = o = t),
|
|
(a = String).prototype.isPrototypeOf(r) ||
|
|
(null === (s = o.constructor) || void 0 === s
|
|
? void 0
|
|
: s.name) === a.name)
|
|
? "string"
|
|
: e;
|
|
var r, o, a, s;
|
|
})(t));
|
|
const r = (void 0, (t) => undefined === t);
|
|
var o = tinymce.util.Tools.resolve("tinymce.util.Delay"),
|
|
a = tinymce.util.Tools.resolve("tinymce.util.LocalStorage"),
|
|
s = tinymce.util.Tools.resolve("tinymce.util.Tools");
|
|
const n = (t) => {
|
|
const e = /^(\d+)([ms]?)$/.exec(t);
|
|
return (e && e[2] ? { s: 1e3, m: 6e4 }[e[2]] : 1) * parseInt(t, 10);
|
|
},
|
|
i = (t) => (e) => e.options.get(t),
|
|
u = i("autosave_ask_before_unload"),
|
|
l = i("autosave_restore_when_empty"),
|
|
c = i("autosave_interval"),
|
|
d = i("autosave_retention"),
|
|
m = (t) => {
|
|
const e = document.location;
|
|
return t.options
|
|
.get("autosave_prefix")
|
|
.replace(/{path}/g, e.pathname)
|
|
.replace(/{query}/g, e.search)
|
|
.replace(/{hash}/g, e.hash)
|
|
.replace(/{id}/g, t.id);
|
|
},
|
|
v = (t, e) => {
|
|
if (r(e)) return t.dom.isEmpty(t.getBody());
|
|
{
|
|
const r = s.trim(e);
|
|
if ("" === r) return !0;
|
|
{
|
|
const e = new DOMParser().parseFromString(r, "text/html");
|
|
return t.dom.isEmpty(e);
|
|
}
|
|
}
|
|
},
|
|
f = (t) => {
|
|
var e;
|
|
const r =
|
|
parseInt(
|
|
null !== (e = a.getItem(m(t) + "time")) && void 0 !== e ? e : "0",
|
|
10,
|
|
) || 0;
|
|
return !(new Date().getTime() - r > d(t) && (p(t, !1), 1));
|
|
},
|
|
p = (t, e) => {
|
|
const r = m(t);
|
|
a.removeItem(r + "draft"),
|
|
a.removeItem(r + "time"),
|
|
!1 !== e &&
|
|
((t) => {
|
|
t.dispatch("RemoveDraft");
|
|
})(t);
|
|
},
|
|
g = (t) => {
|
|
const e = m(t);
|
|
!v(t) &&
|
|
t.isDirty() &&
|
|
(a.setItem(e + "draft", t.getContent({ format: "raw", no_events: !0 })),
|
|
a.setItem(e + "time", new Date().getTime().toString()),
|
|
((t) => {
|
|
t.dispatch("StoreDraft");
|
|
})(t));
|
|
},
|
|
y = (t) => {
|
|
var e;
|
|
const r = m(t);
|
|
f(t) &&
|
|
(t.setContent(
|
|
null !== (e = a.getItem(r + "draft")) && void 0 !== e ? e : "",
|
|
{ format: "raw" },
|
|
),
|
|
((t) => {
|
|
t.dispatch("RestoreDraft");
|
|
})(t));
|
|
};
|
|
var D = tinymce.util.Tools.resolve("tinymce.EditorManager");
|
|
const h = (t) => (e) => {
|
|
e.setEnabled(f(t));
|
|
const r = () => e.setEnabled(f(t));
|
|
return (
|
|
t.on("StoreDraft RestoreDraft RemoveDraft", r),
|
|
() => t.off("StoreDraft RestoreDraft RemoveDraft", r)
|
|
);
|
|
};
|
|
t.add(
|
|
"autosave",
|
|
(t) => (
|
|
((t) => {
|
|
const r = t.options.register,
|
|
o = (t) => {
|
|
const r = e(t);
|
|
return r
|
|
? { value: n(t), valid: r }
|
|
: { valid: !1, message: "Must be a string." };
|
|
};
|
|
r("autosave_ask_before_unload", { processor: "boolean", default: !0 }),
|
|
r("autosave_prefix", {
|
|
processor: "string",
|
|
default: "tinymce-autosave-{path}{query}{hash}-{id}-",
|
|
}),
|
|
r("autosave_restore_when_empty", {
|
|
processor: "boolean",
|
|
default: !1,
|
|
}),
|
|
r("autosave_interval", { processor: o, default: "30s" }),
|
|
r("autosave_retention", { processor: o, default: "20m" });
|
|
})(t),
|
|
((t) => {
|
|
t.editorManager.on("BeforeUnload", (t) => {
|
|
let e;
|
|
s.each(D.get(), (t) => {
|
|
t.plugins.autosave && t.plugins.autosave.storeDraft(),
|
|
!e &&
|
|
t.isDirty() &&
|
|
u(t) &&
|
|
(e = t.translate(
|
|
"You have unsaved changes are you sure you want to navigate away?",
|
|
));
|
|
}),
|
|
e && (t.preventDefault(), (t.returnValue = e));
|
|
});
|
|
})(t),
|
|
((t) => {
|
|
((t) => {
|
|
const e = c(t);
|
|
o.setEditorInterval(
|
|
t,
|
|
() => {
|
|
g(t);
|
|
},
|
|
e,
|
|
);
|
|
})(t);
|
|
const e = () => {
|
|
((t) => {
|
|
t.undoManager.transact(() => {
|
|
y(t), p(t);
|
|
}),
|
|
t.focus();
|
|
})(t);
|
|
};
|
|
t.ui.registry.addButton("restoredraft", {
|
|
tooltip: "Restore last draft",
|
|
icon: "restore-draft",
|
|
onAction: e,
|
|
onSetup: h(t),
|
|
}),
|
|
t.ui.registry.addMenuItem("restoredraft", {
|
|
text: "Restore last draft",
|
|
icon: "restore-draft",
|
|
onAction: e,
|
|
onSetup: h(t),
|
|
});
|
|
})(t),
|
|
t.on("init", () => {
|
|
l(t) && t.dom.isEmpty(t.getBody()) && y(t);
|
|
}),
|
|
((t) => ({
|
|
hasDraft: () => f(t),
|
|
storeDraft: () => g(t),
|
|
restoreDraft: () => y(t),
|
|
removeDraft: (e) => p(t, e),
|
|
isEmpty: (e) => v(t, e),
|
|
}))(t)
|
|
),
|
|
);
|
|
})();
|