ngx-editor
Version:
Rich Text Editor for angular using ProseMirror
23 lines • 3.09 kB
JavaScript
export const removeLink = () => {
return (state, dispatch) => {
const { doc, selection, tr } = state;
const { $head: { pos }, from, to } = selection;
// if the cursor is on the link without any selection
if (from === to) {
const $pos = doc.resolve(pos);
const linkStart = pos - $pos.textOffset;
const linkEnd = linkStart + $pos.parent.child($pos.index()).nodeSize;
tr.removeMark(linkStart, linkEnd);
}
else {
tr.removeMark(from, to);
}
if (!tr.docChanged) {
return false;
}
dispatch?.(tr);
return true;
};
};
export default removeLink;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlTGluay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1lZGl0b3IvY29tbWFuZHMvcmVtb3ZlTGluay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsR0FBWSxFQUFFO0lBQ3RDLE9BQU8sQ0FBQyxLQUFrQixFQUFFLFFBQW9DLEVBQVcsRUFBRTtRQUMzRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDckMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxTQUFTLENBQUM7UUFFL0MscURBQXFEO1FBQ3JELElBQUksSUFBSSxLQUFLLEVBQUUsRUFBRTtZQUNmLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUIsTUFBTSxTQUFTLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDeEMsTUFBTSxPQUFPLEdBQUcsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUVyRSxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNuQzthQUFNO1lBQ0wsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDekI7UUFFRCxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRTtZQUNsQixPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDZixPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLGVBQWUsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ3Byb3NlbWlycm9yLWNvbW1hbmRzJztcbmltcG9ydCB7IEVkaXRvclN0YXRlLCBUcmFuc2FjdGlvbiB9IGZyb20gJ3Byb3NlbWlycm9yLXN0YXRlJztcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUxpbmsgPSAoKTogQ29tbWFuZCA9PiB7XG4gIHJldHVybiAoc3RhdGU6IEVkaXRvclN0YXRlLCBkaXNwYXRjaD86ICh0cjogVHJhbnNhY3Rpb24pID0+IHZvaWQpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCB7IGRvYywgc2VsZWN0aW9uLCB0ciB9ID0gc3RhdGU7XG4gICAgY29uc3QgeyAkaGVhZDogeyBwb3MgfSwgZnJvbSwgdG8gfSA9IHNlbGVjdGlvbjtcblxuICAgIC8vIGlmIHRoZSBjdXJzb3IgaXMgb24gdGhlIGxpbmsgd2l0aG91dCBhbnkgc2VsZWN0aW9uXG4gICAgaWYgKGZyb20gPT09IHRvKSB7XG4gICAgICBjb25zdCAkcG9zID0gZG9jLnJlc29sdmUocG9zKTtcbiAgICAgIGNvbnN0IGxpbmtTdGFydCA9IHBvcyAtICRwb3MudGV4dE9mZnNldDtcbiAgICAgIGNvbnN0IGxpbmtFbmQgPSBsaW5rU3RhcnQgKyAkcG9zLnBhcmVudC5jaGlsZCgkcG9zLmluZGV4KCkpLm5vZGVTaXplO1xuXG4gICAgICB0ci5yZW1vdmVNYXJrKGxpbmtTdGFydCwgbGlua0VuZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyLnJlbW92ZU1hcmsoZnJvbSwgdG8pO1xuICAgIH1cblxuICAgIGlmICghdHIuZG9jQ2hhbmdlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGRpc3BhdGNoPy4odHIpO1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgcmVtb3ZlTGluaztcbiJdfQ==