ngx-editor
Version:
Rich Text Editor for angular using ProseMirror
22 lines • 3.27 kB
JavaScript
import { InputRule } from 'prosemirror-inputrules';
export const markInputRule = (regexp, markType, attrs) => {
return new InputRule(regexp, (state, match, start, end) => {
const { tr } = state;
const from = start;
let to = end;
if (match[2]) {
const textStart = start + match[0].indexOf(match[2]);
const textEnd = textStart + match[2].length;
if (textEnd < end) {
tr.delete(textEnd, end);
}
if (textStart > start) {
tr.delete(start, textStart);
}
to = start + match[2].length;
}
return tr.addMark(from, to, markType.create(attrs));
});
};
export default markInputRule;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya0lucHV0UnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1lZGl0b3IvaGVscGVycy9tYXJrSW5wdXRSdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUduRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxNQUFjLEVBQUUsUUFBa0IsRUFBRSxLQUErQixFQUFhLEVBQUU7SUFDOUcsT0FBTyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUN4RCxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBRXJCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFFYixJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNaLE1BQU0sU0FBUyxHQUFHLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JELE1BQU0sT0FBTyxHQUFHLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBRTVDLElBQUksT0FBTyxHQUFHLEdBQUcsRUFBRTtnQkFDakIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDekI7WUFFRCxJQUFJLFNBQVMsR0FBRyxLQUFLLEVBQUU7Z0JBQ3JCLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2FBQzdCO1lBRUQsRUFBRSxHQUFHLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1NBQzlCO1FBRUQsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsZUFBZSxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnB1dFJ1bGUgfSBmcm9tICdwcm9zZW1pcnJvci1pbnB1dHJ1bGVzJztcbmltcG9ydCB7IE1hcmtUeXBlIH0gZnJvbSAncHJvc2VtaXJyb3ItbW9kZWwnO1xuXG5leHBvcnQgY29uc3QgbWFya0lucHV0UnVsZSA9IChyZWdleHA6IFJlZ0V4cCwgbWFya1R5cGU6IE1hcmtUeXBlLCBhdHRycz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogSW5wdXRSdWxlID0+IHtcbiAgcmV0dXJuIG5ldyBJbnB1dFJ1bGUocmVnZXhwLCAoc3RhdGUsIG1hdGNoLCBzdGFydCwgZW5kKSA9PiB7XG4gICAgY29uc3QgeyB0ciB9ID0gc3RhdGU7XG5cbiAgICBjb25zdCBmcm9tID0gc3RhcnQ7XG4gICAgbGV0IHRvID0gZW5kO1xuXG4gICAgaWYgKG1hdGNoWzJdKSB7XG4gICAgICBjb25zdCB0ZXh0U3RhcnQgPSBzdGFydCArIG1hdGNoWzBdLmluZGV4T2YobWF0Y2hbMl0pO1xuICAgICAgY29uc3QgdGV4dEVuZCA9IHRleHRTdGFydCArIG1hdGNoWzJdLmxlbmd0aDtcblxuICAgICAgaWYgKHRleHRFbmQgPCBlbmQpIHtcbiAgICAgICAgdHIuZGVsZXRlKHRleHRFbmQsIGVuZCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0ZXh0U3RhcnQgPiBzdGFydCkge1xuICAgICAgICB0ci5kZWxldGUoc3RhcnQsIHRleHRTdGFydCk7XG4gICAgICB9XG5cbiAgICAgIHRvID0gc3RhcnQgKyBtYXRjaFsyXS5sZW5ndGg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRyLmFkZE1hcmsoZnJvbSwgdG8sIG1hcmtUeXBlLmNyZWF0ZShhdHRycykpO1xuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG1hcmtJbnB1dFJ1bGU7XG4iXX0=