ngx-editor
Version:
Rich Text Editor for angular using ProseMirror
61 lines • 8.7 kB
JavaScript
import { Component, HostBinding, Input } from '@angular/core';
import Icon from '../../../icons';
import { ToggleCommands } from '../MenuCommands';
import * as i0 from "@angular/core";
import * as i1 from "../../../editor.service";
import * as i2 from "../menu.service";
import * as i3 from "../../../pipes/sanitize/sanitize-html.pipe";
export class ToggleCommandComponent {
constructor(ngxeService, menuService) {
this.ngxeService = ngxeService;
this.menuService = menuService;
this.isActive = false;
this.disabled = false;
this.update = (view) => {
const { state } = view;
const command = ToggleCommands[this.name];
this.isActive = command.isActive(state);
this.disabled = !command.canExecute(state);
};
}
get name() {
return this.toolbarItem;
}
toggle(e) {
e.preventDefault();
if (e.button !== 0) {
return;
}
const { state, dispatch } = this.editorView;
const command = ToggleCommands[this.name];
command.toggle()(state, dispatch);
}
getTitle(name) {
return this.ngxeService.locals.get(name);
}
ngOnInit() {
this.html = Icon.get(this.name);
this.editorView = this.menuService.editor.view;
this.updateSubscription = this.menuService.editor.update.subscribe((view) => {
this.update(view);
});
}
ngOnDestroy() {
this.updateSubscription.unsubscribe();
}
}
ToggleCommandComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: ToggleCommandComponent, deps: [{ token: i1.NgxEditorService }, { token: i2.MenuService }], target: i0.ɵɵFactoryTarget.Component });
ToggleCommandComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: ToggleCommandComponent, selector: "ngx-toggle-command", inputs: { toolbarItem: "toolbarItem" }, host: { properties: { "class.NgxEditor__MenuItem--Active": "this.isActive", "class.NgxEditor--Disabled": "this.disabled" } }, ngImport: i0, template: "<div class=\"NgxEditor__MenuItem--IconContainer\" [innerHTML]=\"html | sanitizeHtml\" (mousedown)=\"toggle($event)\"\n [title]=\"getTitle(name)\">\n</div>\n", styles: [""], pipes: { "sanitizeHtml": i3.SanitizeHtmlPipe } });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: ToggleCommandComponent, decorators: [{
type: Component,
args: [{ selector: 'ngx-toggle-command', template: "<div class=\"NgxEditor__MenuItem--IconContainer\" [innerHTML]=\"html | sanitizeHtml\" (mousedown)=\"toggle($event)\"\n [title]=\"getTitle(name)\">\n</div>\n", styles: [""] }]
}], ctorParameters: function () { return [{ type: i1.NgxEditorService }, { type: i2.MenuService }]; }, propDecorators: { toolbarItem: [{
type: Input
}], isActive: [{
type: HostBinding,
args: ['class.NgxEditor__MenuItem--Active']
}], disabled: [{
type: HostBinding,
args: ['class.NgxEditor--Disabled']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLWNvbW1hbmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWVkaXRvci9zcmMvbGliL21vZHVsZXMvbWVudS90b2dnbGUtY29tbWFuZC90b2dnbGUtY29tbWFuZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZWRpdG9yL3NyYy9saWIvbW9kdWxlcy9tZW51L3RvZ2dsZS1jb21tYW5kL3RvZ2dsZS1jb21tYW5kLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFJakYsT0FBTyxJQUFJLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQVdqRCxNQUFNLE9BQU8sc0JBQXNCO0lBV2pDLFlBQ1UsV0FBNkIsRUFDN0IsV0FBd0I7UUFEeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQzdCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBR2dCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDekIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQWMzRCxXQUFNLEdBQUcsQ0FBQyxJQUFnQixFQUFRLEVBQUU7WUFDbEMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQztZQUN2QixNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUM7SUF0QkUsQ0FBQztJQVhMLElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQXNCLENBQUM7SUFDckMsQ0FBQztJQWNELE1BQU0sQ0FBQyxDQUFhO1FBQ2xCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUVuQixJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2xCLE9BQU87U0FDUjtRQUVELE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUM1QyxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQVNELFFBQVEsQ0FBQyxJQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVoQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztRQUUvQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQWdCLEVBQUUsRUFBRTtZQUN0RixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEMsQ0FBQzs7bUhBdERVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLGdPQ2hCbkMsK0pBR0E7MkZEYWEsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNFLG9CQUFvQjtpSUFNckIsV0FBVztzQkFBbkIsS0FBSztnQkFlNEMsUUFBUTtzQkFBekQsV0FBVzt1QkFBQyxtQ0FBbUM7Z0JBQ04sUUFBUTtzQkFBakQsV0FBVzt1QkFBQywyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVkaXRvclZpZXcgfSBmcm9tICdwcm9zZW1pcnJvci12aWV3JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgSWNvbiBmcm9tICcuLi8uLi8uLi9pY29ucyc7XG5pbXBvcnQgeyBUb2dnbGVDb21tYW5kcyB9IGZyb20gJy4uL01lbnVDb21tYW5kcyc7XG5pbXBvcnQgeyBOZ3hFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWVudVNlcnZpY2UgfSBmcm9tICcuLi9tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHsgVEJJdGVtcywgVG9vbGJhckl0ZW0gfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC10b2dnbGUtY29tbWFuZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90b2dnbGUtY29tbWFuZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RvZ2dsZS1jb21tYW5kLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuXG5leHBvcnQgY2xhc3MgVG9nZ2xlQ29tbWFuZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgdG9vbGJhckl0ZW06IFRvb2xiYXJJdGVtO1xuXG4gIGdldCBuYW1lKCk6IFRCSXRlbXMge1xuICAgIHJldHVybiB0aGlzLnRvb2xiYXJJdGVtIGFzIFRCSXRlbXM7XG4gIH1cblxuICBodG1sOiBzdHJpbmc7XG4gIGVkaXRvclZpZXc6IEVkaXRvclZpZXc7XG4gIHByaXZhdGUgdXBkYXRlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuZ3hlU2VydmljZTogTmd4RWRpdG9yU2VydmljZSxcbiAgICBwcml2YXRlIG1lbnVTZXJ2aWNlOiBNZW51U2VydmljZSxcbiAgKSB7IH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLk5neEVkaXRvcl9fTWVudUl0ZW0tLUFjdGl2ZScpIGlzQWN0aXZlID0gZmFsc2U7XG4gIEBIb3N0QmluZGluZygnY2xhc3MuTmd4RWRpdG9yLS1EaXNhYmxlZCcpIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgdG9nZ2xlKGU6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBpZiAoZS5idXR0b24gIT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IHN0YXRlLCBkaXNwYXRjaCB9ID0gdGhpcy5lZGl0b3JWaWV3O1xuICAgIGNvbnN0IGNvbW1hbmQgPSBUb2dnbGVDb21tYW5kc1t0aGlzLm5hbWVdO1xuICAgIGNvbW1hbmQudG9nZ2xlKCkoc3RhdGUsIGRpc3BhdGNoKTtcbiAgfVxuXG4gIHVwZGF0ZSA9ICh2aWV3OiBFZGl0b3JWaWV3KTogdm9pZCA9PiB7XG4gICAgY29uc3QgeyBzdGF0ZSB9ID0gdmlldztcbiAgICBjb25zdCBjb21tYW5kID0gVG9nZ2xlQ29tbWFuZHNbdGhpcy5uYW1lXTtcbiAgICB0aGlzLmlzQWN0aXZlID0gY29tbWFuZC5pc0FjdGl2ZShzdGF0ZSk7XG4gICAgdGhpcy5kaXNhYmxlZCA9ICFjb21tYW5kLmNhbkV4ZWN1dGUoc3RhdGUpO1xuICB9O1xuXG4gIGdldFRpdGxlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubmd4ZVNlcnZpY2UubG9jYWxzLmdldChuYW1lKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaHRtbCA9IEljb24uZ2V0KHRoaXMubmFtZSk7XG5cbiAgICB0aGlzLmVkaXRvclZpZXcgPSB0aGlzLm1lbnVTZXJ2aWNlLmVkaXRvci52aWV3O1xuXG4gICAgdGhpcy51cGRhdGVTdWJzY3JpcHRpb24gPSB0aGlzLm1lbnVTZXJ2aWNlLmVkaXRvci51cGRhdGUuc3Vic2NyaWJlKCh2aWV3OiBFZGl0b3JWaWV3KSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZSh2aWV3KTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJOZ3hFZGl0b3JfX01lbnVJdGVtLS1JY29uQ29udGFpbmVyXCIgW2lubmVySFRNTF09XCJodG1sIHwgc2FuaXRpemVIdG1sXCIgKG1vdXNlZG93bik9XCJ0b2dnbGUoJGV2ZW50KVwiXG4gIFt0aXRsZV09XCJnZXRUaXRsZShuYW1lKVwiPlxuPC9kaXY+XG4iXX0=