UNPKG

948 BJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, '__esModule', { value: true });
4
5const childNodes = (node) => {
6 let frag = document.createDocumentFragment();
7 while (node.firstChild) {
8 frag.appendChild(node.firstChild);
9 }
10 return frag
11};
12
13const mergeSlots = (targetNode, sourceNode) => {
14 let namedSlots = sourceNode.querySelectorAll("slot[name]");
15
16 namedSlots.forEach((slot) => {
17 let name = slot.attributes.name.value;
18 let node = targetNode.querySelector(`[slot="${name}"]`);
19 if (!node) {
20 slot.parentNode.replaceChild(childNodes(slot), slot);
21 return
22 }
23 node.removeAttribute("slot");
24 slot.parentNode.replaceChild(node, slot);
25 });
26
27 let defaultSlot = sourceNode.querySelector("slot:not([name])");
28
29 if (defaultSlot) {
30 defaultSlot.parentNode.replaceChild(
31 childNodes(targetNode.innerHTML.trim() ? targetNode : defaultSlot),
32 defaultSlot
33 );
34 }
35};
36
37exports.mergeSlots = mergeSlots;