summaryrefslogtreecommitdiff
path: root/alarm/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSlotElement-impl.js
diff options
context:
space:
mode:
Diffstat (limited to 'alarm/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSlotElement-impl.js')
-rw-r--r--alarm/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSlotElement-impl.js59
1 files changed, 59 insertions, 0 deletions
diff --git a/alarm/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSlotElement-impl.js b/alarm/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSlotElement-impl.js
new file mode 100644
index 0000000..a926993
--- /dev/null
+++ b/alarm/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSlotElement-impl.js
@@ -0,0 +1,59 @@
+"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
+};