UNPKG

ngx-editor

Version:

Rich Text Editor for angular using ProseMirror

39 lines 5.05 kB
import { NodeSelection } from 'prosemirror-state'; class Image { insert(src, attrs) { return (state, dispatch) => { const { schema, tr, selection } = state; const type = schema.nodes.image; if (!type) { return false; } const imageAttrs = { width: null, src, ...attrs }; if (!imageAttrs.width && selection instanceof NodeSelection && selection.node.type === type) { imageAttrs.width = selection.node.attrs['width']; } tr.replaceSelectionWith(type.createAndFill(imageAttrs)); const resolvedPos = tr.doc.resolve(tr.selection.anchor - tr.selection.$anchor.nodeBefore.nodeSize); tr .setSelection(new NodeSelection(resolvedPos)) .scrollIntoView(); if (tr.docChanged) { dispatch?.(tr); return true; } return false; }; } isActive(state) { const { selection } = state; if (selection instanceof NodeSelection) { return selection.node.type.name === 'image'; } return false; } } export default Image; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZWRpdG9yL3NyYy9saWIvY29tbWFuZHMvSW1hZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBVy9ELE1BQU0sS0FBSztJQUNULE1BQU0sQ0FBQyxHQUFXLEVBQUUsS0FBaUI7UUFDbkMsT0FBTyxDQUFDLEtBQWtCLEVBQUUsUUFBbUIsRUFBVyxFQUFFO1lBQzFELE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssQ0FBQztZQUV4QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUNoQyxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNULE9BQU8sS0FBSyxDQUFDO2FBQ2Q7WUFFRCxNQUFNLFVBQVUsR0FBRztnQkFDakIsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsR0FBRztnQkFDSCxHQUFHLEtBQUs7YUFDVCxDQUFDO1lBRUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksU0FBUyxZQUFZLGFBQWEsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUU7Z0JBQzNGLFVBQVUsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDbEQ7WUFFRCxFQUFFLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBRXhELE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUNoQyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUMvRCxDQUFDO1lBRUYsRUFBRTtpQkFDQyxZQUFZLENBQUMsSUFBSSxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7aUJBQzVDLGNBQWMsRUFBRSxDQUFDO1lBRXBCLElBQUksRUFBRSxDQUFDLFVBQVUsRUFBRTtnQkFDakIsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2YsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFrQjtRQUN6QixNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksU0FBUyxZQUFZLGFBQWEsRUFBRTtZQUN0QyxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUM7U0FDN0M7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRjtBQUVELGVBQWUsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWRpdG9yU3RhdGUsIE5vZGVTZWxlY3Rpb24gfSBmcm9tICdwcm9zZW1pcnJvci1zdGF0ZSc7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAncHJvc2VtaXJyb3ItY29tbWFuZHMnO1xuXG5pbXBvcnQgeyBEaXNwYXRjaCB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlQXR0cnMge1xuICBhbHQ/OiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xuICB3aWR0aD86IHN0cmluZztcbn1cblxuY2xhc3MgSW1hZ2Uge1xuICBpbnNlcnQoc3JjOiBzdHJpbmcsIGF0dHJzOiBJbWFnZUF0dHJzKTogQ29tbWFuZCB7XG4gICAgcmV0dXJuIChzdGF0ZTogRWRpdG9yU3RhdGUsIGRpc3BhdGNoPzogRGlzcGF0Y2gpOiBib29sZWFuID0+IHtcbiAgICAgIGNvbnN0IHsgc2NoZW1hLCB0ciwgc2VsZWN0aW9uIH0gPSBzdGF0ZTtcblxuICAgICAgY29uc3QgdHlwZSA9IHNjaGVtYS5ub2Rlcy5pbWFnZTtcbiAgICAgIGlmICghdHlwZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGltYWdlQXR0cnMgPSB7XG4gICAgICAgIHdpZHRoOiBudWxsLFxuICAgICAgICBzcmMsXG4gICAgICAgIC4uLmF0dHJzXG4gICAgICB9O1xuXG4gICAgICBpZiAoIWltYWdlQXR0cnMud2lkdGggJiYgc2VsZWN0aW9uIGluc3RhbmNlb2YgTm9kZVNlbGVjdGlvbiAmJiBzZWxlY3Rpb24ubm9kZS50eXBlID09PSB0eXBlKSB7XG4gICAgICAgIGltYWdlQXR0cnMud2lkdGggPSBzZWxlY3Rpb24ubm9kZS5hdHRyc1snd2lkdGgnXTtcbiAgICAgIH1cblxuICAgICAgdHIucmVwbGFjZVNlbGVjdGlvbldpdGgodHlwZS5jcmVhdGVBbmRGaWxsKGltYWdlQXR0cnMpKTtcblxuICAgICAgY29uc3QgcmVzb2x2ZWRQb3MgPSB0ci5kb2MucmVzb2x2ZShcbiAgICAgICAgdHIuc2VsZWN0aW9uLmFuY2hvciAtIHRyLnNlbGVjdGlvbi4kYW5jaG9yLm5vZGVCZWZvcmUubm9kZVNpemVcbiAgICAgICk7XG5cbiAgICAgIHRyXG4gICAgICAgIC5zZXRTZWxlY3Rpb24obmV3IE5vZGVTZWxlY3Rpb24ocmVzb2x2ZWRQb3MpKVxuICAgICAgICAuc2Nyb2xsSW50b1ZpZXcoKTtcblxuICAgICAgaWYgKHRyLmRvY0NoYW5nZWQpIHtcbiAgICAgICAgZGlzcGF0Y2g/Lih0cik7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgfVxuXG4gIGlzQWN0aXZlKHN0YXRlOiBFZGl0b3JTdGF0ZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHsgc2VsZWN0aW9uIH0gPSBzdGF0ZTtcbiAgICBpZiAoc2VsZWN0aW9uIGluc3RhbmNlb2YgTm9kZVNlbGVjdGlvbikge1xuICAgICAgcmV0dXJuIHNlbGVjdGlvbi5ub2RlLnR5cGUubmFtZSA9PT0gJ2ltYWdlJztcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSW1hZ2U7XG4iXX0=