UNPKG

ngx-editor

Version:

Rich Text Editor for angular using ProseMirror

91 lines 13.6 kB
import { ApplicationRef, ComponentFactoryResolver } from '@angular/core'; import { NodeSelection, Plugin, PluginKey } from 'prosemirror-state'; import { ImageViewComponent } from '../components/image-view/image-view.component'; class ImageRezieView { constructor(node, view, getPos, injector) { this.updating = false; this.handleResize = () => { if (this.updating) { return; } const { state, dispatch } = this.view; const { tr } = state; const transaction = tr.setNodeMarkup(this.getPos(), undefined, { ...this.node.attrs, width: this.imageComponentRef.instance.outerWidth, }); const resolvedPos = transaction.doc.resolve(this.getPos()); const newSelection = new NodeSelection(resolvedPos); transaction.setSelection(newSelection); dispatch(transaction); }; const componentFactoryResolver = injector.get(ComponentFactoryResolver); this.applicationRef = injector.get(ApplicationRef); // Create the component and wire it up with the element const factory = componentFactoryResolver.resolveComponentFactory(ImageViewComponent); this.imageComponentRef = factory.create(injector, []); // Attach to the view so that the change detector knows to run this.applicationRef.attachView(this.imageComponentRef.hostView); // Possible alternate for deprecated ComponentFactoryResolver // const viewContainerRef = injector.get(ViewContainerRef); // this.imageComponentRef = viewContainerRef.createComponent(ImageViewComponent, { injector }); this.setNodeAttributes(node.attrs); this.imageComponentRef.instance.view = view; this.dom = this.imageComponentRef.location.nativeElement; this.view = view; this.node = node; this.getPos = getPos; this.resizeSubscription = this.imageComponentRef.instance.imageResize.subscribe(() => { this.handleResize(); }); } computeChanges(prevAttrs, newAttrs) { return JSON.stringify(prevAttrs) === JSON.stringify(newAttrs); } setNodeAttributes(attrs) { this.imageComponentRef.instance.src = attrs['src']; this.imageComponentRef.instance.alt = attrs['alt']; this.imageComponentRef.instance.title = attrs['title']; this.imageComponentRef.instance.outerWidth = attrs['width']; } update(node) { if (node.type !== this.node.type) { return false; } this.node = node; const changed = this.computeChanges(this.node.attrs, node.attrs); if (changed) { this.updating = true; this.setNodeAttributes(node.attrs); this.updating = false; } return true; } ignoreMutation() { return true; } selectNode() { this.imageComponentRef.instance.selected = true; } deselectNode() { this.imageComponentRef.instance.selected = false; } destroy() { this.resizeSubscription.unsubscribe(); this.applicationRef.detachView(this.imageComponentRef.hostView); } } const imageResizePlugin = (injector) => { return new Plugin({ key: new PluginKey('image-resize'), props: { nodeViews: { image: (node, view, getPos) => { return new ImageRezieView(node, view, getPos, injector); }, }, }, }); }; export default imageResizePlugin; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcmVzaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWVkaXRvci9zcmMvbGliL3BsdWdpbnMvaW1hZ2UtcmVzaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsd0JBQXdCLEVBQTBCLE1BQU0sZUFBZSxDQUFDO0FBRWpHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSXJFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRW5GLE1BQU0sY0FBYztJQVlsQixZQUFZLElBQXFCLEVBQUUsSUFBZ0IsRUFBRSxNQUFvQixFQUFFLFFBQWtCO1FBRjdGLGFBQVEsR0FBRyxLQUFLLENBQUM7UUF5Q2pCLGlCQUFZLEdBQUcsR0FBUyxFQUFFO1lBQ3hCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDakIsT0FBTzthQUNSO1lBRUQsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3RDLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFFckIsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFO2dCQUM3RCxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztnQkFDbEIsS0FBSyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsVUFBVTthQUNsRCxDQUFDLENBQUM7WUFFSCxNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUMzRCxNQUFNLFlBQVksR0FBRyxJQUFJLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FB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QUFjO1FBQ1osT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUNsRCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNuRCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEUsQ0FBQztDQUNGO0FBRUQsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFFBQWtCLEVBQVUsRUFBRTtJQUN2RCxPQUFPLElBQUksTUFBTSxDQUFDO1FBQ2hCLEdBQUcsRUFBRSxJQUFJLFNBQVMsQ0FBQyxjQUFjLENBQUM7UUFDbEMsS0FBSyxFQUFFO1lBQ0wsU0FBUyxFQUFFO2dCQUNULEtBQUssRUFBRSxDQUFDLElBQXFCLEVBQUUsSUFBZ0IsRUFBRSxNQUFvQixFQUFFLEVBQUU7b0JBQ3ZFLE9BQU8sSUFBSSxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzFELENBQUM7YUFDRjtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsZUFBZSxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uUmVmLCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIENvbXBvbmVudFJlZiwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vZGUgYXMgUHJvc2VNaXJyb3JOb2RlIH0gZnJvbSAncHJvc2VtaXJyb3ItbW9kZWwnO1xuaW1wb3J0IHsgTm9kZVNlbGVjdGlvbiwgUGx1Z2luLCBQbHVnaW5LZXkgfSBmcm9tICdwcm9zZW1pcnJvci1zdGF0ZSc7XG5pbXBvcnQgeyBFZGl0b3JWaWV3LCBOb2RlVmlldyB9IGZyb20gJ3Byb3NlbWlycm9yLXZpZXcnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEltYWdlVmlld0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvaW1hZ2Utdmlldy9pbWFnZS12aWV3LmNvbXBvbmVudCc7XG5cbmNsYXNzIEltYWdlUmV6aWVWaWV3IGltcGxlbWVudHMgTm9kZVZpZXcge1xuICBkb206IEhUTUxFbGVtZW50O1xuICB2aWV3OiBFZGl0b3JWaWV3O1xuICBnZXRQb3M6ICgpID0+IG51bWJlcjtcblxuICBhcHBsaWNhdGlvblJlZjogQXBwbGljYXRpb25SZWY7XG4gIGltYWdlQ29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8SW1hZ2VWaWV3Q29tcG9uZW50PjtcbiAgcmVzaXplU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgbm9kZTogUHJvc2VNaXJyb3JOb2RlO1xuICB1cGRhdGluZyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKG5vZGU6IFByb3NlTWlycm9yTm9kZSwgdmlldzogRWRpdG9yVmlldywgZ2V0UG9zOiAoKSA9PiBudW1iZXIsIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIGNvbnN0IGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlciA9IGluamVjdG9yLmdldChDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpO1xuICAgIHRoaXMuYXBwbGljYXRpb25SZWYgPSBpbmplY3Rvci5nZXQoQXBwbGljYXRpb25SZWYpO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBjb21wb25lbnQgYW5kIHdpcmUgaXQgdXAgd2l0aCB0aGUgZWxlbWVudFxuICAgIGNvbnN0IGZhY3RvcnkgPSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoSW1hZ2VWaWV3Q29tcG9uZW50KTtcblxuICAgIHRoaXMuaW1hZ2VDb21wb25lbnRSZWYgPSBmYWN0b3J5LmNyZWF0ZShpbmplY3RvciwgW10pO1xuICAgIC8vIEF0dGFjaCB0byB0aGUgdmlldyBzbyB0aGF0IHRoZSBjaGFuZ2UgZGV0ZWN0b3Iga25vd3MgdG8gcnVuXG4gICAgdGhpcy5hcHBsaWNhdGlvblJlZi5hdHRhY2hWaWV3KHRoaXMuaW1hZ2VDb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuXG4gICAgLy8gUG9zc2libGUgYWx0ZXJuYXRlIGZvciBkZXByZWNhdGVkIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlclxuICAgIC8vIGNvbnN0IHZpZXdDb250YWluZXJSZWYgPSBpbmplY3Rvci5nZXQoVmlld0NvbnRhaW5lclJlZik7XG4gICAgLy8gdGhpcy5pbWFnZUNvbXBvbmVudFJlZiA9IHZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KEltYWdlVmlld0NvbXBvbmVudCwgeyBpbmplY3RvciB9KTtcblxuICAgIHRoaXMuc2V0Tm9kZUF0dHJpYnV0ZXMobm9kZS5hdHRycyk7XG4gICAgdGhpcy5pbWFnZUNvbXBvbmVudFJlZi5pbnN0YW5jZS52aWV3ID0gdmlldztcblxuICAgIHRoaXMuZG9tID0gdGhpcy5pbWFnZUNvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMudmlldyA9IHZpZXc7XG4gICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgICB0aGlzLmdldFBvcyA9IGdldFBvcztcblxuICAgIHRoaXMucmVzaXplU3Vic2NyaXB0aW9uID0gdGhpcy5pbWFnZUNvbXBvbmVudFJlZi5pbnN0YW5jZS5pbWFnZVJlc2l6ZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5oYW5kbGVSZXNpemUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY29tcHV0ZUNoYW5nZXMocHJldkF0dHJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBuZXdBdHRyczogUmVjb3JkPHN0cmluZywgYW55Pik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShwcmV2QXR0cnMpID09PSBKU09OLnN0cmluZ2lmeShuZXdBdHRycyk7XG4gIH1cblxuICBwcml2YXRlIHNldE5vZGVBdHRyaWJ1dGVzKGF0dHJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5pbWFnZUNvbXBvbmVudFJlZi5pbnN0YW5jZS5zcmMgPSBhdHRyc1snc3JjJ107XG4gICAgdGhpcy5pbWFnZUNvbXBvbmVudFJlZi5pbnN0YW5jZS5hbHQgPSBhdHRyc1snYWx0J107XG4gICAgdGhpcy5pbWFnZUNvbXBvbmVudFJlZi5pbnN0YW5jZS50aXRsZSA9IGF0dHJzWyd0aXRsZSddO1xuICAgIHRoaXMuaW1hZ2VDb21wb25lbnRSZWYuaW5zdGFuY2Uub3V0ZXJXaWR0aCA9IGF0dHJzWyd3aWR0aCddO1xuICB9XG5cbiAgaGFuZGxlUmVzaXplID0gKCk6IHZvaWQgPT4ge1xuICAgIGlmICh0aGlzLnVwZGF0aW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBzdGF0ZSwgZGlzcGF0Y2ggfSA9IHRoaXMudmlldztcbiAgICBjb25zdCB7IHRyIH0gPSBzdGF0ZTtcblxuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdHIuc2V0Tm9kZU1hcmt1cCh0aGlzLmdldFBvcygpLCB1bmRlZmluZWQsIHtcbiAgICAgIC4uLnRoaXMubm9kZS5hdHRycyxcbiAgICAgIHdpZHRoOiB0aGlzLmltYWdlQ29tcG9uZW50UmVmLmluc3RhbmNlLm91dGVyV2lkdGgsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXNvbHZlZFBvcyA9IHRyYW5zYWN0aW9uLmRvYy5yZXNvbHZlKHRoaXMuZ2V0UG9zKCkpO1xuICAgIGNvbnN0IG5ld1NlbGVjdGlvbiA9IG5ldyBOb2RlU2VsZWN0aW9uKHJlc29sdmVkUG9zKTtcblxuICAgIHRyYW5zYWN0aW9uLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24pO1xuICAgIGRpc3BhdGNoKHRyYW5zYWN0aW9uKTtcbiAgfTtcblxuICB1cGRhdGUobm9kZTogUHJvc2VNaXJyb3JOb2RlKTogYm9vbGVhbiB7XG4gICAgaWYgKG5vZGUudHlwZSAhPT0gdGhpcy5ub2RlLnR5cGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLm5vZGUgPSBub2RlO1xuXG4gICAgY29uc3QgY2hhbmdlZCA9IHRoaXMuY29tcHV0ZUNoYW5nZXModGhpcy5ub2RlLmF0dHJzLCBub2RlLmF0dHJzKTtcbiAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgdGhpcy51cGRhdGluZyA9IHRydWU7XG4gICAgICB0aGlzLnNldE5vZGVBdHRyaWJ1dGVzKG5vZGUuYXR0cnMpO1xuICAgICAgdGhpcy51cGRhdGluZyA9IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlnbm9yZU11dGF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgc2VsZWN0Tm9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLmltYWdlQ29tcG9uZW50UmVmLmluc3RhbmNlLnNlbGVjdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIGRlc2VsZWN0Tm9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLmltYWdlQ29tcG9uZW50UmVmLmluc3RhbmNlLnNlbGVjdGVkID0gZmFsc2U7XG4gIH1cblxuICBkZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucmVzaXplU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5hcHBsaWNhdGlvblJlZi5kZXRhY2hWaWV3KHRoaXMuaW1hZ2VDb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICB9XG59XG5cbmNvbnN0IGltYWdlUmVzaXplUGx1Z2luID0gKGluamVjdG9yOiBJbmplY3Rvcik6IFBsdWdpbiA9PiB7XG4gIHJldHVybiBuZXcgUGx1Z2luKHtcbiAgICBrZXk6IG5ldyBQbHVnaW5LZXkoJ2ltYWdlLXJlc2l6ZScpLFxuICAgIHByb3BzOiB7XG4gICAgICBub2RlVmlld3M6IHtcbiAgICAgICAgaW1hZ2U6IChub2RlOiBQcm9zZU1pcnJvck5vZGUsIHZpZXc6IEVkaXRvclZpZXcsIGdldFBvczogKCkgPT4gbnVtYmVyKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBJbWFnZVJlemllVmlldyhub2RlLCB2aWV3LCBnZXRQb3MsIGluamVjdG9yKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBpbWFnZVJlc2l6ZVBsdWdpbjtcbiJdfQ==