HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux wordpress-ubuntu-s-2vcpu-4gb-fra1-01 5.4.0-169-generic #187-Ubuntu SMP Thu Nov 23 14:52:28 UTC 2023 x86_64
User: root (0)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //proc/1526/task/1530/cwd/zaklada/html/node_modules/jsdom/lib/jsdom/living/selectors.js
"use strict";
const nwmatcher = require("nwmatcher/src/nwmatcher-noqsa");
const memoizeQuery = require("../utils").memoizeQuery;
const domSymbolTree = require("./helpers/internal-constants").domSymbolTree;
const createStaticNodeList = require("../living/node-list").createStatic;

module.exports = function (core) {
  for (const Class of [core.Document, core.DocumentFragment, core.Element]) {
    Class.prototype.querySelector = memoizeQuery(function (selectors) {
      return addNwmatcher(this).first(String(selectors), this);
    });

    Class.prototype.querySelectorAll = memoizeQuery(function (selectors) {
      return createStaticNodeList(addNwmatcher(this).select(String(selectors), this));
    });
  }

  core.Element.prototype.matches = memoizeQuery(function (selectors) {
    return addNwmatcher(this).match(this, selectors);
  });
};

// Internal method so you don't have to go through the public API
module.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, 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;
}