Skip to content

Commit 0a84a48

Browse files
committed
Add CodeExample component.
1 parent 0503d40 commit 0a84a48

File tree

5 files changed

+141
-4
lines changed

5 files changed

+141
-4
lines changed

docs/src/App.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import React from 'react';
22
import EditorPlayground from './EditorPlayground';
3+
import CodeExample from '../../src/CodeExample';
34

45
if (typeof window !== 'undefined') {
56
require('./assets/root.less');
@@ -32,6 +33,9 @@ class Application extends React.Component {
3233
<EditorPlayground
3334
theme="monokai"
3435
initialCode={example}/>
36+
<CodeExample
37+
className="cm-s-monokai"
38+
codeText={example}/>
3539
</div>
3640
</div>
3741
);

docs/src/assets/root.less

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,10 @@ body {
99
line-height: 24px;
1010
}
1111

12-
pre {
13-
background-color: #f7f7f9;
12+
.code-example {
1413
border: 1px solid #e1e1e8;
15-
padding: 9px 14px;
14+
padding: 0 15px 30px 20px;
1615
font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
17-
font-size: 90%;
1816
.border-radius(4px);
1917
}
2018

@@ -30,6 +28,10 @@ pre {
3028

3129
.content {
3230
padding: 20px 60px;
31+
32+
.editor-body {
33+
margin: 0 0 40px 0;
34+
}
3335
}
3436

3537
.playground {

lib/CodeExample.js

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
'use strict';
2+
3+
Object.defineProperty(exports, '__esModule', {
4+
value: true
5+
});
6+
7+
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
8+
9+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
10+
11+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
12+
13+
function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }
14+
15+
var _react = require('react');
16+
17+
var _react2 = _interopRequireDefault(_react);
18+
19+
var _classnames = require('classnames');
20+
21+
var _classnames2 = _interopRequireDefault(_classnames);
22+
23+
var _CodeMirrorSettings = require('./CodeMirrorSettings');
24+
25+
if (_CodeMirrorSettings.IS_BROWSER) {
26+
require('codemirror/addon/runmode/runmode');
27+
}
28+
29+
var propTypes = {
30+
codeText: _react2['default'].PropTypes.string.isRequired,
31+
className: _react2['default'].PropTypes.string,
32+
mode: _react2['default'].PropTypes.string
33+
};
34+
35+
var defaultProps = {
36+
mode: 'javascript'
37+
};
38+
39+
var CodeExample = (function (_React$Component) {
40+
function CodeExample() {
41+
_classCallCheck(this, CodeExample);
42+
43+
if (_React$Component != null) {
44+
_React$Component.apply(this, arguments);
45+
}
46+
}
47+
48+
_inherits(CodeExample, _React$Component);
49+
50+
_createClass(CodeExample, [{
51+
key: 'componentDidMount',
52+
value: function componentDidMount() {
53+
if (_CodeMirrorSettings.CodeMirror === undefined) {
54+
return;
55+
}
56+
57+
_CodeMirrorSettings.CodeMirror.runMode(this.props.codeText, this.props.mode, _react2['default'].findDOMNode(this).children[0]);
58+
}
59+
}, {
60+
key: 'render',
61+
value: function render() {
62+
var classes = _classnames2['default']('code-example', 'CodeMirror', this.props.className);
63+
return _react2['default'].createElement(
64+
'pre',
65+
{ className: classes },
66+
_react2['default'].createElement(
67+
'code',
68+
null,
69+
this.props.codeText
70+
)
71+
);
72+
}
73+
}]);
74+
75+
return CodeExample;
76+
})(_react2['default'].Component);
77+
78+
CodeExample.defaultProps = defaultProps;
79+
CodeExample.propTypes = propTypes;
80+
81+
exports['default'] = CodeExample;
82+
module.exports = exports['default'];

lib/CodeMirrorEditor.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ var CodeMirrorEditor = (function (_React$Component) {
4949
lineWrapping: false,
5050
matchBrackets: true,
5151
tabSize: 2,
52+
styleSelectedText: true,
5253
theme: this.props.theme,
5354
readOnly: this.props.readOnly
5455
});

src/CodeExample.js

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import React from 'react';
2+
import classNames from 'classnames';
3+
import {CodeMirror, IS_BROWSER} from './CodeMirrorSettings';
4+
5+
if (IS_BROWSER) {
6+
require('codemirror/addon/runmode/runmode');
7+
}
8+
9+
const propTypes = {
10+
codeText: React.PropTypes.string.isRequired,
11+
className: React.PropTypes.string,
12+
mode: React.PropTypes.string
13+
};
14+
15+
const defaultProps = {
16+
mode: 'javascript'
17+
};
18+
19+
class CodeExample extends React.Component {
20+
21+
componentDidMount() {
22+
if (CodeMirror === undefined) {
23+
return;
24+
}
25+
26+
CodeMirror.runMode(
27+
this.props.codeText,
28+
this.props.mode,
29+
React.findDOMNode(this).children[0]
30+
);
31+
}
32+
33+
render() {
34+
let classes = classNames('code-example', 'CodeMirror', this.props.className);
35+
return (
36+
<pre className={classes}>
37+
<code>
38+
{this.props.codeText}
39+
</code>
40+
</pre>
41+
);
42+
}
43+
}
44+
45+
CodeExample.defaultProps = defaultProps;
46+
CodeExample.propTypes = propTypes;
47+
48+
export default CodeExample;

0 commit comments

Comments
 (0)