UNPKG

ngx-editor

Version:

The Rich Text Editor for Angular, Built on ProseMirror

34 lines 4.53 kB
import { TextSelection } from 'prosemirror-state'; import { markApplies } from 'ngx-editor/helpers'; export const removeMark = (type) => { return (state, dispatch) => { const { tr, selection, storedMarks, doc } = state; const { empty, ranges } = selection; if (empty && selection instanceof TextSelection) { const { $cursor } = selection; if (!$cursor || !markApplies(state.doc, ranges, type)) { return false; } if (type.isInSet(storedMarks || $cursor.marks())) { tr.removeStoredMark(type); dispatch?.(tr); return true; } } else { for (const range of ranges) { const { $from, $to } = range; const hasMark = doc.rangeHasMark($from.pos, $to.pos, type); if (hasMark) { tr.removeMark($from.pos, $to.pos, type); } } if (!tr.docChanged) { return false; } dispatch?.(tr.scrollIntoView()); } return false; }; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlTWFyay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1lZGl0b3IvY29tbWFuZHMvcmVtb3ZlTWFyay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWUsYUFBYSxFQUE2QixNQUFNLG1CQUFtQixDQUFDO0FBRTFGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFjLEVBQVcsRUFBRTtJQUNwRCxPQUFPLENBQUMsS0FBa0IsRUFBRSxRQUFvQyxFQUFXLEVBQUU7UUFDM0UsTUFBTSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUNsRCxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQztRQUVwQyxJQUFJLEtBQUssSUFBSSxTQUFTLFlBQVksYUFBYSxFQUFFO1lBQy9DLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxTQUFTLENBQUM7WUFFOUIsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDckQsT0FBTyxLQUFLLENBQUM7YUFDZDtZQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUU7Z0JBQ2hELEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDMUIsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2YsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO2FBQU07WUFDTCxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRTtnQkFDMUIsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUM7Z0JBQzdCLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUUzRCxJQUFJLE9BQU8sRUFBRTtvQkFDWCxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDekM7YUFDRjtZQUVELElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFO2dCQUNsQixPQUFPLEtBQUssQ0FBQzthQUNkO1lBRUQsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7U0FDakM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1hcmtUeXBlIH0gZnJvbSAncHJvc2VtaXJyb3ItbW9kZWwnO1xuaW1wb3J0IHsgRWRpdG9yU3RhdGUsIFRleHRTZWxlY3Rpb24sIFRyYW5zYWN0aW9uLCB0eXBlIENvbW1hbmQgfSBmcm9tICdwcm9zZW1pcnJvci1zdGF0ZSc7XG5cbmltcG9ydCB7IG1hcmtBcHBsaWVzIH0gZnJvbSAnbmd4LWVkaXRvci9oZWxwZXJzJztcblxuZXhwb3J0IGNvbnN0IHJlbW92ZU1hcmsgPSAodHlwZTogTWFya1R5cGUpOiBDb21tYW5kID0+IHtcbiAgcmV0dXJuIChzdGF0ZTogRWRpdG9yU3RhdGUsIGRpc3BhdGNoPzogKHRyOiBUcmFuc2FjdGlvbikgPT4gdm9pZCk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IHsgdHIsIHNlbGVjdGlvbiwgc3RvcmVkTWFya3MsIGRvYyB9ID0gc3RhdGU7XG4gICAgY29uc3QgeyBlbXB0eSwgcmFuZ2VzIH0gPSBzZWxlY3Rpb247XG5cbiAgICBpZiAoZW1wdHkgJiYgc2VsZWN0aW9uIGluc3RhbmNlb2YgVGV4dFNlbGVjdGlvbikge1xuICAgICAgY29uc3QgeyAkY3Vyc29yIH0gPSBzZWxlY3Rpb247XG5cbiAgICAgIGlmICghJGN1cnNvciB8fCAhbWFya0FwcGxpZXMoc3RhdGUuZG9jLCByYW5nZXMsIHR5cGUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGUuaXNJblNldChzdG9yZWRNYXJrcyB8fCAkY3Vyc29yLm1hcmtzKCkpKSB7XG4gICAgICAgIHRyLnJlbW92ZVN0b3JlZE1hcmsodHlwZSk7XG4gICAgICAgIGRpc3BhdGNoPy4odHIpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChjb25zdCByYW5nZSBvZiByYW5nZXMpIHtcbiAgICAgICAgY29uc3QgeyAkZnJvbSwgJHRvIH0gPSByYW5nZTtcbiAgICAgICAgY29uc3QgaGFzTWFyayA9IGRvYy5yYW5nZUhhc01hcmsoJGZyb20ucG9zLCAkdG8ucG9zLCB0eXBlKTtcblxuICAgICAgICBpZiAoaGFzTWFyaykge1xuICAgICAgICAgIHRyLnJlbW92ZU1hcmsoJGZyb20ucG9zLCAkdG8ucG9zLCB0eXBlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIXRyLmRvY0NoYW5nZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBkaXNwYXRjaD8uKHRyLnNjcm9sbEludG9WaWV3KCkpO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcbn07XG4iXX0=