ngx-editor
Version:
Rich Text Editor for angular using ProseMirror
12 lines • 2.44 kB
JavaScript
import { InputRule } from 'prosemirror-inputrules';
// automatically convert text to link while typing
export const autoLink = () => {
const urlRegEx = /(?:https?:\/\/)?[\w-]+(?:\.[\w-]+)+\.?(?:\d+)?(?:\/\S*)?$/;
return new InputRule(urlRegEx, (state, match, start, end) => {
const { schema } = state;
const tr = state.tr.insertText(match[0], start, end); // Replace existing text with entire match
const mark = schema.marks.link.create({ href: match[0] });
return tr.addMark(start, start + match[0].length, mark);
});
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1saW5rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWVkaXRvci9pbnB1dC1ydWxlcy9hdXRvLWxpbmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRW5ELGtEQUFrRDtBQUNsRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsR0FBYyxFQUFFO0lBQ3RDLE1BQU0sUUFBUSxHQUFHLDJEQUEyRCxDQUFDO0lBRTdFLE9BQU8sSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDMUQsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQztRQUV6QixNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsMENBQTBDO1FBQ2hHLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTFELE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnB1dFJ1bGUgfSBmcm9tICdwcm9zZW1pcnJvci1pbnB1dHJ1bGVzJztcblxuLy8gYXV0b21hdGljYWxseSBjb252ZXJ0IHRleHQgdG8gbGluayB3aGlsZSB0eXBpbmdcbmV4cG9ydCBjb25zdCBhdXRvTGluayA9ICgpOiBJbnB1dFJ1bGUgPT4ge1xuICBjb25zdCB1cmxSZWdFeCA9IC8oPzpodHRwcz86XFwvXFwvKT9bXFx3LV0rKD86XFwuW1xcdy1dKykrXFwuPyg/OlxcZCspPyg/OlxcL1xcUyopPyQvO1xuXG4gIHJldHVybiBuZXcgSW5wdXRSdWxlKHVybFJlZ0V4LCAoc3RhdGUsIG1hdGNoLCBzdGFydCwgZW5kKSA9PiB7XG4gICAgY29uc3QgeyBzY2hlbWEgfSA9IHN0YXRlO1xuXG4gICAgY29uc3QgdHIgPSBzdGF0ZS50ci5pbnNlcnRUZXh0KG1hdGNoWzBdLCBzdGFydCwgZW5kKTsgLy8gUmVwbGFjZSBleGlzdGluZyB0ZXh0IHdpdGggZW50aXJlIG1hdGNoXG4gICAgY29uc3QgbWFyayA9IHNjaGVtYS5tYXJrcy5saW5rLmNyZWF0ZSh7IGhyZWY6IG1hdGNoWzBdIH0pO1xuXG4gICAgcmV0dXJuIHRyLmFkZE1hcmsoc3RhcnQsIHN0YXJ0ICsgbWF0Y2hbMF0ubGVuZ3RoLCBtYXJrKTtcbiAgfSk7XG59O1xuIl19