Skip to content

Instantly share code, notes, and snippets.

/**
* cloneNode(true), but also clones shadow roots.
* @param {Element}
* @param {ShadowRoot[]} [shadowRoots] Any closed shadow roots passed here will be included.
*/
function cloneWithShadowRoots(node, shadowRoots = []) {
function walk(node, clone) {
let shadow = node.shadowRoot || shadowRoots.find(r => r.host === node);
if (shadow) {
(clone.shadowRoot || clone.attachShadow({ mode: shadow.mode })).append(...[].map.call(shadow.childNodes, c => c.cloneNode(true)));
@izengliang
izengliang / .js
Created September 29, 2020 11:32
map part calc
const map = [
"****",
"*..*",
"**.*",
"****",
"**.*",
"**.*",
"*.**",
"****"
];