jodit-pro
Version:
PRO Version of Jodit Editor
2 lines (1 loc) • 3.21 kB
JavaScript
var f=Object.defineProperty;var u=(l,t)=>f(l,"name",{value:t,configurable:!0});var h=function(l,t,o,n){var s=arguments.length,e=s<3?t:n===null?n=Object.getOwnPropertyDescriptor(t,o):n,i;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")e=Reflect.decorate(l,t,o,n);else for(var a=l.length-1;a>=0;a--)(i=l[a])&&(e=(s<3?i(e):s>3?i(t,o,e):i(t,o))||e);return s>3&&e&&Object.defineProperty(t,o,e),e};import"./config.js";import{DefaultStorage as v}from"./modules/store.js";import{UIBackupBox as g}from"./ui/box.js";import{autobind as d}from"jodit/esm/core/decorators/index.js";import{Plugin as b}from"jodit/esm/core/plugin/index.js";import{Button as _,UIBlock as k}from"jodit/esm/core/ui/index.js";import{JoditPro as m}from"../../jodit-pro.js";const p=class p extends b{constructor(){var t;super(...arguments),this.hasStyle=!m.fatMode,this.buttons=[{name:"backup.restore",group:"history"}],this.__box=new g(this.j),this.__dialog=null,this.__storage=(t=this.jodit.o.backup.remoteStore)!==null&&t!==void 0?t:new v(this.jodit),this.timeout=0}afterInit(t){t.registerCommand("saveBackup",this.onSaveBackup).registerCommand("openBackupDialog",{exec:this.onOpenBackupDialog,hotkeys:t.o.backup.hotkeys});const o=u(()=>{this.timeout=t.async.setTimeout(()=>{this.onSaveBackup(),o()},t.o.backup.interval*1e3)},"startInterval");o(),t.e.on(this.__box,"choose",this.onSelectItem).on(t.ow,"beforeunload.backup",()=>{this.onSaveBackup()})}prepareDialog(){this.__dialog||(this.__dialog=this.j.dlg({minWidth:this.j.o.backup.dialogWidth,buttons:["fullsize","dialog.close"]}).setContent(this.__box.container)),this.__dialog.setHeader(this.jodit.i18n("Restore")),this.addButtonsToDialog()}onSaveBackup(){this.__storage.add({created:new Date,html:this.j.value})}async onOpenBackupDialog(){this.prepareDialog();const{__dialog:t}=this;if(!t)return;t.open().setModal(!0);const o=await this.__storage.items();this.__box.build([{created:new Date,html:this.j.value},...o]),t.calcAutoSize(),t.setPosition()}onSelectItem(t){var o;(o=this.__dialog)===null||o===void 0||o.close(),this.j.value=t.html,this.j.s.focus()}addButtonsToDialog(){var t;const{jodit:o}=this,n=_(o,{name:"ok",tabIndex:0,variant:"primary",text:"Ok"}),s=_(o,{variant:"secondary",tabIndex:0,text:"Cancel"}),e=_(o,{name:"clear",tabIndex:0,variant:"secondary",text:"Remove all"});n.onAction(()=>{this.__box.chooseSelected()}),s.onAction(()=>{var a;(a=this.__dialog)===null||a===void 0||a.close()}),e.onAction(()=>{o.confirm("Are you sure?",void 0,a=>{var c;a&&(this.__storage.clear(),(c=this.__dialog)===null||c===void 0||c.close())})});const i=new k(o,[e,s,n]);i.container.style.margin="0",i.container.style.justifyContent="flex-end",i.container.style.width="100%",(t=this.__dialog)===null||t===void 0||t.setFooter(i)}beforeDestruct(){var t;const{j:o}=this;o.async.clearTimeout(this.timeout),o.e.off(this.__box,"choose",this.onSelectItem).off(o.ow,"beforeunload.backup"),this.__box.destruct(),(t=this.__dialog)===null||t===void 0||t.destruct()}};u(p,"backup");let r=p;r.requires=["license"],h([d],r.prototype,"onSaveBackup",null),h([d],r.prototype,"onOpenBackupDialog",null),h([d],r.prototype,"onSelectItem",null),m.plugins.add("backup",r);export{r as backup};