UNPKG

ngx-editor

Version:

Rich Text Editor for angular using ProseMirror

39 lines 5.06 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+IHtcbiAgICAgIGNvbnN0IHsgc2NoZW1hLCB0ciwgc2VsZWN0aW9uIH0gPSBzdGF0ZTtcblxuICAgICAgY29uc3QgdHlwZSA9IHNjaGVtYS5ub2Rlcy5pbWFnZTtcbiAgICAgIGlmICghdHlwZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGltYWdlQXR0cnMgPSB7XG4gICAgICAgIHdpZHRoOiBudWxsLFxuICAgICAgICBzcmMsXG4gICAgICAgIC4uLmF0dHJzLFxuICAgICAgfTtcblxuICAgICAgaWYgKCFpbWFnZUF0dHJzLndpZHRoICYmIHNlbGVjdGlvbiBpbnN0YW5jZW9mIE5vZGVTZWxlY3Rpb24gJiYgc2VsZWN0aW9uLm5vZGUudHlwZSA9PT0gdHlwZSkge1xuICAgICAgICBpbWFnZUF0dHJzLndpZHRoID0gc2VsZWN0aW9uLm5vZGUuYXR0cnNbJ3dpZHRoJ107XG4gICAgICB9XG5cbiAgICAgIHRyLnJlcGxhY2VTZWxlY3Rpb25XaXRoKHR5cGUuY3JlYXRlQW5kRmlsbChpbWFnZUF0dHJzKSk7XG5cbiAgICAgIGNvbnN0IHJlc29sdmVkUG9zID0gdHIuZG9jLnJlc29sdmUoXG4gICAgICAgIHRyLnNlbGVjdGlvbi5hbmNob3IgLSB0ci5zZWxlY3Rpb24uJGFuY2hvci5ub2RlQmVmb3JlLm5vZGVTaXplLFxuICAgICAgKTtcblxuICAgICAgdHJcbiAgICAgICAgLnNldFNlbGVjdGlvbihuZXcgTm9kZVNlbGVjdGlvbihyZXNvbHZlZFBvcykpXG4gICAgICAgIC5zY3JvbGxJbnRvVmlldygpO1xuXG4gICAgICBpZiAodHIuZG9jQ2hhbmdlZCkge1xuICAgICAgICBkaXNwYXRjaD8uKHRyKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICB9XG5cbiAgaXNBY3RpdmUoc3RhdGU6IEVkaXRvclN0YXRlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgeyBzZWxlY3Rpb24gfSA9IHN0YXRlO1xuICAgIGlmIChzZWxlY3Rpb24gaW5zdGFuY2VvZiBOb2RlU2VsZWN0aW9uKSB7XG4gICAgICByZXR1cm4gc2VsZWN0aW9uLm5vZGUudHlwZS5uYW1lID09PSAnaW1hZ2UnO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJbWFnZTtcbiJdfQ==