Skip to content

Commit 798b9a7

Browse files
committed
Create prism plugin
1 parent eda57f7 commit 798b9a7

File tree

2 files changed

+38
-32
lines changed

2 files changed

+38
-32
lines changed

demo/client/components/DemoEditor/index.js

Lines changed: 4 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,5 @@
11
import React, { Component } from 'react';
22
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';
163

174
import createMarkdownShortcutsPlugin from 'draft-js-markdown-shortcuts-plugin'; // eslint-disable-line
185
import Draft, {
@@ -22,29 +9,15 @@ import Draft, {
229
EditorState,
2310
} from 'draft-js';
2411
import styles from './styles.css';
25-
// import initialState from './initialState';
12+
import prismPlugin from '../../plugins/prism';
2613

2714
window.Draft = Draft;
2815

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

47-
// const contentState = ContentState.createFromBlockArray(convertFromRaw(initialState));
4821
const contentState = ContentState.createFromText('');
4922
const initialEditorState = EditorState.createWithContent(contentState);
5023

@@ -78,7 +51,6 @@ export default class DemoEditor extends Component {
7851
{placeholder}
7952
<div className={styles.editor} onClick={this.focus}>
8053
<Editor
81-
decorators={decorators}
8254
editorState={editorState}
8355
onChange={this.onChange}
8456
plugins={plugins}

demo/client/plugins/prism.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import React from 'react';
2+
import Prism from 'prismjs';
3+
import PrismDecorator from 'draft-js-prism';
4+
import 'prismjs/components/prism-java';
5+
import 'prismjs/components/prism-scala';
6+
import 'prismjs/components/prism-go';
7+
import 'prismjs/components/prism-sql';
8+
import 'prismjs/components/prism-bash';
9+
import 'prismjs/components/prism-c';
10+
import 'prismjs/components/prism-cpp';
11+
import 'prismjs/components/prism-kotlin';
12+
import 'prismjs/components/prism-perl';
13+
import 'prismjs/components/prism-ruby';
14+
import 'prismjs/components/prism-swift';
15+
16+
const prismPlugin = {
17+
decorators: [
18+
new PrismDecorator({
19+
prism: Prism,
20+
getSyntax(block) {
21+
const language = block.getData().get('language');
22+
if (typeof Prism.languages[language] === 'object') {
23+
return language;
24+
}
25+
return null;
26+
},
27+
render({ type, children }) {
28+
return <span className={`prism-token token ${type}`}>{children}</span>;
29+
}
30+
})
31+
]
32+
};
33+
34+
export default prismPlugin;

0 commit comments

Comments
 (0)