Sha256: 67a0759d02bda5fdab3978f29741db26006842fb76a391d09cc1e6b7f119df3f

Contents?: true

Size: 1.13 KB

Versions: 3

Compression:

Stored size: 1.13 KB

Contents

"use strict";

const idlUtils = require("../generated/utils");
const nwmatcher = require("nwmatcher/src/nwmatcher-noqsa");
const domSymbolTree = require("./internal-constants").domSymbolTree;

// Internal method so you don't have to go through the public API
exports.querySelector = function (parentNode, selectors) {
  if (!domSymbolTree.hasChildren(parentNode) ||
      (parentNode === parentNode._ownerDocument && !parentNode.documentElement)) {
    // This allows us to avoid the explosion that occurs if you try to add nwmatcher to a document that is not yet
    // initialized.
    return null;
  }

  return addNwmatcher(parentNode).first(selectors, idlUtils.wrapperForImpl(parentNode));
};

// nwmatcher gets `document.documentElement` at creation-time, so we have to initialize lazily, since in the initial
// stages of Document initialization, there is no documentElement present yet.
function addNwmatcher(parentNode) {
  const document = parentNode._ownerDocument;

  if (!document._nwmatcher) {
    document._nwmatcher = nwmatcher({ document });
    document._nwmatcher.configure({ UNIQUE_ID: false });
  }

  return document._nwmatcher;
}

Version data entries

3 entries across 3 versions & 3 rubygems

Version Path
learn_create-0.0.22 lib/templates/javascript_lab_template/node_modules/jsdom/lib/jsdom/living/helpers/selectors.js
lanes-0.8.0 node_modules/jsdom/lib/jsdom/living/helpers/selectors.js
select_all-rails-0.3.1 node_modules/jsdom/lib/jsdom/living/helpers/selectors.js