UNPKG

@zodiac-ui/editor

Version:

A rich text editor for Angular based on `@atlaskit/editor-core`.

44 lines 7.96 kB
import { inputRules } from 'prosemirror-inputrules'; import { Fragment } from 'prosemirror-model'; import { createInputRule, leafNodeReplacementCharacter } from "../../../lib/utils/input-rules"; export const createHorizontalRule = (state, start, end, inputMethod) => { if (!state.selection.empty) { return null; } const { $from } = state.selection; const $afterRule = state.doc.resolve($from.after()); const { paragraph } = state.schema.nodes; if ($afterRule.nodeAfter && $afterRule.nodeAfter.type === paragraph) { // if there's already a paragraph after, just insert the rule into // the current paragraph end = end + 1; } const tr = state.tr.replaceWith(start, end, Fragment.from(state.schema.nodes.rule.createChecked())); return tr; }; const createHorizontalRuleAutoformat = (state, start, end) => { return createHorizontalRule(state, start, end, "autoformatting" /* FORMATTING */); }; const ɵ0 = createHorizontalRuleAutoformat; export function horizontalRuleInputRulePlugin(schema) { const rules = []; if (schema.nodes.rule) { // '---' and '***' for hr rules.push( // -1, so that it also replaces the container paragraph createInputRule(/^(\-\-\-|\*\*\*)$/, (state, match, start, end) => createHorizontalRuleAutoformat(state, start - 1, end), true)); // '---' and '***' after shift+enter for hr rules.push(createInputRule(new RegExp(`${leafNodeReplacementCharacter}(\\-\\-\\-|\\*\\*\\*)`), (state, match, start, end) => { const { hardBreak } = state.schema.nodes; if (state.doc.resolve(start).nodeAfter.type !== hardBreak) { return null; } return createHorizontalRuleAutoformat(state, start, end); }, true)); } if (rules.length !== 0) { return inputRules({ rules }); } } export { ɵ0 }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcnVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B6b2RpYWMtdWkvZWRpdG9yLyIsInNvdXJjZXMiOlsicGx1Z2lucy9ob3Jpem9udGFsLXJ1bGUvcG0tcGx1Z2lucy9pbnB1dC1ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsUUFBUSxFQUFVLE1BQU0sbUJBQW1CLENBQUM7QUFHckQsT0FBTyxFQUFFLGVBQWUsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBRTlGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQ2xDLEtBQWtCLEVBQ2xCLEtBQUssRUFDTCxHQUFHLEVBQ0gsV0FLeUIsRUFDekIsRUFBRTtJQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRTtRQUMxQixPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFDbEMsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDcEQsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBRXpDLElBQUksVUFBVSxDQUFDLFNBQVMsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7UUFDbkUsa0VBQWtFO1FBQ2xFLHdCQUF3QjtRQUN4QixHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztLQUNmO0lBRUQsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQzdCLEtBQUssRUFDTCxHQUFHLEVBQ0gsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FDdkQsQ0FBQztJQUVGLE9BQU8sRUFBRSxDQUFBO0FBQ1gsQ0FBQyxDQUFDO0FBRUYsTUFBTSw4QkFBOEIsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7SUFDM0QsT0FBTyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsb0NBQTBCLENBQUM7QUFDMUUsQ0FBQyxDQUFDOztBQUVGLE1BQU0sVUFBVSw2QkFBNkIsQ0FBQyxNQUFjO0lBQzFELE1BQU0sS0FBSyxHQUFxQixFQUFFLENBQUM7SUFFbkMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtRQUNyQix5QkFBeUI7UUFDekIsS0FBSyxDQUFDLElBQUk7UUFDUix1REFBdUQ7UUFDdkQsZUFBZSxDQUNiLG1CQUFtQixFQUNuQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQzNCLDhCQUE4QixDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUN2RCxJQUFJLENBQ0wsQ0FDRixDQUFDO1FBRUYsMkNBQTJDO1FBQzNDLEtBQUssQ0FBQyxJQUFJLENBQ1IsZUFBZSxDQUNiLElBQUksTUFBTSxDQUFDLEdBQUcsNEJBQTRCLHVCQUF1QixDQUFDLEVBQ2xFLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDM0IsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQ3pDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7Z0JBQ3pELE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFDRCxPQUFPLDhCQUE4QixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDM0QsQ0FBQyxFQUNELElBQUksQ0FDTCxDQUNGLENBQUM7S0FDSDtJQUVELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDdEIsT0FBTyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQzlCO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElucHV0UnVsZSwgaW5wdXRSdWxlcyB9IGZyb20gJ3Byb3NlbWlycm9yLWlucHV0cnVsZXMnO1xyXG5pbXBvcnQgeyBGcmFnbWVudCwgU2NoZW1hIH0gZnJvbSAncHJvc2VtaXJyb3ItbW9kZWwnO1xyXG5pbXBvcnQgeyBQbHVnaW4sIEVkaXRvclN0YXRlIH0gZnJvbSAncHJvc2VtaXJyb3Itc3RhdGUnO1xyXG5pbXBvcnQgeyBJTlBVVF9NRVRIT0QgfSBmcm9tIFwiLi4vLi4vYmxvY2stdHlwZS9rZXltYXBcIlxyXG5pbXBvcnQgeyBjcmVhdGVJbnB1dFJ1bGUsIGxlYWZOb2RlUmVwbGFjZW1lbnRDaGFyYWN0ZXIgfSBmcm9tIFwiLi4vLi4vLi4vbGliL3V0aWxzL2lucHV0LXJ1bGVzXCJcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVIb3Jpem9udGFsUnVsZSA9IChcclxuICBzdGF0ZTogRWRpdG9yU3RhdGUsXHJcbiAgc3RhcnQsXHJcbiAgZW5kLFxyXG4gIGlucHV0TWV0aG9kOlxyXG4gICAgfCBJTlBVVF9NRVRIT0QuUVVJQ0tfSU5TRVJUXHJcbiAgICB8IElOUFVUX01FVEhPRC5UT09MQkFSXHJcbiAgICB8IElOUFVUX01FVEhPRC5JTlNFUlRfTUVOVVxyXG4gICAgfCBJTlBVVF9NRVRIT0QuRk9STUFUVElOR1xyXG4gICAgfCBJTlBVVF9NRVRIT0QuU0hPUlRDVVQsXHJcbikgPT4ge1xyXG4gIGlmICghc3RhdGUuc2VsZWN0aW9uLmVtcHR5KSB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGNvbnN0IHsgJGZyb20gfSA9IHN0YXRlLnNlbGVjdGlvbjtcclxuICBjb25zdCAkYWZ0ZXJSdWxlID0gc3RhdGUuZG9jLnJlc29sdmUoJGZyb20uYWZ0ZXIoKSk7XHJcbiAgY29uc3QgeyBwYXJhZ3JhcGggfSA9IHN0YXRlLnNjaGVtYS5ub2RlcztcclxuXHJcbiAgaWYgKCRhZnRlclJ1bGUubm9kZUFmdGVyICYmICRhZnRlclJ1bGUubm9kZUFmdGVyLnR5cGUgPT09IHBhcmFncmFwaCkge1xyXG4gICAgLy8gaWYgdGhlcmUncyBhbHJlYWR5IGEgcGFyYWdyYXBoIGFmdGVyLCBqdXN0IGluc2VydCB0aGUgcnVsZSBpbnRvXHJcbiAgICAvLyB0aGUgY3VycmVudCBwYXJhZ3JhcGhcclxuICAgIGVuZCA9IGVuZCArIDE7XHJcbiAgfVxyXG5cclxuICBjb25zdCB0ciA9IHN0YXRlLnRyLnJlcGxhY2VXaXRoKFxyXG4gICAgc3RhcnQsXHJcbiAgICBlbmQsXHJcbiAgICBGcmFnbWVudC5mcm9tKHN0YXRlLnNjaGVtYS5ub2Rlcy5ydWxlLmNyZWF0ZUNoZWNrZWQoKSksXHJcbiAgKTtcclxuXHJcbiAgcmV0dXJuIHRyXHJcbn07XHJcblxyXG5jb25zdCBjcmVhdGVIb3Jpem9udGFsUnVsZUF1dG9mb3JtYXQgPSAoc3RhdGUsIHN0YXJ0LCBlbmQpID0+IHtcclxuICByZXR1cm4gY3JlYXRlSG9yaXpvbnRhbFJ1bGUoc3RhdGUsIHN0YXJ0LCBlbmQsIElOUFVUX01FVEhPRC5GT1JNQVRUSU5HKTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBob3Jpem9udGFsUnVsZUlucHV0UnVsZVBsdWdpbihzY2hlbWE6IFNjaGVtYSk6IFBsdWdpbiB8IHVuZGVmaW5lZCB7XHJcbiAgY29uc3QgcnVsZXM6IEFycmF5PElucHV0UnVsZT4gPSBbXTtcclxuXHJcbiAgaWYgKHNjaGVtYS5ub2Rlcy5ydWxlKSB7XHJcbiAgICAvLyAnLS0tJyBhbmQgJyoqKicgZm9yIGhyXHJcbiAgICBydWxlcy5wdXNoKFxyXG4gICAgICAvLyAtMSwgc28gdGhhdCBpdCBhbHNvIHJlcGxhY2VzIHRoZSBjb250YWluZXIgcGFyYWdyYXBoXHJcbiAgICAgIGNyZWF0ZUlucHV0UnVsZShcclxuICAgICAgICAvXihcXC1cXC1cXC18XFwqXFwqXFwqKSQvLFxyXG4gICAgICAgIChzdGF0ZSwgbWF0Y2gsIHN0YXJ0LCBlbmQpID0+XHJcbiAgICAgICAgICBjcmVhdGVIb3Jpem9udGFsUnVsZUF1dG9mb3JtYXQoc3RhdGUsIHN0YXJ0IC0gMSwgZW5kKSxcclxuICAgICAgICB0cnVlLFxyXG4gICAgICApLFxyXG4gICAgKTtcclxuXHJcbiAgICAvLyAnLS0tJyBhbmQgJyoqKicgYWZ0ZXIgc2hpZnQrZW50ZXIgZm9yIGhyXHJcbiAgICBydWxlcy5wdXNoKFxyXG4gICAgICBjcmVhdGVJbnB1dFJ1bGUoXHJcbiAgICAgICAgbmV3IFJlZ0V4cChgJHtsZWFmTm9kZVJlcGxhY2VtZW50Q2hhcmFjdGVyfShcXFxcLVxcXFwtXFxcXC18XFxcXCpcXFxcKlxcXFwqKWApLFxyXG4gICAgICAgIChzdGF0ZSwgbWF0Y2gsIHN0YXJ0LCBlbmQpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHsgaGFyZEJyZWFrIH0gPSBzdGF0ZS5zY2hlbWEubm9kZXM7XHJcbiAgICAgICAgICBpZiAoc3RhdGUuZG9jLnJlc29sdmUoc3RhcnQpLm5vZGVBZnRlci50eXBlICE9PSBoYXJkQnJlYWspIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gY3JlYXRlSG9yaXpvbnRhbFJ1bGVBdXRvZm9ybWF0KHN0YXRlLCBzdGFydCwgZW5kKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHRydWUsXHJcbiAgICAgICksXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaWYgKHJ1bGVzLmxlbmd0aCAhPT0gMCkge1xyXG4gICAgcmV0dXJuIGlucHV0UnVsZXMoeyBydWxlcyB9KTtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ==