| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- 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;
|