ngx-editor
Version:
Rich Text Editor for angular using ProseMirror
20 lines • 3.07 kB
JavaScript
import { InputRule } from "prosemirror-inputrules";
export const markInputRule = (regexp, markType, attrs) => {
return new InputRule(regexp, (state, match, start, end) => {
const tr = state.tr;
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);
}
end = start + match[2].length;
}
return tr.addMark(start, end, markType.create(attrs));
});
};
export default markInputRule;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya0lucHV0UnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1lZGl0b3IvaGVscGVycy9tYXJrSW5wdXRSdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUdsRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxNQUFjLEVBQUUsUUFBa0IsRUFBRSxLQUErQixFQUFhLEVBQUU7SUFFOUcsT0FBTyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUV4RCxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFBO1FBRW5CLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ1osTUFBTSxTQUFTLEdBQUcsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDcEQsTUFBTSxPQUFPLEdBQUcsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUE7WUFFM0MsSUFBSSxPQUFPLEdBQUcsR0FBRyxFQUFFO2dCQUNqQixFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQTthQUN4QjtZQUVELElBQUksU0FBUyxHQUFHLEtBQUssRUFBRTtnQkFDckIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUE7YUFDNUI7WUFFRCxHQUFHLEdBQUcsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUE7U0FDOUI7UUFDRCxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDdkQsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUE7QUFFRCxlQUFlLGFBQWEsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElucHV0UnVsZSB9IGZyb20gXCJwcm9zZW1pcnJvci1pbnB1dHJ1bGVzXCJcbmltcG9ydCB7IE1hcmtUeXBlIH0gZnJvbSBcInByb3NlbWlycm9yLW1vZGVsXCJcblxuZXhwb3J0IGNvbnN0IG1hcmtJbnB1dFJ1bGUgPSAocmVnZXhwOiBSZWdFeHAsIG1hcmtUeXBlOiBNYXJrVHlwZSwgYXR0cnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IElucHV0UnVsZSA9PiB7XG5cbiAgcmV0dXJuIG5ldyBJbnB1dFJ1bGUocmVnZXhwLCAoc3RhdGUsIG1hdGNoLCBzdGFydCwgZW5kKSA9PiB7XG5cbiAgICBjb25zdCB0ciA9IHN0YXRlLnRyXG5cbiAgICBpZiAobWF0Y2hbMl0pIHtcbiAgICAgIGNvbnN0IHRleHRTdGFydCA9IHN0YXJ0ICsgbWF0Y2hbMF0uaW5kZXhPZihtYXRjaFsyXSlcbiAgICAgIGNvbnN0IHRleHRFbmQgPSB0ZXh0U3RhcnQgKyBtYXRjaFsyXS5sZW5ndGhcblxuICAgICAgaWYgKHRleHRFbmQgPCBlbmQpIHtcbiAgICAgICAgdHIuZGVsZXRlKHRleHRFbmQsIGVuZClcbiAgICAgIH1cblxuICAgICAgaWYgKHRleHRTdGFydCA+IHN0YXJ0KSB7XG4gICAgICAgIHRyLmRlbGV0ZShzdGFydCwgdGV4dFN0YXJ0KVxuICAgICAgfVxuXG4gICAgICBlbmQgPSBzdGFydCArIG1hdGNoWzJdLmxlbmd0aFxuICAgIH1cbiAgICByZXR1cm4gdHIuYWRkTWFyayhzdGFydCwgZW5kLCBtYXJrVHlwZS5jcmVhdGUoYXR0cnMpKVxuICB9KVxufVxuXG5leHBvcnQgZGVmYXVsdCBtYXJrSW5wdXRSdWxlXG4iXX0=