import React from 'react'; import AceEditor from 'react-ace'; import 'brace/mode/plain_text'; import 'brace/mode/markdown'; import 'brace/mode/javascript'; import 'brace/mode/c_cpp'; import 'brace/mode/java'; import 'brace/mode/python'; import 'brace/theme/tomorrow_night_eighties'; import 'brace/ext/searchbox'; import faTrashAlt from '@fortawesome/fontawesome-free-solid/faTrashAlt'; import faUser from '@fortawesome/fontawesome-free-solid/faUser'; import { classes, extension } from '/common/util'; import { actions } from '/reducers'; import { connect } from 'react-redux'; import { languages } from '/common/config'; import { Button, Ellipsis } from '/components'; import styles from './stylesheet.scss'; @connect(({ current, env, player }) => ({ current, env, player }), actions) class CodeEditor extends React.Component { componentDidMount() { this.props.shouldBuild(); } handleChangeCode(code) { const { file } = this.props; this.props.modifyFile({ ...file, content: code }); if (extension(file.name) === 'md') this.props.shouldBuild(); } render() { const { className, file, onDeleteFile } = this.props; const { user } = this.props.env; const { lineIndicator } = this.props.player; const fileExt = extension(file.name); const language = languages.find(language => language.ext === fileExt); const mode = language ? language.mode : fileExt === 'md' ? 'markdown' : 'plain_text'; return (