“use strict”;
const CharacterDataImpl = require(“./CharacterData-impl”).implementation;
const domSymbolTree = require(“../helpers/internal-constants”).domSymbolTree; const DOMException = require(“../../web-idl/DOMException”); const NODE_TYPE = require(“../node-type”);
class TextImpl extends CharacterDataImpl {
constructor(args, privateData) { super(args, privateData); this.nodeType = NODE_TYPE.TEXT_NODE; } splitText(offset) { offset >>>= 0; const length = this.length; if (offset > length) { throw new DOMException(DOMException.INDEX_SIZE_ERR); } const count = length - offset; const newData = this.substringData(offset, count); const newNode = this._ownerDocument.createTextNode(newData); const parent = domSymbolTree.parent(this); if (parent !== null) { parent.insertBefore(newNode, this.nextSibling); } this.replaceData(offset, count, ""); return newNode; // TODO: range stuff } get wholeText() { let wholeText = this.textContent; let next; let current = this; while ((next = domSymbolTree.previousSibling(current)) && next.nodeType === NODE_TYPE.TEXT_NODE) { wholeText = next.textContent + wholeText; current = next; } current = this; while ((next = domSymbolTree.nextSibling(current)) && next.nodeType === NODE_TYPE.TEXT_NODE) { wholeText += next.textContent; current = next; } return wholeText; }
}
module.exports = {
implementation: TextImpl
};