jsdom
Version: 
A JavaScript implementation of many web standards
40 lines (32 loc) • 1.1 kB
JavaScript
;
const DOMException = require("../generated/DOMException");
const NODE_TYPE = require("../node-type");
const AbstractRangeImpl = require("./AbstractRange-impl").implementation;
// https://dom.spec.whatwg.org/#staticrange
class StaticRangeImpl extends AbstractRangeImpl {
  // https://dom.spec.whatwg.org/#dom-staticrange-staticrange
  constructor(globalObject, args) {
    const { startContainer, startOffset, endContainer, endOffset } = args[0];
    if (
      startContainer.nodeType === NODE_TYPE.DOCUMENT_TYPE_NODE ||
      startContainer.nodeType === NODE_TYPE.ATTRIBUTE_NODE ||
      endContainer.nodeType === NODE_TYPE.DOCUMENT_TYPE_NODE ||
      endContainer.nodeType === NODE_TYPE.ATTRIBUTE_NODE
    ) {
      throw DOMException.create(globalObject, ["The supplied node is incorrect.", "InvalidNodeTypeError"]);
    }
    super(globalObject, [], {
      start: {
        node: startContainer,
        offset: startOffset
      },
      end: {
        node: endContainer,
        offset: endOffset
      }
    });
  }
}
module.exports = {
  implementation: StaticRangeImpl
};