diff --git a/dist/editorjs-codeCup.bundle.js b/dist/editorjs-codeCup.bundle.js index 7f2d8e4..d463695 100644 --- a/dist/editorjs-codeCup.bundle.js +++ b/dist/editorjs-codeCup.bundle.js @@ -1,2 +1,2 @@ /*! For license information please see editorjs-codeCup.bundle.js.LICENSE.txt */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.editorJsCodeCup=t():e.editorJsCodeCup=t()}(self,(()=>(()=>{var e={255:e=>{var t;self,t=()=>(()=>{var e={475:()=>{!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var e={javascript:"clike",actionscript:"javascript",apex:["clike","sql"],arduino:"cpp",aspnet:["markup","csharp"],birb:"clike",bison:"c",c:"clike",csharp:"clike",cpp:"c",cfscript:"clike",chaiscript:["clike","cpp"],cilkc:"c",cilkcpp:"cpp",coffeescript:"javascript",crystal:"ruby","css-extras":"css",d:"clike",dart:"clike",django:"markup-templating",ejs:["javascript","markup-templating"],etlua:["lua","markup-templating"],erb:["ruby","markup-templating"],fsharp:"clike","firestore-security-rules":"clike",flow:"javascript",ftl:"markup-templating",gml:"clike",glsl:"c",go:"clike",gradle:"clike",groovy:"clike",haml:"ruby",handlebars:"markup-templating",haxe:"clike",hlsl:"c",idris:"haskell",java:"clike",javadoc:["markup","java","javadoclike"],jolie:"clike",jsdoc:["javascript","javadoclike","typescript"],"js-extras":"javascript",json5:"json",jsonp:"json","js-templates":"javascript",kotlin:"clike",latte:["clike","markup-templating","php"],less:"css",lilypond:"scheme",liquid:"markup-templating",markdown:"markup","markup-templating":"markup",mongodb:"javascript",n4js:"javascript",objectivec:"c",opencl:"c",parser:"markup",php:"markup-templating",phpdoc:["php","javadoclike"],"php-extras":"php",plsql:"sql",processing:"clike",protobuf:"clike",pug:["markup","javascript"],purebasic:"clike",purescript:"haskell",qsharp:"clike",qml:"javascript",qore:"clike",racket:"scheme",cshtml:["markup","csharp"],jsx:["markup","javascript"],tsx:["jsx","typescript"],reason:"clike",ruby:"clike",sass:"css",scss:"css",scala:"java","shell-session":"bash",smarty:"markup-templating",solidity:"clike",soy:"markup-templating",sparql:"turtle",sqf:"clike",squirrel:"clike",stata:["mata","java","python"],"t4-cs":["t4-templating","csharp"],"t4-vb":["t4-templating","vbnet"],tap:"yaml",tt2:["clike","markup-templating"],textile:"markup",twig:"markup-templating",typescript:"javascript",v:"clike",vala:"clike",vbnet:"basic",velocity:"markup",wiki:"markup",xeora:"markup","xml-doc":"markup",xquery:"markup"},t={html:"markup",xml:"markup",svg:"markup",mathml:"markup",ssml:"markup",atom:"markup",rss:"markup",js:"javascript",g4:"antlr4",ino:"arduino","arm-asm":"armasm",art:"arturo",adoc:"asciidoc",avs:"avisynth",avdl:"avro-idl",gawk:"awk",sh:"bash",shell:"bash",shortcode:"bbcode",rbnf:"bnf",oscript:"bsl",cs:"csharp",dotnet:"csharp",cfc:"cfscript","cilk-c":"cilkc","cilk-cpp":"cilkcpp",cilk:"cilkcpp",coffee:"coffeescript",conc:"concurnas",jinja2:"django","dns-zone":"dns-zone-file",dockerfile:"docker",gv:"dot",eta:"ejs",xlsx:"excel-formula",xls:"excel-formula",gamemakerlanguage:"gml",po:"gettext",gni:"gn",ld:"linker-script","go-mod":"go-module",hbs:"handlebars",mustache:"handlebars",hs:"haskell",idr:"idris",gitignore:"ignore",hgignore:"ignore",npmignore:"ignore",webmanifest:"json",kt:"kotlin",kts:"kotlin",kum:"kumir",tex:"latex",context:"latex",ly:"lilypond",emacs:"lisp",elisp:"lisp","emacs-lisp":"lisp",md:"markdown",moon:"moonscript",n4jsd:"n4js",nani:"naniscript",objc:"objectivec",qasm:"openqasm",objectpascal:"pascal",px:"pcaxis",pcode:"peoplecode",plantuml:"plant-uml",pq:"powerquery",mscript:"powerquery",pbfasm:"purebasic",purs:"purescript",py:"python",qs:"qsharp",rkt:"racket",razor:"cshtml",rpy:"renpy",res:"rescript",robot:"robotframework",rb:"ruby","sh-session":"shell-session",shellsession:"shell-session",smlnj:"sml",sol:"solidity",sln:"solution-file",rq:"sparql",sclang:"supercollider",t4:"t4-cs",trickle:"tremor",troy:"tremor",trig:"turtle",ts:"typescript",tsconfig:"typoscript",uscript:"unrealscript",uc:"unrealscript",url:"uri",vb:"visual-basic",vba:"visual-basic",webidl:"web-idl",mathematica:"wolfram",nb:"wolfram",wl:"wolfram",xeoracube:"xeora",yml:"yaml"},n={},a="components/",r=Prism.util.currentScript();if(r){var s=/\bplugins\/autoloader\/prism-autoloader\.(?:min\.)?js(?:\?[^\r\n/]*)?$/i,i=/(^|\/)[\w-]+\.(?:min\.)?js(?:\?[^\r\n/]*)?$/i,o=r.getAttribute("data-autoloader-path");if(null!=o)a=o.trim().replace(/\/?$/,"/");else{var l=r.src;s.test(l)?a=l.replace(s,"components/"):i.test(l)&&(a=l.replace(i,"$1components/"))}}var c=Prism.plugins.autoloader={languages_path:a,use_minified:!0,loadLanguages:d};Prism.hooks.add("complete",(function(e){var t=e.element,n=e.language;if(t&&n&&"none"!==n){var a=function(e){var t=(e.getAttribute("data-dependencies")||"").trim();if(!t){var n=e.parentElement;n&&"pre"===n.tagName.toLowerCase()&&(t=(n.getAttribute("data-dependencies")||"").trim())}return t?t.split(/\s*,\s*/g):[]}(t);/^diff-./i.test(n)?(a.push("diff"),a.push(n.substr(5))):a.push(n),a.every(u)||d(a,(function(){Prism.highlightElement(t)}))}}))}function u(e){if(e.indexOf("!")>=0)return!1;if((e=t[e]||e)in Prism.languages)return!0;var a=n[e];return a&&!a.error&&!1===a.loading}function d(a,r,s){"string"==typeof a&&(a=[a]);var i=a.length,o=0,l=!1;function h(){l||++o===i&&r&&r(a)}0!==i?a.forEach((function(a){!function(a,r,s){var i=a.indexOf("!")>=0;function o(){var e=n[a];e||(e=n[a]={callbacks:[]}),e.callbacks.push({success:r,error:s}),!i&&u(a)?p(a,"success"):!i&&e.error?p(a,"error"):!i&&e.loading||(e.loading=!0,e.error=!1,function(e,t,n){var a=document.createElement("script");a.src=e,a.async=!0,a.onload=function(){document.body.removeChild(a),t&&t()},a.onerror=function(){document.body.removeChild(a),n&&n()},document.body.appendChild(a)}(function(e){return c.languages_path+"prism-"+e+(c.use_minified?".min":"")+".js"}(a),(function(){e.loading=!1,p(a,"success")}),(function(){e.loading=!1,e.error=!0,p(a,"error")})))}a=a.replace("!",""),a=t[a]||a;var l=e[a];l&&l.length?d(l,o,s):o()}(a,h,(function(){l||(l=!0,s&&s(a))}))})):r&&setTimeout(r,0)}function p(e,t){if(n[e]){for(var a=n[e].callbacks,r=0,s=a.length;r{var a=function(e){var t=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,n=0,a={},r={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(t){return t instanceof s?new s(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=d.reach);C+=w.value.length,w=w.next){var _=w.value;if(t.length>e.length)return;if(!(_ instanceof s)){var j,L=1;if(v){if(!(j=i(x,C,e,b))||j.index>=e.length)break;var F=j.index,A=j.index+j[0].length,E=C;for(E+=w.value.length;F>=E;)E+=(w=w.next).value.length;if(C=E-=w.value.length,w.value instanceof s)continue;for(var T=w;T!==t.tail&&(Ed.reach&&(d.reach=N);var B=w.prev;if($&&(B=c(t,B,$),C+=$.length),u(t,B,L),w=c(t,B,new s(p,f?r.tokenize(S,f):S,y,S)),M&&c(t,w,M),L>1){var z={cause:p+","+g,reach:N};o(e,t,n,w.prev,C,z),d&&z.reach>d.reach&&(d.reach=z.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function c(e,t,n){var a=t.next,r={value:n,prev:t,next:a};return t.next=r,a.prev=r,e.length++,r}function u(e,t,n){for(var a=t.next,r=0;r"+s.content+""},!e.document)return e.addEventListener?(r.disableWorkerMessageHandler||e.addEventListener("message",(function(t){var n=JSON.parse(t.data),a=n.language,s=n.code,i=n.immediateClose;e.postMessage(r.highlight(s,r.languages[a],a)),i&&e.close()}),!1),r):r;var d=r.util.currentScript();function p(){r.manual||r.highlightAll()}if(d&&(r.filename=d.src,d.hasAttribute("data-manual")&&(r.manual=!0)),!r.manual){var h=document.readyState;"loading"===h||"interactive"===h&&d&&d.defer?document.addEventListener("DOMContentLoaded",p):window.requestAnimationFrame?window.requestAnimationFrame(p):window.setTimeout(p,16)}return r}("undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{});e.exports&&(e.exports=a),void 0!==n.g&&(n.g.Prism=a),a.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var s={};s[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",s)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(a),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),a.languages.js=a.languages.javascript,function(){if(void 0!==a&&"undefined"!=typeof document){Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},t="data-src-status",n="loading",r="loaded",s="pre[data-src]:not(["+t+'="'+r+'"]):not(['+t+'="'+n+'"])';a.hooks.add("before-highlightall",(function(e){e.selector+=", "+s})),a.hooks.add("before-sanity-check",(function(i){var o=i.element;if(o.matches(s)){i.code="",o.setAttribute(t,n);var l=o.appendChild(document.createElement("CODE"));l.textContent="Loading…";var c=o.getAttribute("data-src"),u=i.language;if("none"===u){var d=(/\.(\w+)$/.exec(c)||[,"none"])[1];u=e[d]||d}a.util.setLanguage(l,u),a.util.setLanguage(o,u);var p=a.plugins.autoloader;p&&p.loadLanguages(u),function(e,n,s){var i=new XMLHttpRequest;i.open("GET",e,!0),i.onreadystatechange=function(){4==i.readyState&&(i.status<400&&i.responseText?function(e){o.setAttribute(t,r);var n=function(e){var t=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(e||"");if(t){var n=Number(t[1]),a=t[2],r=t[3];return a?r?[n,Number(r)]:[n,void 0]:[n,n]}}(o.getAttribute("data-range"));if(n){var s=e.split(/\r\n?|\n/g),i=n[0],c=null==n[1]?s.length:n[1];i<0&&(i+=s.length),i=Math.max(0,Math.min(i-1,s.length)),c<0&&(c+=s.length),c=Math.max(0,Math.min(c,s.length)),e=s.slice(i,c).join("\n"),o.hasAttribute("data-start")||o.setAttribute("data-start",String(i+1))}l.textContent=e,a.highlightElement(l)}(i.responseText):i.status>=400?s("✖ Error "+i.status+" while fetching file: "+i.statusText):s("✖ Error: File does not exist or is empty"))},i.send(null)}(c,0,(function(e){o.setAttribute(t,"failed"),l.textContent=e}))}})),a.plugins.fileHighlight={highlight:function(e){for(var t,n=(e||document).querySelectorAll(s),r=0;t=n[r++];)a.highlightElement(t)}};var i=!1;a.fileHighlight=function(){i||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),i=!0),a.plugins.fileHighlight.highlight.apply(this,arguments)}}}()}},t={};function n(a){var r=t[a];if(void 0!==r)return r.exports;var s=t[a]={exports:{}};return e[a](s,s.exports,n),s.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var a in t)n.o(t,a)&&!n.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var a={};return(()=>{"use strict";n.d(a,{default:()=>m});const e="#fff",t="20px",r=`\n.codecup {\n background: ${e};\n color: #4f559c;\n}\n\n.codecup .token.punctuation {\n color: #4a4a4a;\n}\n\n.codecup .token.keyword {\n color: #8500ff;\n}\n\n.codecup .token.operator {\n color: #ff5598;\n}\n\n.codecup .token.string {\n color: #41ad8f;\n}\n\n.codecup .token.comment {\n color: #9badb7;\n}\n\n.codecup .token.function {\n color: #8500ff;\n}\n\n.codecup .token.boolean {\n color: #8500ff;\n}\n\n.codecup .token.number {\n color: #8500ff;\n}\n\n.codecup .token.selector {\n color: #8500ff;\n}\n\n.codecup .token.property {\n color: #8500ff;\n}\n\n.codecup .token.tag {\n color: #8500ff;\n}\n\n.codecup .token.attr-value {\n color: #8500ff;\n}\n`,s='"SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace';var i,o;const l="40px",c=`\n .codecup {\n width: 100%;\n height: 100%;\n overflow: hidden;\n }\n\n .codecup, .codecup * {\n box-sizing: border-box;\n }\n\n .codecup__pre {\n pointer-events: none;\n z-index: 3;\n overflow: hidden;\n }\n\n .codecup__textarea {\n background: none;\n border: none;\n color: ${i="caret-color",("undefined"!=typeof CSS?CSS.supports(i,"#000"):"undefined"!=typeof document&&(o=(o=i).split("-").filter((e=>!!e)).map((e=>e[0].toUpperCase()+e.substr(1))).join(""))[0].toLowerCase()+o.substr(1)in document.body.style)?e:"#ccc"};\n z-index: 1;\n resize: none;\n font-family: ${s};\n -webkit-appearance: pre;\n caret-color: #111;\n z-index: 2;\n width: 100%;\n height: 100%;\n }\n\n .codecup--has-line-numbers .codecup__textarea {\n width: calc(100% - ${l});\n }\n\n .codecup__code {\n display: block;\n font-family: ${s};\n overflow: hidden;\n }\n\n .codecup__flatten {\n padding: 10px;\n font-size: 13px;\n line-height: ${t};\n white-space: pre;\n position: absolute;\n top: 0;\n left: 0;\n overflow: auto;\n margin: 0 !important;\n outline: none;\n text-align: left;\n }\n\n .codecup--has-line-numbers .codecup__flatten {\n width: calc(100% - ${l});\n left: ${l};\n }\n\n .codecup__line-highlight {\n position: absolute;\n top: 10px;\n left: 0;\n width: 100%;\n height: ${t};\n background: rgba(0,0,0,0.1);\n z-index: 1;\n }\n\n .codecup__lines {\n padding: 10px 4px;\n font-size: 12px;\n line-height: ${t};\n font-family: 'Cousine', monospace;\n position: absolute;\n left: 0;\n top: 0;\n width: ${l};\n height: 100%;\n text-align: right;\n color: #999;\n z-index: 2;\n }\n\n .codecup__lines__line {\n display: block;\n }\n\n .codecup.codecup--has-line-numbers {\n padding-left: ${l};\n }\n\n .codecup.codecup--has-line-numbers:before {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n width: ${l};\n height: 100%;\n // background: #eee;\n background: #dcdfe6;\n z-index: 1;\n }\n\n .codecup__copyButton{\n position: absolute;\n right: 5px;\n top: 5px;\n z-index: 3;\n background: #EAEEFB;\n border: none;\n color: #999;\n cursor: pointer;\n outline: none;\n width: 22px;\n height: 22px;\n border-radius: 4px;\n }\n\n .codecup__copyMessage{\n position: absolute;\n right: 32px;\n top: 5px;\n z-index: 3;\n background: #EAEEFB;\n border: none;\n color: #999;\n cursor: pointer;\n outline: none;\n width: 55px;\n height: 22px;\n line-height: 22px;\n border-radius: 4px;\n font-size: 12px;\n text-align: center;\n font-family: 'Cousine', monospace;\n }\n\n`;function u(e,t,n){const a=t||"codecup-style",r=n||document.head;if(!e)return!1;if(document.getElementById(a))return!0;const s=document.createElement("style");return s.innerHTML=e,s.id=a,r.appendChild(s),!0}const d={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};function p(e){return String(e).replace(/[&<>"'`=/]/g,(function(e){return d[e]}))}var h=n(660),g=n.n(h);n(475),g().plugins.autoloader.languages_path="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/";class m{constructor(e,t){if(!e)throw Error("codecup expects a parameter which is Element or a String selector");if(!t)throw Error("codecup expects an object containing options as second parameter");if(e.nodeType)this.editorRoot=e;else{const t=document.querySelector(e);t&&(this.editorRoot=t)}this.opts=t,this.events={},this.startEditor()}startEditor(){if(!u(c,null,this.opts.styleParent))throw Error("Failed to inject codecup CSS.");this.createWrapper(),this.createTextarea(),this.createPre(),this.createCode(),this.runOptions(),this.listenTextarea(),this.populateDefault(),this.updateCode(this.code)}createWrapper(){this.code=this.editorRoot.innerHTML,this.editorRoot.innerHTML="",this.elWrapper=this.createElement("div",this.editorRoot),this.elWrapper.classList.add("codecup")}createTextarea(){this.elTextarea=this.createElement("textarea",this.elWrapper),this.elTextarea.classList.add("codecup__textarea","codecup__flatten")}createPre(){this.elPre=this.createElement("pre",this.elWrapper),this.elPre.classList.add("codecup__pre","codecup__flatten")}createCode(){this.elCode=this.createElement("code",this.elPre),this.elCode.classList.add("codecup__code",`language-${this.opts.language||"html"}`)}createLineNumbers(){this.elLineNumbers=this.createElement("div",this.elWrapper),this.elLineNumbers.classList.add("codecup__lines"),this.elWrapper.classList.add("codecup--has-line-numbers"),this.setLineNumber()}createCopyButton(){this.elCopyButtonMessage=this.createElement("div",this.elWrapper),this.elCopyButtonMessage.classList.add("codecup__copyMessage"),this.elCopyButtonMessage.innerHTML="Copied!",this.elCopyButtonMessage.style.display="none",this.elCopyButton=this.createElement("div",this.elWrapper),this.elCopyButton.classList.add("codecup__copyButton"),this.elCopyButton.innerHTML='',this.elCopyButton.addEventListener("click",(()=>{navigator.clipboard.writeText(this.code).then((()=>{this.elCopyButtonMessage.style.display="block",setTimeout((()=>{this.elCopyButtonMessage.style.display="none"}),1e3)}))}))}destroyLineNumbers(){this.elWrapper.classList.remove("codecup--has-line-numbers"),this.elLineNumbers.remove()}createElement(e,t){const n=document.createElement(e);return t.appendChild(n),n}runOptions(){this.opts.rtl=this.opts.rtl||!1,this.opts.tabSize=this.opts.tabSize||2,this.opts.enableAutocorrect=this.opts.enableAutocorrect||!1,this.opts.lineNumbers=this.opts.lineNumbers||!1,this.opts.defaultTheme=!1!==this.opts.defaultTheme,this.opts.areaId=this.opts.areaId||null,this.opts.ariaLabelledby=this.opts.ariaLabelledby||null,this.opts.readonly=this.opts.readonly||!1,this.opts.copyButton=this.opts.copyButton||!1,"boolean"!=typeof this.opts.handleTabs&&(this.opts.handleTabs=!0),"boolean"!=typeof this.opts.handleSelfClosingCharacters&&(this.opts.handleSelfClosingCharacters=!0),"boolean"!=typeof this.opts.handleNewLineIndentation&&(this.opts.handleNewLineIndentation=!0),!0===this.opts.rtl&&(this.elTextarea.setAttribute("dir","rtl"),this.elPre.setAttribute("dir","rtl")),!1===this.opts.enableAutocorrect&&(this.elTextarea.setAttribute("spellcheck","false"),this.elTextarea.setAttribute("autocapitalize","off"),this.elTextarea.setAttribute("autocomplete","off"),this.elTextarea.setAttribute("autocorrect","off")),this.opts.lineNumbers&&this.createLineNumbers(),this.opts.defaultTheme&&u(r,"theme-default",this.opts.styleParent),this.opts.areaId&&this.elTextarea.setAttribute("id",this.opts.areaId),this.opts.ariaLabelledby&&this.elTextarea.setAttribute("aria-labelledby",this.opts.ariaLabelledby),this.opts.readonly&&this.enableReadonlyMode(),this.opts.copyButton&&this.createCopyButton()}updateLineNumbersCount(){let e="";for(let t=1;t<=this.lineNumber;t++)e+=`${t}`;this.elLineNumbers.innerHTML=e}listenTextarea(){this.elTextarea.addEventListener("input",this.events._input=e=>{this.opts.readonly||(this.code=e.target.value,this.elCode.innerHTML=p(e.target.value),this.highlight(),setTimeout((()=>{this.runUpdate(),this.setLineNumber()}),1))}),this.elTextarea.addEventListener("keydown",this.events._keydown=e=>{this.opts.readonly||(this.handleTabs(e),this.handleSelfClosingCharacters(e),this.handleNewLineIndentation(e))}),this.elTextarea.addEventListener("scroll",this.events._scroll=e=>{this.elPre.style.transform=`translate3d(-${e.target.scrollLeft}px, -${e.target.scrollTop}px, 0)`,this.elLineNumbers&&(this.elLineNumbers.style.transform=`translate3d(0, -${e.target.scrollTop}px, 0)`)})}handleTabs(e){if(this.opts.handleTabs){if(9!==e.keyCode)return;e.preventDefault();var t=this.elTextarea,n=t.selectionDirection,a=t.selectionStart,r=t.selectionEnd,s=t.value,i=s.substr(0,a),o=s.substring(a,r),l=s.substring(r);const h=" ".repeat(this.opts.tabSize);if(a!==r&&o.length>=h.length){var c=a-i.split("\n").pop().length,u=h.length,d=h.length;e.shiftKey?(s.substr(c,h.length)===h?(u=-u,c>a?(o=o.substring(0,c)+o.substring(c+h.length),d=0):c===a?(u=0,d=0,o=o.substring(h.length)):(d=-d,i=i.substring(0,c)+i.substring(c+h.length))):(u=0,d=0),o=o.replace(new RegExp("\n"+h.split("").join("\\"),"g"),"\n")):(i=i.substr(0,c)+h+i.substring(c,a),o=o.replace(/\n/g,"\n"+h)),t.value=i+o+l,t.selectionStart=a+u,t.selectionEnd=a+o.length+d,t.selectionDirection=n}else t.value=i+h+l,t.selectionStart=a+h.length,t.selectionEnd=a+h.length;var p=t.value;this.updateCode(p),this.elTextarea.selectionEnd=r+this.opts.tabSize}}handleSelfClosingCharacters(e){if(!this.opts.handleSelfClosingCharacters)return;const t=e.key;if(["(","[","{","<","'",'"'].includes(t)||[")","]","}",">","'",'"'].includes(t))switch(t){case"(":case")":case"[":case"]":case"{":case"}":case"<":case">":case"'":case'"':this.closeCharacter(t)}}setLineNumber(){this.lineNumber=this.code.split("\n").length,this.opts.lineNumbers&&this.updateLineNumbersCount()}handleNewLineIndentation(e){if(this.opts.handleNewLineIndentation&&13===e.keyCode){e.preventDefault();var t=this.elTextarea,n=t.selectionStart,a=t.selectionEnd,r=t.value,s=r.substr(0,n),i=r.substring(a),o=r.lastIndexOf("\n",n-1),l=o+r.slice(o+1).search(/[^ ]|$/),c=l>o?l-o:0,u=s+"\n"+" ".repeat(c)+i;t.value=u,t.selectionStart=n+c+1,t.selectionEnd=n+c+1,this.updateCode(t.value)}}closeCharacter(e){const t=this.elTextarea.selectionStart,n=this.elTextarea.selectionEnd;if(this.skipCloseChar(e)){const a=this.code.substr(n,1)===e,r=a?n+1:n,s=!a&&["'",'"'].includes(e)?e:"",i=`${this.code.substring(0,t)}${s}${this.code.substring(r)}`;this.updateCode(i),this.elTextarea.selectionEnd=++this.elTextarea.selectionStart}else{let a=e;switch(e){case"(":a=String.fromCharCode(e.charCodeAt()+1);break;case"<":case"{":case"[":a=String.fromCharCode(e.charCodeAt()+2)}const r=this.code.substring(t,n),s=`${this.code.substring(0,t)}${r}${a}${this.code.substring(n)}`;this.updateCode(s)}this.elTextarea.selectionEnd=t}skipCloseChar(e){const t=this.elTextarea.selectionStart,n=this.elTextarea.selectionEnd,a=Math.abs(n-t)>0;return[")","}","]",">"].includes(e)||["'",'"'].includes(e)&&!a}updateCode(e){this.code=e,this.elTextarea.value=e,this.elCode.innerHTML=p(e),this.highlight(),this.setLineNumber(),setTimeout(this.runUpdate.bind(this),1)}updateLanguage(e){const t=this.opts.language;this.elCode.classList.remove(`language-${t}`),this.elCode.classList.add(`language-${e}`),this.opts.language=e,this.highlight()}populateDefault(){this.updateCode(this.code)}highlight(){g().highlightElement(this.elCode,!1)}onUpdate(e){if(e&&"[object Function]"!=={}.toString.call(e))throw Error("codecup expects callback of type Function");this.updateCallBack=e}getCode(){return this.code}runUpdate(){this.updateCallBack&&this.updateCallBack(this.code)}enableReadonlyMode(){this.elTextarea.setAttribute("readonly",!0),this.opts.readonly=!0}disableReadonlyMode(){this.elTextarea.removeAttribute("readonly"),this.opts.readonly=!1}toggleReadonlyMode(){this.opts.readonly?this.disableReadonlyMode():this.enableReadonlyMode()}enableLineNumbers(){this.opts.lineNumbers=!0,this.destroyLineNumbers(),this.createLineNumbers(),this.updateLineNumbersCount()}disableLineNumbers(){this.opts.lineNumbers=!1,this.destroyLineNumbers()}toggleLineNumbers(){this.opts.lineNumbers?this.disableLineNumbers():this.enableLineNumbers()}dispose(){this.elTextarea.removeEventListener("input",this.events._input),this.elTextarea.removeEventListener("keydown",this.events._keydown),this.elTextarea.removeEventListener("scroll",this.events._scroll),this.elWrapper.remove()}}})(),a.default})(),e.exports=t()},572:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var a=n(81),r=n.n(a),s=n(645),i=n.n(s)()(r());i.push([e.id,".editorjs-codeCup_Wrapper {\n height: 200px;\n\tborder: 1px solid #dcdfe6;\n\tborder-radius: 5px;\n\tbackground-color: #f0f2f5;\n margin-bottom: 10px;\n\n\tz-index: 0;\n position: inherit; \n}\n\n.editorjs-codeCup_Wrapper .codeCup {\n\tborder-radius: 5px;\n\tbackground: none;\n}\n\n\n.editorjs-codeCup_Wrapper .editorjs-codeCup_LangDisplay {\n\tposition: absolute;\n\theight: 20px;\n\tline-height: 20px;\n\tfont-size: 10px;\n\tcolor: #999;\n\tbackground-color: #dcdfe6;\n\tpadding: 5px;\n\tpadding-left: 10px;\n\tpadding-right: 10px;\n\tright: 0;\n\tbottom: 0;\n\tborder-bottom-right-radius: 5px;\n\tborder-top-left-radius: 5px;\n}\n\n.editorjs-codeCup_Wrapper .codeCup.codeCup--has-line-numbers:before{\n background-color: #dcdfe6;\n}\n\n/* .wide{\n\twidth: 100%;\n\n\tz-index: 10;\n position: inherit;\n} */\n\n\n.editorjs-codeCup_input{\n\tbackground-color: #F8F8F8;\n\tborder-radius: 2px;\n\tpadding:5px;\n\tflex: 1;\n\tmargin-right: 5px;\n}\n\n.editorjs-codeCup_input:focus{\n outline: none;\n}\n\n.editorjs-codeCup_inputButton{\n\tdisplay:flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.editorjs-codeCup_inputButton:hover{\n\tborder-radius: 2px;\n\tbackground-color: #dcdfe6;\n\tcursor: pointer;\n}\n\n.editorjs-codeCup_inputContainer{\n\tpadding:5px;\n\tdisplay: flex;\n\tjustify-content: space-between;\n}",""]);const o=i},645:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",a=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),a&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),a&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,a,r,s){"string"==typeof e&&(e=[[null,e,void 0]]);var i={};if(a)for(var o=0;o0?" ".concat(u[5]):""," {").concat(u[1],"}")),u[5]=s),n&&(u[2]?(u[1]="@media ".concat(u[2]," {").concat(u[1],"}"),u[2]=n):u[2]=n),r&&(u[4]?(u[1]="@supports (".concat(u[4],") {").concat(u[1],"}"),u[4]=r):u[4]="".concat(r)),t.push(u))}},t}},81:e=>{"use strict";e.exports=function(e){return e[1]}},379:e=>{"use strict";var t=[];function n(e){for(var n=-1,a=0;a{"use strict";var t={};e.exports=function(e,n){var a=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!a)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");a.appendChild(n)}},216:e=>{"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},565:(e,t,n)=>{"use strict";e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},795:e=>{"use strict";e.exports=function(e){var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var a="";n.supports&&(a+="@supports (".concat(n.supports,") {")),n.media&&(a+="@media ".concat(n.media," {"));var r=void 0!==n.layer;r&&(a+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),a+=n.css,r&&(a+="}"),n.media&&(a+="}"),n.supports&&(a+="}");var s=n.sourceMap;s&&"undefined"!=typeof btoa&&(a+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(s))))," */")),t.styleTagTransform(a,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},589:e=>{"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},548:e=>{e.exports=''}},t={};function n(a){var r=t[a];if(void 0!==r)return r.exports;var s=t[a]={id:a,exports:{}};return e[a](s,s.exports,n),s.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var a in t)n.o(t,a)&&!n.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.nc=void 0;var a={};return(()=>{"use strict";n.d(a,{default:()=>k});var e=n(379),t=n.n(e),r=n(795),s=n.n(r),i=n(569),o=n.n(i),l=n(565),c=n.n(l),u=n(216),d=n.n(u),p=n(589),h=n.n(p),g=n(572),m={};m.styleTagTransform=h(),m.setAttributes=c(),m.insert=o().bind(null,"head"),m.domAPI=s(),m.insertStyleElement=d(),t()(g.Z,m),g.Z&&g.Z.locals&&g.Z.locals;var f=n(548),b=n.n(f),v=n(255),y=n.n(v);class k{static get DEFAULT_PLACEHOLDER(){return"// Hello"}static get enableLineBreaks(){return!0}constructor({data:e,config:t,api:n,readOnly:a}){this.api=n,this.readOnly=a,this._CSS={block:this.api.styles.block,wrapper:"ce-EditorJsCodeCup",settingsButton:this.api.styles.settingsButton,settingsButtonActive:this.api.styles.settingsButtonActive},this.readOnly||(this.onKeyUp=this.onKeyUp.bind(this)),this._placeholder=t.placeholder?t.placeholder:k.DEFAULT_PLACEHOLDER,this._preserveBlank=void 0!==t.preserveBlank&&t.preserveBlank,this._element,this.data={},this.data.code=void 0===e.code?"// Hello World":e.code,this.data.language=void 0===e.language?"plain":e.language,this.data.showlinenumbers=void 0===e.showlinenumbers||e.showlinenumbers,this.data.showCopyButton=void 0===e.showCopyButton||e.showCopyButton,this.data.editorInstance={}}onKeyUp(e){if("Backspace"!==e.code&&"Delete"!==e.code)return;console.log(e);const{textContent:t}=this._element;""===t&&(this._element.innerHTML="")}render(){this._element=document.createElement("div"),this._element.classList.add("editorjs-codeCup_Wrapper");let e=document.createElement("div");e.classList.add("editorjs-codeCup_Editor");let t=document.createElement("div");return t.classList.add("editorjs-codeCup_LangDisplay"),t.innerHTML=this.data.language,this._element.appendChild(e),this._element.appendChild(t),this.data.editorInstance=new(y())(e,{language:this.data.language,lineNumbers:this.data.showlinenumbers,readonly:this.readOnly,copyButton:this.data.showCopyButton}),this.data.editorInstance.onUpdate((e=>{let t=e.split("\n").length;this._debounce(this._updateEditorHeight(t))})),this.data.editorInstance.updateCode(this.data.code),this._element}_updateEditorHeight(e){let t=21*e+10;t<60&&(t=60),this._element.style.height=t+"px"}_debounce(e,t=500){let n;return(...a)=>{clearTimeout(n),n=setTimeout((()=>{e.apply(this,a)}),t)}}renderSettings(){const e=document.createElement("div"),t=document.createElement("div"),n=document.createElement("div");t.classList.add("ce-popover-item"),n.classList.add("ce-popover-item__title"),this.data.showlinenumbers?n.innerHTML="Hide Numbers":n.innerHTML="Show Numbers",t.innerHTML='
\n \n
',t.appendChild(n),t.addEventListener("click",(e=>{e.target.classList.toggle(this._CSS.settingsButtonActive),this._toggleLineNumbers(),this.data.showlinenumbers?n.innerHTML="Hide Numbers":n.innerHTML="Show Numbers"}));const a=document.createElement("div");a.classList.add("editorjs-codeCup_inputContainer");let r=document.createElement("div");r.classList.add("editorjs-codeCup_input"),r.setAttribute("contenteditable","true"),r.setAttribute("data-placeholder","Enter a language...");let s=document.createElement("div");return s.innerHTML='
\n \n
',s.classList.add("editorjs-codeCup_inputButton"),s.addEventListener("click",(e=>{let t=r.textContent;""!=t&&this._updateLanguage(t)})),a.appendChild(r),a.appendChild(s),e.appendChild(t),e.appendChild(a),e}_toggleLineNumbers=e=>{this.data.showlinenumbers=!this.data.showlinenumbers,this.data.editorInstance.toggleLineNumbers()};_updateLanguage=e=>{this.data.language=e,this._element.querySelector(".editorjs-codeCup_LangDisplay").innerHTML=this.data.language,this.data.editorInstance.updateLanguage(this.data.language)};save(e){return{code:this.data.editorInstance.getCode(),language:this.data.language,showlinenumbers:this.data.showlinenumbers,showCopyButton:this.data.showCopyButton}}static get isReadOnlySupported(){return!0}static get toolbox(){return{icon:b(),title:"CodeCup"}}}})(),a.default})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.editorJsCodeCup=t():e.editorJsCodeCup=t()}(self,(()=>(()=>{var e={255:e=>{var t;self,t=()=>(()=>{var e={475:()=>{!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var e={javascript:"clike",actionscript:"javascript",apex:["clike","sql"],arduino:"cpp",aspnet:["markup","csharp"],birb:"clike",bison:"c",c:"clike",csharp:"clike",cpp:"c",cfscript:"clike",chaiscript:["clike","cpp"],cilkc:"c",cilkcpp:"cpp",coffeescript:"javascript",crystal:"ruby","css-extras":"css",d:"clike",dart:"clike",django:"markup-templating",ejs:["javascript","markup-templating"],etlua:["lua","markup-templating"],erb:["ruby","markup-templating"],fsharp:"clike","firestore-security-rules":"clike",flow:"javascript",ftl:"markup-templating",gml:"clike",glsl:"c",go:"clike",gradle:"clike",groovy:"clike",haml:"ruby",handlebars:"markup-templating",haxe:"clike",hlsl:"c",idris:"haskell",java:"clike",javadoc:["markup","java","javadoclike"],jolie:"clike",jsdoc:["javascript","javadoclike","typescript"],"js-extras":"javascript",json5:"json",jsonp:"json","js-templates":"javascript",kotlin:"clike",latte:["clike","markup-templating","php"],less:"css",lilypond:"scheme",liquid:"markup-templating",markdown:"markup","markup-templating":"markup",mongodb:"javascript",n4js:"javascript",objectivec:"c",opencl:"c",parser:"markup",php:"markup-templating",phpdoc:["php","javadoclike"],"php-extras":"php",plsql:"sql",processing:"clike",protobuf:"clike",pug:["markup","javascript"],purebasic:"clike",purescript:"haskell",qsharp:"clike",qml:"javascript",qore:"clike",racket:"scheme",cshtml:["markup","csharp"],jsx:["markup","javascript"],tsx:["jsx","typescript"],reason:"clike",ruby:"clike",sass:"css",scss:"css",scala:"java","shell-session":"bash",smarty:"markup-templating",solidity:"clike",soy:"markup-templating",sparql:"turtle",sqf:"clike",squirrel:"clike",stata:["mata","java","python"],"t4-cs":["t4-templating","csharp"],"t4-vb":["t4-templating","vbnet"],tap:"yaml",tt2:["clike","markup-templating"],textile:"markup",twig:"markup-templating",typescript:"javascript",v:"clike",vala:"clike",vbnet:"basic",velocity:"markup",wiki:"markup",xeora:"markup","xml-doc":"markup",xquery:"markup"},t={html:"markup",xml:"markup",svg:"markup",mathml:"markup",ssml:"markup",atom:"markup",rss:"markup",js:"javascript",g4:"antlr4",ino:"arduino","arm-asm":"armasm",art:"arturo",adoc:"asciidoc",avs:"avisynth",avdl:"avro-idl",gawk:"awk",sh:"bash",shell:"bash",shortcode:"bbcode",rbnf:"bnf",oscript:"bsl",cs:"csharp",dotnet:"csharp",cfc:"cfscript","cilk-c":"cilkc","cilk-cpp":"cilkcpp",cilk:"cilkcpp",coffee:"coffeescript",conc:"concurnas",jinja2:"django","dns-zone":"dns-zone-file",dockerfile:"docker",gv:"dot",eta:"ejs",xlsx:"excel-formula",xls:"excel-formula",gamemakerlanguage:"gml",po:"gettext",gni:"gn",ld:"linker-script","go-mod":"go-module",hbs:"handlebars",mustache:"handlebars",hs:"haskell",idr:"idris",gitignore:"ignore",hgignore:"ignore",npmignore:"ignore",webmanifest:"json",kt:"kotlin",kts:"kotlin",kum:"kumir",tex:"latex",context:"latex",ly:"lilypond",emacs:"lisp",elisp:"lisp","emacs-lisp":"lisp",md:"markdown",moon:"moonscript",n4jsd:"n4js",nani:"naniscript",objc:"objectivec",qasm:"openqasm",objectpascal:"pascal",px:"pcaxis",pcode:"peoplecode",plantuml:"plant-uml",pq:"powerquery",mscript:"powerquery",pbfasm:"purebasic",purs:"purescript",py:"python",qs:"qsharp",rkt:"racket",razor:"cshtml",rpy:"renpy",res:"rescript",robot:"robotframework",rb:"ruby","sh-session":"shell-session",shellsession:"shell-session",smlnj:"sml",sol:"solidity",sln:"solution-file",rq:"sparql",sclang:"supercollider",t4:"t4-cs",trickle:"tremor",troy:"tremor",trig:"turtle",ts:"typescript",tsconfig:"typoscript",uscript:"unrealscript",uc:"unrealscript",url:"uri",vb:"visual-basic",vba:"visual-basic",webidl:"web-idl",mathematica:"wolfram",nb:"wolfram",wl:"wolfram",xeoracube:"xeora",yml:"yaml"},n={},r="components/",i=Prism.util.currentScript();if(i){var a=/\bplugins\/autoloader\/prism-autoloader\.(?:min\.)?js(?:\?[^\r\n/]*)?$/i,o=/(^|\/)[\w-]+\.(?:min\.)?js(?:\?[^\r\n/]*)?$/i,s=i.getAttribute("data-autoloader-path");if(null!=s)r=s.trim().replace(/\/?$/,"/");else{var l=i.src;a.test(l)?r=l.replace(a,"components/"):o.test(l)&&(r=l.replace(o,"$1components/"))}}var c=Prism.plugins.autoloader={languages_path:r,use_minified:!0,loadLanguages:p};Prism.hooks.add("complete",(function(e){var t=e.element,n=e.language;if(t&&n&&"none"!==n){var r=function(e){var t=(e.getAttribute("data-dependencies")||"").trim();if(!t){var n=e.parentElement;n&&"pre"===n.tagName.toLowerCase()&&(t=(n.getAttribute("data-dependencies")||"").trim())}return t?t.split(/\s*,\s*/g):[]}(t);/^diff-./i.test(n)?(r.push("diff"),r.push(n.substr(5))):r.push(n),r.every(u)||p(r,(function(){Prism.highlightElement(t)}))}}))}function u(e){if(e.indexOf("!")>=0)return!1;if((e=t[e]||e)in Prism.languages)return!0;var r=n[e];return r&&!r.error&&!1===r.loading}function p(r,i,a){"string"==typeof r&&(r=[r]);var o=r.length,s=0,l=!1;function h(){l||++s===o&&i&&i(r)}0!==o?r.forEach((function(r){!function(r,i,a){var o=r.indexOf("!")>=0;function s(){var e=n[r];e||(e=n[r]={callbacks:[]}),e.callbacks.push({success:i,error:a}),!o&&u(r)?d(r,"success"):!o&&e.error?d(r,"error"):!o&&e.loading||(e.loading=!0,e.error=!1,function(e,t,n){var r=document.createElement("script");r.src=e,r.async=!0,r.onload=function(){document.body.removeChild(r),t&&t()},r.onerror=function(){document.body.removeChild(r),n&&n()},document.body.appendChild(r)}(function(e){return c.languages_path+"prism-"+e+(c.use_minified?".min":"")+".js"}(r),(function(){e.loading=!1,d(r,"success")}),(function(){e.loading=!1,e.error=!0,d(r,"error")})))}r=r.replace("!",""),r=t[r]||r;var l=e[r];l&&l.length?p(l,s,a):s()}(r,h,(function(){l||(l=!0,a&&a(r))}))})):i&&setTimeout(i,0)}function d(e,t){if(n[e]){for(var r=n[e].callbacks,i=0,a=r.length;i{var r=function(e){var t=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,n=0,r={},i={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=p.reach);C+=x.value.length,x=x.next){var j=x.value;if(t.length>e.length)return;if(!(j instanceof a)){var L,S=1;if(v){if(!(L=o(y,C,e,w))||L.index>=e.length)break;var _=L.index,T=L.index+L[0].length,A=C;for(A+=x.value.length;_>=A;)A+=(x=x.next).value.length;if(C=A-=x.value.length,x.value instanceof a)continue;for(var q=x;q!==t.tail&&(Ap.reach&&(p.reach=F);var M=x.prev;if(D&&(M=c(t,M,D),C+=D.length),u(t,M,S),x=c(t,M,new a(d,f?i.tokenize(E,f):E,b,E)),R&&c(t,x,R),S>1){var G={cause:d+","+g,reach:F};s(e,t,n,x.prev,C,G),p&&G.reach>p.reach&&(p.reach=G.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function c(e,t,n){var r=t.next,i={value:n,prev:t,next:r};return t.next=i,r.prev=i,e.length++,i}function u(e,t,n){for(var r=t.next,i=0;i"+a.content+""},!e.document)return e.addEventListener?(i.disableWorkerMessageHandler||e.addEventListener("message",(function(t){var n=JSON.parse(t.data),r=n.language,a=n.code,o=n.immediateClose;e.postMessage(i.highlight(a,i.languages[r],r)),o&&e.close()}),!1),i):i;var p=i.util.currentScript();function d(){i.manual||i.highlightAll()}if(p&&(i.filename=p.src,p.hasAttribute("data-manual")&&(i.manual=!0)),!i.manual){var h=document.readyState;"loading"===h||"interactive"===h&&p&&p.defer?document.addEventListener("DOMContentLoaded",d):window.requestAnimationFrame?window.requestAnimationFrame(d):window.setTimeout(d,16)}return i}("undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{});e.exports&&(e.exports=r),void 0!==n.g&&(n.g.Prism=r),r.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},r.languages.markup.tag.inside["attr-value"].inside.entity=r.languages.markup.entity,r.languages.markup.doctype.inside["internal-subset"].inside=r.languages.markup,r.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(r.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:r.languages[t]},n.cdata=/^$/i;var i={"included-cdata":{pattern://i,inside:n}};i["language-"+t]={pattern:/[\s\S]+/,inside:r.languages[t]};var a={};a[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:i},r.languages.insertBefore("markup","cdata",a)}}),Object.defineProperty(r.languages.markup.tag,"addAttribute",{value:function(e,t){r.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:r.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),r.languages.html=r.languages.markup,r.languages.mathml=r.languages.markup,r.languages.svg=r.languages.markup,r.languages.xml=r.languages.extend("markup",{}),r.languages.ssml=r.languages.xml,r.languages.atom=r.languages.xml,r.languages.rss=r.languages.xml,function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(r),r.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},r.languages.javascript=r.languages.extend("clike",{"class-name":[r.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),r.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,r.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:r.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:r.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:r.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:r.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:r.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),r.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:r.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),r.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),r.languages.markup&&(r.languages.markup.tag.addInlined("script","javascript"),r.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),r.languages.js=r.languages.javascript,function(){if(void 0!==r&&"undefined"!=typeof document){Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},t="data-src-status",n="loading",i="loaded",a="pre[data-src]:not(["+t+'="'+i+'"]):not(['+t+'="'+n+'"])';r.hooks.add("before-highlightall",(function(e){e.selector+=", "+a})),r.hooks.add("before-sanity-check",(function(o){var s=o.element;if(s.matches(a)){o.code="",s.setAttribute(t,n);var l=s.appendChild(document.createElement("CODE"));l.textContent="Loading…";var c=s.getAttribute("data-src"),u=o.language;if("none"===u){var p=(/\.(\w+)$/.exec(c)||[,"none"])[1];u=e[p]||p}r.util.setLanguage(l,u),r.util.setLanguage(s,u);var d=r.plugins.autoloader;d&&d.loadLanguages(u),function(e,n,a){var o=new XMLHttpRequest;o.open("GET",e,!0),o.onreadystatechange=function(){4==o.readyState&&(o.status<400&&o.responseText?function(e){s.setAttribute(t,i);var n=function(e){var t=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(e||"");if(t){var n=Number(t[1]),r=t[2],i=t[3];return r?i?[n,Number(i)]:[n,void 0]:[n,n]}}(s.getAttribute("data-range"));if(n){var a=e.split(/\r\n?|\n/g),o=n[0],c=null==n[1]?a.length:n[1];o<0&&(o+=a.length),o=Math.max(0,Math.min(o-1,a.length)),c<0&&(c+=a.length),c=Math.max(0,Math.min(c,a.length)),e=a.slice(o,c).join("\n"),s.hasAttribute("data-start")||s.setAttribute("data-start",String(o+1))}l.textContent=e,r.highlightElement(l)}(o.responseText):o.status>=400?a("✖ Error "+o.status+" while fetching file: "+o.statusText):a("✖ Error: File does not exist or is empty"))},o.send(null)}(c,0,(function(e){s.setAttribute(t,"failed"),l.textContent=e}))}})),r.plugins.fileHighlight={highlight:function(e){for(var t,n=(e||document).querySelectorAll(a),i=0;t=n[i++];)r.highlightElement(t)}};var o=!1;r.fileHighlight=function(){o||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),o=!0),r.plugins.fileHighlight.highlight.apply(this,arguments)}}}()}},t={};function n(r){var i=t[r];if(void 0!==i)return i.exports;var a=t[r]={exports:{}};return e[r](a,a.exports,n),a.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var r={};return(()=>{"use strict";n.d(r,{default:()=>m});const e="#fff",t="20px",i=`\n.codecup {\n background: ${e};\n color: #4f559c;\n}\n\n.codecup .token.punctuation {\n color: #4a4a4a;\n}\n\n.codecup .token.keyword {\n color: #8500ff;\n}\n\n.codecup .token.operator {\n color: #ff5598;\n}\n\n.codecup .token.string {\n color: #41ad8f;\n}\n\n.codecup .token.comment {\n color: #9badb7;\n}\n\n.codecup .token.function {\n color: #8500ff;\n}\n\n.codecup .token.boolean {\n color: #8500ff;\n}\n\n.codecup .token.number {\n color: #8500ff;\n}\n\n.codecup .token.selector {\n color: #8500ff;\n}\n\n.codecup .token.property {\n color: #8500ff;\n}\n\n.codecup .token.tag {\n color: #8500ff;\n}\n\n.codecup .token.attr-value {\n color: #8500ff;\n}\n`,a='"SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace';var o,s;const l="40px",c=`\n .codecup {\n width: 100%;\n height: 100%;\n overflow: hidden;\n }\n\n .codecup, .codecup * {\n box-sizing: border-box;\n }\n\n .codecup__pre {\n pointer-events: none;\n z-index: 3;\n overflow: hidden;\n }\n\n .codecup__textarea {\n background: none;\n border: none;\n color: ${o="caret-color",("undefined"!=typeof CSS?CSS.supports(o,"#000"):"undefined"!=typeof document&&(s=(s=o).split("-").filter((e=>!!e)).map((e=>e[0].toUpperCase()+e.substr(1))).join(""))[0].toLowerCase()+s.substr(1)in document.body.style)?e:"#ccc"};\n z-index: 1;\n resize: none;\n font-family: ${a};\n -webkit-appearance: pre;\n caret-color: #111;\n z-index: 2;\n width: 100%;\n height: 100%;\n }\n\n .codecup--has-line-numbers .codecup__textarea {\n width: calc(100% - ${l});\n }\n\n .codecup__code {\n display: block;\n font-family: ${a};\n overflow: hidden;\n }\n\n .codecup__flatten {\n padding: 10px;\n font-size: 13px;\n line-height: ${t};\n white-space: pre;\n position: absolute;\n top: 0;\n left: 0;\n overflow: auto;\n margin: 0 !important;\n outline: none;\n text-align: left;\n }\n\n .codecup--has-line-numbers .codecup__flatten {\n width: calc(100% - ${l});\n left: ${l};\n }\n\n .codecup__line-highlight {\n position: absolute;\n top: 10px;\n left: 0;\n width: 100%;\n height: ${t};\n background: rgba(0,0,0,0.1);\n z-index: 1;\n }\n\n .codecup__lines {\n padding: 10px 4px;\n font-size: 12px;\n line-height: ${t};\n font-family: 'Cousine', monospace;\n position: absolute;\n left: 0;\n top: 0;\n width: ${l};\n height: 100%;\n text-align: right;\n color: #999;\n z-index: 2;\n }\n\n .codecup__lines__line {\n display: block;\n }\n\n .codecup.codecup--has-line-numbers {\n padding-left: ${l};\n }\n\n .codecup.codecup--has-line-numbers:before {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n width: ${l};\n height: 100%;\n // background: #eee;\n background: #dcdfe6;\n z-index: 1;\n }\n\n .codecup__copyButton{\n position: absolute;\n right: 5px;\n top: 5px;\n z-index: 3;\n background: #EAEEFB;\n border: none;\n color: #999;\n cursor: pointer;\n outline: none;\n width: 22px;\n height: 22px;\n border-radius: 4px;\n }\n\n .codecup__copyMessage{\n position: absolute;\n right: 32px;\n top: 5px;\n z-index: 3;\n background: #EAEEFB;\n border: none;\n color: #999;\n cursor: pointer;\n outline: none;\n width: 55px;\n height: 22px;\n line-height: 22px;\n border-radius: 4px;\n font-size: 12px;\n text-align: center;\n font-family: 'Cousine', monospace;\n }\n\n`;function u(e,t,n){const r=t||"codecup-style",i=n||document.head;if(!e)return!1;if(document.getElementById(r))return!0;const a=document.createElement("style");return a.innerHTML=e,a.id=r,i.appendChild(a),!0}const p={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};function d(e){return String(e).replace(/[&<>"'`=/]/g,(function(e){return p[e]}))}var h=n(660),g=n.n(h);n(475),g().plugins.autoloader.languages_path="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/";class m{constructor(e,t){if(!e)throw Error("codecup expects a parameter which is Element or a String selector");if(!t)throw Error("codecup expects an object containing options as second parameter");if(e.nodeType)this.editorRoot=e;else{const t=document.querySelector(e);t&&(this.editorRoot=t)}this.opts=t,this.events={},this.startEditor()}startEditor(){if(!u(c,null,this.opts.styleParent))throw Error("Failed to inject codecup CSS.");this.createWrapper(),this.createTextarea(),this.createPre(),this.createCode(),this.runOptions(),this.listenTextarea(),this.populateDefault(),this.updateCode(this.code)}createWrapper(){this.code=this.editorRoot.innerHTML,this.editorRoot.innerHTML="",this.elWrapper=this.createElement("div",this.editorRoot),this.elWrapper.classList.add("codecup")}createTextarea(){this.elTextarea=this.createElement("textarea",this.elWrapper),this.elTextarea.classList.add("codecup__textarea","codecup__flatten")}createPre(){this.elPre=this.createElement("pre",this.elWrapper),this.elPre.classList.add("codecup__pre","codecup__flatten")}createCode(){this.elCode=this.createElement("code",this.elPre),this.elCode.classList.add("codecup__code",`language-${this.opts.language||"html"}`)}createLineNumbers(){this.elLineNumbers=this.createElement("div",this.elWrapper),this.elLineNumbers.classList.add("codecup__lines"),this.elWrapper.classList.add("codecup--has-line-numbers"),this.setLineNumber()}createCopyButton(){this.elCopyButtonMessage=this.createElement("div",this.elWrapper),this.elCopyButtonMessage.classList.add("codecup__copyMessage"),this.elCopyButtonMessage.innerHTML="Copied!",this.elCopyButtonMessage.style.display="none",this.elCopyButton=this.createElement("div",this.elWrapper),this.elCopyButton.classList.add("codecup__copyButton"),this.elCopyButton.innerHTML='',this.elCopyButton.addEventListener("click",(()=>{navigator.clipboard.writeText(this.code).then((()=>{this.elCopyButtonMessage.style.display="block",setTimeout((()=>{this.elCopyButtonMessage.style.display="none"}),1e3)}))}))}destroyLineNumbers(){this.elWrapper.classList.remove("codecup--has-line-numbers"),this.elLineNumbers.remove()}createElement(e,t){const n=document.createElement(e);return t.appendChild(n),n}runOptions(){this.opts.rtl=this.opts.rtl||!1,this.opts.tabSize=this.opts.tabSize||2,this.opts.enableAutocorrect=this.opts.enableAutocorrect||!1,this.opts.lineNumbers=this.opts.lineNumbers||!1,this.opts.defaultTheme=!1!==this.opts.defaultTheme,this.opts.areaId=this.opts.areaId||null,this.opts.ariaLabelledby=this.opts.ariaLabelledby||null,this.opts.readonly=this.opts.readonly||!1,this.opts.copyButton=this.opts.copyButton||!1,"boolean"!=typeof this.opts.handleTabs&&(this.opts.handleTabs=!0),"boolean"!=typeof this.opts.handleSelfClosingCharacters&&(this.opts.handleSelfClosingCharacters=!0),"boolean"!=typeof this.opts.handleNewLineIndentation&&(this.opts.handleNewLineIndentation=!0),!0===this.opts.rtl&&(this.elTextarea.setAttribute("dir","rtl"),this.elPre.setAttribute("dir","rtl")),!1===this.opts.enableAutocorrect&&(this.elTextarea.setAttribute("spellcheck","false"),this.elTextarea.setAttribute("autocapitalize","off"),this.elTextarea.setAttribute("autocomplete","off"),this.elTextarea.setAttribute("autocorrect","off")),this.opts.lineNumbers&&this.createLineNumbers(),this.opts.defaultTheme&&u(i,"theme-default",this.opts.styleParent),this.opts.areaId&&this.elTextarea.setAttribute("id",this.opts.areaId),this.opts.ariaLabelledby&&this.elTextarea.setAttribute("aria-labelledby",this.opts.ariaLabelledby),this.opts.readonly&&this.enableReadonlyMode(),this.opts.copyButton&&this.createCopyButton()}updateLineNumbersCount(){let e="";for(let t=1;t<=this.lineNumber;t++)e+=`${t}`;this.elLineNumbers.innerHTML=e}listenTextarea(){this.elTextarea.addEventListener("input",this.events._input=e=>{this.opts.readonly||(this.code=e.target.value,this.elCode.innerHTML=d(e.target.value),this.highlight(),setTimeout((()=>{this.runUpdate(),this.setLineNumber()}),1))}),this.elTextarea.addEventListener("keydown",this.events._keydown=e=>{this.opts.readonly||(this.handleTabs(e),this.handleSelfClosingCharacters(e),this.handleNewLineIndentation(e))}),this.elTextarea.addEventListener("scroll",this.events._scroll=e=>{this.elPre.style.transform=`translate3d(-${e.target.scrollLeft}px, -${e.target.scrollTop}px, 0)`,this.elLineNumbers&&(this.elLineNumbers.style.transform=`translate3d(0, -${e.target.scrollTop}px, 0)`)})}handleTabs(e){if(this.opts.handleTabs){if(9!==e.keyCode)return;e.preventDefault();var t=this.elTextarea,n=t.selectionDirection,r=t.selectionStart,i=t.selectionEnd,a=t.value,o=a.substr(0,r),s=a.substring(r,i),l=a.substring(i);const h=" ".repeat(this.opts.tabSize);if(r!==i&&s.length>=h.length){var c=r-o.split("\n").pop().length,u=h.length,p=h.length;e.shiftKey?(a.substr(c,h.length)===h?(u=-u,c>r?(s=s.substring(0,c)+s.substring(c+h.length),p=0):c===r?(u=0,p=0,s=s.substring(h.length)):(p=-p,o=o.substring(0,c)+o.substring(c+h.length))):(u=0,p=0),s=s.replace(new RegExp("\n"+h.split("").join("\\"),"g"),"\n")):(o=o.substr(0,c)+h+o.substring(c,r),s=s.replace(/\n/g,"\n"+h)),t.value=o+s+l,t.selectionStart=r+u,t.selectionEnd=r+s.length+p,t.selectionDirection=n}else t.value=o+h+l,t.selectionStart=r+h.length,t.selectionEnd=r+h.length;var d=t.value;this.updateCode(d),this.elTextarea.selectionEnd=i+this.opts.tabSize}}handleSelfClosingCharacters(e){if(!this.opts.handleSelfClosingCharacters)return;const t=e.key;if(["(","[","{","<","'",'"'].includes(t)||[")","]","}",">","'",'"'].includes(t))switch(t){case"(":case")":case"[":case"]":case"{":case"}":case"<":case">":case"'":case'"':this.closeCharacter(t)}}setLineNumber(){this.lineNumber=this.code.split("\n").length,this.opts.lineNumbers&&this.updateLineNumbersCount()}handleNewLineIndentation(e){if(this.opts.handleNewLineIndentation&&13===e.keyCode){e.preventDefault();var t=this.elTextarea,n=t.selectionStart,r=t.selectionEnd,i=t.value,a=i.substr(0,n),o=i.substring(r),s=i.lastIndexOf("\n",n-1),l=s+i.slice(s+1).search(/[^ ]|$/),c=l>s?l-s:0,u=a+"\n"+" ".repeat(c)+o;t.value=u,t.selectionStart=n+c+1,t.selectionEnd=n+c+1,this.updateCode(t.value)}}closeCharacter(e){const t=this.elTextarea.selectionStart,n=this.elTextarea.selectionEnd;if(this.skipCloseChar(e)){const r=this.code.substr(n,1)===e,i=r?n+1:n,a=!r&&["'",'"'].includes(e)?e:"",o=`${this.code.substring(0,t)}${a}${this.code.substring(i)}`;this.updateCode(o),this.elTextarea.selectionEnd=++this.elTextarea.selectionStart}else{let r=e;switch(e){case"(":r=String.fromCharCode(e.charCodeAt()+1);break;case"<":case"{":case"[":r=String.fromCharCode(e.charCodeAt()+2)}const i=this.code.substring(t,n),a=`${this.code.substring(0,t)}${i}${r}${this.code.substring(n)}`;this.updateCode(a)}this.elTextarea.selectionEnd=t}skipCloseChar(e){const t=this.elTextarea.selectionStart,n=this.elTextarea.selectionEnd,r=Math.abs(n-t)>0;return[")","}","]",">"].includes(e)||["'",'"'].includes(e)&&!r}updateCode(e){this.code=e,this.elTextarea.value=e,this.elCode.innerHTML=d(e),this.highlight(),this.setLineNumber(),setTimeout(this.runUpdate.bind(this),1)}updateLanguage(e){const t=this.opts.language;this.elCode.classList.remove(`language-${t}`),this.elCode.classList.add(`language-${e}`),this.opts.language=e,this.highlight()}populateDefault(){this.updateCode(this.code)}highlight(){g().highlightElement(this.elCode,!1)}onUpdate(e){if(e&&"[object Function]"!=={}.toString.call(e))throw Error("codecup expects callback of type Function");this.updateCallBack=e}getCode(){return this.code}runUpdate(){this.updateCallBack&&this.updateCallBack(this.code)}enableReadonlyMode(){this.elTextarea.setAttribute("readonly",!0),this.opts.readonly=!0}disableReadonlyMode(){this.elTextarea.removeAttribute("readonly"),this.opts.readonly=!1}toggleReadonlyMode(){this.opts.readonly?this.disableReadonlyMode():this.enableReadonlyMode()}enableLineNumbers(){this.opts.lineNumbers=!0,this.destroyLineNumbers(),this.createLineNumbers(),this.updateLineNumbersCount()}disableLineNumbers(){this.opts.lineNumbers=!1,this.destroyLineNumbers()}toggleLineNumbers(){this.opts.lineNumbers?this.disableLineNumbers():this.enableLineNumbers()}dispose(){this.elTextarea.removeEventListener("input",this.events._input),this.elTextarea.removeEventListener("keydown",this.events._keydown),this.elTextarea.removeEventListener("scroll",this.events._scroll),this.elWrapper.remove()}}})(),r.default})(),e.exports=t()},572:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var r=n(81),i=n.n(r),a=n(645),o=n.n(a)()(i());o.push([e.id,".editorjs-codeCup_Wrapper {\n height: 200px;\n\tborder: 1px solid #dcdfe6;\n\tborder-radius: 5px;\n\tbackground-color: #f0f2f5;\n margin-bottom: 10px;\n\n\tz-index: 0;\n position: inherit; \n}\n\n.editorjs-codeCup_Wrapper .codeCup {\n\tborder-radius: 5px;\n\tbackground: none;\n}\n\n\n.editorjs-codeCup_Wrapper .editorjs-codeCup_LangDisplay {\n\tposition: absolute;\n\theight: 20px;\n\tline-height: 20px;\n\tfont-size: 10px;\n\tcolor: #999;\n\tbackground-color: #dcdfe6;\n\tpadding: 5px;\n\tpadding-left: 10px;\n\tpadding-right: 10px;\n\tright: 0px; \n\tbottom: 0;\n\tborder-bottom-right-radius: 5px;\n\tborder-top-left-radius: 5px;\n}\n\n.editorjs-codeCup_Wrapper .codeCup.codeCup--has-line-numbers:before{\n background-color: #dcdfe6;\n}\n\n/* .wide{\n\twidth: 100%;\n\n\tz-index: 10;\n position: inherit;\n} */\n\n\n.editorjs-codeCup_input{\n\tbackground-color: #F8F8F8;\n\tborder-radius: 2px;\n\tpadding:5px;\n\tflex: 1;\n\tmargin-right: 5px;\n}\n\n.editorjs-codeCup_input:focus{\n outline: none;\n}\n\n.editorjs-codeCup_inputButton{\n\tdisplay:flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.editorjs-codeCup_inputButton:hover{\n\tborder-radius: 2px;\n\tbackground-color: #dcdfe6;\n\tcursor: pointer;\n}\n\n.editorjs-codeCup_inputContainer{\n\tpadding:5px;\n\tdisplay: flex;\n\tjustify-content: space-between;\n}\n\n.editorjs-codeCup_languageSelectContainer {\n\tposition: relative;\n}\n\n.editorjs-codeCup_languageDropdown {\n\t/* top:10px; left:100px; */\n\tposition: fixed;\n\tbackground: white;\n\tborder: 1px solid #ddd;\n\tpadding: 5px;\n\tz-index: 9999;\n\tmax-height: 200px;\n\toverflow-y: auto;\n\tbox-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1);\n\tborder-radius: 5px;\n\tfont-size: 14px;\n\tmin-width: 150px;\n\t/* The position will need to be set dynamically via JavaScript */\n}\n\n.editorjs-codeCup_languageOption {\n\tfont-size: 14px;\n line-height: 20px;\n font-weight: 500;\n\tpadding: 6px 12px;\n\tcursor: pointer;\n\tborder-bottom: 1px solid #f0f0f0;\n}\n\n.editorjs-codeCup_languageOption:hover {\n\tbackground-color: #f5f5f5;\t\t\n}\n\n.editorjs-codeCup_languageErrorMessage {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n\tfont-size: 14px;\n\tfont-weight: 500;\n\tcolor: #d9534f;\n\tbackground: white;\n\tpadding: 6px 10px;\n\tmargin-top: 8px;\n\tborder-left: 4px solid #d9534f;\n\tborder-radius: 4px;\n }\n\n .editorjs-codeCup_languageErrorMessage .close-error {\n\tfont-size: 18px;\n\tfont-weight: bold;\n\tcolor: black;\n\tbackground: transparent;\n\tborder: none;\n\tcursor: pointer;\n\ttransition: color 0.2s ease;\n }\n \n .editorjs-codeCup_languageErrorMessage .close-error:hover {\n\tcolor: #444;\n }",""]);const s=o},645:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",r=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),r&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),r&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,r,i,a){"string"==typeof e&&(e=[[null,e,void 0]]);var o={};if(r)for(var s=0;s0?" ".concat(u[5]):""," {").concat(u[1],"}")),u[5]=a),n&&(u[2]?(u[1]="@media ".concat(u[2]," {").concat(u[1],"}"),u[2]=n):u[2]=n),i&&(u[4]?(u[1]="@supports (".concat(u[4],") {").concat(u[1],"}"),u[4]=i):u[4]="".concat(i)),t.push(u))}},t}},81:e=>{"use strict";e.exports=function(e){return e[1]}},379:e=>{"use strict";var t=[];function n(e){for(var n=-1,r=0;r{"use strict";var t={};e.exports=function(e,n){var r=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(n)}},216:e=>{"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},565:(e,t,n)=>{"use strict";e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},795:e=>{"use strict";e.exports=function(e){var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var r="";n.supports&&(r+="@supports (".concat(n.supports,") {")),n.media&&(r+="@media ".concat(n.media," {"));var i=void 0!==n.layer;i&&(r+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),r+=n.css,i&&(r+="}"),n.media&&(r+="}"),n.supports&&(r+="}");var a=n.sourceMap;a&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),t.styleTagTransform(r,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},589:e=>{"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},548:e=>{e.exports=''}},t={};function n(r){var i=t[r];if(void 0!==i)return i.exports;var a=t[r]={id:r,exports:{}};return e[r](a,a.exports,n),a.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.nc=void 0;var r={};return(()=>{"use strict";n.d(r,{default:()=>y});var e=n(379),t=n.n(e),i=n(795),a=n.n(i),o=n(569),s=n.n(o),l=n(565),c=n.n(l),u=n(216),p=n.n(u),d=n(589),h=n.n(d),g=n(572),m={};m.styleTagTransform=h(),m.setAttributes=c(),m.insert=s().bind(null,"head"),m.domAPI=a(),m.insertStyleElement=p(),t()(g.Z,m),g.Z&&g.Z.locals&&g.Z.locals;var f=n(548),w=n.n(f),v=n(255),b=n.n(v);const k=JSON.parse('{"Mj":{"meta":{"path":"components/prism-{id}","noCSS":true,"examplesPath":"examples/prism-{id}","addCheckAll":true},"markup":{"title":"Markup","alias":["html","xml","svg","mathml","ssml","atom","rss"],"aliasTitles":{"html":"HTML","xml":"XML","svg":"SVG","mathml":"MathML","ssml":"SSML","atom":"Atom","rss":"RSS"},"option":"default"},"css":{"title":"CSS","option":"default","modify":"markup"},"clike":{"title":"C-like","option":"default"},"javascript":{"title":"JavaScript","require":"clike","modify":"markup","optional":"regex","alias":"js","option":"default"},"abap":{"title":"ABAP","owner":"dellagustin"},"abnf":{"title":"ABNF","owner":"RunDevelopment"},"actionscript":{"title":"ActionScript","require":"javascript","modify":"markup","owner":"Golmote"},"ada":{"title":"Ada","owner":"Lucretia"},"agda":{"title":"Agda","owner":"xy-ren"},"al":{"title":"AL","owner":"RunDevelopment"},"antlr4":{"title":"ANTLR4","alias":"g4","owner":"RunDevelopment"},"apacheconf":{"title":"Apache Configuration","owner":"GuiTeK"},"apex":{"title":"Apex","require":["clike","sql"],"owner":"RunDevelopment"},"apl":{"title":"APL","owner":"ngn"},"applescript":{"title":"AppleScript","owner":"Golmote"},"aql":{"title":"AQL","owner":"RunDevelopment"},"arduino":{"title":"Arduino","require":"cpp","alias":"ino","owner":"dkern"},"arff":{"title":"ARFF","owner":"Golmote"},"armasm":{"title":"ARM Assembly","alias":"arm-asm","owner":"RunDevelopment"},"arturo":{"title":"Arturo","alias":"art","optional":["bash","css","javascript","markup","markdown","sql"],"owner":"drkameleon"},"asciidoc":{"alias":"adoc","title":"AsciiDoc","owner":"Golmote"},"aspnet":{"title":"ASP.NET (C#)","require":["markup","csharp"],"owner":"nauzilus"},"asm6502":{"title":"6502 Assembly","owner":"kzurawel"},"asmatmel":{"title":"Atmel AVR Assembly","owner":"cerkit"},"autohotkey":{"title":"AutoHotkey","owner":"aviaryan"},"autoit":{"title":"AutoIt","owner":"Golmote"},"avisynth":{"title":"AviSynth","alias":"avs","owner":"Zinfidel"},"avro-idl":{"title":"Avro IDL","alias":"avdl","owner":"RunDevelopment"},"awk":{"title":"AWK","alias":"gawk","aliasTitles":{"gawk":"GAWK"},"owner":"RunDevelopment"},"bash":{"title":"Bash","alias":["sh","shell"],"aliasTitles":{"sh":"Shell","shell":"Shell"},"owner":"zeitgeist87"},"basic":{"title":"BASIC","owner":"Golmote"},"batch":{"title":"Batch","owner":"Golmote"},"bbcode":{"title":"BBcode","alias":"shortcode","aliasTitles":{"shortcode":"Shortcode"},"owner":"RunDevelopment"},"bbj":{"title":"BBj","owner":"hyyan"},"bicep":{"title":"Bicep","owner":"johnnyreilly"},"birb":{"title":"Birb","require":"clike","owner":"Calamity210"},"bison":{"title":"Bison","require":"c","owner":"Golmote"},"bnf":{"title":"BNF","alias":"rbnf","aliasTitles":{"rbnf":"RBNF"},"owner":"RunDevelopment"},"bqn":{"title":"BQN","owner":"yewscion"},"brainfuck":{"title":"Brainfuck","owner":"Golmote"},"brightscript":{"title":"BrightScript","owner":"RunDevelopment"},"bro":{"title":"Bro","owner":"wayward710"},"bsl":{"title":"BSL (1C:Enterprise)","alias":"oscript","aliasTitles":{"oscript":"OneScript"},"owner":"Diversus23"},"c":{"title":"C","require":"clike","owner":"zeitgeist87"},"csharp":{"title":"C#","require":"clike","alias":["cs","dotnet"],"owner":"mvalipour"},"cpp":{"title":"C++","require":"c","owner":"zeitgeist87"},"cfscript":{"title":"CFScript","require":"clike","alias":"cfc","owner":"mjclemente"},"chaiscript":{"title":"ChaiScript","require":["clike","cpp"],"owner":"RunDevelopment"},"cil":{"title":"CIL","owner":"sbrl"},"cilkc":{"title":"Cilk/C","require":"c","alias":"cilk-c","owner":"OpenCilk"},"cilkcpp":{"title":"Cilk/C++","require":"cpp","alias":["cilk-cpp","cilk"],"owner":"OpenCilk"},"clojure":{"title":"Clojure","owner":"troglotit"},"cmake":{"title":"CMake","owner":"mjrogozinski"},"cobol":{"title":"COBOL","owner":"RunDevelopment"},"coffeescript":{"title":"CoffeeScript","require":"javascript","alias":"coffee","owner":"R-osey"},"concurnas":{"title":"Concurnas","alias":"conc","owner":"jasontatton"},"csp":{"title":"Content-Security-Policy","owner":"ScottHelme"},"cooklang":{"title":"Cooklang","owner":"ahue"},"coq":{"title":"Coq","owner":"RunDevelopment"},"crystal":{"title":"Crystal","require":"ruby","owner":"MakeNowJust"},"css-extras":{"title":"CSS Extras","require":"css","modify":"css","owner":"milesj"},"csv":{"title":"CSV","owner":"RunDevelopment"},"cue":{"title":"CUE","owner":"RunDevelopment"},"cypher":{"title":"Cypher","owner":"RunDevelopment"},"d":{"title":"D","require":"clike","owner":"Golmote"},"dart":{"title":"Dart","require":"clike","owner":"Golmote"},"dataweave":{"title":"DataWeave","owner":"machaval"},"dax":{"title":"DAX","owner":"peterbud"},"dhall":{"title":"Dhall","owner":"RunDevelopment"},"diff":{"title":"Diff","owner":"uranusjr"},"django":{"title":"Django/Jinja2","require":"markup-templating","alias":"jinja2","owner":"romanvm"},"dns-zone-file":{"title":"DNS zone file","owner":"RunDevelopment","alias":"dns-zone"},"docker":{"title":"Docker","alias":"dockerfile","owner":"JustinBeckwith"},"dot":{"title":"DOT (Graphviz)","alias":"gv","optional":"markup","owner":"RunDevelopment"},"ebnf":{"title":"EBNF","owner":"RunDevelopment"},"editorconfig":{"title":"EditorConfig","owner":"osipxd"},"eiffel":{"title":"Eiffel","owner":"Conaclos"},"ejs":{"title":"EJS","require":["javascript","markup-templating"],"owner":"RunDevelopment","alias":"eta","aliasTitles":{"eta":"Eta"}},"elixir":{"title":"Elixir","owner":"Golmote"},"elm":{"title":"Elm","owner":"zwilias"},"etlua":{"title":"Embedded Lua templating","require":["lua","markup-templating"],"owner":"RunDevelopment"},"erb":{"title":"ERB","require":["ruby","markup-templating"],"owner":"Golmote"},"erlang":{"title":"Erlang","owner":"Golmote"},"excel-formula":{"title":"Excel Formula","alias":["xlsx","xls"],"owner":"RunDevelopment"},"fsharp":{"title":"F#","require":"clike","owner":"simonreynolds7"},"factor":{"title":"Factor","owner":"catb0t"},"false":{"title":"False","owner":"edukisto"},"firestore-security-rules":{"title":"Firestore security rules","require":"clike","owner":"RunDevelopment"},"flow":{"title":"Flow","require":"javascript","owner":"Golmote"},"fortran":{"title":"Fortran","owner":"Golmote"},"ftl":{"title":"FreeMarker Template Language","require":"markup-templating","owner":"RunDevelopment"},"gml":{"title":"GameMaker Language","alias":"gamemakerlanguage","require":"clike","owner":"LiarOnce"},"gap":{"title":"GAP (CAS)","owner":"RunDevelopment"},"gcode":{"title":"G-code","owner":"RunDevelopment"},"gdscript":{"title":"GDScript","owner":"RunDevelopment"},"gedcom":{"title":"GEDCOM","owner":"Golmote"},"gettext":{"title":"gettext","alias":"po","owner":"RunDevelopment"},"gherkin":{"title":"Gherkin","owner":"hason"},"git":{"title":"Git","owner":"lgiraudel"},"glsl":{"title":"GLSL","require":"c","owner":"Golmote"},"gn":{"title":"GN","alias":"gni","owner":"RunDevelopment"},"linker-script":{"title":"GNU Linker Script","alias":"ld","owner":"RunDevelopment"},"go":{"title":"Go","require":"clike","owner":"arnehormann"},"go-module":{"title":"Go module","alias":"go-mod","owner":"RunDevelopment"},"gradle":{"title":"Gradle","require":"clike","owner":"zeabdelkhalek-badido18"},"graphql":{"title":"GraphQL","optional":"markdown","owner":"Golmote"},"groovy":{"title":"Groovy","require":"clike","owner":"robfletcher"},"haml":{"title":"Haml","require":"ruby","optional":["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],"owner":"Golmote"},"handlebars":{"title":"Handlebars","require":"markup-templating","alias":["hbs","mustache"],"aliasTitles":{"mustache":"Mustache"},"owner":"Golmote"},"haskell":{"title":"Haskell","alias":"hs","owner":"bholst"},"haxe":{"title":"Haxe","require":"clike","optional":"regex","owner":"Golmote"},"hcl":{"title":"HCL","owner":"outsideris"},"hlsl":{"title":"HLSL","require":"c","owner":"RunDevelopment"},"hoon":{"title":"Hoon","owner":"matildepark"},"http":{"title":"HTTP","optional":["csp","css","hpkp","hsts","javascript","json","markup","uri"],"owner":"danielgtaylor"},"hpkp":{"title":"HTTP Public-Key-Pins","owner":"ScottHelme"},"hsts":{"title":"HTTP Strict-Transport-Security","owner":"ScottHelme"},"ichigojam":{"title":"IchigoJam","owner":"BlueCocoa"},"icon":{"title":"Icon","owner":"Golmote"},"icu-message-format":{"title":"ICU Message Format","owner":"RunDevelopment"},"idris":{"title":"Idris","alias":"idr","owner":"KeenS","require":"haskell"},"ignore":{"title":".ignore","owner":"osipxd","alias":["gitignore","hgignore","npmignore"],"aliasTitles":{"gitignore":".gitignore","hgignore":".hgignore","npmignore":".npmignore"}},"inform7":{"title":"Inform 7","owner":"Golmote"},"ini":{"title":"Ini","owner":"aviaryan"},"io":{"title":"Io","owner":"AlesTsurko"},"j":{"title":"J","owner":"Golmote"},"java":{"title":"Java","require":"clike","owner":"sherblot"},"javadoc":{"title":"JavaDoc","require":["markup","java","javadoclike"],"modify":"java","optional":"scala","owner":"RunDevelopment"},"javadoclike":{"title":"JavaDoc-like","modify":["java","javascript","php"],"owner":"RunDevelopment"},"javastacktrace":{"title":"Java stack trace","owner":"RunDevelopment"},"jexl":{"title":"Jexl","owner":"czosel"},"jolie":{"title":"Jolie","require":"clike","owner":"thesave"},"jq":{"title":"JQ","owner":"RunDevelopment"},"jsdoc":{"title":"JSDoc","require":["javascript","javadoclike","typescript"],"modify":"javascript","optional":["actionscript","coffeescript"],"owner":"RunDevelopment"},"js-extras":{"title":"JS Extras","require":"javascript","modify":"javascript","optional":["actionscript","coffeescript","flow","n4js","typescript"],"owner":"RunDevelopment"},"json":{"title":"JSON","alias":"webmanifest","aliasTitles":{"webmanifest":"Web App Manifest"},"owner":"CupOfTea696"},"json5":{"title":"JSON5","require":"json","owner":"RunDevelopment"},"jsonp":{"title":"JSONP","require":"json","owner":"RunDevelopment"},"jsstacktrace":{"title":"JS stack trace","owner":"sbrl"},"js-templates":{"title":"JS Templates","require":"javascript","modify":"javascript","optional":["css","css-extras","graphql","markdown","markup","sql"],"owner":"RunDevelopment"},"julia":{"title":"Julia","owner":"cdagnino"},"keepalived":{"title":"Keepalived Configure","owner":"dev-itsheng"},"keyman":{"title":"Keyman","owner":"mcdurdin"},"kotlin":{"title":"Kotlin","alias":["kt","kts"],"aliasTitles":{"kts":"Kotlin Script"},"require":"clike","owner":"Golmote"},"kumir":{"title":"KuMir (КуМир)","alias":"kum","owner":"edukisto"},"kusto":{"title":"Kusto","owner":"RunDevelopment"},"latex":{"title":"LaTeX","alias":["tex","context"],"aliasTitles":{"tex":"TeX","context":"ConTeXt"},"owner":"japborst"},"latte":{"title":"Latte","require":["clike","markup-templating","php"],"owner":"nette"},"less":{"title":"Less","require":"css","optional":"css-extras","owner":"Golmote"},"lilypond":{"title":"LilyPond","require":"scheme","alias":"ly","owner":"RunDevelopment"},"liquid":{"title":"Liquid","require":"markup-templating","owner":"cinhtau"},"lisp":{"title":"Lisp","alias":["emacs","elisp","emacs-lisp"],"owner":"JuanCaicedo"},"livescript":{"title":"LiveScript","owner":"Golmote"},"llvm":{"title":"LLVM IR","owner":"porglezomp"},"log":{"title":"Log file","optional":"javastacktrace","owner":"RunDevelopment"},"lolcode":{"title":"LOLCODE","owner":"Golmote"},"lua":{"title":"Lua","owner":"Golmote"},"magma":{"title":"Magma (CAS)","owner":"RunDevelopment"},"makefile":{"title":"Makefile","owner":"Golmote"},"markdown":{"title":"Markdown","require":"markup","optional":"yaml","alias":"md","owner":"Golmote"},"markup-templating":{"title":"Markup templating","require":"markup","owner":"Golmote"},"mata":{"title":"Mata","owner":"RunDevelopment"},"matlab":{"title":"MATLAB","owner":"Golmote"},"maxscript":{"title":"MAXScript","owner":"RunDevelopment"},"mel":{"title":"MEL","owner":"Golmote"},"mermaid":{"title":"Mermaid","owner":"RunDevelopment"},"metafont":{"title":"METAFONT","owner":"LaeriExNihilo"},"mizar":{"title":"Mizar","owner":"Golmote"},"mongodb":{"title":"MongoDB","owner":"airs0urce","require":"javascript"},"monkey":{"title":"Monkey","owner":"Golmote"},"moonscript":{"title":"MoonScript","alias":"moon","owner":"RunDevelopment"},"n1ql":{"title":"N1QL","owner":"TMWilds"},"n4js":{"title":"N4JS","require":"javascript","optional":"jsdoc","alias":"n4jsd","owner":"bsmith-n4"},"nand2tetris-hdl":{"title":"Nand To Tetris HDL","owner":"stephanmax"},"naniscript":{"title":"Naninovel Script","owner":"Elringus","alias":"nani"},"nasm":{"title":"NASM","owner":"rbmj"},"neon":{"title":"NEON","owner":"nette"},"nevod":{"title":"Nevod","owner":"nezaboodka"},"nginx":{"title":"nginx","owner":"volado"},"nim":{"title":"Nim","owner":"Golmote"},"nix":{"title":"Nix","owner":"Golmote"},"nsis":{"title":"NSIS","owner":"idleberg"},"objectivec":{"title":"Objective-C","require":"c","alias":"objc","owner":"uranusjr"},"ocaml":{"title":"OCaml","owner":"Golmote"},"odin":{"title":"Odin","owner":"edukisto"},"opencl":{"title":"OpenCL","require":"c","modify":["c","cpp"],"owner":"Milania1"},"openqasm":{"title":"OpenQasm","alias":"qasm","owner":"RunDevelopment"},"oz":{"title":"Oz","owner":"Golmote"},"parigp":{"title":"PARI/GP","owner":"Golmote"},"parser":{"title":"Parser","require":"markup","owner":"Golmote"},"pascal":{"title":"Pascal","alias":"objectpascal","aliasTitles":{"objectpascal":"Object Pascal"},"owner":"Golmote"},"pascaligo":{"title":"Pascaligo","owner":"DefinitelyNotAGoat"},"psl":{"title":"PATROL Scripting Language","owner":"bertysentry"},"pcaxis":{"title":"PC-Axis","alias":"px","owner":"RunDevelopment"},"peoplecode":{"title":"PeopleCode","alias":"pcode","owner":"RunDevelopment"},"perl":{"title":"Perl","owner":"Golmote"},"php":{"title":"PHP","require":"markup-templating","owner":"milesj"},"phpdoc":{"title":"PHPDoc","require":["php","javadoclike"],"modify":"php","owner":"RunDevelopment"},"php-extras":{"title":"PHP Extras","require":"php","modify":"php","owner":"milesj"},"plant-uml":{"title":"PlantUML","alias":"plantuml","owner":"RunDevelopment"},"plsql":{"title":"PL/SQL","require":"sql","owner":"Golmote"},"powerquery":{"title":"PowerQuery","alias":["pq","mscript"],"owner":"peterbud"},"powershell":{"title":"PowerShell","owner":"nauzilus"},"processing":{"title":"Processing","require":"clike","owner":"Golmote"},"prolog":{"title":"Prolog","owner":"Golmote"},"promql":{"title":"PromQL","owner":"arendjr"},"properties":{"title":".properties","owner":"Golmote"},"protobuf":{"title":"Protocol Buffers","require":"clike","owner":"just-boris"},"pug":{"title":"Pug","require":["markup","javascript"],"optional":["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],"owner":"Golmote"},"puppet":{"title":"Puppet","owner":"Golmote"},"pure":{"title":"Pure","optional":["c","cpp","fortran"],"owner":"Golmote"},"purebasic":{"title":"PureBasic","require":"clike","alias":"pbfasm","owner":"HeX0R101"},"purescript":{"title":"PureScript","require":"haskell","alias":"purs","owner":"sriharshachilakapati"},"python":{"title":"Python","alias":"py","owner":"multipetros"},"qsharp":{"title":"Q#","require":"clike","alias":"qs","owner":"fedonman"},"q":{"title":"Q (kdb+ database)","owner":"Golmote"},"qml":{"title":"QML","require":"javascript","owner":"RunDevelopment"},"qore":{"title":"Qore","require":"clike","owner":"temnroegg"},"r":{"title":"R","owner":"Golmote"},"racket":{"title":"Racket","require":"scheme","alias":"rkt","owner":"RunDevelopment"},"cshtml":{"title":"Razor C#","alias":"razor","require":["markup","csharp"],"optional":["css","css-extras","javascript","js-extras"],"owner":"RunDevelopment"},"jsx":{"title":"React JSX","require":["markup","javascript"],"optional":["jsdoc","js-extras","js-templates"],"owner":"vkbansal"},"tsx":{"title":"React TSX","require":["jsx","typescript"]},"reason":{"title":"Reason","require":"clike","owner":"Golmote"},"regex":{"title":"Regex","owner":"RunDevelopment"},"rego":{"title":"Rego","owner":"JordanSh"},"renpy":{"title":"Ren\'py","alias":"rpy","owner":"HyuchiaDiego"},"rescript":{"title":"ReScript","alias":"res","owner":"vmarcosp"},"rest":{"title":"reST (reStructuredText)","owner":"Golmote"},"rip":{"title":"Rip","owner":"ravinggenius"},"roboconf":{"title":"Roboconf","owner":"Golmote"},"robotframework":{"title":"Robot Framework","alias":"robot","owner":"RunDevelopment"},"ruby":{"title":"Ruby","require":"clike","alias":"rb","owner":"samflores"},"rust":{"title":"Rust","owner":"Golmote"},"sas":{"title":"SAS","optional":["groovy","lua","sql"],"owner":"Golmote"},"sass":{"title":"Sass (Sass)","require":"css","optional":"css-extras","owner":"Golmote"},"scss":{"title":"Sass (SCSS)","require":"css","optional":"css-extras","owner":"MoOx"},"scala":{"title":"Scala","require":"java","owner":"jozic"},"scheme":{"title":"Scheme","owner":"bacchus123"},"shell-session":{"title":"Shell session","require":"bash","alias":["sh-session","shellsession"],"owner":"RunDevelopment"},"smali":{"title":"Smali","owner":"RunDevelopment"},"smalltalk":{"title":"Smalltalk","owner":"Golmote"},"smarty":{"title":"Smarty","require":"markup-templating","optional":"php","owner":"Golmote"},"sml":{"title":"SML","alias":"smlnj","aliasTitles":{"smlnj":"SML/NJ"},"owner":"RunDevelopment"},"solidity":{"title":"Solidity (Ethereum)","alias":"sol","require":"clike","owner":"glachaud"},"solution-file":{"title":"Solution file","alias":"sln","owner":"RunDevelopment"},"soy":{"title":"Soy (Closure Template)","require":"markup-templating","owner":"Golmote"},"sparql":{"title":"SPARQL","require":"turtle","owner":"Triply-Dev","alias":"rq"},"splunk-spl":{"title":"Splunk SPL","owner":"RunDevelopment"},"sqf":{"title":"SQF: Status Quo Function (Arma 3)","require":"clike","owner":"RunDevelopment"},"sql":{"title":"SQL","owner":"multipetros"},"squirrel":{"title":"Squirrel","require":"clike","owner":"RunDevelopment"},"stan":{"title":"Stan","owner":"RunDevelopment"},"stata":{"title":"Stata Ado","require":["mata","java","python"],"owner":"RunDevelopment"},"iecst":{"title":"Structured Text (IEC 61131-3)","owner":"serhioromano"},"stylus":{"title":"Stylus","owner":"vkbansal"},"supercollider":{"title":"SuperCollider","alias":"sclang","owner":"RunDevelopment"},"swift":{"title":"Swift","owner":"chrischares"},"systemd":{"title":"Systemd configuration file","owner":"RunDevelopment"},"t4-templating":{"title":"T4 templating","owner":"RunDevelopment"},"t4-cs":{"title":"T4 Text Templates (C#)","require":["t4-templating","csharp"],"alias":"t4","owner":"RunDevelopment"},"t4-vb":{"title":"T4 Text Templates (VB)","require":["t4-templating","vbnet"],"owner":"RunDevelopment"},"tap":{"title":"TAP","owner":"isaacs","require":"yaml"},"tcl":{"title":"Tcl","owner":"PeterChaplin"},"tt2":{"title":"Template Toolkit 2","require":["clike","markup-templating"],"owner":"gflohr"},"textile":{"title":"Textile","require":"markup","optional":"css","owner":"Golmote"},"toml":{"title":"TOML","owner":"RunDevelopment"},"tremor":{"title":"Tremor","alias":["trickle","troy"],"owner":"darach","aliasTitles":{"trickle":"trickle","troy":"troy"}},"turtle":{"title":"Turtle","alias":"trig","aliasTitles":{"trig":"TriG"},"owner":"jakubklimek"},"twig":{"title":"Twig","require":"markup-templating","owner":"brandonkelly"},"typescript":{"title":"TypeScript","require":"javascript","optional":"js-templates","alias":"ts","owner":"vkbansal"},"typoscript":{"title":"TypoScript","alias":"tsconfig","aliasTitles":{"tsconfig":"TSConfig"},"owner":"dkern"},"unrealscript":{"title":"UnrealScript","alias":["uscript","uc"],"owner":"RunDevelopment"},"uorazor":{"title":"UO Razor Script","owner":"jaseowns"},"uri":{"title":"URI","alias":"url","aliasTitles":{"url":"URL"},"owner":"RunDevelopment"},"v":{"title":"V","require":"clike","owner":"taggon"},"vala":{"title":"Vala","require":"clike","optional":"regex","owner":"TemplarVolk"},"vbnet":{"title":"VB.Net","require":"basic","owner":"Bigsby"},"velocity":{"title":"Velocity","require":"markup","owner":"Golmote"},"verilog":{"title":"Verilog","owner":"a-rey"},"vhdl":{"title":"VHDL","owner":"a-rey"},"vim":{"title":"vim","owner":"westonganger"},"visual-basic":{"title":"Visual Basic","alias":["vb","vba"],"aliasTitles":{"vba":"VBA"},"owner":"Golmote"},"warpscript":{"title":"WarpScript","owner":"RunDevelopment"},"wasm":{"title":"WebAssembly","owner":"Golmote"},"web-idl":{"title":"Web IDL","alias":"webidl","owner":"RunDevelopment"},"wgsl":{"title":"WGSL","owner":"Dr4gonthree"},"wiki":{"title":"Wiki markup","require":"markup","owner":"Golmote"},"wolfram":{"title":"Wolfram language","alias":["mathematica","nb","wl"],"aliasTitles":{"mathematica":"Mathematica","nb":"Mathematica Notebook"},"owner":"msollami"},"wren":{"title":"Wren","owner":"clsource"},"xeora":{"title":"Xeora","require":"markup","alias":"xeoracube","aliasTitles":{"xeoracube":"XeoraCube"},"owner":"freakmaxi"},"xml-doc":{"title":"XML doc (.net)","require":"markup","modify":["csharp","fsharp","vbnet"],"owner":"RunDevelopment"},"xojo":{"title":"Xojo (REALbasic)","owner":"Golmote"},"xquery":{"title":"XQuery","require":"markup","owner":"Golmote"},"yaml":{"title":"YAML","alias":"yml","owner":"hason"},"yang":{"title":"YANG","owner":"RunDevelopment"},"zig":{"title":"Zig","owner":"RunDevelopment"}}}');class y{static get DEFAULT_PLACEHOLDER(){return"// Hello"}static get enableLineBreaks(){return!0}static getDefaultLanguages(){return{bash:"Bash",c:"C",cpp:"C++",csharp:"C#",css:"CSS",go:"Go",html:"HTML",java:"Java",javascript:"JavaScript",json:"JSON",kotlin:"Kotlin",none:"Plain Text",php:"PHP",python:"Python",ruby:"Ruby",rust:"Rust",sql:"SQL",swift:"Swift",typescript:"TypeScript"}}constructor({data:e,config:t,api:n,readOnly:r}){this.api=n,this.readOnly=r,this._CSS={block:this.api.styles.block,wrapper:"ce-EditorJsCodeCup",settingsButton:this.api.styles.settingsButton,settingsButtonActive:this.api.styles.settingsButtonActive},this.readOnly||(this.onKeyUp=this.onKeyUp.bind(this)),this._placeholder=t.placeholder?t.placeholder:y.DEFAULT_PLACEHOLDER,this._preserveBlank=void 0!==t.preserveBlank&&t.preserveBlank,this._forceShowLanguageInput=t.forceShowLanguageInput||!1,this._hasConfiguredLanguages=t.languages&&Object.keys(t.languages).length>0,this._languages=this._hasConfiguredLanguages?t.languages:{},this._element,this.data={},this.data.code=void 0===e.code?"// Hello World":e.code,this.data.language=void 0===e.language?"plain":e.language.toLowerCase(),this.data.showlinenumbers=void 0===e.showlinenumbers||e.showlinenumbers,this.data.showCopyButton=void 0===e.showCopyButton||e.showCopyButton,this.data.editorInstance={}}onKeyUp(e){if("Backspace"!==e.code&&"Delete"!==e.code)return;const{textContent:t}=this._element;""===t&&(this._element.innerHTML="")}render(){this._element=document.createElement("div"),this._element.classList.add("editorjs-codeCup_Wrapper");let e=document.createElement("div");e.classList.add("editorjs-codeCup_Editor");let t=document.createElement("div");return t.classList.add("editorjs-codeCup_LangDisplay"),t.innerHTML="plain"===this.data.language?"Plain Text":this._languages[this.data.language]||this.data.language,this._element.appendChild(e),this._element.appendChild(t),this.data.editorInstance=new(b())(e,{language:this.data.language,lineNumbers:this.data.showlinenumbers,readonly:this.readOnly,copyButton:this.data.showCopyButton}),this.data.editorInstance.onUpdate((e=>{let t=e.split("\n").length;this._debounce(this._updateEditorHeight(t))})),this.data.editorInstance.updateCode(this.data.code),this._element}_updateEditorHeight(e){let t=21*e+10;t<60&&(t=60),this._element.style.height=t+"px"}_debounce(e,t=500){let n;return(...r)=>{clearTimeout(n),n=setTimeout((()=>{e.apply(this,r)}),t)}}_renderLanguageDropdown(e){const t=document.createElement("div");t.classList.add("editorjs-codeCup_languageDropdown");const n=Object.entries(this._languages).sort(((e,t)=>e[1].localeCompare(t[1],void 0,{sensitivity:"base"}))),r=document.createDocumentFragment();n.forEach((([e,n])=>{const i=document.createElement("div");i.classList.add("editorjs-codeCup_languageOption"),i.innerText=n,i.addEventListener("click",(r=>{r.stopPropagation(),this._updateLanguage(e,n)&&(t.style.display="none")})),r.appendChild(i)})),t.appendChild(r);const i=e.getBoundingClientRect();t.style.top=`${i.bottom+window.scrollY}px`,t.style.left=`${i.left+window.scrollX}px`,document.body.appendChild(t);const a=n=>{t.contains(n.target)||e.contains(n.target)||(t.remove(),document.removeEventListener("click",a))};document.addEventListener("click",a)}_renderLanguageSelectContainer(){const e=document.createElement("div");return e.classList.add("ce-popover-item"),e.classList.add("editorjs-codeCup_languageSelectContainer"),e.innerHTML='\n
\n \n \n \n \n \n
\n
Select Language
\n ',e.addEventListener("click",(t=>{t.stopPropagation();const n=document.querySelector(".editorjs-codeCup_languageDropdown");n?n.remove():this._renderLanguageDropdown(e)})),e}renderSettings(){const e=document.createElement("div"),t=document.createElement("div"),n=document.createElement("div");if(t.classList.add("ce-popover-item"),n.classList.add("ce-popover-item__title"),this.data.showlinenumbers?n.innerHTML="Hide Numbers":n.innerHTML="Show Numbers",t.innerHTML='
\n \n
',t.appendChild(n),t.addEventListener("click",(e=>{e.target.classList.toggle(this._CSS.settingsButtonActive),this._toggleLineNumbers(),this.data.showlinenumbers?n.innerHTML="Hide Numbers":n.innerHTML="Show Numbers"})),e.appendChild(t),this._hasConfiguredLanguages&&e.appendChild(this._renderLanguageSelectContainer()),!this._hasConfiguredLanguages||this._forceShowLanguageInput){const t=document.createElement("div");t.classList.add("editorjs-codeCup_inputContainer");let n=document.createElement("div");n.classList.add("editorjs-codeCup_input"),n.setAttribute("contenteditable","true"),n.setAttribute("data-placeholder","Enter language..");let r=document.createElement("div"),i='
\n \n
';r.innerHTML=i,r.classList.add("editorjs-codeCup_inputButton"),r.addEventListener("click",(e=>{let t=n.textContent;""!=t&&this._updateLanguage(t)&&(n.textContent="")})),t.appendChild(n),t.appendChild(r),e.appendChild(t)}return e}_toggleLineNumbers=e=>{this.data.showlinenumbers=!this.data.showlinenumbers,this.data.editorInstance.toggleLineNumbers()};_updateLanguage(e,t){if(!this._isValidLanguage(e))return this.data.language="plain",this.data.editorInstance.updateLanguage("none"),this._element.querySelector(".editorjs-codeCup_LangDisplay").innerHTML="none",this._handleErrorMessage(e),!1;const n=e.toLowerCase();return this.data.language="none"===n?"plain":n,this.data.editorInstance.updateLanguage(n),this._element.querySelector(".editorjs-codeCup_LangDisplay").innerHTML=t||this._languages[n]||this.data.language,this._handleErrorMessage(null),!0}_isValidLanguage=e=>{if(!e)return!1;const t=e.toLowerCase();if("none"===t)return!0;const n=Object.keys(k.Mj);return!!new Set(n).has(t.toLowerCase())||n.some((e=>{const n=k.Mj[e];return!(!n||!n.alias)&&(Array.isArray(n.alias)?n.alias:[n.alias]).includes(t.toLowerCase())}))};_handleErrorMessage=e=>{if(!this._element)return;let t=this._element.parentNode.querySelector(".editorjs-codeCup_languageErrorMessage");e?(t||(t=document.createElement("div"),t.classList.add("editorjs-codeCup_languageErrorMessage"),this._element.before(t)),t.innerHTML=`⚠ Syntax highlighting is unavailable. "${e}" is not a valid Prism.js language key. `,t.querySelector(".close-error").addEventListener("click",(()=>{t.remove()}))):t&&t.remove()};save(e){return{code:this.data.editorInstance.getCode(),language:this.data.language,showlinenumbers:this.data.showlinenumbers,showCopyButton:this.data.showCopyButton}}static get isReadOnlySupported(){return!0}static get toolbox(){return{icon:w(),title:"CodeCup"}}}})(),r.default})())); \ No newline at end of file diff --git a/dist/editorjs-codeCup.bundle.js.LICENSE.txt b/dist/editorjs-codeCup.bundle.js.LICENSE.txt index 395659c..25ed7b3 100644 --- a/dist/editorjs-codeCup.bundle.js.LICENSE.txt +++ b/dist/editorjs-codeCup.bundle.js.LICENSE.txt @@ -1,6 +1,6 @@ /** - * EditorJsCodeCup Block for the Editor.js. - * - * @author Calum Knott (calum@calumk.com) - * @license The MIT License (MIT) - */ + * EditorJsCodeCup Block for the Editor.js. + * + * @author Calum Knott (calum@calumk.com) + * @license The MIT License (MIT) + */ diff --git a/example/example.html b/example/example.html index 7ef2954..e314be9 100644 --- a/example/example.html +++ b/example/example.html @@ -101,7 +101,25 @@ // inlineCode:, // Load Local Tools - code: editorJsCodeCup, + code: { + class: editorJsCodeCup, + config: { + languages: { + javascript: "JavaScript", + typescript: "TypeScript", + python: "Python", + java: "Java", + + csharp: "C#", + go: "Go", + rust: "Rust", + swift: "Swift", + none: "Plain Text", + }, + + //forceShowLanguageInput: true + } + } // code: CodeTool, // Load 3rd Party Tools diff --git a/package.json b/package.json index e373271..fb230c5 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,14 @@ { "name": "@calumk/editorjs-codecup", "description": "Codecup, for EditorJS", - "version": "1.2.0", + "version": "1.3.0", "author": "Calum Knott", "repository": "https://github.com/calumk/editorjs-codecup", "license": "MIT", "main": "./dist/editorjs-codeCup.bundle.js", "scripts": { - "build": "webpack --mode production" + "build": "webpack --mode production", + "build:watch": "webpack --watch --mode development" }, "dependencies": { "@calumk/codecup": "^1.8.1" diff --git a/readme.md b/readme.md index a055104..afcdc41 100644 --- a/readme.md +++ b/readme.md @@ -31,13 +31,13 @@ It was built to be an improvement on : --- -## Installation / use +## Installation / Use ```javascript import EditorJS from '@editorjs/editorjs'; import editorjsCodecup from '@calumk/editorjs-codecup'; -var editor = EditorJS({ +var editor = new EditorJS({ // ... tools: { ... @@ -46,6 +46,64 @@ var editor = EditorJS({ }); ``` +### Language Selection + +The plugin provides two ways to handle language selection: + +1. **Free-form Language Input**: By default (when no languages are configured), users can enter any valid Prism.js language key through a text input. + +2. **Predefined Language Dropdown**: When you provide a languages configuration, users can select from a predefined list of languages through a dropdown menu. + +You can configure the language selection behavior using these options: + +#### Predefined Languages +Provide a custom mapping of Prism.js language keys to their display names: + +```javascript +var editor = new EditorJS({ + // ... + tools: { + code: { + class: editorJsCodeCup, + config: { + languages: { + javascript: "JavaScript", + python: "Python", + java: "Java", + cpp: "C++", + csharp: "C#", + go: "Go", + none: "Plain Text", + } + } + } + }, +}); +``` + +#### Force Show Language Input +If you want to allow both predefined language selection AND free-form language input, use the `forceShowLanguageInput` option: + +```javascript +var editor = new EditorJS({ + // ... + tools: { + code: { + class: editorJsCodeCup, + config: { + languages: { + javascript: "JavaScript", + python: "Python", + // ... other languages + }, + forceShowLanguageInput: true // Shows both dropdown and language input + } + } + }, +}); +``` + +Refer to [Prism.js supported languages](https://prismjs.com/#supported-languages) for the available language mappings. ## Data Format The data imported/exported from the block is as follows: @@ -55,30 +113,17 @@ The data imported/exported from the block is as follows: | code | The code that is displayed in the editor, with line breaks | | language (optional) | The programming language | | showlinenumbers (optional) | Will show/hide the line numbers (Default true) | -| showCopyButton (optional) | will show/hide the copy button (Defauly true) | -| | | - +| showCopyButton (optional) | Will show/hide the copy button (Default true) | Since language and linenumbers are optional, existing ```code``` blocks can safley use this plugin - diff --git a/src/codecup.css b/src/codecup.css index 0856c3f..0d0b35a 100644 --- a/src/codecup.css +++ b/src/codecup.css @@ -25,7 +25,7 @@ padding: 5px; padding-left: 10px; padding-right: 10px; - right: 0; + right: 0px; bottom: 0; border-bottom-right-radius: 5px; border-top-left-radius: 5px; @@ -71,4 +71,65 @@ padding:5px; display: flex; justify-content: space-between; -} \ No newline at end of file +} + +.editorjs-codeCup_languageSelectContainer { + position: relative; +} + +.editorjs-codeCup_languageDropdown { + /* top:10px; left:100px; */ + position: fixed; + background: white; + border: 1px solid #ddd; + padding: 5px; + z-index: 9999; + max-height: 200px; + overflow-y: auto; + box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1); + border-radius: 5px; + font-size: 14px; + min-width: 150px; + /* The position will need to be set dynamically via JavaScript */ +} + +.editorjs-codeCup_languageOption { + font-size: 14px; + line-height: 20px; + font-weight: 500; + padding: 6px 12px; + cursor: pointer; + border-bottom: 1px solid #f0f0f0; +} + +.editorjs-codeCup_languageOption:hover { + background-color: #f5f5f5; +} + +.editorjs-codeCup_languageErrorMessage { + display: flex; + align-items: center; + gap: 8px; + font-size: 14px; + font-weight: 500; + color: #d9534f; + background: white; + padding: 6px 10px; + margin-top: 8px; + border-left: 4px solid #d9534f; + border-radius: 4px; + } + + .editorjs-codeCup_languageErrorMessage .close-error { + font-size: 18px; + font-weight: bold; + color: black; + background: transparent; + border: none; + cursor: pointer; + transition: color 0.2s ease; + } + + .editorjs-codeCup_languageErrorMessage .close-error:hover { + color: #444; + } \ No newline at end of file diff --git a/src/codecup.js b/src/codecup.js index 86cedf9..bae09f4 100644 --- a/src/codecup.js +++ b/src/codecup.js @@ -1,137 +1,159 @@ +/** + * EditorJsCodeCup Block for the Editor.js. + * + * @author Calum Knott (calum@calumk.com) + * @license The MIT License (MIT) + */ + +/** + * @typedef {object} EditorJsCodeCupConfig + * @property {string} placeholder - placeholder for the empty EditorJsCodeCup + * @property {boolean} preserveBlank - Whether or not to keep blank EditorJsCodeCups when saving editor data + * @property {Object.} languages - + * Custom mapping of Prism.js language keys to their display names. + * Users can override the default language selection by providing a custom mapping. + * + * Example: + * languages: { + * csharp: "C#", + * javascript: "JavaScript", + * python: "Python", + * java: "Java", + * } + */ + +/** + * @typedef {Object} EditorJsCodeCupData + * @description Tool's input and output data format + * @property {String} text — EditorJsCodeCup's content. Can include HTML tags: + */ + +import style from './codecup.css' +import icon from './codecup.svg'; + +import codecup from '@calumk/codecup/dist/codecup.bundle.js'; +import components from "prismjs/components.json"; + +class EditorJsCodeCup { + /** + * Default placeholder for EditorJsCodeCup Tool + * + * @return {string} + * @constructor + */ + static get DEFAULT_PLACEHOLDER() { + return '// Hello'; + } - /** - * EditorJsCodeCup Block for the Editor.js. - * - * @author Calum Knott (calum@calumk.com) - * @license The MIT License (MIT) - */ - - /** - * @typedef {object} EditorJsCodeCupConfig - * @property {string} placeholder - placeholder for the empty EditorJsCodeCup - * @property {boolean} preserveBlank - Whether or not to keep blank EditorJsCodeCups when saving editor data - */ - - /** - * @typedef {Object} EditorJsCodeCupData - * @description Tool's input and output data format - * @property {String} text — EditorJsCodeCup's content. Can include HTML tags: + static get enableLineBreaks() { + return true; + } + /** + * Returns the default set of supported languages. + * @return {Object} Default language map (PrismJS key -> Label) */ + static getDefaultLanguages() { + return { + bash: "Bash", + c: "C", + cpp: "C++", + csharp: "C#", + css: "CSS", + go: "Go", + html: "HTML", + java: "Java", + javascript: "JavaScript", + json: "JSON", + kotlin: "Kotlin", + none: "Plain Text", + php: "PHP", + python: "Python", + ruby: "Ruby", + rust: "Rust", + sql: "SQL", + swift: "Swift", + typescript: "TypeScript", + }; + } - import style from './codecup.css' - import icon from './codecup.svg'; + /** + * Render plugin`s main Element and fill it with saved data + * + * @param {object} params - constructor params + * @param {EditorJsCodeCupData} params.data - previously saved data + * @param {EditorJsCodeCupConfig} params.config - user config for Tool + * @param {object} params.api - editor.js api + * @param {boolean} readOnly - read only mode flag + */ + constructor({data, config, api, readOnly}) { + this.api = api; + this.readOnly = readOnly; + + this._CSS = { + block: this.api.styles.block, + wrapper: 'ce-EditorJsCodeCup', + settingsButton: this.api.styles.settingsButton, + settingsButtonActive: this.api.styles.settingsButtonActive, + }; + if (!this.readOnly) { + this.onKeyUp = this.onKeyUp.bind(this); + } - import codecup from '@calumk/codecup/dist/codecup.bundle.js'; + this._placeholder = config.placeholder ? config.placeholder : EditorJsCodeCup.DEFAULT_PLACEHOLDER; + this._preserveBlank = config.preserveBlank !== undefined ? config.preserveBlank : false; + this._forceShowLanguageInput = config.forceShowLanguageInput || false; + // Check if languages are provided in config + this._hasConfiguredLanguages = config.languages && Object.keys(config.languages).length > 0; + this._languages = this._hasConfiguredLanguages ? config.languages : {}; - - class EditorJsCodeCup { - /** - * Default placeholder for EditorJsCodeCup Tool - * - * @return {string} - * @constructor - */ - static get DEFAULT_PLACEHOLDER() { - return '// Hello'; - } - - static get enableLineBreaks() { - return true; + this._element; // used to hold the wrapper div, as a point of reference + + this.data = {} + this.data.code = (data.code === undefined) ? '// Hello World' : data.code; + this.data.language = (data.language === undefined) ? 'plain' : data.language.toLowerCase(); + this.data.showlinenumbers = (data.showlinenumbers === undefined) ? true : data.showlinenumbers; + this.data.showCopyButton = (data.showCopyButton === undefined) ? true : data.showCopyButton; + this.data.editorInstance = {} + } + + /** + * Check if text content is empty and set empty string to inner html. + * We need this because some browsers (e.g. Safari) insert
into empty contenteditanle elements + * + * @param {KeyboardEvent} e - key up event + */ + onKeyUp(e) { + if (e.code !== 'Backspace' && e.code !== 'Delete') { + return; + } + + const {textContent} = this._element; + + if (textContent === '') { + this._element.innerHTML = ''; + } } - - /** - * Render plugin`s main Element and fill it with saved data - * - * @param {object} params - constructor params - * @param {EditorJsCodeCupData} params.data - previously saved data - * @param {EditorJsCodeCupConfig} params.config - user config for Tool - * @param {object} params.api - editor.js api - * @param {boolean} readOnly - read only mode flag - */ - constructor({data, config, api, readOnly}) { - // console.log(data) - this.api = api; - this.readOnly = readOnly; - - this._CSS = { - block: this.api.styles.block, - wrapper: 'ce-EditorJsCodeCup', - settingsButton: this.api.styles.settingsButton, - settingsButtonActive: this.api.styles.settingsButtonActive, - }; - - if (!this.readOnly) { - this.onKeyUp = this.onKeyUp.bind(this); - } - - /** - * Placeholder for EditorJsCodeCup if it is first Block - * @type {string} - */ - this._placeholder = config.placeholder ? config.placeholder : EditorJsCodeCup.DEFAULT_PLACEHOLDER; - - this._preserveBlank = config.preserveBlank !== undefined ? config.preserveBlank : false; - - this._element; // used to hold the wrapper div, as a point of reference - - - - // let x = (x === undefined) ? your_default_value : x; - this.data = {} - this.data.code = (data.code === undefined) ? '// Hello World' : data.code; - this.data.language = (data.language === undefined) ? 'plain' : data.language; - this.data.showlinenumbers = (data.showlinenumbers === undefined) ? true : data.showlinenumbers; - this.data.showCopyButton = (data.showCopyButton === undefined) ? true : data.showCopyButton; - this.data.editorInstance = {} - - // console.log(this.data) - - } - - /** - * Check if text content is empty and set empty string to inner html. - * We need this because some browsers (e.g. Safari) insert
into empty contenteditanle elements - * - * @param {KeyboardEvent} e - key up event - */ - onKeyUp(e) { - if (e.code !== 'Backspace' && e.code !== 'Delete') { - return; - } - - console.log(e) - - const {textContent} = this._element; - - if (textContent === '') { - this._element.innerHTML = ''; - } - } - - - /** - * Return Tool's view - * - * @returns {HTMLDivElement} - */ - render() { + /** + * Return Tool's view + * + * @returns {HTMLDivElement} + */ + render() { this._element = document.createElement('div'); this._element.classList.add('editorjs-codeCup_Wrapper') let editorElem = document.createElement('div'); editorElem.classList.add('editorjs-codeCup_Editor') + let langdisplay = document.createElement('div'); langdisplay.classList.add('editorjs-codeCup_LangDisplay') - - langdisplay.innerHTML = this.data.language + langdisplay.innerHTML = this.data.language === "plain" ? "Plain Text" : this._languages[this.data.language] || this.data.language; this._element.appendChild(editorElem) this._element.appendChild(langdisplay) - // console.log(this.data.editorInstance) - this.data.editorInstance = new codecup(editorElem, { language: this.data.language, lineNumbers : this.data.showlinenumbers, @@ -139,36 +161,24 @@ copyButton : this.data.showCopyButton, }); - // console.log(this.data.editorInstance) - - this.data.editorInstance.onUpdate((code) => { - // console.log("onUpdate fired") - // console.log(code) let _length = code.split('\n').length this._debounce(this._updateEditorHeight(_length)) }); - // this.data.editorInstance.addLanguage(this.data.language, Prism.languages[this.data.language]); this.data.editorInstance.updateCode(this.data.code); - // console.log(this.data.code) - // console.log(this.data.editorInstance.getCode()) - // console.log(this._element) - return this._element - } + } _updateEditorHeight(length){ - let _height = (length * 21) + 10 if (_height < 60){ _height = 60 } this._element.style.height = _height + 'px'; } - _debounce(func, timeout = 500){ let timer; return (...args) => { @@ -177,43 +187,85 @@ }; } - renderSettings() { - const settingsContainer = document.createElement('div'); - - - - - // let languagesSelect = document.createElement("select"); - // languagesSelect.classList.add("small"); - // languagesSelect.classList.add("wide"); - - // //sort available languages alphabetically (ignore case) - // let languages = Object.keys(Prism.languages).sort(function (a, b) { - // return a.toLowerCase().localeCompare(b.toLowerCase()); - // }); - - // //Create and append the options - // for (var i = 0; i < languages.length; i++) { - // // Weirdly PrismJS doesnt expose a list of installed languages, or rather it does, but it is mixed with helper functions, which i have to clear here. - // if (languages[i] == "extend" || languages[i] == "insertBefore" || languages[i] == "DFS") { - // continue; - // } - - // var option = document.createElement("option"); - // option.value = languages[i]; - // option.text = languages[i]; - // if(languages[i] == this.data.language){ - // option.selected="selected" - // } - // languagesSelect.appendChild(option); - // } - - // languagesSelect.addEventListener('change', (event) => { - // this._updateLanguage(event.target.value) - // }); - + _renderLanguageDropdown(languageSelectContainer) { + const dropdown = document.createElement("div"); + dropdown.classList.add("editorjs-codeCup_languageDropdown"); + + // Sort languages alphabetically by their display names, ensuring case-insensitive ordering + const sortedLanguages = Object.entries(this._languages).sort((a, b) => + a[1].localeCompare(b[1], undefined, { sensitivity: "base" }) + ); + + // Generate language options + const fragment = document.createDocumentFragment(); + sortedLanguages.forEach(([key, label]) => { + const langOption = document.createElement("div"); + langOption.classList.add("editorjs-codeCup_languageOption"); + langOption.innerText = label; + + // Handle selection + langOption.addEventListener("click", (event) => { + event.stopPropagation() + const isUpdated = this._updateLanguage(key, label); + if(isUpdated) dropdown.style.display = "none"; + }); + + fragment.appendChild(langOption); + }); + dropdown.appendChild(fragment); + + // Calculate position relative to the language select container + const rect = languageSelectContainer.getBoundingClientRect(); + dropdown.style.top = `${rect.bottom + window.scrollY}px`; + dropdown.style.left = `${rect.left + window.scrollX}px`; + + // Append to body instead of the container for proper stacking + document.body.appendChild(dropdown); + + // Close dropdown when clicking outside + const closeDropdown = (e) => { + if (!dropdown.contains(e.target) && !languageSelectContainer.contains(e.target)) { + dropdown.remove(); + document.removeEventListener('click', closeDropdown); + } + }; + document.addEventListener('click', closeDropdown); + } + + _renderLanguageSelectContainer() { + const languageSelectContainer = document.createElement('div'); + languageSelectContainer.classList.add('ce-popover-item'); + languageSelectContainer.classList.add('editorjs-codeCup_languageSelectContainer'); + languageSelectContainer.innerHTML = ` +
+ + + + + +
+
Select Language
+ `; + + languageSelectContainer.addEventListener('click', (event) => { + event.stopPropagation(); + + // Toggle dropdown: remove if already open, otherwise show it + const existingDropdown = document.querySelector(".editorjs-codeCup_languageDropdown"); + if (existingDropdown) { + existingDropdown.remove(); + } else { + this._renderLanguageDropdown(languageSelectContainer); + } + }); + + return languageSelectContainer + } - // Disabled until codeCup supports toggle of line numbers + renderSettings() { + const settingsContainer = document.createElement('div'); + + // Add line numbers toggle button const toggleButton = document.createElement('div'); const toggleButtonInner = document.createElement('div'); toggleButton.classList.add('ce-popover-item'); @@ -225,17 +277,14 @@ toggleButtonInner.innerHTML = 'Show Numbers' } - // append a html string directly to the element let string = `
` toggleButton.innerHTML = string - toggleButton.appendChild(toggleButtonInner); toggleButton.addEventListener('click', (e) => { - // console.log(e) e.target.classList.toggle(this._CSS.settingsButtonActive) this._toggleLineNumbers() if(this.data.showlinenumbers){ @@ -245,66 +294,42 @@ } }); + settingsContainer.appendChild(toggleButton); + // Add language selection based on configuration + if (this._hasConfiguredLanguages) { + // If languages are configured, show the dropdown + settingsContainer.appendChild(this._renderLanguageSelectContainer()); + } - // settingsContainer.appendChild(languagesSelect); - // new NiceSelect(languagesSelect, {searchable : true, placeholder : "Language..."}); - - - - // create a button, when you click the button there should be a js prompt to enter a language. the default should be the current language. - // let languageSelectButton = document.createElement("button"); - // languageSelectButton.classList.add(this.api.styles.button); - // languageSelectButton.style.width = "100%"; - // languageSelectButton.textContent = this.data.language; - // languageSelectButton.addEventListener('click', (event) => { - - // let lang = prompt("Please enter a language", this.data.language); - // if (lang != null) { - // this._updateLanguage(lang) - // // also update the button text - // event.target.textContent = lang; - // } - // }); - - - const languageEntryInputContainer = document.createElement('div'); - languageEntryInputContainer.classList.add('editorjs-codeCup_inputContainer'); - -//
- let languageEntryInput = document.createElement("div") - languageEntryInput.classList.add("editorjs-codeCup_input") - languageEntryInput.setAttribute("contenteditable", "true") - languageEntryInput.setAttribute("data-placeholder", "Enter a language...") - - - - - let languageEntryInputButton = document.createElement("div") - let string2 = `
- -
` - languageEntryInputButton.innerHTML = string2 - languageEntryInputButton.classList.add("editorjs-codeCup_inputButton") - languageEntryInputButton.addEventListener('click', (event) => { - let lang = languageEntryInput.textContent - if(lang != ''){ - this._updateLanguage(lang) - } - }); - - - languageEntryInputContainer.appendChild(languageEntryInput) - languageEntryInputContainer.appendChild(languageEntryInputButton) - // languageEntryInput.addEventListener('input', (event) => { - // console.log(event) - // // this._updateLanguage(event.target.value) - - // }); - - settingsContainer.appendChild(toggleButton); - // settingsContainer.appendChild(languageSelectButton); - settingsContainer.appendChild(languageEntryInputContainer); + // Show language input if no languages configured or if force_show_language_input is true + if (!this._hasConfiguredLanguages || this._forceShowLanguageInput) { + const languageEntryInputContainer = document.createElement('div'); + languageEntryInputContainer.classList.add('editorjs-codeCup_inputContainer'); + + let languageEntryInput = document.createElement("div") + languageEntryInput.classList.add("editorjs-codeCup_input") + languageEntryInput.setAttribute("contenteditable", "true") + languageEntryInput.setAttribute("data-placeholder", "Enter language..") + + let languageEntryInputButton = document.createElement("div") + let string2 = `
+ +
` + languageEntryInputButton.innerHTML = string2 + languageEntryInputButton.classList.add("editorjs-codeCup_inputButton") + languageEntryInputButton.addEventListener('click', (event) => { + let lang = languageEntryInput.textContent + if(lang != ''){ + const isUpdated = this._updateLanguage(lang) + if(isUpdated) languageEntryInput.textContent = '' // clear the input field + } + }); + + languageEntryInputContainer.appendChild(languageEntryInput) + languageEntryInputContainer.appendChild(languageEntryInputButton) + settingsContainer.appendChild(languageEntryInputContainer); + } return settingsContainer; } @@ -313,28 +338,103 @@ this.data.showlinenumbers = !this.data.showlinenumbers this.data.editorInstance.toggleLineNumbers() + } - // console.log(this.data.editorInstance) - // replace this with a native method for codeCup, if it gets implemented. - // for now, we will completely destroy the codeCup instance, and rebuild it - lazy but effective + /** + * Updates the selected language for syntax highlighting in the editor. + * - If the provided language is valid Prismjs language key, updates the editor's language setting and UI. + * - If the language is invalid, displays an error message and does not update the language. + * @param {string} language - The Prism.js language key (e.g., "javascript", "csharp"). + * @param {string} label - The display name for the language (e.g., "JavaScript", "C#"). + * If not provided, `language` is used as the display name. + * @returns {boolean} - Returns `true` if the language was successfully updated, otherwise `false`. + */ + _updateLanguage(language, label) { + if(!this._isValidLanguage(language)) { + // If invalid language, fallback to plain text + this.data.language = 'plain'; + this.data.editorInstance.updateLanguage('none'); + this._element.querySelector('.editorjs-codeCup_LangDisplay').innerHTML = 'none'; + this._handleErrorMessage(language); // Show error message + return false; + } - } + // Normalize language identifier to lowercase to prevent PrismJS from misidentifying or failing to autoload syntax highlighting. + const normalizedLang = language.toLowerCase() + + // Use "plain" internally for consistency since PrismJS uses "none". + // This ensures users can reset to plain text properly. + this.data.language = normalizedLang === 'none' ? 'plain' : normalizedLang; + this.data.editorInstance.updateLanguage(normalizedLang); - _updateLanguage = (lang) => { - this.data.language = lang - this._element.querySelector('.editorjs-codeCup_LangDisplay').innerHTML = this.data.language - this.data.editorInstance.updateLanguage(this.data.language) + this._element.querySelector('.editorjs-codeCup_LangDisplay').innerHTML = label || this._languages[normalizedLang] || this.data.language + this._handleErrorMessage(null); // Remove error message if previously shown + return true; } - - + /** + * Checks if the given language is a valid Prism.js language or an alias. + * @param {string} language - The language key to validate. + * @returns {boolean} - Returns `true` if the language or its alias is supported by Prism.js, otherwise `false`. + */ + _isValidLanguage = (language) => { + if (!language) return false; + const normalizedLang = language.toLowerCase() + if(normalizedLang === 'none') return true; // Allow "none" as a valid option for plaintext + + // Check if the language matches a primary Prism.js language + const SUPPORTED_LANGUAGES = Object.keys(components.languages); + const languageSet = new Set(SUPPORTED_LANGUAGES); + if(languageSet.has(normalizedLang.toLowerCase())) { + return true; + } + + // Check if the language matches any aliases + return SUPPORTED_LANGUAGES.some((language) => { + const langConfig = components.languages[language]; + if (langConfig && langConfig.alias) { + const aliases = Array.isArray(langConfig.alias) ? langConfig.alias : [langConfig.alias]; + return aliases.includes(normalizedLang.toLowerCase()); + } + return false; + }); + }; + /** - * Extract Tool's data from the view - * @param {HTMLDivElement} toolsContent - EditorJsCodeCup tools rendered view - * @returns {EditorJsCodeCupData} - saved data - * @public - */ - save(toolsContent) { + * Manages the display of an error message for invalid syntax highlighting languages. + * - If an invalid language is provided, an error message is shown. + * Users can manually dismiss the error message using a close button. + * - If a valid language is entered, any existing error message is removed. + * @param {string|null} language - The invalid language key. If `null`, the error message is removed. + */ + _handleErrorMessage = (language) => { + if (!this._element) return; + + let errorMessage = this._element.parentNode.querySelector('.editorjs-codeCup_languageErrorMessage') + if(language) { + // Display an error message + if(!errorMessage) { + errorMessage = document.createElement('div') + errorMessage.classList.add('editorjs-codeCup_languageErrorMessage'); + this._element.before(errorMessage) // Insert the error message before the editor element + } + errorMessage.innerHTML = `⚠ Syntax highlighting is unavailable. "${language}" is not a valid Prism.js language key. `; + + errorMessage.querySelector('.close-error').addEventListener('click', () => { + errorMessage.remove(); + }); + } else if (errorMessage) { + errorMessage.remove(); // Remove any existing error message + } + } + + /** + * Extract Tool's data from the view + * @param {HTMLDivElement} toolsContent - EditorJsCodeCup tools rendered view + * @returns {EditorJsCodeCupData} - saved data + * @public + */ + save(toolsContent) { let resp = { code : this.data.editorInstance.getCode(), language : this.data.language, @@ -343,29 +443,28 @@ }; return resp - } - - /** - * Returns true to notify the core that read-only mode is supported - * - * @return {boolean} - */ - static get isReadOnlySupported() { - return true; - } - - - /** - * Icon and title for displaying at the Toolbox - * - * @return {{icon: string, title: string}} - */ - static get toolbox() { - return { - icon: icon, - title: 'CodeCup' - }; - } - } - + } + + /** + * Returns true to notify the core that read-only mode is supported + * + * @return {boolean} + */ + static get isReadOnlySupported() { + return true; + } + + /** + * Icon and title for displaying at the Toolbox + * + * @return {{icon: string, title: string}} + */ + static get toolbox() { + return { + icon: icon, + title: 'CodeCup' + }; + } +} + export { EditorJsCodeCup as default } \ No newline at end of file