49 lines
1.2 KiB
Plaintext
49 lines
1.2 KiB
Plaintext
import Scope from '../../scope.js';
|
|
import BlockBlot from '../block.js';
|
|
import ParentBlot from './parent.js';
|
|
|
|
class ContainerBlot extends ParentBlot {
|
|
public static blotName = 'container';
|
|
public static scope = Scope.BLOCK_BLOT;
|
|
public static tagName: string | string[];
|
|
|
|
public prev!: BlockBlot | ContainerBlot | null;
|
|
public next!: BlockBlot | ContainerBlot | null;
|
|
|
|
public checkMerge(): boolean {
|
|
return (
|
|
this.next !== null && this.next.statics.blotName === this.statics.blotName
|
|
);
|
|
}
|
|
|
|
public deleteAt(index: number, length: number): void {
|
|
super.deleteAt(index, length);
|
|
this.enforceAllowedChildren();
|
|
}
|
|
|
|
public formatAt(
|
|
index: number,
|
|
length: number,
|
|
name: string,
|
|
value: any,
|
|
): void {
|
|
super.formatAt(index, length, name, value);
|
|
this.enforceAllowedChildren();
|
|
}
|
|
|
|
public insertAt(index: number, value: string, def?: any): void {
|
|
super.insertAt(index, value, def);
|
|
this.enforceAllowedChildren();
|
|
}
|
|
|
|
public optimize(context: { [key: string]: any }): void {
|
|
super.optimize(context);
|
|
if (this.children.length > 0 && this.next != null && this.checkMerge()) {
|
|
this.next.moveChildren(this);
|
|
this.next.remove();
|
|
}
|
|
}
|
|
}
|
|
|
|
export default ContainerBlot;
|