UNPKG

react-web-code-editor

Version:

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

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