1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, '__esModule', { value: true });
|
4 |
|
5 | const childNodes = (node) => {
|
6 | let frag = document.createDocumentFragment();
|
7 | while (node.firstChild) {
|
8 | frag.appendChild(node.firstChild);
|
9 | }
|
10 | return frag
|
11 | };
|
12 |
|
13 | const 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 |
|
37 | exports.mergeSlots = mergeSlots;
|