UNPKG

ngx-editor

Version:

The Rich Text Editor for Angular, Built on ProseMirror

53 lines 8.07 kB
import { Component, Input } from '@angular/core'; import { InsertCommands } from '../MenuCommands'; import * as i0 from "@angular/core"; import * as i1 from "../../../editor.service"; import * as i2 from "../menu.service"; import * as i3 from "@angular/common"; import * as i4 from "../../../pipes/sanitize/sanitize-html.pipe"; export class InsertCommandComponent { get name() { return this.toolbarItem; } constructor(ngxeService, menuService) { this.ngxeService = ngxeService; this.menuService = menuService; this.disabled = false; this.update = (view) => { const { state } = view; const command = InsertCommands[this.name]; this.disabled = !command.canExecute(state); }; } insert(e) { e.preventDefault(); if (e.button !== 0) { return; } const { state, dispatch } = this.editorView; const command = InsertCommands[this.name]; command.insert()(state, dispatch); } getTitle(name) { return this.ngxeService.locals.get(name); } ngOnInit() { this.html = this.ngxeService.getIcon(this.name); this.editorView = this.menuService.editor.view; this.updateSubscription = this.menuService.editor.update.subscribe((view) => { this.update(view); }); } ngOnDestroy() { this.updateSubscription.unsubscribe(); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: InsertCommandComponent, deps: [{ token: i1.NgxEditorService }, { token: i2.MenuService }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: InsertCommandComponent, selector: "ngx-insert-command", inputs: { toolbarItem: "toolbarItem" }, ngImport: i0, template: "<div class=\"NgxEditor__MenuItem--IconContainer\" [class.NgxEditor--Disabled]=\"disabled\" [innerHTML]=\"html | sanitizeHtml\"\n (mousedown)=\"insert($event)\" [title]=\"getTitle(name) | async\">\n</div>\n", styles: [""], dependencies: [{ kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.SanitizeHtmlPipe, name: "sanitizeHtml" }] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: InsertCommandComponent, decorators: [{ type: Component, args: [{ selector: 'ngx-insert-command', template: "<div class=\"NgxEditor__MenuItem--IconContainer\" [class.NgxEditor--Disabled]=\"disabled\" [innerHTML]=\"html | sanitizeHtml\"\n (mousedown)=\"insert($event)\" [title]=\"getTitle(name) | async\">\n</div>\n" }] }], ctorParameters: function () { return [{ type: i1.NgxEditorService }, { type: i2.MenuService }]; }, propDecorators: { toolbarItem: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zZXJ0LWNvbW1hbmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWVkaXRvci9zcmMvbGliL21vZHVsZXMvbWVudS9pbnNlcnQtY29tbWFuZC9pbnNlcnQtY29tbWFuZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZWRpdG9yL3NyYy9saWIvbW9kdWxlcy9tZW51L2luc2VydC1jb21tYW5kL2luc2VydC1jb21tYW5kLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUlwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQVlqRCxNQUFNLE9BQU8sc0JBQXNCO0lBR2pDLElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQXNCLENBQUM7SUFDckMsQ0FBQztJQU9ELFlBQ1UsV0FBNkIsRUFDN0IsV0FBd0I7UUFEeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQzdCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBTGxDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFvQmpCLFdBQU0sR0FBRyxDQUFDLElBQWdCLEVBQVEsRUFBRTtZQUNsQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDO0lBbEJFLENBQUM7SUFFTCxNQUFNLENBQUMsQ0FBYTtRQUNsQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFbkIsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNsQixPQUFPO1NBQ1I7UUFFRCxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDNUMsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFRRCxRQUFRLENBQUMsSUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBRS9DLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBZ0IsRUFBRSxFQUFFO1lBQ3RGLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QyxDQUFDOzhHQW5EVSxzQkFBc0I7a0dBQXRCLHNCQUFzQixrR0NoQm5DLGdOQUdBOzsyRkRhYSxzQkFBc0I7a0JBTmxDLFNBQVM7K0JBQ0Usb0JBQW9CO2lJQU1yQixXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVkaXRvclZpZXcgfSBmcm9tICdwcm9zZW1pcnJvci12aWV3JztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBJbnNlcnRDb21tYW5kcyB9IGZyb20gJy4uL01lbnVDb21tYW5kcyc7XG5pbXBvcnQgeyBOZ3hFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWVudVNlcnZpY2UgfSBmcm9tICcuLi9tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHsgVEJJdGVtcywgVG9vbGJhckl0ZW0gfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBIVE1MIH0gZnJvbSAnLi4vLi4vLi4vdHJ1c3RlZFR5cGVzVXRpbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1pbnNlcnQtY29tbWFuZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnNlcnQtY29tbWFuZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2luc2VydC1jb21tYW5kLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuXG5leHBvcnQgY2xhc3MgSW5zZXJ0Q29tbWFuZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgdG9vbGJhckl0ZW06IFRvb2xiYXJJdGVtO1xuXG4gIGdldCBuYW1lKCk6IFRCSXRlbXMge1xuICAgIHJldHVybiB0aGlzLnRvb2xiYXJJdGVtIGFzIFRCSXRlbXM7XG4gIH1cblxuICBodG1sOiBIVE1MO1xuICBlZGl0b3JWaWV3OiBFZGl0b3JWaWV3O1xuICBkaXNhYmxlZCA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmd4ZVNlcnZpY2U6IE5neEVkaXRvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZW51U2VydmljZTogTWVudVNlcnZpY2UsXG4gICkgeyB9XG5cbiAgaW5zZXJ0KGU6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBpZiAoZS5idXR0b24gIT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IHN0YXRlLCBkaXNwYXRjaCB9ID0gdGhpcy5lZGl0b3JWaWV3O1xuICAgIGNvbnN0IGNvbW1hbmQgPSBJbnNlcnRDb21tYW5kc1t0aGlzLm5hbWVdO1xuICAgIGNvbW1hbmQuaW5zZXJ0KCkoc3RhdGUsIGRpc3BhdGNoKTtcbiAgfVxuXG4gIHVwZGF0ZSA9ICh2aWV3OiBFZGl0b3JWaWV3KTogdm9pZCA9PiB7XG4gICAgY29uc3QgeyBzdGF0ZSB9ID0gdmlldztcbiAgICBjb25zdCBjb21tYW5kID0gSW5zZXJ0Q29tbWFuZHNbdGhpcy5uYW1lXTtcbiAgICB0aGlzLmRpc2FibGVkID0gIWNvbW1hbmQuY2FuRXhlY3V0ZShzdGF0ZSk7XG4gIH07XG5cbiAgZ2V0VGl0bGUobmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5uZ3hlU2VydmljZS5sb2NhbHMuZ2V0KG5hbWUpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5odG1sID0gdGhpcy5uZ3hlU2VydmljZS5nZXRJY29uKHRoaXMubmFtZSk7XG5cbiAgICB0aGlzLmVkaXRvclZpZXcgPSB0aGlzLm1lbnVTZXJ2aWNlLmVkaXRvci52aWV3O1xuXG4gICAgdGhpcy51cGRhdGVTdWJzY3JpcHRpb24gPSB0aGlzLm1lbnVTZXJ2aWNlLmVkaXRvci51cGRhdGUuc3Vic2NyaWJlKCh2aWV3OiBFZGl0b3JWaWV3KSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZSh2aWV3KTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJOZ3hFZGl0b3JfX01lbnVJdGVtLS1JY29uQ29udGFpbmVyXCIgW2NsYXNzLk5neEVkaXRvci0tRGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbaW5uZXJIVE1MXT1cImh0bWwgfCBzYW5pdGl6ZUh0bWxcIlxuICAobW91c2Vkb3duKT1cImluc2VydCgkZXZlbnQpXCIgW3RpdGxlXT1cImdldFRpdGxlKG5hbWUpIHwgYXN5bmNcIj5cbjwvZGl2PlxuIl19