UNPKG

ngx-editor

Version:

The Rich Text Editor for Angular, Built on ProseMirror

26 lines 3.85 kB
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; const [fullMatch, , content] = match; const noOfStartSpaces = fullMatch.search(/\S/); if (content) { const textStart = start + fullMatch.indexOf(content); const textEnd = textStart + content.length; if (textEnd < end) { tr.delete(textEnd, end); } if (textStart > start) { tr.delete(start + noOfStartSpaces, textStart); } to = start + content.length + noOfStartSpaces; } tr.addMark(from, to, markType.create(attrs)); tr.removeStoredMark(markType); return tr; }); }; export default markInputRule; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya0lucHV0UnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1lZGl0b3IvaGVscGVycy9tYXJrSW5wdXRSdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUduRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxNQUFjLEVBQUUsUUFBa0IsRUFBRSxLQUErQixFQUFhLEVBQUU7SUFDOUcsT0FBTyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUN4RCxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBRXJCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFFYixNQUFNLENBQUMsU0FBUyxFQUFFLEFBQUQsRUFBRyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDckMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUvQyxJQUFJLE9BQU8sRUFBRTtZQUNYLE1BQU0sU0FBUyxHQUFHLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3JELE1BQU0sT0FBTyxHQUFHLFNBQVMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBRTNDLElBQUksT0FBTyxHQUFHLEdBQUcsRUFBRTtnQkFDakIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDekI7WUFFRCxJQUFJLFNBQVMsR0FBRyxLQUFLLEVBQUU7Z0JBQ3JCLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLGVBQWUsRUFBRSxTQUFTLENBQUMsQ0FBQzthQUMvQztZQUVELEVBQUUsR0FBRyxLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUM7U0FDL0M7UUFFRCxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzdDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU5QixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsZUFBZSxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnB1dFJ1bGUgfSBmcm9tICdwcm9zZW1pcnJvci1pbnB1dHJ1bGVzJztcbmltcG9ydCB7IE1hcmtUeXBlIH0gZnJvbSAncHJvc2VtaXJyb3ItbW9kZWwnO1xuXG5leHBvcnQgY29uc3QgbWFya0lucHV0UnVsZSA9IChyZWdleHA6IFJlZ0V4cCwgbWFya1R5cGU6IE1hcmtUeXBlLCBhdHRycz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogSW5wdXRSdWxlID0+IHtcbiAgcmV0dXJuIG5ldyBJbnB1dFJ1bGUocmVnZXhwLCAoc3RhdGUsIG1hdGNoLCBzdGFydCwgZW5kKSA9PiB7XG4gICAgY29uc3QgeyB0ciB9ID0gc3RhdGU7XG5cbiAgICBjb25zdCBmcm9tID0gc3RhcnQ7XG4gICAgbGV0IHRvID0gZW5kO1xuXG4gICAgY29uc3QgW2Z1bGxNYXRjaCwgLCBjb250ZW50XSA9IG1hdGNoO1xuICAgIGNvbnN0IG5vT2ZTdGFydFNwYWNlcyA9IGZ1bGxNYXRjaC5zZWFyY2goL1xcUy8pO1xuXG4gICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgIGNvbnN0IHRleHRTdGFydCA9IHN0YXJ0ICsgZnVsbE1hdGNoLmluZGV4T2YoY29udGVudCk7XG4gICAgICBjb25zdCB0ZXh0RW5kID0gdGV4dFN0YXJ0ICsgY29udGVudC5sZW5ndGg7XG5cbiAgICAgIGlmICh0ZXh0RW5kIDwgZW5kKSB7XG4gICAgICAgIHRyLmRlbGV0ZSh0ZXh0RW5kLCBlbmQpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGV4dFN0YXJ0ID4gc3RhcnQpIHtcbiAgICAgICAgdHIuZGVsZXRlKHN0YXJ0ICsgbm9PZlN0YXJ0U3BhY2VzLCB0ZXh0U3RhcnQpO1xuICAgICAgfVxuXG4gICAgICB0byA9IHN0YXJ0ICsgY29udGVudC5sZW5ndGggKyBub09mU3RhcnRTcGFjZXM7XG4gICAgfVxuXG4gICAgdHIuYWRkTWFyayhmcm9tLCB0bywgbWFya1R5cGUuY3JlYXRlKGF0dHJzKSk7XG4gICAgdHIucmVtb3ZlU3RvcmVkTWFyayhtYXJrVHlwZSk7XG5cbiAgICByZXR1cm4gdHI7XG4gIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbWFya0lucHV0UnVsZTtcbiJdfQ==