UNPKG

jodit-pro

Version:

PRO Version of Jodit Editor

2 lines (1 loc) 2.84 kB
var L=Object.defineProperty;var u=(g,t)=>L(g,"name",{value:t,configurable:!0});var v=function(g,t,n,l){var o=arguments.length,r=o<3?t:l===null?l=Object.getOwnPropertyDescriptor(t,n):l,e;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(g,t,n,l);else for(var s=g.length-1;s>=0;s--)(e=g[s])&&(r=(o<3?e(r):o>3?e(t,n,r):e(t,n))||r);return o>3&&r&&Object.defineProperty(t,n,r),r};import"./config.js";import{GoogleTranslateProvider as w}from"./providers/google/google.js";import{UITranslateSettings as P}from"./ui/settings/settings.js";import{getSelectionFragments as S}from"./replace-text-fragments.js";import{persistent as x}from"jodit/esm/core/decorators/index.js";import{isFunction as y}from"jodit/esm/core/helpers/checker/is-function.js";import{isString as p}from"jodit/esm/core/helpers/checker/is-string.js";import{assert as b}from"jodit/esm/core/helpers/utils/assert.js";import{defaultLanguage as f}from"jodit/esm/core/helpers/utils/default-language.js";import{Plugin as _}from"jodit/esm/core/plugin/index.js";import{Button as h}from"jodit/esm/core/ui/button/button/button.js";import{JoditPro as d}from"../../jodit-pro.js";const m=class m extends _{constructor(){super(...arguments),this.buttons=[{name:"translate.translate",group:"insert"}],this.state={sourceLang:this.jodit.o.translate.defaultSourceLang||"en",targetLang:this.jodit.o.translate.defaultTargetLang}}__getProvider(){const{provider:t}=this.jodit.options.translate;if(p(t)){if(t==="google")return new w(this.j);throw new Error("Unknown provider")}return b(y(t),"Provider must be a function"),t(this.jodit)}afterInit(t){const n=f(t.o.language,d.defaultOptions.language),l=f(t.o.language,n),o=this.__getProvider();t.registerCommand("translateOptions",{exec:u(async()=>{let r=this.state;const e=t.dlg();e.setHeader("Translate options");const s=await o.supportedLanguages(),a=new P(e,this.state,{sourceList:s.langs,targetList:s.langs,onChange(i){r=i}});e.setContent(a),e.setFooter([h(t,"cancel","Cancel").onAction(()=>e.close()),h(t,"ok","Save","primary").onAction(()=>{this.state=r,e.close()})]),a.bindDestruct(e),e.setSize(500,400).open(!0)},"exec"),hotkeys:t.o.translate.hotkeys.translateOptions}).registerCommand("translate",{exec:u(()=>{const r=S(t).filter(a=>a.text.trim().length>0);if(!r.length){t.message.error("Select text for translate");return}const e=!this.state.sourceLang||this.state.sourceLang==="auto"?l:this.state.sourceLang,s=this.state.targetLang;return Promise.all(r.map(a=>{o.translate(a.text,e,s).then(i=>{a.replace(i.text)}).catch(i=>{t.message.error(p(i)?i:i.message)})})).then(()=>{t.synchronizeValues()})},"exec"),hotkeys:t.o.translate.hotkeys.translateSelection})}beforeDestruct(t){}};u(m,"Translate");let c=m;c.requires=["license"],v([x],c.prototype,"state",void 0),d.plugins.add("translate",c);export{c as Translate};