diff --git a/maubot/management/frontend/package.json b/maubot/management/frontend/package.json index 7bd08ef..c25113f 100644 --- a/maubot/management/frontend/package.json +++ b/maubot/management/frontend/package.json @@ -5,6 +5,7 @@ "dependencies": { "node-sass": "^4.9.4", "react": "^16.6.0", + "react-ace": "^6.2.0", "react-dom": "^16.6.0", "react-router-dom": "^4.3.1", "react-scripts": "2.0.5", diff --git a/maubot/management/frontend/src/pages/dashboard/Instance.js b/maubot/management/frontend/src/pages/dashboard/Instance.js index 6a8b762..67bcf16 100644 --- a/maubot/management/frontend/src/pages/dashboard/Instance.js +++ b/maubot/management/frontend/src/pages/dashboard/Instance.js @@ -15,6 +15,9 @@ // along with this program. If not, see . import React, { Component } from "react" import { NavLink, withRouter } from "react-router-dom" +import AceEditor from "react-ace" +import "brace/mode/yaml" +import "brace/theme/github" import { ReactComponent as ChevronRight } from "../../res/chevron-right.svg" import PrefTable, { PrefInput, PrefSelect, PrefSwitch } from "../../components/PreferenceTable" import api from "../../api" @@ -43,6 +46,7 @@ class Instance extends Component { enabled: true, started: true, type: "", + config: "", saving: false, deleting: false, @@ -167,6 +171,12 @@ class Instance extends Component { value={this.selectedPluginEntry} onChange={({ id }) => this.setState({ type: id })}/> + this.setState({ config })} + name="config" value={this.state.config} + editorProps={{ + fontSize: "10pt", + $blockScrolling: true, + }}/> {!this.isNew && ( diff --git a/maubot/management/frontend/src/style/pages/instance.sass b/maubot/management/frontend/src/style/pages/instance.sass index f0d0377..6c3283c 100644 --- a/maubot/management/frontend/src/style/pages/instance.sass +++ b/maubot/management/frontend/src/style/pages/instance.sass @@ -26,3 +26,10 @@ max-height: 1.375rem border-radius: 50% margin-right: .5rem + + > div.ace_editor + height: 15rem !important + width: 100% !important + font-size: 14px + + margin-bottom: 1rem diff --git a/maubot/management/frontend/yarn.lock b/maubot/management/frontend/yarn.lock index 8775fa7..a0489ab 100644 --- a/maubot/management/frontend/yarn.lock +++ b/maubot/management/frontend/yarn.lock @@ -1937,6 +1937,11 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace@^0.11.1: + version "0.11.1" + resolved "https://registry.yarnpkg.com/brace/-/brace-0.11.1.tgz#4896fcc9d544eef45f4bb7660db320d3b379fe58" + integrity sha1-SJb8ydVE7vRfS7dmDbMg07N5/lg= + braces@^1.8.2: version "1.8.5" resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" @@ -3175,6 +3180,11 @@ detect-port-alt@1.1.6: address "^1.0.1" debug "^2.6.0" +diff-match-patch@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.4.tgz#6ac4b55237463761c4daf0dc603eb869124744b1" + integrity sha512-Uv3SW8bmH9nAtHKaKSanOQmj2DnlH65fUpcrMdfdaOxUG02QQ4YGZ8AE7kKOMisF7UqvOlGKVYWRvezdncW9lg== + diff@^3.2.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" @@ -6298,6 +6308,16 @@ lodash.debounce@^4.0.8: resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= + lodash.kebabcase@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" @@ -8434,6 +8454,17 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" +react-ace@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/react-ace/-/react-ace-6.2.0.tgz#9ab0fd88cd1ef6712fec4b243b61431964481c11" + integrity sha512-Cr27xFNZV2wlQi+mFjgUWfd3yPZV84Sf7XVrEXkDBZmQ5I/oY3x4KvtBjX6ImN7SCWu3sU6z9F3Zh6jH3/jtzw== + dependencies: + brace "^0.11.1" + diff-match-patch "^1.0.4" + lodash.get "^4.4.2" + lodash.isequal "^4.5.0" + prop-types "^15.6.2" + react-app-polyfill@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-0.1.3.tgz#e57bb50f3751dac0e6b3ac27673812c68c679a1d"