text.js 542 Bytes
"use strict";
const { domSymbolTree } = require("./internal-constants");
const { CDATA_SECTION_NODE, TEXT_NODE } = require("../node-type");

//
// https://dom.spec.whatwg.org/#concept-child-text-content
//
exports.childTextContent = node => {
  let result = "";
  const iterator = domSymbolTree.childrenIterator(node);
  for (const child of iterator) {
    if (child.nodeType === TEXT_NODE ||
        // The CDataSection extends Text.
        child.nodeType === CDATA_SECTION_NODE) {
      result += child.data;
    }
  }
  return result;
};