Sha256: 98861722c93464f0d100010bf56df5621ccb2b2f4e5cdb61f647b040215cbd68

Contents?: true

Size: 1.5 KB

Versions: 46

Compression:

Stored size: 1.5 KB

Contents

"use strict";

const idlUtils = require("../generated/utils");
const HTMLElement = require("../generated/HTMLElement");
const HTMLElementImpl = require("./HTMLElement-impl").implementation;

const { nodeRoot } = require("../helpers/node");
const { assignSlotableForTree, findFlattenedSlotables } = require("../helpers/shadow-dom");

class HTMLSlotElementImpl extends HTMLElementImpl {
  constructor(globalObject, args, privateData) {
    super(globalObject, args, privateData);
    this._assignedNodes = [];
  }

  // https://dom.spec.whatwg.org/#slot-name
  get name() {
    return this.getAttributeNS(null, "name") || "";
  }

  _attrModified(name, value, oldValue) {
    super._attrModified(name, value, oldValue);

    // https://dom.spec.whatwg.org/#slot-name
    if (name === "name") {
      if (value === oldValue) {
        return;
      }

      if (value === null && oldValue === "") {
        return;
      }

      if (value === "" && oldValue === null) {
        return;
      }

      assignSlotableForTree(nodeRoot(this));
    }
  }

  // https://html.spec.whatwg.org/#dom-slot-assignednodes
  assignedNodes(options) {
    if (!options || !options.flatten) {
      return this._assignedNodes.map(idlUtils.wrapperForImpl);
    }

    return findFlattenedSlotables(this).map(idlUtils.wrapperForImpl);
  }

  // https://html.spec.whatwg.org/#dom-slot-assignedelements
  assignedElements(options) {
    return this.assignedNodes(options).filter(HTMLElement.is);
  }
}

module.exports = {
  implementation: HTMLSlotElementImpl
};

Version data entries

46 entries across 46 versions & 2 rubygems

Version Path
appmap-0.66.1 ./node_modules/jsdom/lib/jsdom/living/nodes/HTMLSlotElement-impl.js
appmap-0.66.0 ./node_modules/jsdom/lib/jsdom/living/nodes/HTMLSlotElement-impl.js
appmap-0.65.1 ./node_modules/jsdom/lib/jsdom/living/nodes/HTMLSlotElement-impl.js
appmap-0.65.0 ./node_modules/jsdom/lib/jsdom/living/nodes/HTMLSlotElement-impl.js
appmap-0.64.0 ./node_modules/jsdom/lib/jsdom/living/nodes/HTMLSlotElement-impl.js
appmap-0.63.0 ./node_modules/jsdom/lib/jsdom/living/nodes/HTMLSlotElement-impl.js