Editor.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import AceEditor from "react-ace";
  2. import "ace-builds/webpack-resolver";
  3. import "ace-builds/src-noconflict/mode-html";
  4. import "ace-builds/src-noconflict/mode-css";
  5. import "ace-builds/src-noconflict/mode-javascript";
  6. import "ace-builds/src-noconflict/mode-java";
  7. import "ace-builds/src-noconflict/mode-python";
  8. import "ace-builds/src-noconflict/mode-xml";
  9. import "ace-builds/src-noconflict/mode-sass";
  10. import "ace-builds/src-noconflict/mode-ruby";
  11. import "ace-builds/src-noconflict/mode-markdown";
  12. import "ace-builds/src-noconflict/mode-mysql";
  13. import "ace-builds/src-noconflict/mode-json";
  14. import "ace-builds/src-noconflict/mode-handlebars";
  15. import "ace-builds/src-noconflict/mode-golang";
  16. import "ace-builds/src-noconflict/mode-csharp";
  17. import "ace-builds/src-noconflict/mode-elixir";
  18. import "ace-builds/src-noconflict/mode-typescript";
  19. import "ace-builds/src-noconflict/ext-language_tools";
  20. import "ace-builds/src-noconflict/theme-monokai";
  21. import "ace-builds/src-noconflict/theme-github";
  22. import "ace-builds/src-noconflict/theme-tomorrow";
  23. import "ace-builds/src-noconflict/theme-kuroir";
  24. import "ace-builds/src-noconflict/theme-twilight";
  25. import "ace-builds/src-noconflict/theme-xcode";
  26. import "ace-builds/src-noconflict/theme-textmate";
  27. import "ace-builds/src-noconflict/theme-terminal";
  28. import "ace-builds/src-noconflict/theme-solarized_dark";
  29. import "ace-builds/src-noconflict/theme-solarized_light";
  30. import { SelectMode } from "helpers/SelectMode";
  31. import "./Editor.css";
  32. export const Editor = ({ data = { type: "", name: "", text: "", index: "" }, onChange, theme, font }) => {
  33. return (
  34. <div className='all_editors'>
  35. {"Mode: "}
  36. <SelectMode onChange={type => onChange({ type, text: data.text, name: data.name })} value={data.type} />
  37. <br />
  38. {"Name of editor: "}
  39. <input
  40. placeholder='Enter a name for your editor'
  41. type='text'
  42. value={data.name}
  43. onChange={e => onChange({ type: data.type, text: data.text, name: e.target.value })}
  44. />
  45. <AceEditor
  46. className='editor'
  47. value={data.text}
  48. onChange={text => onChange({ type: data.type, text, name: data.name })}
  49. placeholder='Your Code'
  50. mode={data.type}
  51. name={data.name}
  52. theme={theme}
  53. fontSize={Number(font)}
  54. showPrintMargin={true}
  55. showGutter={true}
  56. highlightActiveLine={true}
  57. setOptions={{
  58. enableBasicAutocompletion: true,
  59. enableLiveAutocompletion: true,
  60. enableSnippets: true,
  61. showLineNumbers: true,
  62. tabSize: 2,
  63. }}
  64. />
  65. </div>
  66. );
  67. };