frontend/src/lib/dist/tinymce/plugins/autosave/plugin.min.js
2024-09-19 16:04:35 +02:00

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)
),
);
})();