UNPKG

jodit-pro

Version:

PRO Version of Jodit Editor

8 lines 8.28 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 m}});var i=a(77688),l=a(82749),o=a(31635);a(83967);var s=a(82758),n=a(65478),r=a(21537),c=a(87612),d=a(53326),h=a(50911),u=a(67510),p=a(41409),g=a(2692);class m 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,l=this.__createForm(),{code:o,language:s}=(0,r.refs)(l.container);e&&(s.value=e),t&&(o.value=t),i.async.requestIdleCallback(()=>{o.focus()}),i.s.save(),this.__createDialog(()=>{if(l.validate()){i.s.restore();let e=i.createInside.fromHTML(i.o.pasteCode.insertTemplate(i,s.value,o.value));if(a)p.Dom.replace(a,e,i.createInside,!1,!0);else{let t=i.s.current(),a=p.Dom.up(t,p.Dom.isBlock,i.editor);a&&!p.Dom.isCell(a)?p.Dom.after(a,e):i.s.insertNode(e)}this.__imdOnChange();return}return!1},()=>{i.s.restore()}).setContent(l.container).open(!0)}beforeDestruct(e){}__createForm(){let{jodit:e}=this;return new u.UIForm(e,[new u.UISelect(e,{name:"language",label:"Language",value:e.o.pasteCode.defaultLanguage,options:e.o.pasteCode.languages,required:!0}),new u.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 p.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,u.Button)(a,"","Cancel","default").onAction(()=>{a.close(),t()}),(0,u.Button)(a,"save","Save","primary").onAction(()=>{a.close(),e()})]),a}__onChange(){this.__imdOnChange()}__imdOnChange(){(0,r.$$)("pre",this.j.editor).forEach(e=>{(0,r.attr)(e,"contenteditable")||((0,r.attr)(e,"contenteditable",!1),this.__highlightCode(e).catch(()=>null))})}__highlightCode(e){return(0,i._)(function*(){let t=this.__parseLanguage(e),{highlight:a}=yield this.__initHighlightLibLoading(t),i=e;e.firstElementChild===e.lastElementChild&&p.Dom.isTag(e.firstElementChild,"code")&&(i=e.firstElementChild),i.innerHTML=a(i.innerText,t)}).call(this)}onPreEdit(e){let t=p.Dom.isNode(e)&&p.Dom.isTag(e,"pre")?e:p.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&&p.Dom.isTag(e.firstElementChild,"code")&&a(e.firstElementChild),this.jodit.o.pasteCode.canonicalLanguageCode(t||"html")}onAfterGetValueFromEditor(e){let t=(e,t,a,i,l,o)=>`${t.trim()}${i}${(0,d.htmlspecialchars)((0,r.stripTags)(l,this.j.ed,new Set(["br"])))}${o}`;e.value=e.value.replace(RegExp("(<pre[^>]*)contenteditable\\s*=\\s*(['\"]?)false\\2([^>]*>\\s*<code[^>]*>)(.*?)(<\\/code>\\s*<\\/pre>)","gis"),t).replace(RegExp("(<pre[^>]*)contenteditable\\s*=\\s*(['\"]?)false\\2([^>]*>)(.*?)(<\\/pre>)","gis"),t)}constructor(...e){var t;super(...e),t=this,(0,l._)(this,"buttons",[{name:"pasteCode",group:"clipboard"}]),(0,l._)(this,"__highlightLibJSIsLoaded",!1),(0,l._)(this,"__loadLanguage",new Map),(0,l._)(this,"__initHighlightLibLoading",e=>(0,i._)(function*(){let{globalHighlightLib:a,highlightLib:{css:i,js:l,langUrl:o,highlight:n,isLangLoaded:d,beforeLibLoad:h,afterLibLoad:u}}=t.j.o.pasteCode;return t.__highlightLibJSIsLoaded||a||(t.__highlightLibJSIsLoaded=Promise.resolve(null==h?void 0:h()).then(()=>_(t.async,Promise.allSettled([(0,r.loadNextStyle)(t.jodit,i).catch(()=>null),(0,r.loadNext)(t.jodit,l).catch(()=>null)]))).then(()=>null==u?void 0:u())),(0,c.isBoolean)(t.__highlightLibJSIsLoaded)||(yield t.__highlightLibJSIsLoaded),!e||d(e)||a||(t.__loadLanguage.has(e)||(s.IS_PROD,t.__loadLanguage.set(e,_(t.async,(0,r.appendScriptAsync)(t.jodit,o(e)).catch(()=>null)))),yield t.__loadLanguage.get(e)),{highlight:n}})())}}function _(e,t){return e.promise((e,a)=>{t.then(e).catch(a)}).catch(()=>null)}(0,l._)(m,"requires",["license"]),(0,o.__decorate)([n.autobind],m.prototype,"__openCodeEditDialog",null),(0,o.__decorate)([(0,n.watch)(["?:change","?:afterInit"]),(0,n.debounce)()],m.prototype,"__onChange",null),(0,o.__decorate)([(0,n.watch)(["?:dblclick","?:editPreInPasteCode"])],m.prototype,"onPreEdit",null),(0,o.__decorate)([(0,n.watch)("?:afterGetValueFromEditor")],m.prototype,"onAfterGetValueFromEditor",null),m=(0,o.__decorate)([n.component],m),g.JoditPro.plugins.add("paste-code",m)},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),l=a.n(i),o=a(6441),s=a(53326);o.Config.prototype.controls.pasteCode={icon:l(),tooltip:"Paste code",command:"pasteCode"},o.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,s.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,s.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)}])});