Blame view

lib/jsdom/living/nodes/DocumentOrShadowRoot-impl.js 731 Bytes
858f2bdf5   Boyan Georgiev   fixes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
  "use strict";
  const NODE_TYPE = require("../node-type");
  const { nodeRoot } = require("../helpers/node");
  const { retarget } = require("../helpers/shadow-dom");
  
  class DocumentOrShadowRootImpl {
    get activeElement() {
      let candidate = this._ownerDocument._lastFocusedElement || this._ownerDocument.body;
      if (!candidate) {
        return null;
      }
      candidate = retarget(candidate, this);
      if (nodeRoot(candidate) !== this) {
        return null;
      }
      if (candidate.nodeType !== NODE_TYPE.DOCUMENT_NODE) {
        return candidate;
      }
      if (candidate.body !== null) {
        return candidate.body;
      }
      return candidate.documentElement;
    }
  }
  
  module.exports = {
    implementation: DocumentOrShadowRootImpl
  };