Add CodeEditor example
This commit is contained in:
@@ -44,6 +44,9 @@ Organization members can have *owner*{% if currentVersion == "free-pro-team@late
|
|||||||
|
|
||||||
## Code Editor Component
|
## Code Editor Component
|
||||||
|
|
||||||
|
<!--react-->
|
||||||
|
<CodeEditor language='javascript' code={`console.log('hello world')`} />
|
||||||
|
<!--end-react-->
|
||||||
|
|
||||||
|
|
||||||
{% if currentVersion == "free-pro-team@latest" %}
|
{% if currentVersion == "free-pro-team@latest" %}
|
||||||
|
|||||||
6
package-lock.json
generated
6
package-lock.json
generated
@@ -19450,9 +19450,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"object-hash": {
|
"object-hash": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.0.3.tgz",
|
||||||
"integrity": "sha512-HgcGMooY4JC2PBt9sdUdJ6PMzpin+YtY3r/7wg0uTifP+HJWW8rammseSEHuyt0UeShI183UGssCJqm1bJR7QA==",
|
"integrity": "sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"object-inspect": {
|
"object-inspect": {
|
||||||
|
|||||||
@@ -105,6 +105,7 @@
|
|||||||
"csp-parse": "0.0.2",
|
"csp-parse": "0.0.2",
|
||||||
"csv-parse": "^4.8.8",
|
"csv-parse": "^4.8.8",
|
||||||
"csv-parser": "^2.3.3",
|
"csv-parser": "^2.3.3",
|
||||||
|
"dedent": "^0.7.0",
|
||||||
"del": "^4.1.1",
|
"del": "^4.1.1",
|
||||||
"dependency-check": "^4.1.0",
|
"dependency-check": "^4.1.0",
|
||||||
"domwaiter": "^1.1.0",
|
"domwaiter": "^1.1.0",
|
||||||
@@ -123,9 +124,10 @@
|
|||||||
"make-promises-safe": "^5.1.0",
|
"make-promises-safe": "^5.1.0",
|
||||||
"mime": "^2.4.4",
|
"mime": "^2.4.4",
|
||||||
"mock-express-response": "^0.2.2",
|
"mock-express-response": "^0.2.2",
|
||||||
|
"nock": "^13.0.4",
|
||||||
"nodemon": "^2.0.4",
|
"nodemon": "^2.0.4",
|
||||||
"npm-merge-driver-install": "^1.1.1",
|
"npm-merge-driver-install": "^1.1.1",
|
||||||
"object-hash": "^2.0.1",
|
"object-hash": "^2.0.3",
|
||||||
"pa11y-ci": "^2.3.0",
|
"pa11y-ci": "^2.3.0",
|
||||||
"puppeteer": "^2.1.1",
|
"puppeteer": "^2.1.1",
|
||||||
"replace": "^1.2.0",
|
"replace": "^1.2.0",
|
||||||
@@ -135,9 +137,7 @@
|
|||||||
"start-server-and-test": "^1.11.3",
|
"start-server-and-test": "^1.11.3",
|
||||||
"supertest": "^4.0.2",
|
"supertest": "^4.0.2",
|
||||||
"webpack-dev-middleware": "^3.7.2",
|
"webpack-dev-middleware": "^3.7.2",
|
||||||
"website-scraper": "^4.2.0",
|
"website-scraper": "^4.2.0"
|
||||||
"dedent": "^0.7.0",
|
|
||||||
"nock": "^13.0.4"
|
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "cross-env NODE_ENV=development ENABLED_LANGUAGES='en,ja' nodemon server.js",
|
"start": "cross-env NODE_ENV=development ENABLED_LANGUAGES='en,ja' nodemon server.js",
|
||||||
|
|||||||
@@ -1,25 +1,26 @@
|
|||||||
const React = require('react')
|
const React = require('react')
|
||||||
const ReactDOM = require('react-dom')
|
const ReactDOM = require('react-dom')
|
||||||
const AceEditor = require('react-ace')
|
const AceEditor = require('react-ace').default
|
||||||
|
|
||||||
require('ace-builds/src-noconflict/mode-java')
|
const hash = require('object-hash')
|
||||||
|
|
||||||
|
require('ace-builds/src-noconflict/mode-javascript')
|
||||||
require('ace-builds/src-noconflict/theme-github')
|
require('ace-builds/src-noconflict/theme-github')
|
||||||
|
|
||||||
const timestamp = Date.now()
|
|
||||||
|
|
||||||
function onChange (newValue) {
|
function onChange (newValue) {
|
||||||
console.log('change', newValue)
|
console.log('change', newValue)
|
||||||
}
|
}
|
||||||
|
|
||||||
const CodeEditor = (props) => {
|
const CodeEditor = (props) => {
|
||||||
return (
|
return (
|
||||||
<div language={props.language}>
|
<div language={props.language} code={props.code}>
|
||||||
<AceEditor
|
<AceEditor
|
||||||
mode={props.language}
|
mode={props.language}
|
||||||
theme='github'
|
theme='github'
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
name={`code-editor-${timestamp}`}
|
name={`code-editor-${hash({ language: props.language, code: props.code })}`}
|
||||||
editorProps={{ $blockScrolling: true }}
|
editorProps={{ $blockScrolling: true }}
|
||||||
|
defaultValue={props.code}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
@@ -32,7 +33,8 @@ if (typeof window === 'undefined') {
|
|||||||
for (const componentContainer of componentContainers) {
|
for (const componentContainer of componentContainers) {
|
||||||
const div = componentContainer.children[0]
|
const div = componentContainer.children[0]
|
||||||
const language = div.getAttribute('language')
|
const language = div.getAttribute('language')
|
||||||
ReactDOM.hydrate(React.createElement(CodeEditor, { language: language }), componentContainer)
|
const code = div.getAttribute('code')
|
||||||
|
ReactDOM.hydrate(React.createElement(CodeEditor, { language: language, code: code }), componentContainer)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user