ngx-editor
Version:
The Rich Text Editor for Angular, Built on ProseMirror
27 lines • 3.19 kB
JavaScript
const SAFE_MARKS = ['link'];
class FormatClear {
insert() {
return (state, dispatch) => {
const { tr } = state;
const { ranges, empty } = tr.selection;
if (empty) {
return true;
}
Object.entries(state.schema.marks).forEach(([markType, mark]) => {
if (SAFE_MARKS.includes(markType)) {
return;
}
ranges.forEach((range) => {
tr.removeMark(range.$from.pos, range.$to.pos, mark);
});
});
dispatch(tr);
return true;
};
}
canExecute() {
return true;
}
}
export default FormatClear;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybWF0Q2xlYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZWRpdG9yL3NyYy9saWIvY29tbWFuZHMvRm9ybWF0Q2xlYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxVQUFVLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUU1QixNQUFNLFdBQVc7SUFDZixNQUFNO1FBQ0osT0FBTyxDQUFDLEtBQWtCLEVBQUUsUUFBb0MsRUFBVyxFQUFFO1lBQzNFLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFDckIsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDO1lBRXZDLElBQUksS0FBSyxFQUFFO2dCQUNULE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtnQkFDOUQsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUNqQyxPQUFPO2lCQUNSO2dCQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDdkIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFXLENBQUMsQ0FBQztnQkFDN0QsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUVILFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNiLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQUVELGVBQWUsV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFZGl0b3JTdGF0ZSwgVHJhbnNhY3Rpb24sIENvbW1hbmQgfSBmcm9tICdwcm9zZW1pcnJvci1zdGF0ZSc7XG5cbmltcG9ydCB7IEluc2VydENvbW1hbmQgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgU0FGRV9NQVJLUyA9IFsnbGluayddO1xuXG5jbGFzcyBGb3JtYXRDbGVhciBpbXBsZW1lbnRzIEluc2VydENvbW1hbmQge1xuICBpbnNlcnQoKTogQ29tbWFuZCB7XG4gICAgcmV0dXJuIChzdGF0ZTogRWRpdG9yU3RhdGUsIGRpc3BhdGNoPzogKHRyOiBUcmFuc2FjdGlvbikgPT4gdm9pZCk6IGJvb2xlYW4gPT4ge1xuICAgICAgY29uc3QgeyB0ciB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7IHJhbmdlcywgZW1wdHkgfSA9IHRyLnNlbGVjdGlvbjtcblxuICAgICAgaWYgKGVtcHR5KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBPYmplY3QuZW50cmllcyhzdGF0ZS5zY2hlbWEubWFya3MpLmZvckVhY2goKFttYXJrVHlwZSwgbWFya10pID0+IHtcbiAgICAgICAgaWYgKFNBRkVfTUFSS1MuaW5jbHVkZXMobWFya1R5cGUpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmFuZ2VzLmZvckVhY2goKHJhbmdlKSA9PiB7XG4gICAgICAgICAgdHIucmVtb3ZlTWFyayhyYW5nZS4kZnJvbS5wb3MsIHJhbmdlLiR0by5wb3MsIG1hcmsgYXMgYW55KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgZGlzcGF0Y2godHIpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgfVxuXG4gIGNhbkV4ZWN1dGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRm9ybWF0Q2xlYXI7XG4iXX0=