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