editor.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import Langs from "./select";
  2. import AceEditor from "react-ace";
  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/theme-monokai";
  20. import "ace-builds/src-noconflict/ext-language_tools";
  21. import "ace-builds/src-noconflict/snippets/javascript";
  22. import "ace-builds/src-noconflict/snippets/html";
  23. import "ace-builds/src-noconflict/snippets/css";
  24. import "ace-builds/src-noconflict/snippets/json";
  25. import "ace-builds/src-noconflict/worker-javascript";
  26. import "ace-builds/src-noconflict/worker-html";
  27. import "ace-builds/src-noconflict/worker-css";
  28. const Editor = ({data = {type: "html", text: "", name: ""}, onChange, onDelete}) => {
  29. return (
  30. <div style={{display: "inline-block", width: "calc(95%/3)",
  31. marginBottom: "10px", marginTop: "40px",
  32. backgroundColor: "#FFE8DB", marginLeft:"1%",
  33. border:"1px solid #FF5A00", borderRadius: "30px 15px 90px 15px"
  34. }}>
  35. <button className="close mr-4 "
  36. type="button"
  37. aria-label="Close"
  38. onClick={onDelete}
  39. style={{fontSize:"40px", backgroundColor:"black"}}>
  40. <span className="text-danger" aria-hidden="true">
  41. &times;
  42. </span>
  43. </button>
  44. <AceEditor className="editor" width="calc(100%)" height="300px" value={data.text}
  45. onChange={(text) => onChange({type: data.type, text, name: data.name })}
  46. placeholder="Your Code" mode={data.type} theme="monokai" name="blah2"
  47. fontSize={13} showPrintMargin={true}
  48. showGutter={true} highlightActiveLine={true} wrapEnabled={true}
  49. enableBasicAutocompletion={true} enableLiveAutocompletion={true}
  50. enableSnippets={true} showLineNumbers={true}/>
  51. <br/>
  52. <div className="input-group ml-4" style={{paddingBottom: "10px"}}>
  53. <div className="input-group-prepend">
  54. <span className="input-group-text" id="basic-addon1">Name of file</span>
  55. </div>
  56. <input className="form-control w-25"
  57. type="text"
  58. placeholder="Name of file"
  59. aria-label="Name of file"
  60. aria-describedby="basic-addon1"
  61. value={data.name}
  62. onChange={(e) => onChange({type: data.type, text: data.text, name: e.target.value})}/>
  63. <Langs onChange={(type)=> onChange({type, text: data.text, name: data.name})} value={data.type}/>{" "}
  64. </div>
  65. </div>
  66. );
  67. };
  68. export default Editor;