Skip to content

Commit 409ceb1

Browse files
author
Sal Niro
committed
#1 - 0.0.2
1 parent 3150e52 commit 409ceb1

File tree

9 files changed

+154
-41
lines changed

9 files changed

+154
-41
lines changed

.gitignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
11
.idea
2-
node_modules
3-
demo/bundle.js
2+
node_modules

demo/index.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from 'react';
22
import {render} from 'react-dom';
3-
import CodeMirror from '../index.jsx';
3+
import CodeMirror from '../src/react-codemirror2.jsx';
44

55
require('./index.scss');
66

demo/server.js

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,30 @@
1-
let express = require('express');
2-
let app = express();
1+
import express from 'express';
2+
import webpack from 'webpack';
3+
import path from 'path';
4+
import config from './webpack.config.js';
5+
import open from 'open';
36

4-
app.set('port', 5000);
7+
const app = express();
8+
const compiler = webpack(config);
59

6-
app.use(express.static('.'));
10+
app.set('port', 8000);
711

8-
app.use(function (req, res, next) {
9-
if (req.path.substr(-1) === '/' && req.path.length > 1) {
10-
let query = req.url.slice(req.path.length);
11-
res.redirect(301, req.path.slice(0, -1) + query);
12-
} else {
13-
next();
14-
}
15-
});
12+
app.use(require('webpack-dev-middleware')(compiler, {
13+
noInfo: true,
14+
publicPath: config.output.publicPath
15+
}));
1616

17-
app.all('/*', function (req, res, next) {
18-
res.sendFile(`${__dirname}/index.html`)
17+
app.use(require('webpack-hot-middleware')(compiler));
18+
19+
app.all('/*', function (req, res) {
20+
res.sendFile(path.join(__dirname, './index.html'));
1921
});
2022

21-
app.listen(app.get('port'), function () {
22-
console.log(`react-codemirror2 demo listening on port ${app.get('port')}`);
23+
app.listen(app.get('port'), function (err) {
24+
if (err) {
25+
console.log(err);
26+
} else {
27+
console.log(`react-codemirror2 demo listening on port ${app.get('port')}`);
28+
open(`http://localhost:${app.get('port')}`);
29+
}
2330
});

demo/webpack.config.js

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,24 @@
1-
let path = require('path');
2-
let context = path.resolve(__dirname, '..');
1+
import webpack from 'webpack';
2+
import path from 'path';
33

4-
let config = {
5-
6-
entry: path.normalize(`${context}/demo/index.jsx`),
4+
export default {
5+
devtool: 'eval',
6+
entry: [
7+
'webpack-hot-middleware/client?reload=true',
8+
path.resolve(__dirname, 'index.jsx')
9+
],
10+
target: 'web',
711
output: {
8-
path: path.normalize(`${context}/demo/`),
12+
path: __dirname + '/demo',
13+
publicPath: '/',
914
filename: 'bundle.js'
1015
},
16+
devServer: {
17+
contentBase: path.resolve(__dirname, 'demo')
18+
},
19+
plugins: [
20+
new webpack.HotModuleReplacementPlugin()
21+
],
1122
module: {
1223
rules: [{
1324
test: /\.jsx?/,
@@ -25,8 +36,12 @@ let config = {
2536
}, {
2637
loader: 'sass-loader'
2738
}]
39+
}, {
40+
test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
41+
exclude: /(node_modules)/,
42+
use: [{
43+
loader: 'file-loader'
44+
}]
2845
}]
29-
}
46+
},
3047
};
31-
32-
module.exports = config;

index.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import React from 'react';
2+
let codemirror = require('codemirror');
3+
4+
export default class CodeMirror extends React.Component {
5+
6+
componentDidMount() {
7+
8+
this.editor = codemirror(this.ref);
9+
this.editor.on('change', () => this.props.onChange(this.editor.getValue()));
10+
11+
this.hydrate(this.props);
12+
}
13+
14+
componentWillReceiveProps(nextProps) {
15+
16+
this.hydrate(nextProps);
17+
}
18+
19+
hydrate(props) {
20+
21+
Object.keys(props.options || {}).forEach(key => this.editor.setOption(key, props.options[key]));
22+
this.editor.setValue(props.value || '');
23+
}
24+
25+
render() {
26+
return React.createElement('div', { ref: self => this.ref = self });
27+
}
28+
}

package-lock.json

Lines changed: 30 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
{
22
"name": "react-codemirror2",
3-
"version": "0.0.1",
3+
"version": "0.0.2",
44
"description": "a tiny react codemirror component wrapper",
55
"main": "index.js",
66
"scripts": {
7-
"prestart": "npm run webpack",
8-
"start": "cd demo && node server.js",
9-
"webpack": "webpack --config ./demo/webpack.config.js"
7+
"start": "babel-node demo/server.js",
8+
"build": "node scripts/build.js",
9+
"prepublish": "npm run build"
1010
},
1111
"repository": {
1212
"type": "git",
@@ -18,23 +18,36 @@
1818
"url": "https://github.com/scniro/react-codemirror2/issues"
1919
},
2020
"homepage": "https://github.com/scniro/react-codemirror2#readme",
21+
"keywords": [
22+
"react",
23+
"codemirror",
24+
"editor",
25+
"code"
26+
],
2127
"dependencies": {
22-
"codemirror": "^5.26.0",
23-
"react": "^15.5.4"
28+
"codemirror": "5.26.0"
29+
},
30+
"peerDependencies": {
31+
"react": ">=15.5 <16"
2432
},
2533
"devDependencies": {
2634
"babel-cli": "6.24.1",
2735
"babel-core": "6.24.1",
2836
"babel-loader": "7.0.0",
37+
"babel-plugin-transform-react-jsx": "^6.24.1",
2938
"babel-preset-es2015": "6.24.1",
3039
"babel-preset-react": "6.24.1",
3140
"babel-register": "6.24.1",
32-
"css-loader": "^0.28.4",
33-
"express": "^4.15.3",
34-
"node-sass": "^4.5.3",
35-
"react-dom": "^15.5.4",
36-
"sass-loader": "^6.0.5",
37-
"style-loader": "^0.18.1",
38-
"webpack": "^2.6.1"
41+
"css-loader": "0.28.4",
42+
"express": "4.15.3",
43+
"node-sass": "4.5.3",
44+
"open": "0.0.5",
45+
"react": "15.5.4",
46+
"react-dom": "15.5.4",
47+
"sass-loader": "6.0.5",
48+
"style-loader": "0.18.1",
49+
"webpack": "2.6.1",
50+
"webpack-dev-middleware": "1.10.2",
51+
"webpack-hot-middleware": "2.18.0"
3952
}
4053
}

scripts/build.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
const fs = require('fs');
2+
const babel = require('babel-core');
3+
const path = require('path');
4+
const root = path.resolve(__dirname, '..');
5+
const {Transform} = require('stream');
6+
7+
const transpile = new Transform({
8+
transform(chunk, encoding, cb) {
9+
10+
let transformed = babel.transform(chunk.toString(), {plugins: ['transform-react-jsx']})
11+
12+
this.push(transformed.code)
13+
cb();
14+
}
15+
});
16+
17+
let rs = fs.createReadStream(`${root}/src/react-codemirror2.jsx`);
18+
let ws = fs.createWriteStream(`${root}/index.js`);
19+
20+
rs.pipe(transpile).pipe(ws);
21+
File renamed without changes.

0 commit comments

Comments
 (0)