UNPKG

ngx-editor

Version:

The Rich Text Editor for Angular, Built on ProseMirror

29 lines 4.03 kB
import { TextSelection } from 'prosemirror-state'; import { markApplies } from 'ngx-editor/helpers'; // Ref: https://github.com/ProseMirror/prosemirror-commands/blob/master/src/commands.js export const applyMark = (type, attrs = {}) => { return (state, dispatch) => { const { tr, selection } = state; const { empty, ranges, $from, $to } = selection; if (empty && selection instanceof TextSelection) { const { $cursor } = selection; if (!$cursor || !markApplies(state.doc, ranges, type)) { return false; } tr.addStoredMark(type.create(attrs)); if (!tr.storedMarksSet) { return false; } dispatch?.(tr); } else { tr.addMark($from.pos, $to.pos, type.create(attrs)); if (!tr.docChanged) { return false; } dispatch?.(tr.scrollIntoView()); } return true; }; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHlNYXJrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWVkaXRvci9jb21tYW5kcy9hcHBseU1hcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFlLGFBQWEsRUFBNkIsTUFBTSxtQkFBbUIsQ0FBQztBQUUxRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFakQsdUZBQXVGO0FBQ3ZGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLElBQWMsRUFBRSxRQUE2QixFQUFFLEVBQVcsRUFBRTtJQUNwRixPQUFPLENBQUMsS0FBa0IsRUFBRSxRQUFvQyxFQUFXLEVBQUU7UUFDM0UsTUFBTSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDaEMsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FBQztRQUVoRCxJQUFJLEtBQUssSUFBSSxTQUFTLFlBQVksYUFBYSxFQUFFO1lBQy9DLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxTQUFTLENBQUM7WUFFOUIsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDckQsT0FBTyxLQUFLLENBQUM7YUFDZDtZQUVELEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFO2dCQUN0QixPQUFPLEtBQUssQ0FBQzthQUNkO1lBRUQsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDaEI7YUFBTTtZQUNMLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUVuRCxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRTtnQkFDbEIsT0FBTyxLQUFLLENBQUM7YUFDZDtZQUVELFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1NBQ2pDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNYXJrVHlwZSB9IGZyb20gJ3Byb3NlbWlycm9yLW1vZGVsJztcbmltcG9ydCB7IEVkaXRvclN0YXRlLCBUZXh0U2VsZWN0aW9uLCBUcmFuc2FjdGlvbiwgdHlwZSBDb21tYW5kIH0gZnJvbSAncHJvc2VtaXJyb3Itc3RhdGUnO1xuXG5pbXBvcnQgeyBtYXJrQXBwbGllcyB9IGZyb20gJ25neC1lZGl0b3IvaGVscGVycyc7XG5cbi8vIFJlZjogaHR0cHM6Ly9naXRodWIuY29tL1Byb3NlTWlycm9yL3Byb3NlbWlycm9yLWNvbW1hbmRzL2Jsb2IvbWFzdGVyL3NyYy9jb21tYW5kcy5qc1xuZXhwb3J0IGNvbnN0IGFwcGx5TWFyayA9ICh0eXBlOiBNYXJrVHlwZSwgYXR0cnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSk6IENvbW1hbmQgPT4ge1xuICByZXR1cm4gKHN0YXRlOiBFZGl0b3JTdGF0ZSwgZGlzcGF0Y2g/OiAodHI6IFRyYW5zYWN0aW9uKSA9PiB2b2lkKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgeyB0ciwgc2VsZWN0aW9uIH0gPSBzdGF0ZTtcbiAgICBjb25zdCB7IGVtcHR5LCByYW5nZXMsICRmcm9tLCAkdG8gfSA9IHNlbGVjdGlvbjtcblxuICAgIGlmIChlbXB0eSAmJiBzZWxlY3Rpb24gaW5zdGFuY2VvZiBUZXh0U2VsZWN0aW9uKSB7XG4gICAgICBjb25zdCB7ICRjdXJzb3IgfSA9IHNlbGVjdGlvbjtcblxuICAgICAgaWYgKCEkY3Vyc29yIHx8ICFtYXJrQXBwbGllcyhzdGF0ZS5kb2MsIHJhbmdlcywgdHlwZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICB0ci5hZGRTdG9yZWRNYXJrKHR5cGUuY3JlYXRlKGF0dHJzKSk7XG4gICAgICBpZiAoIXRyLnN0b3JlZE1hcmtzU2V0KSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgZGlzcGF0Y2g/Lih0cik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyLmFkZE1hcmsoJGZyb20ucG9zLCAkdG8ucG9zLCB0eXBlLmNyZWF0ZShhdHRycykpO1xuXG4gICAgICBpZiAoIXRyLmRvY0NoYW5nZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBkaXNwYXRjaD8uKHRyLnNjcm9sbEludG9WaWV3KCkpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xufTtcbiJdfQ==