UNPKG

react-web-code-editor

Version:

A Simple and code-style Customizable web code editor with React

2 lines (1 loc) 3.73 kB
import e,{forwardRef as s,useRef as o,useImperativeHandle as t,useState as r,useMemo as m,useCallback as n}from"react";import{ThemeProvider as i}from"../node_modules/styled-components/dist/styled-components.esm.js";import"../node_modules/prismjs/prism.js";import"../node_modules/prismjs/components/prism-javascript.js";import"../node_modules/prismjs/components/prism-typescript.js";import"../node_modules/prismjs/components/prism-java.js";import"../node_modules/prismjs/components/prism-python.js";import"../node_modules/prismjs/components/prism-rust.js";import"../node_modules/prismjs/components/prism-ruby.js";import"../node_modules/prismjs/components/prism-swift.js";import"../node_modules/prismjs/components/prism-r.js";import"../node_modules/prismjs/components/prism-c.js";import"../node_modules/prismjs/components/prism-cpp.js";import"../node_modules/prismjs/components/prism-csharp.js";import"../node_modules/prismjs/components/prism-cobol.js";import"../node_modules/prismjs/components/prism-kotlin.js";import"../node_modules/prismjs/components/prism-haskell.js";import"../node_modules/prismjs/components/prism-arduino.js";import"../node_modules/prismjs/components/prism-coffeescript.js";import"../node_modules/prismjs/components/prism-clojure.js";import"../node_modules/prismjs/components/prism-dart.js";import"../node_modules/prismjs/components/prism-yaml.js";import"../node_modules/prismjs/components/prism-markdown.js";import"../node_modules/prismjs/components/prism-markup.js";import"../node_modules/prismjs/components/prism-docker.js";import"../node_modules/prismjs/components/prism-graphql.js";import"../node_modules/prismjs/components/prism-json.js";import"../node_modules/prismjs/components/prism-css.js";import"../node_modules/prismjs/components/prism-sass.js";import"../node_modules/prismjs/components/prism-scss.js";import p from"./themes.js";import c from"./History.js";import d from"./TextAreaEditor.js";import{Wrapper as u,TextArea as l,Pre as a}from"./styles.js";import{p as j}from"../_virtual/prism.js";var f=s((function(s,f){var h=s.indent,_=void 0===h?2:h,v=s.theme,g=void 0===v?"light":v,y=s.language,k=void 0===y?"javascript":y,x=s.width,T=s.height,w=s.fontSize,E=s.fontWeight,A=s.className,D=s.interpolation,C=o(null);t(f,(function(){return C.current}));var S=r(""),b=S[0],z=S[1],H=m((function(){return p[g]||"light"}),[g]),B=n((function(e){var s=e.currentTarget;z(s.value),c.push(s.value);var o=C.current;o&&(o.style.height="".concat(o.scrollHeight,"px"))}),[C]),K=n((function(e){var s=e.currentTarget,o=s.selectionEnd,t=s.selectionStart,r=s.value,m=new d(e.currentTarget,r,t,o,_);function n(e){z(e),c.push(e)}if(m.refreshTextAreaHeight(),"|"===e.key)return e.preventDefault(),void n(m.executeTextInput(e.key));if("Enter"===e.key)return e.preventDefault(),void n(m.executeEnterAction());if(" "===e.key)return e.preventDefault(),void n(m.executeSpaceAction());if("Tab"===e.key)return e.preventDefault(),void n(m.executeTabAction());if(/[} | ) | \] | > | ' | " | `]/.test(e.key)&&m.isParenthesisPaired(e.key))return e.preventDefault(),void m.executeBracketCloseAction();if(/[{ | ( | [ | < | ' | " | `]/.test(e.key))return e.preventDefault(),void n(m.executeBracketOpenAction(e.key));if(e.ctrlKey&&"z"===e.key.toLocaleLowerCase()){var i="",p=(i=e.shiftKey?c.goForward():c.goBack()).length;m.setNewText(i,p,p),z(i)}}),[_]);return e.createElement(i,{theme:H},e.createElement(u,{width:x,height:T,fontSize:w,fontWeight:E,className:A,interpolation:D},e.createElement(l,{autoCapitalize:"none",autoComplete:"off",autoFocus:!1,spellCheck:!1,ref:C,value:b,onChange:B,onKeyDown:K}),e.createElement(a,{dangerouslySetInnerHTML:{__html:j.exports.highlight(b,j.exports.languages[k],k)}})))}));export{f as default};