import FormatBlot from './abstract/format';
|
import * as Registry from '../registry';
|
|
class BlockBlot extends FormatBlot {
|
static blotName = 'block';
|
static scope = Registry.Scope.BLOCK_BLOT;
|
static tagName = 'P';
|
|
static formats(domNode: HTMLElement): any {
|
let tagName = (<any>Registry.query(BlockBlot.blotName)).tagName;
|
if (domNode.tagName === tagName) return undefined;
|
return super.formats(domNode);
|
}
|
|
format(name: string, value: any) {
|
if (Registry.query(name, Registry.Scope.BLOCK) == null) {
|
return;
|
} else if (name === this.statics.blotName && !value) {
|
this.replaceWith(BlockBlot.blotName);
|
} else {
|
super.format(name, value);
|
}
|
}
|
|
formatAt(index: number, length: number, name: string, value: any): void {
|
if (Registry.query(name, Registry.Scope.BLOCK) != null) {
|
this.format(name, value);
|
} else {
|
super.formatAt(index, length, name, value);
|
}
|
}
|
|
insertAt(index: number, value: string, def?: any): void {
|
if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {
|
// Insert text or inline
|
super.insertAt(index, value, def);
|
} else {
|
let after = this.split(index);
|
let blot = Registry.create(value, def);
|
after.parent.insertBefore(blot, after);
|
}
|
}
|
|
update(mutations: MutationRecord[], context: { [key: string]: any }): void {
|
if (navigator.userAgent.match(/Trident/)) {
|
this.build();
|
} else {
|
super.update(mutations, context);
|
}
|
}
|
}
|
|
export default BlockBlot;
|