UNPKG

jodit-pro

Version:

PRO Version of Jodit Editor

8 lines 8.21 kB
/*! * jodit-pro - PRO Version of Jodit Editor * Author: Chupurnov Valerii <chupurnov@gmail.com> * Version: v4.9.27 * Url: https://xdsoft.net/jodit/pro/ * License(s): SEE LICENSE IN LICENSE.md */ !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var a=t();for(var i in a)("object"==typeof exports?exports:e)[i]=a[i]}}(self,function(){return(self.webpackChunkjodit_pro=self.webpackChunkjodit_pro||[]).push([[150],{41406:function(e,t,a){"use strict";a.r(t),a.d(t,{pasteCode:function(){return g}});var i=a(82749),s=a(31635);a(83967);var l=a(82758),o=a(65478),n=a(21537),r=a(87612),c=a(53326),h=a(50911),d=a(67510),u=a(41409),p=a(2692);class g extends h.Plugin{className(){return"pasteCode"}afterInit(e){e.registerCommand("pasteCode",()=>this.__openCodeEditDialog()),e.async.requestIdleCallback(()=>this.__initHighlightLibLoading())}__openCodeEditDialog(e,t,a){let i=this.j,s=this.__createForm(),{code:l,language:o}=(0,n.refs)(s.container);e&&(o.value=e),t&&(l.value=t),i.async.requestIdleCallback(()=>{l.focus()}),i.s.save(),this.__createDialog(()=>{if(s.validate()){i.s.restore();let e=i.createInside.fromHTML(i.o.pasteCode.insertTemplate(i,o.value,l.value));if(a)u.Dom.replace(a,e,i.createInside,!1,!0);else{let t=i.s.current(),a=u.Dom.up(t,u.Dom.isBlock,i.editor);a&&!u.Dom.isCell(a)?u.Dom.after(a,e):i.s.insertNode(e)}this.__imdOnChange();return}return!1},()=>{i.s.restore()}).setContent(s.container).open(!0)}beforeDestruct(e){}__createForm(){let{jodit:e}=this;return new d.UIForm(e,[new d.UISelect(e,{name:"language",label:"Language",value:e.o.pasteCode.defaultLanguage,options:e.o.pasteCode.languages,required:!0}),new d.UITextArea(e,{label:"Code view",resizable:!1,name:"code",required:!0,className:"jodit-paste-code__textarea"})],{className:"jodit-paste-code"})}__createDialog(e,t){let a=new u.Dialog({language:this.j.o.language});return a.setHeader("Insert/Edit Code Sample").setSize(this.j.o.pasteCode.dialog.width,this.j.o.pasteCode.dialog.height).setFooter([(0,d.Button)(a,"","Cancel","default").onAction(()=>{a.close(),t()}),(0,d.Button)(a,"save","Save","primary").onAction(()=>{a.close(),e()})]),a}__onChange(){this.__imdOnChange()}__imdOnChange(){(0,n.$$)("pre",this.j.editor).forEach(e=>{(0,n.attr)(e,"contenteditable")||((0,n.attr)(e,"contenteditable",!1),this.__highlightCode(e).catch(()=>null))})}async __highlightCode(e){let t=this.__parseLanguage(e),{highlight:a}=await this.__initHighlightLibLoading(t),i=e;e.firstElementChild===e.lastElementChild&&u.Dom.isTag(e.firstElementChild,"code")&&(i=e.firstElementChild),i.innerHTML=a(i.innerText,t)}onPreEdit(e){let t=u.Dom.isNode(e)&&u.Dom.isTag(e,"pre")?e:u.Dom.closest(e.target,"pre",this.j.editor);if(t){let e=this.__parseLanguage(t);this.__openCodeEditDialog(e,t.innerText,t)}}__parseLanguage(e){let t=null,a=e=>e.classList.forEach(e=>{if(/language-/.test(e)){let a=/language-(.*)/.exec(e);a&&a[1]&&(t=a[1])}});return a(e),null==t&&e.firstElementChild===e.lastElementChild&&u.Dom.isTag(e.firstElementChild,"code")&&a(e.firstElementChild),this.jodit.o.pasteCode.canonicalLanguageCode(t||"html")}onAfterGetValueFromEditor(e){let t=(e,t,a,i,s,l)=>`${t.trim()}${i}${(0,c.htmlspecialchars)((0,n.stripTags)(s,this.j.ed,new Set(["br"])))}${l}`;e.value=e.value.replace(/(<pre[^>]*)contenteditable\s*=\s*(['"]?)false\2([^>]*>\s*<code[^>]*>)(.*?)(<\/code>\s*<\/pre>)/gis,t).replace(/(<pre[^>]*)contenteditable\s*=\s*(['"]?)false\2([^>]*>)(.*?)(<\/pre>)/gis,t)}constructor(...e){super(...e),(0,i._)(this,"buttons",[{name:"pasteCode",group:"clipboard"}]),(0,i._)(this,"__highlightLibJSIsLoaded",!1),(0,i._)(this,"__loadLanguage",new Map),(0,i._)(this,"__initHighlightLibLoading",async e=>{let{globalHighlightLib:t,highlightLib:{css:a,js:i,langUrl:s,highlight:o,isLangLoaded:c,beforeLibLoad:h,afterLibLoad:d}}=this.j.o.pasteCode;return this.__highlightLibJSIsLoaded||t||(this.__highlightLibJSIsLoaded=Promise.resolve(null==h?void 0:h()).then(()=>m(this.async,Promise.allSettled([(0,n.loadNextStyle)(this.jodit,a).catch(()=>null),(0,n.loadNext)(this.jodit,i).catch(()=>null)]))).then(()=>null==d?void 0:d())),(0,r.isBoolean)(this.__highlightLibJSIsLoaded)||await this.__highlightLibJSIsLoaded,!e||c(e)||t||(this.__loadLanguage.has(e)||(l.IS_PROD,this.__loadLanguage.set(e,m(this.async,(0,n.appendScriptAsync)(this.jodit,s(e)).catch(()=>null)))),await this.__loadLanguage.get(e)),{highlight:o}})}}function m(e,t){return e.promise((e,a)=>{t.then(e).catch(a)}).catch(()=>null)}(0,i._)(g,"requires",["license"]),(0,s.__decorate)([o.autobind],g.prototype,"__openCodeEditDialog",null),(0,s.__decorate)([(0,o.watch)(["?:change","?:afterInit"]),(0,o.debounce)()],g.prototype,"__onChange",null),(0,s.__decorate)([(0,o.watch)(["?:dblclick","?:editPreInPasteCode"])],g.prototype,"onPreEdit",null),(0,s.__decorate)([(0,o.watch)("?:afterGetValueFromEditor")],g.prototype,"onAfterGetValueFromEditor",null),g=(0,s.__decorate)([o.component],g),p.JoditPro.plugins.add("paste-code",g)},75689:function(e){e.exports='<svg viewBox="0 0 24 24" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"> <path d="M2.5244141,23.5h18.9511719c0.4140625,0,0.75-0.3359375,0.75-0.75V4.9208984 c0-0.1992188-0.0795898-0.390625-0.2207031-0.53125L18.3198242,0.71875C18.1791992,0.5786133,17.9887695,0.5,17.7905273,0.5 H2.5244141c-0.4140625,0-0.75,0.3359375-0.75,0.75v21.5C1.7744141,23.1640625,2.1103516,23.5,2.5244141,23.5z M20.7128296,5.2197266 h-2.6986694V2.531189L20.7128296,5.2197266z M3.2744141,2h13.2397461v3.9697266c0,0.4140625,0.3359375,0.75,0.75,0.75h3.4614258V22 H3.2744141V2z" fill="#1D1D1D"/> <path d="M8.75,10.25h1.75c0.4140625,0,0.75-0.3359375,0.75-0.75s-0.3359375-0.75-0.75-0.75H8 c-0.4140625,0-0.75,0.3359375-0.75,0.75v2.75H6c-0.4140625,0-0.75,0.3359375-0.75,0.75S5.5859375,13.75,6,13.75h1.25v2.75 c0,0.4140625,0.3359375,0.75,0.75,0.75h2.5c0.4140625,0,0.75-0.3359375,0.75-0.75s-0.3359375-0.75-0.75-0.75H8.75V10.25z" fill="#1D1D1D"/> <path d="M18.5,12.25h-1.25V9.5c0-0.4140625-0.3359375-0.75-0.75-0.75H14c-0.4140625,0-0.75,0.3359375-0.75,0.75 s0.3359375,0.75,0.75,0.75h1.75v5.5H14c-0.4140625,0-0.75,0.3359375-0.75,0.75s0.3359375,0.75,0.75,0.75h2.5 c0.4140625,0,0.75-0.3359375,0.75-0.75v-2.75h1.25c0.4140625,0,0.75-0.3359375,0.75-0.75S18.9140625,12.25,18.5,12.25z" fill="#1D1D1D"/></svg>'},83967:function(e,t,a){"use strict";var i=a(75689),s=a.n(i),l=a(6441),o=a(53326);l.Config.prototype.controls.pasteCode={icon:s(),tooltip:"Paste code",command:"pasteCode"},l.Config.prototype.pasteCode={globalHighlightLib:!1,canonicalLanguageCode(e){switch(e){case"ts":return"typescript";case"js":return"javascript";case"markup":return"html"}return e},highlightLib:{beforeLibLoad(){window.Prism=window.Prism||{},window.Prism.manual=!0},highlight(e,t){return"u">typeof Prism?Prism.highlight(e,Prism.languages[t]||Prism.languages.plain,t):(0,o.htmlspecialchars)(e)},isLangLoaded(e){return"html"===e||"u">typeof Prism&&!!Prism.languages[e]},js:["https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js","https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/autoloader/prism-autoloader.min.js"],langUrl:e=>`https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-${e}.min.js`,css:["https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css"]},defaultLanguage:"html",insertTemplate:(e,t,a)=>`<pre class="language-${t}">${(0,o.htmlspecialchars)(a)}</pre>`,languages:[{value:"plaintext",text:"Plain"},{value:"html",text:"HTML/XML"},{value:"bash",text:"Bash"},{value:"php",text:"PHP"},{value:"javascript",text:"JavaScript"},{value:"typescript",text:"TypeScript"},{value:"jsx",text:"JSX"},{value:"java",text:"Java"},{value:"css",text:"CSS"},{value:"php",text:"PHP"},{value:"ruby",text:"Ruby"},{value:"python",text:"Python"},{value:"java",text:"Java"},{value:"c",text:"C"},{value:"csharp",text:"C#"},{value:"cpp",text:"C++"},{value:"sql",text:"SQL"},{value:"docker",text:"Docker"},{value:"http",text:"HTTP"},{value:"ini",text:"INI"},{value:"yaml",text:"YAML"},{value:"json",text:"JSON"},{value:"json5",text:"JSON5"},{value:"makefile",text:"Makefile"},{value:"swift",text:"Swift"}],dialog:{width:700,height:600}}}},function(e){return e(e.s=41406)}])});