import { Formattable, Leaf } from './blot';
|
import ShadowBlot from './shadow';
|
import * as Registry from '../../registry';
|
|
class LeafBlot extends ShadowBlot implements Leaf {
|
static scope = Registry.Scope.INLINE_BLOT;
|
|
static value(domNode: Node): any {
|
return true;
|
}
|
|
index(node: Node, offset: number): number {
|
if (
|
this.domNode === node ||
|
this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY
|
) {
|
return Math.min(offset, 1);
|
}
|
return -1;
|
}
|
|
position(index: number, inclusive?: boolean): [Node, number] {
|
let offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);
|
if (index > 0) offset += 1;
|
return [this.parent.domNode, offset];
|
}
|
|
value(): any {
|
return { [this.statics.blotName]: this.statics.value(this.domNode) || true };
|
}
|
}
|
|
export default LeafBlot;
|