Skip to content

Commit 8571f56

Browse files
committed
Remove prismjs from dependencies
1 parent 95486c1 commit 8571f56

File tree

4 files changed

+45
-42
lines changed

4 files changed

+45
-42
lines changed

demo/client/components/DemoEditor/index.js

Lines changed: 37 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,19 @@
11
import React, { Component } from 'react';
2-
import Editor from 'draft-js-plugins-editor'; // eslint-disable-line import/no-unresolved
2+
import Editor from 'draft-js-plugins-editor';
3+
import PrismDecorator from 'draft-js-prism';
4+
import Prism from 'prismjs';
5+
import 'prismjs/components/prism-java';
6+
import 'prismjs/components/prism-scala';
7+
import 'prismjs/components/prism-go';
8+
import 'prismjs/components/prism-sql';
9+
import 'prismjs/components/prism-bash';
10+
import 'prismjs/components/prism-c';
11+
import 'prismjs/components/prism-cpp';
12+
import 'prismjs/components/prism-kotlin';
13+
import 'prismjs/components/prism-perl';
14+
import 'prismjs/components/prism-ruby';
15+
import 'prismjs/components/prism-swift';
16+
317
import createMarkdownShortcutsPlugin from 'draft-js-markdown-shortcuts-plugin'; // eslint-disable-line
418
import {
519
// convertToRaw,
@@ -10,26 +24,37 @@ import {
1024
import styles from './styles.css';
1125
// import initialState from './initialState';
1226

13-
const markdownShortcutsPlugin = createMarkdownShortcutsPlugin({
14-
onChangeCheckbox: (e) => {
15-
console.info('Checkbox changed', e); // eslint-disable-line
16-
}
17-
});
27+
const plugins = [createMarkdownShortcutsPlugin()];
1828

19-
const plugins = [markdownShortcutsPlugin];
29+
const decorators = [
30+
new PrismDecorator({
31+
getSyntax(block) {
32+
const language = block.getData().get('language');
33+
if (typeof Prism.languages[language] === 'object') {
34+
return language;
35+
}
36+
return null;
37+
},
38+
render({ type, children }) {
39+
return <span className={`prism-token token ${type}`}>{children}</span>;
40+
}
41+
})
42+
];
2043

2144
// const contentState = ContentState.createFromBlockArray(convertFromRaw(initialState));
2245
const contentState = ContentState.createFromText('');
46+
const initialEditorState = EditorState.createWithContent(contentState);
2347

2448
export default class DemoEditor extends Component {
2549

2650
state = {
27-
editorState: EditorState.createWithContent(contentState)
51+
editorState: initialEditorState
2852
};
2953

3054
componentDidMount = () => {
31-
if (this.editor) {
32-
this.editor.focus();
55+
const { editor } = this;
56+
if (editor) {
57+
setTimeout(editor.focus.bind(editor), 1000);
3358
}
3459
}
3560

@@ -47,7 +72,8 @@ export default class DemoEditor extends Component {
4772
{placeholder}
4873
<div className={styles.editor} onClick={this.focus}>
4974
<Editor
50-
editorState={this.state.editorState}
75+
decorators={decorators}
76+
editorState={editorState}
5177
onChange={this.onChange}
5278
plugins={plugins}
5379
spellCheck

package.json

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@
4646
"css-loader": "^0.26.0",
4747
"css-modules-require-hook": "^4.0.5",
4848
"dirty-chai": "^1.2.2",
49-
"draft-js-plugins-editor": "^2.0.0-beta5",
49+
"draft-js-plugins-editor": "2.0.0-beta7",
50+
"draft-js-prism": "^1.0.3",
5051
"enzyme": "^2.6.0",
5152
"eslint": "^3.11.1",
5253
"eslint-config-airbnb": "^13.0.0",
@@ -62,6 +63,7 @@
6263
"jsdom": "^9.8.3",
6364
"mocha": "^3.2.0",
6465
"postcss-loader": "^1.1.1",
66+
"prismjs": "^1.6.0",
6567
"react-addons-pure-render-mixin": "^15.4.1",
6668
"react-addons-test-utils": "^15.4.1",
6769
"rimraf": "^2.5.4",
@@ -72,12 +74,13 @@
7274
"webpack-dev-middleware": "^1.8.4",
7375
"webpack-hot-middleware": "^2.13.2"
7476
},
77+
"peerDependencies": {
78+
"draft-js-plugins-editor": "2.0.0-beta7"
79+
},
7580
"dependencies": {
7681
"decorate-component-with-props": "^1.0.2",
7782
"draft-js": "^0.9.1",
7883
"draft-js-checkable-list-item": "^2.0.2",
79-
"draft-js-prism": "^1.0.3",
80-
"prismjs": "^1.6.0",
8184
"react": "^15.4.1",
8285
"react-dom": "^15.4.1"
8386
}

src/index.js

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import React from 'react';
22
import {
33
blockRenderMap as checkboxBlockRenderMap, CheckableListItem, CheckableListItemUtils, CHECKABLE_LIST_ITEM
44
} from 'draft-js-checkable-list-item';
5-
import PrismDecorator from 'draft-js-prism';
65

76
import { Map } from 'immutable';
87

@@ -29,15 +28,7 @@ const createMarkdownShortcutsPlugin = (config = {}) => {
2928
}).merge(checkboxBlockRenderMap),
3029
decorators: [
3130
createLinkDecorator(config, store),
32-
createImageDecorator(config, store),
33-
new PrismDecorator({
34-
getSyntax(block) {
35-
return block.getData().get('language');
36-
},
37-
render({ type, children }) {
38-
return <span className={`prism-token token ${type}`}>{children}</span>;
39-
}
40-
})
31+
createImageDecorator(config, store)
4132
],
4233
initialize({ setEditorState, getEditorState }) {
4334
store.setEditorState = setEditorState;

src/modifiers/handleNewCodeBlock.js

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,14 @@
1-
import Prism from 'prismjs';
2-
import 'prismjs/components/prism-java';
3-
import 'prismjs/components/prism-scala';
4-
import 'prismjs/components/prism-go';
5-
import 'prismjs/components/prism-sql';
6-
import 'prismjs/components/prism-bash';
7-
import 'prismjs/components/prism-c';
8-
import 'prismjs/components/prism-cpp';
9-
import 'prismjs/components/prism-kotlin';
10-
import 'prismjs/components/prism-perl';
11-
import 'prismjs/components/prism-ruby';
12-
import 'prismjs/components/prism-swift';
13-
141
import changeCurrentBlockType from './changeCurrentBlockType';
152
import insertEmptyBlock from './insertEmptyBlock';
163

17-
184
const handleNewCodeBlock = (editorState) => {
195
const contentState = editorState.getCurrentContent();
206
const selection = editorState.getSelection();
217
const key = selection.getStartKey();
228
const currentBlock = contentState.getBlockForKey(key);
239
const matchData = /^```([\w-]+)?$/.exec(currentBlock.getText());
2410
if (matchData && selection.getEndOffset() === currentBlock.getLength()) {
25-
let language = matchData[1];
26-
if (typeof Prism.languages[language] !== 'object') {
27-
language = null;
28-
}
11+
const language = matchData[1];
2912
return changeCurrentBlockType(editorState, 'code-block', '', { language });
3013
}
3114
const type = currentBlock.getType();

0 commit comments

Comments
 (0)