Passed
Push — master ( b893da...e7ac93 )
by Andreas
03:30 queued 15s
created

inputrules.js ➔ buildInputRules   A

Complexity

Conditions 2

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 5
dl 0
loc 7
rs 10
c 0
b 0
f 0
1
import { inputRules, InputRule } from 'prosemirror-inputrules';
2
import { TextSelection } from 'prosemirror-state';
3
import SmileyConf from '../../custom/SmileyConf';
4
5
/**
6
 * Smiley input rule
7
 *
8
 * @returns {InputRule}
9
 */
10
export function smileyRule() {
11
    return new InputRule(SmileyConf.getRegex(), ((state, match) => {
12
        const { tr } = state;
13
        const syntax = match[1];
14
        const icon = SmileyConf.getSmileys()[syntax];
15
16
        tr.setSelection(TextSelection.create(tr.doc, tr.selection.from, tr.selection.from - syntax.length + 1));
17
        return tr.replaceSelectionWith(state.schema.nodes.smiley.create({ icon, syntax }));
18
    }));
19
}
20
21
/**
22
 * Rules for transforming user input
23
 *
24
 * @param {prosemirrorModel.Schema} schema
25
 * @returns {Plugin}
26
 */
27
export default function buildInputRules(schema) {
28
    const rules = [];
29
    if (schema.nodes.smiley) {
30
        rules.push(smileyRule());
31
    }
32
    return inputRules({ rules });
33
}
34