UNPKG

ngx-editor

Version:

The Rich Text Editor for Angular, Built on ProseMirror

39 lines 5.03 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZWRpdG9yL3NyYy9saWIvY29tbWFuZHMvSW1hZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixhQUFhLEVBQWdCLE1BQU0sbUJBQW1CLENBQUM7QUFVbEYsTUFBTSxLQUFLO0lBQ1QsTUFBTSxDQUFDLEdBQVcsRUFBRSxLQUFpQjtRQUNuQyxPQUFPLENBQUMsS0FBa0IsRUFBRSxRQUFtQixFQUFXLEVBQUU7WUFDMUQsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDO1lBRXhDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDVCxPQUFPLEtBQUssQ0FBQzthQUNkO1lBRUQsTUFBTSxVQUFVLEdBQUc7Z0JBQ2pCLEtBQUssRUFBRSxJQUFJO2dCQUNYLEdBQUc7Z0JBQ0gsR0FBRyxLQUFLO2FBQ1QsQ0FBQztZQUVGLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxJQUFJLFNBQVMsWUFBWSxhQUFhLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO2dCQUMzRixVQUFVLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ2xEO1lBRUQsRUFBRSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUV4RCxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FDaEMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FDL0QsQ0FBQztZQUVGLEVBQUU7aUJBQ0MsWUFBWSxDQUFDLElBQUksYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2lCQUM1QyxjQUFjLEVBQUUsQ0FBQztZQUVwQixJQUFJLEVBQUUsQ0FBQyxVQUFVLEVBQUU7Z0JBQ2pCLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNmLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFFRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBa0I7UUFDekIsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLFNBQVMsWUFBWSxhQUFhLEVBQUU7WUFDdEMsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDO1NBQzdDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0Y7QUFFRCxlQUFlLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRWRpdG9yU3RhdGUsIE5vZGVTZWxlY3Rpb24sIHR5cGUgQ29tbWFuZCB9IGZyb20gJ3Byb3NlbWlycm9yLXN0YXRlJztcblxuaW1wb3J0IHsgRGlzcGF0Y2ggfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBJbWFnZUF0dHJzIHtcbiAgYWx0Pzogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAgd2lkdGg/OiBzdHJpbmc7XG59XG5cbmNsYXNzIEltYWdlIHtcbiAgaW5zZXJ0KHNyYzogc3RyaW5nLCBhdHRyczogSW1hZ2VBdHRycyk6IENvbW1hbmQge1xuICAgIHJldHVybiAoc3RhdGU6IEVkaXRvclN0YXRlLCBkaXNwYXRjaD86IERpc3BhdGNoKTogYm9vbGVhbiA9PiB7XG4gICAgICBjb25zdCB7IHNjaGVtYSwgdHIsIHNlbGVjdGlvbiB9ID0gc3RhdGU7XG5cbiAgICAgIGNvbnN0IHR5cGUgPSBzY2hlbWEubm9kZXNbJ2ltYWdlJ107XG4gICAgICBpZiAoIXR5cGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBpbWFnZUF0dHJzID0ge1xuICAgICAgICB3aWR0aDogbnVsbCxcbiAgICAgICAgc3JjLFxuICAgICAgICAuLi5hdHRycyxcbiAgICAgIH07XG5cbiAgICAgIGlmICghaW1hZ2VBdHRycy53aWR0aCAmJiBzZWxlY3Rpb24gaW5zdGFuY2VvZiBOb2RlU2VsZWN0aW9uICYmIHNlbGVjdGlvbi5ub2RlLnR5cGUgPT09IHR5cGUpIHtcbiAgICAgICAgaW1hZ2VBdHRycy53aWR0aCA9IHNlbGVjdGlvbi5ub2RlLmF0dHJzWyd3aWR0aCddO1xuICAgICAgfVxuXG4gICAgICB0ci5yZXBsYWNlU2VsZWN0aW9uV2l0aCh0eXBlLmNyZWF0ZUFuZEZpbGwoaW1hZ2VBdHRycykpO1xuXG4gICAgICBjb25zdCByZXNvbHZlZFBvcyA9IHRyLmRvYy5yZXNvbHZlKFxuICAgICAgICB0ci5zZWxlY3Rpb24uYW5jaG9yIC0gdHIuc2VsZWN0aW9uLiRhbmNob3Iubm9kZUJlZm9yZS5ub2RlU2l6ZSxcbiAgICAgICk7XG5cbiAgICAgIHRyXG4gICAgICAgIC5zZXRTZWxlY3Rpb24obmV3IE5vZGVTZWxlY3Rpb24ocmVzb2x2ZWRQb3MpKVxuICAgICAgICAuc2Nyb2xsSW50b1ZpZXcoKTtcblxuICAgICAgaWYgKHRyLmRvY0NoYW5nZWQpIHtcbiAgICAgICAgZGlzcGF0Y2g/Lih0cik7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgfVxuXG4gIGlzQWN0aXZlKHN0YXRlOiBFZGl0b3JTdGF0ZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHsgc2VsZWN0aW9uIH0gPSBzdGF0ZTtcbiAgICBpZiAoc2VsZWN0aW9uIGluc3RhbmNlb2YgTm9kZVNlbGVjdGlvbikge1xuICAgICAgcmV0dXJuIHNlbGVjdGlvbi5ub2RlLnR5cGUubmFtZSA9PT0gJ2ltYWdlJztcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSW1hZ2U7XG4iXX0=