ngx-editor
Version:
Rich Text Editor for angular using ProseMirror
41 lines • 4.68 kB
JavaScript
import { toggleMark } from 'prosemirror-commands';
import { applyMark } from 'ngx-editor/commands';
import { isMarkActive } from 'ngx-editor/helpers';
class Mark {
constructor(name) {
this.name = name;
}
apply() {
return (state, dispatch) => {
const { schema } = state;
const type = schema.marks[this.name];
if (!type) {
return false;
}
return applyMark(type)(state, dispatch);
};
}
toggle() {
return (state, dispatch) => {
const { schema } = state;
const type = schema.marks[this.name];
if (!type) {
return false;
}
return toggleMark(type)(state, dispatch);
};
}
isActive(state) {
const { schema } = state;
const type = schema.marks[this.name];
if (!type) {
return false;
}
return isMarkActive(state, type);
}
canExecute(state) {
return this.toggle()(state);
}
}
export default Mark;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFyay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1lZGl0b3Ivc3JjL2xpYi9jb21tYW5kcy9NYXJrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBZ0IsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVsRCxNQUFNLElBQUk7SUFHUixZQUFZLElBQVk7UUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLENBQUMsS0FBa0IsRUFBRSxRQUFvQyxFQUFXLEVBQUU7WUFDM0UsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQztZQUV6QixNQUFNLElBQUksR0FBYSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNULE9BQU8sS0FBSyxDQUFDO2FBQ2Q7WUFFRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLENBQUMsS0FBa0IsRUFBRSxRQUFvQyxFQUFXLEVBQUU7WUFDM0UsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQztZQUV6QixNQUFNLElBQUksR0FBYSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNULE9BQU8sS0FBSyxDQUFDO2FBQ2Q7WUFFRCxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFrQjtRQUN6QixNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBRXpCLE1BQU0sSUFBSSxHQUFhLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRS9DLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsT0FBTyxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBa0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztDQUNGO0FBRUQsZUFBZSxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE1hcmtUeXBlIH0gZnJvbSAncHJvc2VtaXJyb3ItbW9kZWwnO1xuaW1wb3J0IHR5cGUgeyBFZGl0b3JTdGF0ZSwgVHJhbnNhY3Rpb24gfSBmcm9tICdwcm9zZW1pcnJvci1zdGF0ZSc7XG5pbXBvcnQgeyB0eXBlIENvbW1hbmQsIHRvZ2dsZU1hcmsgfSBmcm9tICdwcm9zZW1pcnJvci1jb21tYW5kcyc7XG5cbmltcG9ydCB7IGFwcGx5TWFyayB9IGZyb20gJ25neC1lZGl0b3IvY29tbWFuZHMnO1xuaW1wb3J0IHsgaXNNYXJrQWN0aXZlIH0gZnJvbSAnbmd4LWVkaXRvci9oZWxwZXJzJztcblxuY2xhc3MgTWFyayB7XG4gIG5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG5cbiAgYXBwbHkoKTogQ29tbWFuZCB7XG4gICAgcmV0dXJuIChzdGF0ZTogRWRpdG9yU3RhdGUsIGRpc3BhdGNoPzogKHRyOiBUcmFuc2FjdGlvbikgPT4gdm9pZCk6IGJvb2xlYW4gPT4ge1xuICAgICAgY29uc3QgeyBzY2hlbWEgfSA9IHN0YXRlO1xuXG4gICAgICBjb25zdCB0eXBlOiBNYXJrVHlwZSA9IHNjaGVtYS5tYXJrc1t0aGlzLm5hbWVdO1xuICAgICAgaWYgKCF0eXBlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFwcGx5TWFyayh0eXBlKShzdGF0ZSwgZGlzcGF0Y2gpO1xuICAgIH07XG4gIH1cblxuICB0b2dnbGUoKTogQ29tbWFuZCB7XG4gICAgcmV0dXJuIChzdGF0ZTogRWRpdG9yU3RhdGUsIGRpc3BhdGNoPzogKHRyOiBUcmFuc2FjdGlvbikgPT4gdm9pZCk6IGJvb2xlYW4gPT4ge1xuICAgICAgY29uc3QgeyBzY2hlbWEgfSA9IHN0YXRlO1xuXG4gICAgICBjb25zdCB0eXBlOiBNYXJrVHlwZSA9IHNjaGVtYS5tYXJrc1t0aGlzLm5hbWVdO1xuICAgICAgaWYgKCF0eXBlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRvZ2dsZU1hcmsodHlwZSkoc3RhdGUsIGRpc3BhdGNoKTtcbiAgICB9O1xuICB9XG5cbiAgaXNBY3RpdmUoc3RhdGU6IEVkaXRvclN0YXRlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgeyBzY2hlbWEgfSA9IHN0YXRlO1xuXG4gICAgY29uc3QgdHlwZTogTWFya1R5cGUgPSBzY2hlbWEubWFya3NbdGhpcy5uYW1lXTtcblxuICAgIGlmICghdHlwZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBpc01hcmtBY3RpdmUoc3RhdGUsIHR5cGUpO1xuICB9XG5cbiAgY2FuRXhlY3V0ZShzdGF0ZTogRWRpdG9yU3RhdGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50b2dnbGUoKShzdGF0ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWFyaztcbiJdfQ==