diff --git a/package.json b/package.json index 168beb7..ec68f50 100644 --- a/package.json +++ b/package.json @@ -31,12 +31,12 @@ "homepage": "https://webcomponents.org/polyfills", "devDependencies": { "@webcomponents/custom-elements": "^1.0.0", - "@webcomponents/shadycss": "^1.0.0", + "@webcomponents/shadycss": "^1.0.2", "@webcomponents/template": "^1.0.0", "@webcomponents/webcomponents-platform": "^1.0.0", "eslint": "^3.4.0", "eslint-plugin-html": "^2.0.0", - "google-closure-compiler": "^20170409.0.0", + "google-closure-compiler": "^20170626.0.0", "gulp": "^3.8.8", "gulp-rename": "^1.2.2", "gulp-rollup": "^2.5.1", diff --git a/shadydom.min.js b/shadydom.min.js index 49c4eb2..d48cbe1 100644 --- a/shadydom.min.js +++ b/shadydom.min.js @@ -9,58 +9,59 @@ Code distributed by Google as part of the polymer project is also subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt */ 'use strict';function n(a,b){return{index:a,j:[],m:b}} -function aa(a,b,c,d){var e=0,h=0,g=0,f=0,l=Math.min(b-e,d-h);if(0==e&&0==h)a:{for(g=0;g]/g;function ia(a){switch(a){case "&":return"&";case "<":return"<";case ">":return">";case '"':return""";case "\u00a0":return" "}}function ja(a){for(var b={},c=0;c";break a;case Node.TEXT_NODE:f=f.data;f=l&&ma[l.localName]?f:f.replace(ha,ia);break a;case Node.COMMENT_NODE:f="\x3c!--"+f.data+"--\x3e";break a;default:throw window.console.error(f), -Error("not implemented");}}c+=f}return c};var D={},E=document.createTreeWalker(document,NodeFilter.SHOW_ALL,null,!1),F=document.createTreeWalker(document,NodeFilter.SHOW_ELEMENT,null,!1);function na(a){var b=[];E.currentNode=a;for(a=E.firstChild();a;)b.push(a),a=E.nextSibling();return b}D.parentNode=function(a){E.currentNode=a;return E.parentNode()};D.firstChild=function(a){E.currentNode=a;return E.firstChild()};D.lastChild=function(a){E.currentNode=a;return E.lastChild()};D.previousSibling=function(a){E.currentNode=a;return E.previousSibling()}; -D.nextSibling=function(a){E.currentNode=a;return E.nextSibling()};D.childNodes=na;D.parentElement=function(a){F.currentNode=a;return F.parentNode()};D.firstElementChild=function(a){F.currentNode=a;return F.firstChild()};D.lastElementChild=function(a){F.currentNode=a;return F.lastChild()};D.previousElementSibling=function(a){F.currentNode=a;return F.previousSibling()};D.nextElementSibling=function(a){F.currentNode=a;return F.nextSibling()}; -D.children=function(a){var b=[];F.currentNode=a;for(a=F.firstChild();a;)b.push(a),a=F.nextSibling();return b};D.innerHTML=function(a){return C(a,function(a){return na(a)})};D.textContent=function(a){switch(a.nodeType){case Node.ELEMENT_NODE:case Node.DOCUMENT_FRAGMENT_NODE:a=document.createTreeWalker(a,NodeFilter.SHOW_TEXT,null,!1);for(var b="",c;c=a.nextNode();)b+=c.nodeValue;return b;default:return a.nodeValue}};var G=Object.getOwnPropertyDescriptor(Element.prototype,"innerHTML")||Object.getOwnPropertyDescriptor(HTMLElement.prototype,"innerHTML"),H=document.implementation.createHTMLDocument("inert").createElement("div"),I=Object.getOwnPropertyDescriptor(Document.prototype,"activeElement"),oa={parentElement:{get:function(){var a=this.__shady&&this.__shady.parentNode;a&&a.nodeType!==Node.ELEMENT_NODE&&(a=null);return void 0!==a?a:D.parentElement(this)},configurable:!0},parentNode:{get:function(){var a=this.__shady&& +function aa(a,b,c,d){var e=0,g=0,h=0,f=0,k=Math.min(b-e,d-g);if(0==e&&0==g)a:{for(h=0;h]/g;function ja(a){switch(a){case "&":return"&";case "<":return"<";case ">":return">";case '"':return""";case "\u00a0":return" "}}function ka(a){for(var b={},c=0;c";break a;case Node.TEXT_NODE:f=f.data;f=k&&na[k.localName]?f:f.replace(ia,ja);break a;case Node.COMMENT_NODE:f="\x3c!--"+f.data+"--\x3e";break a;default:throw window.console.error(f), +Error("not implemented");}}c+=f}return c};var D={},E=document.createTreeWalker(document,NodeFilter.SHOW_ALL,null,!1),F=document.createTreeWalker(document,NodeFilter.SHOW_ELEMENT,null,!1);function oa(a){var b=[];E.currentNode=a;for(a=E.firstChild();a;)b.push(a),a=E.nextSibling();return b}D.parentNode=function(a){E.currentNode=a;return E.parentNode()};D.firstChild=function(a){E.currentNode=a;return E.firstChild()};D.lastChild=function(a){E.currentNode=a;return E.lastChild()};D.previousSibling=function(a){E.currentNode=a;return E.previousSibling()}; +D.nextSibling=function(a){E.currentNode=a;return E.nextSibling()};D.childNodes=oa;D.parentElement=function(a){F.currentNode=a;return F.parentNode()};D.firstElementChild=function(a){F.currentNode=a;return F.firstChild()};D.lastElementChild=function(a){F.currentNode=a;return F.lastChild()};D.previousElementSibling=function(a){F.currentNode=a;return F.previousSibling()};D.nextElementSibling=function(a){F.currentNode=a;return F.nextSibling()}; +D.children=function(a){var b=[];F.currentNode=a;for(a=F.firstChild();a;)b.push(a),a=F.nextSibling();return b};D.innerHTML=function(a){return C(a,function(a){return oa(a)})};D.textContent=function(a){switch(a.nodeType){case Node.ELEMENT_NODE:case Node.DOCUMENT_FRAGMENT_NODE:a=document.createTreeWalker(a,NodeFilter.SHOW_TEXT,null,!1);for(var b="",c;c=a.nextNode();)b+=c.nodeValue;return b;default:return a.nodeValue}};var G=Object.getOwnPropertyDescriptor(Element.prototype,"innerHTML")||Object.getOwnPropertyDescriptor(HTMLElement.prototype,"innerHTML"),H=document.implementation.createHTMLDocument("inert").createElement("div"),I=Object.getOwnPropertyDescriptor(Document.prototype,"activeElement"),pa={parentElement:{get:function(){var a=this.__shady&&this.__shady.parentNode;a&&a.nodeType!==Node.ELEMENT_NODE&&(a=null);return void 0!==a?a:D.parentElement(this)},configurable:!0},parentNode:{get:function(){var a=this.__shady&& this.__shady.parentNode;return void 0!==a?a:D.parentNode(this)},configurable:!0},nextSibling:{get:function(){var a=this.__shady&&this.__shady.nextSibling;return void 0!==a?a:D.nextSibling(this)},configurable:!0},previousSibling:{get:function(){var a=this.__shady&&this.__shady.previousSibling;return void 0!==a?a:D.previousSibling(this)},configurable:!0},className:{get:function(){return this.getAttribute("class")||""},set:function(a){this.setAttribute("class",a)},configurable:!0},nextElementSibling:{get:function(){if(this.__shady&& -void 0!==this.__shady.nextSibling){for(var a=this.nextSibling;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.nextSibling;return a}return D.nextElementSibling(this)},configurable:!0},previousElementSibling:{get:function(){if(this.__shady&&void 0!==this.__shady.previousSibling){for(var a=this.previousSibling;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.previousSibling;return a}return D.previousElementSibling(this)},configurable:!0}},J={childNodes:{get:function(){var a;if(t(this)){if(!this.__shady.childNodes){this.__shady.childNodes= -[];for(var b=this.firstChild;b;b=b.nextSibling)this.__shady.childNodes.push(b)}a=this.__shady.childNodes}else a=D.childNodes(this);a.item=function(b){return a[b]};return a},configurable:!0},childElementCount:{get:function(){return this.children.length},configurable:!0},firstChild:{get:function(){var a=this.__shady&&this.__shady.firstChild;return void 0!==a?a:D.firstChild(this)},configurable:!0},lastChild:{get:function(){var a=this.__shady&&this.__shady.lastChild;return void 0!==a?a:D.lastChild(this)}, +void 0!==this.__shady.nextSibling){for(var a=this.nextSibling;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.nextSibling;return a}return D.nextElementSibling(this)},configurable:!0},previousElementSibling:{get:function(){if(this.__shady&&void 0!==this.__shady.previousSibling){for(var a=this.previousSibling;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.previousSibling;return a}return D.previousElementSibling(this)},configurable:!0}},J={childNodes:{get:function(){if(t(this)){if(!this.__shady.childNodes){this.__shady.childNodes= +[];for(var a=this.firstChild;a;a=a.nextSibling)this.__shady.childNodes.push(a)}var b=this.__shady.childNodes}else b=D.childNodes(this);b.item=function(a){return b[a]};return b},configurable:!0},childElementCount:{get:function(){return this.children.length},configurable:!0},firstChild:{get:function(){var a=this.__shady&&this.__shady.firstChild;return void 0!==a?a:D.firstChild(this)},configurable:!0},lastChild:{get:function(){var a=this.__shady&&this.__shady.lastChild;return void 0!==a?a:D.lastChild(this)}, configurable:!0},textContent:{get:function(){if(t(this)){for(var a=[],b=0,c=this.childNodes,d;d=c[b];b++)d.nodeType!==Node.COMMENT_NODE&&a.push(d.textContent);return a.join("")}return D.textContent(this)},set:function(a){switch(this.nodeType){case Node.ELEMENT_NODE:case Node.DOCUMENT_FRAGMENT_NODE:for(;this.firstChild;)this.removeChild(this.firstChild);this.appendChild(document.createTextNode(a));break;default:this.nodeValue=a}},configurable:!0},firstElementChild:{get:function(){if(this.__shady&& void 0!==this.__shady.firstChild){for(var a=this.firstChild;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.nextSibling;return a}return D.firstElementChild(this)},configurable:!0},lastElementChild:{get:function(){if(this.__shady&&void 0!==this.__shady.lastChild){for(var a=this.lastChild;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.previousSibling;return a}return D.lastElementChild(this)},configurable:!0},children:{get:function(){var a;t(this)?a=Array.prototype.filter.call(this.childNodes,function(a){return a.nodeType=== -Node.ELEMENT_NODE}):a=D.children(this);a.item=function(b){return a[b]};return a},configurable:!0},innerHTML:{get:function(){var a="template"===this.localName?this.content:this;return t(this)?C(a):D.innerHTML(a)},set:function(a){for(var b="template"===this.localName?this.content:this;b.firstChild;)b.removeChild(b.firstChild);for(G&&G.set?G.set.call(H,a):H.innerHTML=a;H.firstChild;)b.appendChild(H.firstChild)},configurable:!0}},pa={shadowRoot:{get:function(){return this.__shady&&this.__shady.S||null}, -configurable:!0}},K={activeElement:{get:function(){var a;a=I&&I.get?I.get.call(document):p.h?void 0:document.activeElement;if(a&&a.nodeType){var b=!!u(this);if(this===document||b&&this.host!==a&&this.host.contains(a)){for(b=v(a);b&&b!==this;)a=b.host,b=v(a);a=this===document?b?null:a:b===this?a:null}else a=null}else a=null;return a},set:function(){},configurable:!0}}; -function L(a,b,c){for(var d in b){var e=Object.getOwnPropertyDescriptor(a,d);e&&e.configurable||!e&&c?Object.defineProperty(a,d,b[d]):c&&console.warn("Could not define",d,"on",a)}}function M(a){L(a,oa);L(a,J);L(a,K)}var qa=p.h?function(){}:function(a){a.__shady&&a.__shady.L||(a.__shady=a.__shady||{},a.__shady.L=!0,L(a,oa,!0))},ra=p.h?function(){}:function(a){a.__shady&&a.__shady.J||(a.__shady=a.__shady||{},a.__shady.J=!0,L(a,J,!0),L(a,pa,!0))};function sa(a,b,c){qa(a);c=c||null;a.__shady=a.__shady||{};b.__shady=b.__shady||{};c&&(c.__shady=c.__shady||{});a.__shady.previousSibling=c?c.__shady.previousSibling:b.lastChild;var d=a.__shady.previousSibling;d&&d.__shady&&(d.__shady.nextSibling=a);(d=a.__shady.nextSibling=c)&&d.__shady&&(d.__shady.previousSibling=a);a.__shady.parentNode=b;c?c===b.__shady.firstChild&&(b.__shady.firstChild=a):(b.__shady.lastChild=a,b.__shady.firstChild||(b.__shady.firstChild=a));b.__shady.childNodes=null} -function N(a){if(!a.__shady||void 0===a.__shady.firstChild){a.__shady=a.__shady||{};a.__shady.firstChild=D.firstChild(a);a.__shady.lastChild=D.lastChild(a);ra(a);for(var b=a.__shady.childNodes=D.childNodes(a),c=0,d;cb.__shady.assignedNodes.length&&(b.__shady.A=!0)}b.__shady.A&&(b.__shady.A=!1,Wa(this,b))}a=this.b;b=[];for(c=0;cb.indexOf(d))||b.push(d);for(a=0;ab.__shady.assignedNodes.length&&(b.__shady.A=!0)}b.__shady.A&&(b.__shady.A=!1,Xa(this,b))}a=this.b;b=[];for(c=0;cb.indexOf(d))||b.push(d);for(a=0;a '123yyyy'\n//\n// With 1-edit updates, the shortest path would be just to update all seven\n// characters. With 2-edit updates, we delete 4, leave 3, and add 4. This\n// leaves the substring '123' intact.\nfunction calcEditDistances(current, currentStart, currentEnd,\n old, oldStart, oldEnd) {\n // \"Deletion\" columns\n let rowCount = oldEnd - oldStart + 1;\n let columnCount = currentEnd - currentStart + 1;\n let distances = new Array(rowCount);\n\n // \"Addition\" rows. Initialize null column.\n for (let i = 0; i < rowCount; i++) {\n distances[i] = new Array(columnCount);\n distances[i][0] = i;\n }\n\n // Initialize null row\n for (let j = 0; j < columnCount; j++)\n distances[0][j] = j;\n\n for (let i = 1; i < rowCount; i++) {\n for (let j = 1; j < columnCount; j++) {\n if (equals(current[currentStart + j - 1], old[oldStart + i - 1]))\n distances[i][j] = distances[i - 1][j - 1];\n else {\n let north = distances[i - 1][j] + 1;\n let west = distances[i][j - 1] + 1;\n distances[i][j] = north < west ? north : west;\n }\n }\n }\n\n return distances;\n}\n\n// This starts at the final weight, and walks \"backward\" by finding\n// the minimum previous weight recursively until the origin of the weight\n// matrix.\nfunction spliceOperationsFromEditDistances(distances) {\n let i = distances.length - 1;\n let j = distances[0].length - 1;\n let current = distances[i][j];\n let edits = [];\n while (i > 0 || j > 0) {\n if (i == 0) {\n edits.push(EDIT_ADD);\n j--;\n continue;\n }\n if (j == 0) {\n edits.push(EDIT_DELETE);\n i--;\n continue;\n }\n let northWest = distances[i - 1][j - 1];\n let west = distances[i - 1][j];\n let north = distances[i][j - 1];\n\n let min;\n if (west < north)\n min = west < northWest ? west : northWest;\n else\n min = north < northWest ? north : northWest;\n\n if (min == northWest) {\n if (northWest == current) {\n edits.push(EDIT_LEAVE);\n } else {\n edits.push(EDIT_UPDATE);\n current = northWest;\n }\n i--;\n j--;\n } else if (min == west) {\n edits.push(EDIT_DELETE);\n i--;\n current = west;\n } else {\n edits.push(EDIT_ADD);\n j--;\n current = north;\n }\n }\n\n edits.reverse();\n return edits;\n}\n\n/**\n * Splice Projection functions:\n *\n * A splice map is a representation of how a previous array of items\n * was transformed into a new array of items. Conceptually it is a list of\n * tuples of\n *\n * \n *\n * which are kept in ascending index order of. The tuple represents that at\n * the |index|, |removed| sequence of items were removed, and counting forward\n * from |index|, |addedCount| items were added.\n */\n\n/**\n * Lacking individual splice mutation information, the minimal set of\n * splices can be synthesized given the previous state and final state of an\n * array. The basic approach is to calculate the edit distance matrix and\n * choose the shortest path through it.\n *\n * Complexity: O(l * p)\n * l: The length of the current array\n * p: The length of the old array\n */\nfunction calcSplices(current, currentStart, currentEnd,\n old, oldStart, oldEnd) {\n let prefixCount = 0;\n let suffixCount = 0;\n let splice;\n\n let minLength = Math.min(currentEnd - currentStart, oldEnd - oldStart);\n if (currentStart == 0 && oldStart == 0)\n prefixCount = sharedPrefix(current, old, minLength);\n\n if (currentEnd == current.length && oldEnd == old.length)\n suffixCount = sharedSuffix(current, old, minLength - prefixCount);\n\n currentStart += prefixCount;\n oldStart += prefixCount;\n currentEnd -= suffixCount;\n oldEnd -= suffixCount;\n\n if (currentEnd - currentStart == 0 && oldEnd - oldStart == 0)\n return [];\n\n if (currentStart == currentEnd) {\n splice = newSplice(currentStart, [], 0);\n while (oldStart < oldEnd)\n splice.removed.push(old[oldStart++]);\n\n return [ splice ];\n } else if (oldStart == oldEnd)\n return [ newSplice(currentStart, [], currentEnd - currentStart) ];\n\n let ops = spliceOperationsFromEditDistances(\n calcEditDistances(current, currentStart, currentEnd,\n old, oldStart, oldEnd));\n\n splice = undefined;\n let splices = [];\n let index = currentStart;\n let oldIndex = oldStart;\n for (let i = 0; i < ops.length; i++) {\n switch(ops[i]) {\n case EDIT_LEAVE:\n if (splice) {\n splices.push(splice);\n splice = undefined;\n }\n\n index++;\n oldIndex++;\n break;\n case EDIT_UPDATE:\n if (!splice)\n splice = newSplice(index, [], 0);\n\n splice.addedCount++;\n index++;\n\n splice.removed.push(old[oldIndex]);\n oldIndex++;\n break;\n case EDIT_ADD:\n if (!splice)\n splice = newSplice(index, [], 0);\n\n splice.addedCount++;\n index++;\n break;\n case EDIT_DELETE:\n if (!splice)\n splice = newSplice(index, [], 0);\n\n splice.removed.push(old[oldIndex]);\n oldIndex++;\n break;\n }\n }\n\n if (splice) {\n splices.push(splice);\n }\n return splices;\n}\n\nfunction sharedPrefix(current, old, searchLength) {\n for (let i = 0; i < searchLength; i++)\n if (!equals(current[i], old[i]))\n return i;\n return searchLength;\n}\n\nfunction sharedSuffix(current, old, searchLength) {\n let index1 = current.length;\n let index2 = old.length;\n let count = 0;\n while (count < searchLength && equals(current[--index1], old[--index2]))\n count++;\n\n return count;\n}\n\nfunction equals(currentValue, previousValue) {\n return currentValue === previousValue;\n}\n\nexport function calculateSplices(current, previous) {\n return calcSplices(current, 0, current.length, previous, 0,\n previous.length);\n}\n\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nexport let settings = window['ShadyDOM'] || {};\n\nsettings.hasNativeShadowDOM = Boolean(Element.prototype.attachShadow && Node.prototype.getRootNode);\n\nlet desc = Object.getOwnPropertyDescriptor(Node.prototype, 'firstChild');\n\nsettings.hasDescriptors = Boolean(desc && desc.configurable && desc.get);\nsettings.inUse = settings['force'] || !settings.hasNativeShadowDOM;\n\nexport function isTrackingLogicalChildNodes(node) {\n return (node.__shady && node.__shady.firstChild !== undefined);\n}\n\nexport function isShadyRoot(obj) {\n return Boolean(obj.__localName === 'ShadyRoot');\n}\n\nexport function ownerShadyRootForNode(node) {\n let root = node.getRootNode();\n if (isShadyRoot(root)) {\n return root;\n }\n}\n\nlet p = Element.prototype;\nlet matches = p.matches || p.matchesSelector ||\n p.mozMatchesSelector || p.msMatchesSelector ||\n p.oMatchesSelector || p.webkitMatchesSelector;\n\nexport function matchesSelector(element, selector) {\n return matches.call(element, selector);\n}\n\nfunction copyOwnProperty(name, source, target) {\n let pd = Object.getOwnPropertyDescriptor(source, name);\n if (pd) {\n Object.defineProperty(target, name, pd);\n }\n}\n\nexport function extend(target, source) {\n if (target && source) {\n let n$ = Object.getOwnPropertyNames(source);\n for (let i=0, n; (i {\n while (queue.length) {\n // catch errors in user code...\n try {\n queue.shift()();\n } catch(e) {\n // enqueue another record and throw\n twiddle.textContent = content++;\n throw(e);\n }\n }\n}).observe(twiddle, {characterData: true});\n\n// use MutationObserver to get microtask async timing.\nexport function microtask(callback) {\n queue.push(callback);\n twiddle.textContent = content++;\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n// Cribbed from ShadowDOM polyfill\n// https://github.com/webcomponents/webcomponentsjs/blob/master/src/ShadowDOM/wrappers/HTMLElement.js#L28\n/////////////////////////////////////////////////////////////////////////////\n// innerHTML and outerHTML\n\n// http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.html#escapingString\nlet escapeAttrRegExp = /[&\\u00A0\"]/g;\nlet escapeDataRegExp = /[&\\u00A0<>]/g;\n\nfunction escapeReplace(c) {\n switch (c) {\n case '&':\n return '&';\n case '<':\n return '<';\n case '>':\n return '>';\n case '\"':\n return '"';\n case '\\u00A0':\n return ' ';\n }\n}\n\nfunction escapeAttr(s) {\n return s.replace(escapeAttrRegExp, escapeReplace);\n}\n\nfunction escapeData(s) {\n return s.replace(escapeDataRegExp, escapeReplace);\n}\n\nfunction makeSet(arr) {\n let set = {};\n for (let i = 0; i < arr.length; i++) {\n set[arr[i]] = true;\n }\n return set;\n}\n\n// http://www.whatwg.org/specs/web-apps/current-work/#void-elements\nlet voidElements = makeSet([\n 'area',\n 'base',\n 'br',\n 'col',\n 'command',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr'\n]);\n\nlet plaintextParents = makeSet([\n 'style',\n 'script',\n 'xmp',\n 'iframe',\n 'noembed',\n 'noframes',\n 'plaintext',\n 'noscript'\n]);\n\n/**\n * @param {Node} node\n * @param {Node} parentNode\n * @param {Function=} callback\n */\nexport function getOuterHTML(node, parentNode, callback) {\n switch (node.nodeType) {\n case Node.ELEMENT_NODE: {\n let tagName = node.localName;\n let s = '<' + tagName;\n let attrs = node.attributes;\n for (let i = 0, attr; (attr = attrs[i]); i++) {\n s += ' ' + attr.name + '=\"' + escapeAttr(attr.value) + '\"';\n }\n s += '>';\n if (voidElements[tagName]) {\n return s;\n }\n return s + getInnerHTML(node, callback) + '';\n }\n case Node.TEXT_NODE: {\n let data = /** @type {Text} */ (node).data;\n if (parentNode && plaintextParents[parentNode.localName]) {\n return data;\n }\n return escapeData(data);\n }\n case Node.COMMENT_NODE: {\n return '';\n }\n default: {\n window.console.error(node);\n throw new Error('not implemented');\n }\n }\n}\n\n/**\n * @param {Node} node\n * @param {Function=} callback\n */\nexport function getInnerHTML(node, callback) {\n if (node.localName === 'template') {\n node = /** @type {HTMLTemplateElement} */ (node).content;\n }\n let s = '';\n let c$ = callback ? callback(node) : node.childNodes;\n for (let i=0, l=c$.length, child; (i childNodes(n));\n}\n\nexport function textContent(node) {\n switch (node.nodeType) {\n case Node.ELEMENT_NODE:\n case Node.DOCUMENT_FRAGMENT_NODE:\n let textWalker = document.createTreeWalker(node, NodeFilter.SHOW_TEXT,\n null, false);\n let content = '', n;\n while ( (n = textWalker.nextNode()) ) {\n // TODO(sorvell): can't use textContent since we patch it on Node.prototype!\n // However, should probably patch it only on element.\n content += n.nodeValue;\n }\n return content;\n default:\n return node.nodeValue;\n }\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport {getInnerHTML} from './innerHTML.js';\nimport * as nativeTree from './native-tree.js';\n\nfunction clearNode(node) {\n while (node.firstChild) {\n node.removeChild(node.firstChild);\n }\n}\n\nconst nativeInnerHTMLDesc = /** @type {ObjectPropertyDescriptor} */(\n Object.getOwnPropertyDescriptor(Element.prototype, 'innerHTML') ||\n Object.getOwnPropertyDescriptor(HTMLElement.prototype, 'innerHTML'));\n\nconst inertDoc = document.implementation.createHTMLDocument('inert');\nconst htmlContainer = inertDoc.createElement('div');\n\nconst nativeActiveElementDescriptor =\n /** @type {ObjectPropertyDescriptor} */(\n Object.getOwnPropertyDescriptor(Document.prototype, 'activeElement')\n );\nfunction getDocumentActiveElement() {\n if (nativeActiveElementDescriptor && nativeActiveElementDescriptor.get) {\n return nativeActiveElementDescriptor.get.call(document);\n } else if (!utils.settings.hasDescriptors) {\n return document.activeElement;\n }\n}\n\nfunction activeElementForNode(node) {\n let active = getDocumentActiveElement();\n // In IE11, activeElement might be an empty object if the document is\n // contained in an iframe.\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10998788/\n if (!active || !active.nodeType) {\n return null;\n }\n let isShadyRoot = !!(utils.isShadyRoot(node));\n if (node !== document) {\n // If this node isn't a document or shady root, then it doesn't have\n // an active element.\n if (!isShadyRoot) {\n return null;\n }\n // If this shady root's host is the active element or the active\n // element is not a descendant of the host (in the composed tree),\n // then it doesn't have an active element.\n if (node.host === active ||\n !node.host.contains(active)) {\n return null;\n }\n }\n // This node is either the document or a shady root of which the active\n // element is a (composed) descendant of its host; iterate upwards to\n // find the active element's most shallow host within it.\n let activeRoot = utils.ownerShadyRootForNode(active);\n while (activeRoot && activeRoot !== node) {\n active = activeRoot.host;\n activeRoot = utils.ownerShadyRootForNode(active);\n }\n if (node === document) {\n // This node is the document, so activeRoot should be null.\n return activeRoot ? null : active;\n } else {\n // This node is a non-document shady root, and it should be\n // activeRoot.\n return activeRoot === node ? active : null;\n }\n}\n\nlet OutsideAccessors = {\n\n parentElement: {\n /** @this {Node} */\n get() {\n let l = this.__shady && this.__shady.parentNode;\n if (l && l.nodeType !== Node.ELEMENT_NODE) {\n l = null;\n }\n return l !== undefined ? l : nativeTree.parentElement(this);\n },\n configurable: true\n },\n\n parentNode: {\n /** @this {Node} */\n get() {\n let l = this.__shady && this.__shady.parentNode;\n return l !== undefined ? l : nativeTree.parentNode(this);\n },\n configurable: true\n },\n\n nextSibling: {\n /** @this {Node} */\n get() {\n let l = this.__shady && this.__shady.nextSibling;\n return l !== undefined ? l : nativeTree.nextSibling(this);\n },\n configurable: true\n },\n\n previousSibling: {\n /** @this {Node} */\n get() {\n let l = this.__shady && this.__shady.previousSibling;\n return l !== undefined ? l : nativeTree.previousSibling(this);\n },\n configurable: true\n },\n\n className: {\n /**\n * @this {HTMLElement}\n */\n get() {\n return this.getAttribute('class') || '';\n },\n /**\n * @this {HTMLElement}\n */\n set(value) {\n this.setAttribute('class', value);\n },\n configurable: true\n },\n\n // fragment, element, document\n nextElementSibling: {\n /**\n * @this {HTMLElement}\n */\n get() {\n if (this.__shady && this.__shady.nextSibling !== undefined) {\n let n = this.nextSibling;\n while (n && n.nodeType !== Node.ELEMENT_NODE) {\n n = n.nextSibling;\n }\n return n;\n } else {\n return nativeTree.nextElementSibling(this);\n }\n },\n configurable: true\n },\n\n previousElementSibling: {\n /**\n * @this {HTMLElement}\n */\n get() {\n if (this.__shady && this.__shady.previousSibling !== undefined) {\n let n = this.previousSibling;\n while (n && n.nodeType !== Node.ELEMENT_NODE) {\n n = n.previousSibling;\n }\n return n;\n } else {\n return nativeTree.previousElementSibling(this);\n }\n },\n configurable: true\n }\n\n};\n\nlet InsideAccessors = {\n\n childNodes: {\n /**\n * @this {HTMLElement}\n */\n get() {\n let childNodes;\n if (utils.isTrackingLogicalChildNodes(this)) {\n if (!this.__shady.childNodes) {\n this.__shady.childNodes = [];\n for (let n=this.firstChild; n; n=n.nextSibling) {\n this.__shady.childNodes.push(n);\n }\n }\n childNodes = this.__shady.childNodes;\n } else {\n childNodes = nativeTree.childNodes(this);\n }\n childNodes.item = function(index) {\n return childNodes[index];\n }\n return childNodes;\n },\n configurable: true\n },\n\n childElementCount: {\n /** @this {HTMLElement} */\n get() {\n return this.children.length;\n },\n configurable: true\n },\n\n firstChild: {\n /** @this {HTMLElement} */\n get() {\n let l = this.__shady && this.__shady.firstChild;\n return l !== undefined ? l : nativeTree.firstChild(this);\n },\n configurable: true\n },\n\n lastChild: {\n /** @this {HTMLElement} */\n get() {\n let l = this.__shady && this.__shady.lastChild;\n return l !== undefined ? l : nativeTree.lastChild(this);\n },\n configurable: true\n },\n\n textContent: {\n /**\n * @this {HTMLElement}\n */\n get() {\n if (utils.isTrackingLogicalChildNodes(this)) {\n let tc = [];\n for (let i = 0, cn = this.childNodes, c; (c = cn[i]); i++) {\n if (c.nodeType !== Node.COMMENT_NODE) {\n tc.push(c.textContent);\n }\n }\n return tc.join('');\n } else {\n return nativeTree.textContent(this);\n }\n },\n /**\n * @this {HTMLElement}\n * @param {string} text\n */\n set(text) {\n switch (this.nodeType) {\n case Node.ELEMENT_NODE:\n case Node.DOCUMENT_FRAGMENT_NODE:\n clearNode(this);\n this.appendChild(document.createTextNode(text));\n break;\n default:\n // TODO(sorvell): can't do this if patch nodeValue.\n this.nodeValue = text;\n break;\n }\n },\n configurable: true\n },\n\n // fragment, element, document\n firstElementChild: {\n /**\n * @this {HTMLElement}\n */\n get() {\n if (this.__shady && this.__shady.firstChild !== undefined) {\n let n = this.firstChild;\n while (n && n.nodeType !== Node.ELEMENT_NODE) {\n n = n.nextSibling;\n }\n return n;\n } else {\n return nativeTree.firstElementChild(this);\n }\n },\n configurable: true\n },\n\n lastElementChild: {\n /**\n * @this {HTMLElement}\n */\n get() {\n if (this.__shady && this.__shady.lastChild !== undefined) {\n let n = this.lastChild;\n while (n && n.nodeType !== Node.ELEMENT_NODE) {\n n = n.previousSibling;\n }\n return n;\n } else {\n return nativeTree.lastElementChild(this);\n }\n },\n configurable: true\n },\n\n children: {\n /**\n * @this {HTMLElement}\n */\n get() {\n let children;\n if (utils.isTrackingLogicalChildNodes(this)) {\n children = Array.prototype.filter.call(this.childNodes, function(n) {\n return (n.nodeType === Node.ELEMENT_NODE);\n });\n } else {\n children = nativeTree.children(this);\n }\n children.item = function(index) {\n return children[index];\n }\n return children;\n },\n configurable: true\n },\n\n // element (HTMLElement on IE11)\n innerHTML: {\n /**\n * @this {HTMLElement}\n */\n get() {\n let content = this.localName === 'template' ?\n /** @type {HTMLTemplateElement} */(this).content : this;\n if (utils.isTrackingLogicalChildNodes(this)) {\n return getInnerHTML(content);\n } else {\n return nativeTree.innerHTML(content);\n }\n },\n /**\n * @this {HTMLElement}\n */\n set(text) {\n let content = this.localName === 'template' ?\n /** @type {HTMLTemplateElement} */(this).content : this;\n clearNode(content);\n if (nativeInnerHTMLDesc && nativeInnerHTMLDesc.set) {\n nativeInnerHTMLDesc.set.call(htmlContainer, text);\n } else {\n htmlContainer.innerHTML = text;\n }\n while (htmlContainer.firstChild) {\n content.appendChild(htmlContainer.firstChild);\n }\n },\n configurable: true\n }\n\n};\n\n// Note: Can be patched on element prototype on all browsers.\n// Must be patched on instance on browsers that support native Shadow DOM\n// but do not have builtin accessors (old Chrome).\nexport let ShadowRootAccessor = {\n\n shadowRoot: {\n /**\n * @this {HTMLElement}\n */\n get() {\n return this.__shady && this.__shady.publicRoot || null;\n },\n configurable: true\n }\n};\n\n// Note: Can be patched on document prototype on browsers with builtin accessors.\n// Must be patched separately on simulated ShadowRoot.\n// Must be patched as `_activeElement` on browsers without builtin accessors.\nexport let ActiveElementAccessor = {\n\n activeElement: {\n /**\n * @this {HTMLElement}\n */\n get() {\n return activeElementForNode(this);\n },\n /**\n * @this {HTMLElement}\n */\n set() {},\n configurable: true\n }\n\n};\n\n// patch a group of descriptors on an object only if it exists or if the `force`\n// argument is true.\n/**\n * @param {!Object} obj\n * @param {!Object} descriptors\n * @param {boolean=} force\n */\nfunction patchAccessorGroup(obj, descriptors, force) {\n for (let p in descriptors) {\n let objDesc = Object.getOwnPropertyDescriptor(obj, p);\n if ((objDesc && objDesc.configurable) ||\n (!objDesc && force)) {\n Object.defineProperty(obj, p, descriptors[p]);\n } else if (force) {\n console.warn('Could not define', p, 'on', obj);\n }\n }\n}\n\n// patch dom accessors on proto where they exist\nexport function patchAccessors(proto) {\n patchAccessorGroup(proto, OutsideAccessors);\n patchAccessorGroup(proto, InsideAccessors);\n patchAccessorGroup(proto, ActiveElementAccessor);\n}\n\n// ensure element descriptors (IE/Edge don't have em)\nexport function patchShadowRootAccessors(proto) {\n patchAccessorGroup(proto, InsideAccessors, true);\n patchAccessorGroup(proto, ActiveElementAccessor, true);\n}\n\n// ensure an element has patched \"outside\" accessors; no-op when not needed\nexport let patchOutsideElementAccessors = utils.settings.hasDescriptors ?\n function() {} : function(element) {\n if (!(element.__shady && element.__shady.__outsideAccessors)) {\n element.__shady = element.__shady || {};\n element.__shady.__outsideAccessors = true;\n patchAccessorGroup(element, OutsideAccessors, true);\n }\n }\n\n// ensure an element has patched \"inside\" accessors; no-op when not needed\nexport let patchInsideElementAccessors = utils.settings.hasDescriptors ?\n function() {} : function(element) {\n if (!(element.__shady && element.__shady.__insideAccessors)) {\n element.__shady = element.__shady || {};\n element.__shady.__insideAccessors = true;\n patchAccessorGroup(element, InsideAccessors, true);\n patchAccessorGroup(element, ShadowRootAccessor, true);\n }\n }\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport {patchInsideElementAccessors, patchOutsideElementAccessors} from './patch-accessors.js';\nimport {firstChild, lastChild, childNodes} from './native-tree.js';\n\nexport function recordInsertBefore(node, container, ref_node) {\n patchInsideElementAccessors(container);\n container.__shady = container.__shady || {};\n if (container.__shady.firstChild !== undefined) {\n container.__shady.childNodes = null;\n }\n // handle document fragments\n if (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n let c$ = node.childNodes;\n for (let i=0; i < c$.length; i++) {\n linkNode(c$[i], container, ref_node);\n }\n // cleanup logical dom in doc fragment.\n node.__shady = node.__shady || {};\n let resetTo = (node.__shady.firstChild !== undefined) ? null : undefined;\n node.__shady.firstChild = node.__shady.lastChild = resetTo;\n node.__shady.childNodes = resetTo;\n } else {\n linkNode(node, container, ref_node);\n }\n}\n\nfunction linkNode(node, container, ref_node) {\n patchOutsideElementAccessors(node);\n ref_node = ref_node || null;\n node.__shady = node.__shady || {};\n container.__shady = container.__shady || {};\n if (ref_node) {\n ref_node.__shady = ref_node.__shady || {};\n }\n // update ref_node.previousSibling <-> node\n node.__shady.previousSibling = ref_node ? ref_node.__shady.previousSibling :\n container.lastChild;\n let ps = node.__shady.previousSibling;\n if (ps && ps.__shady) {\n ps.__shady.nextSibling = node;\n }\n // update node <-> ref_node\n let ns = node.__shady.nextSibling = ref_node;\n if (ns && ns.__shady) {\n ns.__shady.previousSibling = node;\n }\n // update node <-> container\n node.__shady.parentNode = container;\n if (ref_node) {\n if (ref_node === container.__shady.firstChild) {\n container.__shady.firstChild = node;\n }\n } else {\n container.__shady.lastChild = node;\n if (!container.__shady.firstChild) {\n container.__shady.firstChild = node;\n }\n }\n // remove caching of childNodes\n container.__shady.childNodes = null;\n}\n\nexport function recordRemoveChild(node, container) {\n node.__shady = node.__shady || {};\n container.__shady = container.__shady || {};\n if (node === container.__shady.firstChild) {\n container.__shady.firstChild = node.__shady.nextSibling;\n }\n if (node === container.__shady.lastChild) {\n container.__shady.lastChild = node.__shady.previousSibling;\n }\n let p = node.__shady.previousSibling;\n let n = node.__shady.nextSibling;\n if (p) {\n p.__shady = p.__shady || {};\n p.__shady.nextSibling = n;\n }\n if (n) {\n n.__shady = n.__shady || {};\n n.__shady.previousSibling = p;\n }\n // When an element is removed, logical data is no longer tracked.\n // Explicitly set `undefined` here to indicate this. This is disginguished\n // from `null` which is set if info is null.\n node.__shady.parentNode = node.__shady.previousSibling =\n node.__shady.nextSibling = undefined;\n if (container.__shady.childNodes !== undefined) {\n // remove caching of childNodes\n container.__shady.childNodes = null;\n }\n}\n\nexport let recordChildNodes = function(node) {\n if (!node.__shady || node.__shady.firstChild === undefined) {\n node.__shady = node.__shady || {};\n node.__shady.firstChild = firstChild(node);\n node.__shady.lastChild = lastChild(node);\n patchInsideElementAccessors(node);\n let c$ = node.__shady.childNodes = childNodes(node);\n for (let i=0, n; (i is added or a node is added to a host with a shadowRoot\n// with a slot, a standard dom `insert` call is aborted and `_asyncRender`\n// is called on the relevant shadowRoot. In all other cases, a standard dom\n// `insert` can be made, but the location and ref_node may need to be changed.\n/**\n * @param {Node} parent\n * @param {Node} node\n * @param {Node=} ref_node\n */\nexport function insertBefore(parent, node, ref_node) {\n if (node === parent) {\n throw Error(`Failed to execute 'appendChild' on 'Node': The new child element contains the parent.`);\n }\n if (ref_node) {\n let p = ref_node.__shady && ref_node.__shady.parentNode;\n if ((p !== undefined && p !== parent) ||\n (p === undefined && parentNode(ref_node) !== parent)) {\n throw Error(`Failed to execute 'insertBefore' on 'Node': The node ` +\n `before which the new node is to be inserted is not a child of this node.`);\n }\n }\n if (ref_node === node) {\n return node;\n }\n // remove from existing location\n if (node.parentNode) {\n // NOTE: avoid node.removeChild as this *can* trigger another patched\n // method (e.g. custom elements) and we want only the shady method to run.\n removeChild(node.parentNode, node);\n }\n // add to new parent\n let preventNativeInsert;\n let ownerRoot = utils.ownerShadyRootForNode(parent);\n // if a slot is added, must render containing root.\n let slotsAdded = ownerRoot && findContainedSlots(node);\n if (ownerRoot && (parent.localName === 'slot' || slotsAdded)) {\n ownerRoot._asyncRender();\n }\n if (utils.isTrackingLogicalChildNodes(parent)) {\n logicalTree.recordInsertBefore(node, parent, ref_node);\n // when inserting into a host with a shadowRoot with slot, use\n // `shadowRoot._asyncRender()` via `attach-shadow` module\n if (hasShadowRootWithSlot(parent)) {\n parent.__shady.root._asyncRender();\n preventNativeInsert = true;\n // when inserting into a host with shadowRoot with NO slot, do nothing\n // as the node should not be added to composed dome anywhere.\n } else if (parent.__shady.root) {\n preventNativeInsert = true;\n }\n }\n if (!preventNativeInsert) {\n // if adding to a shadyRoot, add to host instead\n let container = utils.isShadyRoot(parent) ?\n /** @type {ShadowRoot} */(parent).host : parent;\n // if ref_node, get the ref_node that's actually in composed dom.\n if (ref_node) {\n ref_node = firstComposedNode(ref_node);\n nativeMethods.insertBefore.call(container, node, ref_node);\n } else {\n nativeMethods.appendChild.call(container, node);\n }\n }\n scheduleObserver(parent, node);\n // with insertion complete, can safely update insertion points.\n if (slotsAdded) {\n ownerRoot._addSlots(slotsAdded);\n }\n return node;\n}\n\nfunction findContainedSlots(node) {\n if (!node['__noInsertionPoint']) {\n let slots;\n if (node.localName === 'slot') {\n slots = [node];\n } else if (node.querySelectorAll) {\n slots = node.querySelectorAll('slot');\n }\n if (slots && slots.length) {\n return slots;\n }\n }\n}\n\n/**\n * Patched `removeChild`. Note that all dom \"removals\" are routed here.\n * Removes the given `node` from the element's `children`.\n * This method also performs dom composition.\n * @param {Node} parent\n * @param {Node} node\n*/\nexport function removeChild(parent, node) {\n if (node.parentNode !== parent) {\n throw Error('The node to be removed is not a child of this node: ' +\n node);\n }\n let preventNativeRemove;\n let ownerRoot = utils.ownerShadyRootForNode(node);\n let removingInsertionPoint;\n if (utils.isTrackingLogicalChildNodes(parent)) {\n logicalTree.recordRemoveChild(node, parent);\n if (hasShadowRootWithSlot(parent)) {\n parent.__shady.root._asyncRender();\n preventNativeRemove = true;\n }\n }\n removeOwnerShadyRoot(node);\n // if removing slot, must render containing root\n if (ownerRoot) {\n let changeSlotContent = parent && parent.localName === 'slot';\n if (changeSlotContent) {\n preventNativeRemove = true;\n }\n removingInsertionPoint = ownerRoot._removeContainedSlots(node);\n if (removingInsertionPoint || changeSlotContent) {\n ownerRoot._asyncRender();\n }\n }\n if (!preventNativeRemove) {\n // if removing from a shadyRoot, remove form host instead\n let container = utils.isShadyRoot(parent) ?\n /** @type {ShadowRoot} */(parent).host :\n parent;\n // not guaranteed to physically be in container; e.g.\n // (1) if parent has a shadyRoot, element may or may not at distributed\n // location (could be undistributed)\n // (2) if parent is a slot, element may not ben in composed dom\n if (!(parent.__shady.root || node.localName === 'slot') ||\n (container === parentNode(node))) {\n nativeMethods.removeChild.call(container, node);\n }\n }\n scheduleObserver(parent, null, node);\n return node;\n}\n\nfunction removeOwnerShadyRoot(node) {\n // optimization: only reset the tree if node is actually in a root\n if (hasCachedOwnerRoot(node)) {\n let c$ = node.childNodes;\n for (let i=0, l=c$.length, n; (i` element's `name`\n * attribute changes, updates the root's slot map and renders.\n * @param {Node} node\n * @param {string} name\n */\nfunction distributeAttributeChange(node, name) {\n if (name === 'slot') {\n const parent = node.parentNode;\n if (hasShadowRootWithSlot(parent)) {\n parent.__shady.root._asyncRender();\n }\n } else if (node.localName === 'slot' && name === 'name') {\n let root = utils.ownerShadyRootForNode(node);\n if (root) {\n root._updateSlotName(node);\n root._asyncRender();\n }\n }\n}\n\n/**\n * @param {Node} node\n * @param {Node=} addedNode\n * @param {Node=} removedNode\n */\nfunction scheduleObserver(node, addedNode, removedNode) {\n let observer = node.__shady && node.__shady.observer;\n if (observer) {\n if (addedNode) {\n observer.addedNodes.push(addedNode);\n }\n if (removedNode) {\n observer.removedNodes.push(removedNode);\n }\n observer.schedule();\n }\n}\n\n/**\n * @param {Node} node\n * @param {Object=} options\n */\nexport function getRootNode(node, options) { // eslint-disable-line no-unused-vars\n if (!node || !node.nodeType) {\n return;\n }\n node.__shady = node.__shady || {};\n let root = node.__shady.ownerShadyRoot;\n if (root === undefined) {\n if (utils.isShadyRoot(node)) {\n root = node;\n } else {\n let parent = node.parentNode;\n root = parent ? getRootNode(parent) : node;\n }\n // memo-ize result for performance but only memo-ize\n // result if node is in the document. This avoids a problem where a root\n // can be cached while an element is inside a fragment.\n // If this happens and we cache the result, the value can become stale\n // because for perf we avoid processing the subtree of added fragments.\n if (document.documentElement.contains(node)) {\n node.__shady.ownerShadyRoot = root;\n }\n }\n return root;\n}\n\n// NOTE: `query` is used primarily for ShadyDOM's querySelector impl,\n// but it's also generally useful to recurse through the element tree\n// and is used by Polymer's styling system.\n/**\n * @param {Node} node\n * @param {Function} matcher\n * @param {Function=} halter\n */\nexport function query(node, matcher, halter) {\n let list = [];\n queryElements(node.childNodes, matcher,\n halter, list);\n return list;\n}\n\nfunction queryElements(elements, matcher, halter, list) {\n for (let i=0, l=elements.length, c; (i host\n this.host = host;\n this._mode = options && options.mode;\n host.__shady = host.__shady || {};\n host.__shady.root = this;\n host.__shady.publicRoot = this._mode !== 'closed' ? this : null;\n // state flags\n this._renderPending = false;\n this._hasRendered = false;\n this._slotList = [];\n this._slotMap = null;\n // fast path initial render: remove existing physical dom.\n let c$ = childNodes(host);\n for (let i=0, l=c$.length; i < l; i++) {\n removeChild.call(host, c$[i])\n }\n}\n\n// async render\nShadyRoot.prototype._asyncRender = function() {\n if (!this._renderPending) {\n this._renderPending = true;\n enqueue(() => this._render());\n }\n}\n\n// returns the oldest renderPending ancestor root.\nShadyRoot.prototype._getRenderRoot = function() {\n let renderRoot = this;\n let root = this;\n while (root) {\n if (root._renderPending) {\n renderRoot = root;\n }\n root = root._rendererForHost();\n }\n return renderRoot;\n}\n\n// Returns the shadyRoot `this.host` if `this.host`\n// has children that require distribution.\nShadyRoot.prototype._rendererForHost = function() {\n let root = this.host.getRootNode();\n if (utils.isShadyRoot(root)) {\n let c$ = this.host.childNodes;\n for (let i=0, c; i < c$.length; i++) {\n c = c$[i];\n if (this._isInsertionPoint(c)) {\n return root;\n }\n }\n }\n}\n\nShadyRoot.prototype._render = function() {\n if (this._renderPending) {\n this._getRenderRoot()['_renderRoot']();\n }\n}\n\n// NOTE: avoid renaming to ease testability.\nShadyRoot.prototype['_renderRoot'] = function() {\n this._renderPending = false;\n this._distribute();\n this._compose();\n this._hasRendered = true;\n}\n\nShadyRoot.prototype._distribute = function() {\n // capture # of previously assigned nodes to help determine if dirty.\n for (let i=0, slot; i < this._slotList.length; i++) {\n slot = this._slotList[i];\n this._clearSlotAssignedNodes(slot);\n }\n // distribute host children.\n for (let n=this.host.firstChild; n; n=n.nextSibling) {\n this._distributeNodeToSlot(n);\n }\n // fallback content, slotchange, and dirty roots\n for (let i=0, slot; i < this._slotList.length; i++) {\n slot = this._slotList[i];\n // distribute fallback content\n if (!slot.__shady.assignedNodes.length) {\n for (let n=slot.firstChild; n; n=n.nextSibling) {\n this._distributeNodeToSlot(n, slot);\n }\n }\n const slotParent = slot.parentNode;\n const slotParentRoot = slotParent.__shady && slotParent.__shady.root;\n if (slotParentRoot && slotParentRoot._hasInsertionPoint()) {\n slotParentRoot['_renderRoot']();\n }\n this._addAssignedToFlattenedNodes(slot.__shady.flattenedNodes,\n slot.__shady.assignedNodes);\n let prevAssignedNodes = slot.__shady._previouslyAssignedNodes;\n if (prevAssignedNodes) {\n for (let i=0; i < prevAssignedNodes.length; i++) {\n prevAssignedNodes[i].__shady._prevAssignedSlot = null;\n }\n slot.__shady._previouslyAssignedNodes = null;\n // dirty if previously less assigned nodes than previously assigned.\n if (prevAssignedNodes.length > slot.__shady.assignedNodes.length) {\n slot.__shady.dirty = true;\n }\n }\n /* Note: A slot is marked dirty whenever a node is newly assigned to it\n or a node is assigned to a different slot (done in `_distributeNodeToSlot`)\n or if the number of nodes assigned to the slot has decreased (done above);\n */\n if (slot.__shady.dirty) {\n slot.__shady.dirty = false;\n this._fireSlotChange(slot);\n }\n }\n}\n\n/**\n * Distributes given `node` to the appropriate slot based on its `slot`\n * attribute. If `forcedSlot` is given, then the node is distributed to the\n * `forcedSlot`.\n * Note: slot to which the node is assigned will be marked dirty for firing\n * `slotchange`.\n * @param {Node} node\n * @param {Node=} forcedSlot\n *\n */\nShadyRoot.prototype._distributeNodeToSlot = function(node, forcedSlot) {\n node.__shady = node.__shady || {};\n let oldSlot = node.__shady._prevAssignedSlot;\n node.__shady._prevAssignedSlot = null;\n let slot = forcedSlot;\n if (!slot) {\n let name = node.slot || CATCHALL_NAME;\n const list = this._slotMap[name];\n slot = list && list[0];\n }\n if (slot) {\n slot.__shady.assignedNodes.push(node);\n node.__shady.assignedSlot = slot;\n } else {\n node.__shady.assignedSlot = undefined;\n }\n if (oldSlot !== node.__shady.assignedSlot) {\n if (node.__shady.assignedSlot) {\n node.__shady.assignedSlot.__shady.dirty = true;\n }\n }\n}\n\n/**\n * Clears the assignedNodes tracking data for a given `slot`. Note, the current\n * assigned node data is tracked (via _previouslyAssignedNodes and\n * _prevAssignedSlot) to see if `slotchange` should fire. This data may be out\n * of date at this time because the assigned nodes may have already been\n * distributed to another root. This is ok since this data is only used to\n * track changes.\n * @param {HTMLSlotElement} slot\n */\nShadyRoot.prototype._clearSlotAssignedNodes = function(slot) {\n let n$ = slot.__shady.assignedNodes;\n slot.__shady.assignedNodes = [];\n slot.__shady.flattenedNodes = [];\n slot.__shady._previouslyAssignedNodes = n$;\n if (n$) {\n for (let i=0; i < n$.length; i++) {\n let n = n$[i];\n n.__shady._prevAssignedSlot = n.__shady.assignedSlot;\n // only clear if it was previously set to this slot;\n // this helps ensure that if the node has otherwise been distributed\n // ignore it.\n if (n.__shady.assignedSlot === slot) {\n n.__shady.assignedSlot = null;\n }\n }\n }\n}\n\nShadyRoot.prototype._addAssignedToFlattenedNodes = function(flattened, asssigned) {\n for (let i=0, n; (i elements and not the\n// shadowRoot into the host. The latter is performend via a fast path\n// in the `logical-mutation`.insertBefore.\nShadyRoot.prototype._compose = function() {\n const slots = this._slotList;\n let composeList = [];\n for (let i=0; i < slots.length; i++) {\n const parent = slots[i].parentNode;\n /* compose node only if:\n (1) parent does not have a shadowRoot since shadowRoot has already\n composed into the host\n (2) we're not already composing it\n [consider (n^2) but rare better than Set]\n */\n if (!(parent.__shady && parent.__shady.root) &&\n composeList.indexOf(parent) < 0) {\n composeList.push(parent);\n }\n }\n for (let i=0; i < composeList.length; i++) {\n const node = composeList[i];\n const targetNode = node === this ? this.host : node;\n this._updateChildNodes(targetNode, this._composeNode(node));\n }\n}\n\n// Returns the list of nodes which should be rendered inside `node`.\nShadyRoot.prototype._composeNode = function(node) {\n let children = [];\n let c$ = node.childNodes;\n for (let i = 0; i < c$.length; i++) {\n let child = c$[i];\n // Note: if we see a slot here, the nodes are guaranteed to need to be\n // composed here. This is because if there is redistribution, it has\n // already been handled by this point.\n if (this._isInsertionPoint(child)) {\n let flattenedNodes = child.__shady.flattenedNodes;\n for (let j = 0; j < flattenedNodes.length; j++) {\n let distributedNode = flattenedNodes[j];\n children.push(distributedNode);\n }\n } else {\n children.push(child);\n }\n }\n return children;\n}\n\nShadyRoot.prototype._isInsertionPoint = function(node) {\n return node.localName == 'slot';\n }\n\n// Ensures that the rendered node list inside `container` is `children`.\nShadyRoot.prototype._updateChildNodes = function(container, children) {\n let composed = childNodes(container);\n let splices = calculateSplices(children, composed);\n // process removals\n for (let i=0, d=0, s; (i {\n let listA = ancestorList(a);\n let listB = ancestorList(b);\n for (var i=0; i < listA.length; i++) {\n let nA = listA[i];\n let nB = listB[i];\n if (nA !== nB) {\n let c$ = Array.from(nA.parentNode.childNodes);\n return c$.indexOf(nA) - c$.indexOf(nB);\n }\n }\n });\n}\n\nfunction ancestorList(node) {\n let ancestors = [];\n do {\n ancestors.unshift(node);\n } while ((node = node.parentNode));\n return ancestors;\n}\n\n// NOTE: could be used to help polyfill `document.contains`.\nfunction contains(container, node) {\n while (node) {\n if (node == container) {\n return true;\n }\n node = node.parentNode;\n }\n}\n\n/**\n * Removes from tracked slot data any slots contained within `container` and\n * then updates the tracked data (_slotList and _slotMap).\n * Any removed slots also have their `assignedNodes` removed from comopsed dom.\n */\nShadyRoot.prototype._removeContainedSlots = function(container) {\n let didRemove;\n this._slotMap = this._slotMap || {};\n this._slotList = this._slotList || [];\n const map = this._slotMap;\n for (let n in map) {\n let slots = map[n];\n for (let i=0; i < slots.length; i++) {\n let slot = slots[i];\n if (contains(container, slot)) {\n slots.splice(i, 1);\n const x = this._slotList.indexOf(slot);\n if (x >= 0) {\n this._slotList.splice(x, 1);\n }\n i--;\n this._removeFlattenedNodes(slot);\n didRemove = true;\n }\n }\n }\n return didRemove;\n}\n\nShadyRoot.prototype._updateSlotName = function(slot) {\n const oldName = slot.__slotName;\n const name = this._nameForSlot(slot);\n if (name === oldName) {\n return;\n }\n // remove from existing tracking\n let slots = this._slotMap[oldName];\n const i = slots.indexOf(slot);\n if (i >= 0) {\n slots.splice(i, 1);\n }\n // add to new location and sort if nedessary\n let list = this._slotMap[name] || (this._slotMap[name] = []);\n list.push(slot);\n if (list.length > 1) {\n this._slotMap[name] = this._sortSlots(list);\n }\n}\n\nShadyRoot.prototype._removeFlattenedNodes = function(slot) {\n let n$ = slot.__shady.flattenedNodes;\n if (n$) {\n for (let i=0; i {\n this.flush();\n });\n }\n }\n\n flush() {\n if (this._scheduled) {\n this._scheduled = false;\n let mutations = this.takeRecords();\n if (mutations.length) {\n this.callbacks.forEach(function(cb) {\n cb(mutations);\n });\n }\n }\n }\n\n takeRecords() {\n if (this.addedNodes.length || this.removedNodes.length) {\n let mutations = [{\n addedNodes: this.addedNodes,\n removedNodes: this.removedNodes\n }];\n this.addedNodes = [];\n this.removedNodes = [];\n return mutations;\n }\n return [];\n }\n\n}\n\n// TODO(sorvell): consider instead polyfilling MutationObserver\n// directly so that users do not have to fork their code.\n// Supporting the entire api may be challenging: e.g. filtering out\n// removed nodes in the wrong scope and seeing non-distributing\n// subtree child mutations.\nexport let observeChildren = function(node, callback) {\n node.__shady = node.__shady || {};\n if (!node.__shady.observer) {\n node.__shady.observer = new AsyncObserver();\n }\n node.__shady.observer.callbacks.add(callback);\n let observer = node.__shady.observer;\n return {\n _callback: callback,\n _observer: observer,\n _node: node,\n takeRecords() {\n return observer.takeRecords()\n }\n };\n}\n\nexport let unobserveChildren = function(handle) {\n let observer = handle && handle._observer;\n if (observer) {\n observer.callbacks.delete(handle._callback);\n if (!observer.callbacks.size) {\n handle._node.__shady.observer = null;\n }\n }\n}\n\nexport function filterMutations(mutations, target) {\n /** @const {Node} */\n const targetRootNode = target.getRootNode();\n return mutations.map(function(mutation) {\n /** @const {boolean} */\n const mutationInScope = (targetRootNode === mutation.target.getRootNode());\n if (mutationInScope && mutation.addedNodes) {\n let nodes = Array.from(mutation.addedNodes).filter(function(n) {\n return (targetRootNode === n.getRootNode());\n });\n if (nodes.length) {\n mutation = Object.create(mutation);\n Object.defineProperty(mutation, 'addedNodes', {\n value: nodes,\n configurable: true\n });\n return mutation;\n }\n } else if (mutationInScope) {\n return mutation;\n }\n }).filter(function(m) { return m});\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport * as nativeMethods from './native-methods.js';\n\n// https://github.com/w3c/webcomponents/issues/513#issuecomment-224183937\nlet alwaysComposed = {\n 'blur': true,\n 'focus': true,\n 'focusin': true,\n 'focusout': true,\n 'click': true,\n 'dblclick': true,\n 'mousedown': true,\n 'mouseenter': true,\n 'mouseleave': true,\n 'mousemove': true,\n 'mouseout': true,\n 'mouseover': true,\n 'mouseup': true,\n 'wheel': true,\n 'beforeinput': true,\n 'input': true,\n 'keydown': true,\n 'keyup': true,\n 'compositionstart': true,\n 'compositionupdate': true,\n 'compositionend': true,\n 'touchstart': true,\n 'touchend': true,\n 'touchmove': true,\n 'touchcancel': true,\n 'pointerover': true,\n 'pointerenter': true,\n 'pointerdown': true,\n 'pointermove': true,\n 'pointerup': true,\n 'pointercancel': true,\n 'pointerout': true,\n 'pointerleave': true,\n 'gotpointercapture': true,\n 'lostpointercapture': true,\n 'dragstart': true,\n 'drag': true,\n 'dragenter': true,\n 'dragleave': true,\n 'dragover': true,\n 'drop': true,\n 'dragend': true,\n 'DOMActivate': true,\n 'DOMFocusIn': true,\n 'DOMFocusOut': true,\n 'keypress': true\n};\n\nfunction pathComposer(startNode, composed) {\n let composedPath = [];\n let current = startNode;\n let startRoot = startNode === window ? window : startNode.getRootNode();\n while (current) {\n composedPath.push(current);\n if (current.assignedSlot) {\n current = current.assignedSlot;\n } else if (current.nodeType === Node.DOCUMENT_FRAGMENT_NODE && current.host && (composed || current !== startRoot)) {\n current = current.host;\n } else {\n current = current.parentNode;\n }\n }\n // event composedPath includes window when startNode's ownerRoot is document\n if (composedPath[composedPath.length - 1] === document) {\n composedPath.push(window);\n }\n return composedPath;\n}\n\nfunction retarget(refNode, path) {\n if (!utils.isShadyRoot) {\n return refNode;\n }\n // If ANCESTOR's root is not a shadow root or ANCESTOR's root is BASE's\n // shadow-including inclusive ancestor, return ANCESTOR.\n let refNodePath = pathComposer(refNode, true);\n let p$ = path;\n for (let i=0, ancestor, lastRoot, root, rootIdx; i < p$.length; i++) {\n ancestor = p$[i];\n root = ancestor === window ? window : ancestor.getRootNode();\n if (root !== lastRoot) {\n rootIdx = refNodePath.indexOf(root);\n lastRoot = root;\n }\n if (!utils.isShadyRoot(root) || rootIdx > -1) {\n return ancestor;\n }\n }\n}\n\nlet eventMixin = {\n\n /**\n * @this {Event}\n */\n get composed() {\n // isTrusted may not exist in this browser, so just check if isTrusted is explicitly false\n if (this.isTrusted !== false && this.__composed === undefined) {\n this.__composed = alwaysComposed[this.type];\n }\n return this.__composed || false;\n },\n\n /**\n * @this {Event}\n */\n composedPath() {\n if (!this.__composedPath) {\n this.__composedPath = pathComposer(this['__target'], this.composed);\n }\n return this.__composedPath;\n },\n\n /**\n * @this {Event}\n */\n get target() {\n return retarget(this.currentTarget, this.composedPath());\n },\n\n // http://w3c.github.io/webcomponents/spec/shadow/#event-relatedtarget-retargeting\n /**\n * @this {Event}\n */\n get relatedTarget() {\n if (!this.__relatedTarget) {\n return null;\n }\n if (!this.__relatedTargetComposedPath) {\n this.__relatedTargetComposedPath = pathComposer(this.__relatedTarget, true);\n }\n // find the deepest node in relatedTarget composed path that is in the same root with the currentTarget\n return retarget(this.currentTarget, this.__relatedTargetComposedPath);\n },\n /**\n * @this {Event}\n */\n stopPropagation() {\n Event.prototype.stopPropagation.call(this);\n this.__propagationStopped = true;\n },\n /**\n * @this {Event}\n */\n stopImmediatePropagation() {\n Event.prototype.stopImmediatePropagation.call(this);\n this.__immediatePropagationStopped = true;\n this.__propagationStopped = true;\n }\n\n};\n\nfunction mixinComposedFlag(Base) {\n // NOTE: avoiding use of `class` here so that transpiled output does not\n // try to do `Base.call` with a dom construtor.\n let klazz = function(type, options) {\n let event = new Base(type, options);\n event.__composed = options && Boolean(options['composed']);\n return event;\n }\n // put constructor properties on subclass\n utils.mixin(klazz, Base);\n klazz.prototype = Base.prototype;\n return klazz;\n}\n\nlet nonBubblingEventsToRetarget = {\n 'focus': true,\n 'blur': true\n};\n\n\nfunction fireHandlers(event, node, phase) {\n let hs = node.__handlers && node.__handlers[event.type] &&\n node.__handlers[event.type][phase];\n if (hs) {\n for (let i = 0, fn; (fn = hs[i]); i++) {\n if (event.target === event.relatedTarget) {\n return;\n }\n fn.call(node, event);\n if (event.__immediatePropagationStopped) {\n return;\n }\n }\n }\n}\n\nfunction retargetNonBubblingEvent(e) {\n let path = e.composedPath();\n let node;\n // override `currentTarget` to let patched `target` calculate correctly\n Object.defineProperty(e, 'currentTarget', {\n get: function() {\n return node;\n },\n configurable: true\n });\n for (let i = path.length - 1; i >= 0; i--) {\n node = path[i];\n // capture phase fires all capture handlers\n fireHandlers(e, node, 'capture');\n if (e.__propagationStopped) {\n return;\n }\n }\n\n // set the event phase to `AT_TARGET` as in spec\n Object.defineProperty(e, 'eventPhase', {get() { return Event.AT_TARGET }});\n\n // the event only needs to be fired when owner roots change when iterating the event path\n // keep track of the last seen owner root\n let lastFiredRoot;\n for (let i = 0; i < path.length; i++) {\n node = path[i];\n const root = node.__shady && node.__shady.root;\n if (i === 0 || (root && root === lastFiredRoot)) {\n fireHandlers(e, node, 'bubble');\n // don't bother with window, it doesn't have `getRootNode` and will be last in the path anyway\n if (node !== window) {\n lastFiredRoot = node.getRootNode();\n }\n if (e.__propagationStopped) {\n return;\n }\n }\n }\n}\n\nfunction listenerSettingsEqual(savedListener, node, type, capture, once, passive) {\n let {\n node: savedNode,\n type: savedType,\n capture: savedCapture,\n once: savedOnce,\n passive: savedPassive\n } = savedListener;\n return node === savedNode &&\n type === savedType &&\n capture === savedCapture &&\n once === savedOnce &&\n passive === savedPassive;\n}\n\nexport function findListener(wrappers, node, type, capture, once, passive) {\n for (let i = 0; i < wrappers.length; i++) {\n if (listenerSettingsEqual(wrappers[i], node, type, capture, once, passive)) {\n return i;\n }\n }\n return -1;\n}\n\n/**\n * Firefox can throw on accessing __eventWrappers inside of `removeEventListener` during a selenium run\n * Try/Catch accessing __eventWrappers to work around\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1353074\n */\nfunction getEventWrappers(eventLike) {\n let wrappers = null;\n try {\n wrappers = eventLike.__eventWrappers;\n } catch (e) {} // eslint-disable-line no-empty\n return wrappers;\n}\n\n/**\n * @this {Event}\n */\nexport function addEventListener(type, fnOrObj, optionsOrCapture) {\n if (!fnOrObj) {\n return;\n }\n\n // The callback `fn` might be used for multiple nodes/events. Since we generate\n // a wrapper function, we need to keep track of it when we remove the listener.\n // It's more efficient to store the node/type/options information as Array in\n // `fn` itself rather than the node (we assume that the same callback is used\n // for few nodes at most, whereas a node will likely have many event listeners).\n // NOTE(valdrin) invoking external functions is costly, inline has better perf.\n let capture, once, passive;\n if (typeof optionsOrCapture === 'object') {\n capture = Boolean(optionsOrCapture.capture);\n once = Boolean(optionsOrCapture.once);\n passive = Boolean(optionsOrCapture.passive);\n } else {\n capture = Boolean(optionsOrCapture);\n once = false;\n passive = false;\n }\n // hack to let ShadyRoots have event listeners\n // event listener will be on host, but `currentTarget`\n // will be set to shadyroot for event listener\n let target = (optionsOrCapture && optionsOrCapture.__shadyTarget) || this;\n\n let wrappers = fnOrObj.__eventWrappers;\n if (wrappers) {\n // Stop if the wrapper function has already been created.\n if (findListener(wrappers, target, type, capture, once, passive) > -1) {\n return;\n }\n } else {\n fnOrObj.__eventWrappers = [];\n }\n\n /**\n * @this {HTMLElement}\n */\n const wrapperFn = function(e) {\n // Support `once` option.\n if (once) {\n this.removeEventListener(type, fnOrObj, optionsOrCapture);\n }\n if (!e['__target']) {\n patchEvent(e);\n }\n let lastCurrentTargetDesc;\n if (target !== this) {\n // replace `currentTarget` to make `target` and `relatedTarget` correct for inside the shadowroot\n lastCurrentTargetDesc = Object.getOwnPropertyDescriptor(e, 'currentTarget');\n Object.defineProperty(e, 'currentTarget', {get() { return target }, configurable: true});\n }\n // There are two critera that should stop events from firing on this node\n // 1. the event is not composed and the current node is not in the same root as the target\n // 2. when bubbling, if after retargeting, relatedTarget and target point to the same node\n if (e.composed || e.composedPath().indexOf(target) > -1) {\n if (e.target === e.relatedTarget) {\n if (e.eventPhase === Event.BUBBLING_PHASE) {\n e.stopImmediatePropagation();\n }\n return;\n }\n // prevent non-bubbling events from triggering bubbling handlers on shadowroot, but only if not in capture phase\n if (e.eventPhase !== Event.CAPTURING_PHASE && !e.bubbles && e.target !== target) {\n return;\n }\n let ret = (typeof fnOrObj === 'object' && fnOrObj.handleEvent) ?\n fnOrObj.handleEvent(e) :\n fnOrObj.call(target, e);\n if (target !== this) {\n // replace the \"correct\" `currentTarget`\n if (lastCurrentTargetDesc) {\n Object.defineProperty(e, 'currentTarget', lastCurrentTargetDesc);\n lastCurrentTargetDesc = null;\n } else {\n delete e['currentTarget'];\n }\n }\n return ret;\n }\n };\n // Store the wrapper information.\n fnOrObj.__eventWrappers.push({\n node: this,\n type: type,\n capture: capture,\n once: once,\n passive: passive,\n wrapperFn: wrapperFn\n });\n\n if (nonBubblingEventsToRetarget[type]) {\n this.__handlers = this.__handlers || {};\n this.__handlers[type] = this.__handlers[type] ||\n {'capture': [], 'bubble': []};\n this.__handlers[type][capture ? 'capture' : 'bubble'].push(wrapperFn);\n } else {\n let ael = this instanceof Window ? nativeMethods.windowAddEventListener :\n nativeMethods.addEventListener;\n ael.call(this, type, wrapperFn, optionsOrCapture);\n }\n}\n\n/**\n * @this {Event}\n */\nexport function removeEventListener(type, fnOrObj, optionsOrCapture) {\n if (!fnOrObj) {\n return;\n }\n\n // NOTE(valdrin) invoking external functions is costly, inline has better perf.\n let capture, once, passive;\n if (typeof optionsOrCapture === 'object') {\n capture = Boolean(optionsOrCapture.capture);\n once = Boolean(optionsOrCapture.once);\n passive = Boolean(optionsOrCapture.passive);\n } else {\n capture = Boolean(optionsOrCapture);\n once = false;\n passive = false;\n }\n let target = (optionsOrCapture && optionsOrCapture.__shadyTarget) || this;\n // Search the wrapped function.\n let wrapperFn = undefined;\n let wrappers = getEventWrappers(fnOrObj);\n if (wrappers) {\n let idx = findListener(wrappers, target, type, capture, once, passive);\n if (idx > -1) {\n wrapperFn = wrappers.splice(idx, 1)[0].wrapperFn;\n // Cleanup.\n if (!wrappers.length) {\n fnOrObj.__eventWrappers = undefined;\n }\n }\n }\n let rel = this instanceof Window ? nativeMethods.windowRemoveEventListener :\n nativeMethods.removeEventListener;\n rel.call(this, type, wrapperFn || fnOrObj, optionsOrCapture);\n if (wrapperFn && nonBubblingEventsToRetarget[type] &&\n this.__handlers && this.__handlers[type]) {\n const arr = this.__handlers[type][capture ? 'capture' : 'bubble'];\n const idx = arr.indexOf(wrapperFn);\n if (idx > -1) {\n arr.splice(idx, 1);\n }\n }\n}\n\nfunction activateFocusEventOverrides() {\n for (let ev in nonBubblingEventsToRetarget) {\n window.addEventListener(ev, function(e) {\n if (!e['__target']) {\n patchEvent(e);\n retargetNonBubblingEvent(e);\n }\n }, true);\n }\n}\n\nfunction patchEvent(event) {\n event['__target'] = event.target;\n event.__relatedTarget = event.relatedTarget;\n // patch event prototype if we can\n if (utils.settings.hasDescriptors) {\n utils.patchPrototype(event, eventMixin);\n // and fallback to patching instance\n } else {\n utils.extend(event, eventMixin);\n }\n}\n\nlet PatchedEvent = mixinComposedFlag(window.Event);\nlet PatchedCustomEvent = mixinComposedFlag(window.CustomEvent);\nlet PatchedMouseEvent = mixinComposedFlag(window.MouseEvent);\n\nexport function patchEvents() {\n window.Event = PatchedEvent;\n window.CustomEvent = PatchedCustomEvent;\n window.MouseEvent = PatchedMouseEvent;\n activateFocusEventOverrides();\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport {flush} from './flush.js';\nimport {dispatchEvent} from './native-methods.js';\nimport * as mutation from './logical-mutation.js';\nimport {ActiveElementAccessor, ShadowRootAccessor, patchAccessors} from './patch-accessors.js';\nimport {addEventListener, removeEventListener} from './patch-events.js';\nimport {attachShadow, ShadyRoot} from './attach-shadow.js';\n\nfunction getAssignedSlot(node) {\n mutation.renderRootNode(node);\n return node.__shady && node.__shady.assignedSlot || null;\n}\n\nlet windowMixin = {\n\n // NOTE: ensure these methods are bound to `window` so that `this` is correct\n // when called directly from global context without a receiver; e.g.\n // `addEventListener(...)`.\n addEventListener: addEventListener.bind(window),\n\n removeEventListener: removeEventListener.bind(window)\n\n};\n\nlet nodeMixin = {\n\n addEventListener: addEventListener,\n\n removeEventListener: removeEventListener,\n\n appendChild(node) {\n return mutation.insertBefore(this, node);\n },\n\n insertBefore(node, ref_node) {\n return mutation.insertBefore(this, node, ref_node);\n },\n\n removeChild(node) {\n return mutation.removeChild(this, node);\n },\n\n /**\n * @this {Node}\n */\n replaceChild(node, ref_node) {\n mutation.insertBefore(this, node, ref_node);\n mutation.removeChild(this, ref_node);\n return node;\n },\n\n /**\n * @this {Node}\n */\n cloneNode(deep) {\n return mutation.cloneNode(this, deep);\n },\n\n /**\n * @this {Node}\n */\n getRootNode(options) {\n return mutation.getRootNode(this, options);\n },\n\n /**\n * @this {Node}\n */\n get isConnected() {\n // Fast path for distributed nodes.\n const ownerDocument = this.ownerDocument;\n if (ownerDocument && ownerDocument.contains && ownerDocument.contains(this)) return true;\n const ownerDocumentElement = ownerDocument.documentElement;\n if (ownerDocumentElement && ownerDocumentElement.contains && ownerDocumentElement.contains(this)) return true;\n\n let node = this;\n while (node && !(node instanceof Document)) {\n node = node.parentNode || (node instanceof ShadyRoot ? /** @type {ShadowRoot} */(node).host : undefined);\n }\n return !!(node && node instanceof Document);\n },\n\n /**\n * @this {Node}\n */\n dispatchEvent(event) {\n flush();\n return dispatchEvent.call(this, event);\n }\n\n};\n\n// NOTE: For some reason 'Text' redefines 'assignedSlot'\nlet textMixin = {\n /**\n * @this {Text}\n */\n get assignedSlot() {\n return getAssignedSlot(this);\n }\n};\n\nlet fragmentMixin = {\n\n // TODO(sorvell): consider doing native QSA and filtering results.\n /**\n * @this {DocumentFragment}\n */\n querySelector(selector) {\n // match selector and halt on first result.\n let result = mutation.query(this, function(n) {\n return utils.matchesSelector(n, selector);\n }, function(n) {\n return Boolean(n);\n })[0];\n return result || null;\n },\n\n /**\n * @this {DocumentFragment}\n */\n querySelectorAll(selector) {\n return mutation.query(this, function(n) {\n return utils.matchesSelector(n, selector);\n });\n }\n\n};\n\nlet slotMixin = {\n\n /**\n * @this {HTMLSlotElement}\n */\n assignedNodes(options) {\n if (this.localName === 'slot') {\n mutation.renderRootNode(this);\n return this.__shady ?\n ((options && options.flatten ? this.__shady.flattenedNodes :\n this.__shady.assignedNodes) || []) :\n [];\n }\n }\n\n};\n\nlet elementMixin = utils.extendAll({\n\n /**\n * @this {HTMLElement}\n */\n setAttribute(name, value) {\n mutation.setAttribute(this, name, value);\n },\n\n /**\n * @this {HTMLElement}\n */\n removeAttribute(name) {\n mutation.removeAttribute(this, name);\n },\n\n /**\n * @this {HTMLElement}\n */\n attachShadow(options) {\n return attachShadow(this, options);\n },\n\n /**\n * @this {HTMLElement}\n */\n get slot() {\n return this.getAttribute('slot');\n },\n\n /**\n * @this {HTMLElement}\n */\n set slot(value) {\n mutation.setAttribute(this, 'slot', value);\n },\n\n /**\n * @this {HTMLElement}\n */\n get assignedSlot() {\n return getAssignedSlot(this);\n }\n\n}, fragmentMixin, slotMixin);\n\nObject.defineProperties(elementMixin, ShadowRootAccessor);\n\nlet documentMixin = utils.extendAll({\n /**\n * @this {Document}\n */\n importNode(node, deep) {\n return mutation.importNode(node, deep);\n },\n\n /**\n * @this {Document}\n */\n getElementById(id) {\n let result = mutation.query(this, function(n) {\n return n.id == id;\n }, function(n) {\n return Boolean(n);\n })[0];\n return result || null;\n }\n\n}, fragmentMixin);\n\nObject.defineProperties(documentMixin, {\n '_activeElement': ActiveElementAccessor.activeElement\n});\n\nlet nativeBlur = HTMLElement.prototype.blur;\n\nlet htmlElementMixin = utils.extendAll({\n /**\n * @this {HTMLElement}\n */\n blur() {\n let root = this.__shady && this.__shady.root;\n let shadowActive = root && root.activeElement;\n if (shadowActive) {\n shadowActive.blur();\n } else {\n nativeBlur.call(this);\n }\n }\n})\n\nfunction patchBuiltin(proto, obj) {\n let n$ = Object.getOwnPropertyNames(obj);\n for (let i=0; i < n$.length; i++) {\n let n = n$[i];\n let d = Object.getOwnPropertyDescriptor(obj, n);\n // NOTE: we prefer writing directly here because some browsers\n // have descriptors that are writable but not configurable (e.g.\n // `appendChild` on older browsers)\n if (d.value) {\n proto[n] = d.value;\n } else {\n Object.defineProperty(proto, n, d);\n }\n }\n}\n\n\n// Apply patches to builtins (e.g. Element.prototype). Some of these patches\n// can be done unconditionally (mostly methods like\n// `Element.prototype.appendChild`) and some can only be done when the browser\n// has proper descriptors on the builtin prototype\n// (e.g. `Element.prototype.firstChild`)`. When descriptors are not available,\n// elements are individually patched when needed (see e.g.\n// `patchInside/OutsideElementAccessors` in `patch-accessors.js`).\nexport function patchBuiltins() {\n let nativeHTMLElement =\n (window['customElements'] && window['customElements']['nativeHTMLElement']) ||\n HTMLElement;\n // These patches can always be done, for all supported browsers.\n patchBuiltin(window.Node.prototype, nodeMixin);\n patchBuiltin(window.Window.prototype, windowMixin);\n patchBuiltin(window.Text.prototype, textMixin);\n patchBuiltin(window.DocumentFragment.prototype, fragmentMixin);\n patchBuiltin(window.Element.prototype, elementMixin);\n patchBuiltin(window.Document.prototype, documentMixin);\n if (window.HTMLSlotElement) {\n patchBuiltin(window.HTMLSlotElement.prototype, slotMixin);\n }\n patchBuiltin(nativeHTMLElement.prototype, htmlElementMixin);\n // These patches can *only* be done\n // on browsers that have proper property descriptors on builtin prototypes.\n // This includes: IE11, Edge, Chrome >= 4?; Safari >= 10, Firefox\n // On older browsers (Chrome <= 4?, Safari 9), a per element patching\n // strategy is used for patching accessors.\n if (utils.settings.hasDescriptors) {\n patchAccessors(window.Node.prototype);\n patchAccessors(window.Text.prototype);\n patchAccessors(window.DocumentFragment.prototype);\n patchAccessors(window.Element.prototype);\n patchAccessors(nativeHTMLElement.prototype);\n patchAccessors(window.Document.prototype);\n if (window.HTMLSlotElement) {\n patchAccessors(window.HTMLSlotElement.prototype);\n }\n }\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n/**\n * Patches elements that interacts with ShadyDOM\n * such that tree traversal and mutation apis act like they would under\n * ShadowDOM.\n *\n * This import enables seemless interaction with ShadyDOM powered\n * custom elements, enabling better interoperation with 3rd party code,\n * libraries, and frameworks that use DOM tree manipulation apis.\n */\n\nimport * as utils from './utils.js';\nimport {flush, enqueue} from './flush.js';\nimport {observeChildren, unobserveChildren, filterMutations} from './observe-changes.js';\nimport * as nativeMethods from './native-methods.js';\nimport * as nativeTree from './native-tree.js';\nimport {patchBuiltins} from './patch-builtins.js';\nimport {patchEvents} from './patch-events.js';\nimport {ShadyRoot} from './attach-shadow.js';\n\nif (utils.settings.inUse) {\n let ShadyDOM = {\n // TODO(sorvell): remove when Polymer does not depend on this.\n 'inUse': utils.settings.inUse,\n // TODO(sorvell): remove when Polymer does not depend on this\n 'patch': (node) => node,\n 'isShadyRoot': utils.isShadyRoot,\n 'enqueue': enqueue,\n 'flush': flush,\n 'settings': utils.settings,\n 'filterMutations': filterMutations,\n 'observeChildren': observeChildren,\n 'unobserveChildren': unobserveChildren,\n 'nativeMethods': nativeMethods,\n 'nativeTree': nativeTree\n };\n\n window['ShadyDOM'] = ShadyDOM;\n\n // Apply patches to events...\n patchEvents();\n // Apply patches to builtins (e.g. Element.prototype) where applicable.\n patchBuiltins();\n\n window.ShadowRoot = ShadyRoot;\n}\n"]} \ No newline at end of file +{"version":3,"sources":["array-splice.js","utils.js","innerHTML.js","native-tree.js","patch-accessors.js","logical-tree.js","native-methods.js","logical-mutation.js","attach-shadow.js","flush.js","observe-changes.js","patch-events.js","patch-builtins.js","shadydom.js"],"names":["newSplice","index","addedCount","removed","calcSplices","current","currentEnd","old","oldEnd","prefixCount","suffixCount","minLength","Math","min","currentStart","oldStart","i","currentValue","previousValue","length","index1","index2","count","equals","splice","push","rowCount","columnCount","distances","Array","j","north","west","edits","northWest","EDIT_LEAVE","EDIT_UPDATE","EDIT_DELETE","EDIT_ADD","reverse","undefined","splices","oldIndex","settings","window","hasNativeShadowDOM","attachShadow","Element","prototype","getRootNode","Node","desc","Object","getOwnPropertyDescriptor","hasDescriptors","configurable","get","inUse","isTrackingLogicalChildNodes","node","__shady","firstChild","isShadyRoot","obj","__localName","ownerShadyRootForNode","root","p","matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","extend","target","source","n$","getOwnPropertyNames","n","pd","defineProperty","extendAll","sources","mixin","twiddle","document","createTextNode","content","queue","observe","MutationObserver","shift","e","textContent","characterData","microtask","callback","escapeAttrRegExp","escapeDataRegExp","escapeReplace","c","makeSet","arr","set","voidElements","plaintextParents","getInnerHTML","localName","s","c$","childNodes","l","child","nodeType","ELEMENT_NODE","tagName","attrs","attributes","attr","name","value","replace","TEXT_NODE","data","parentNode","COMMENT_NODE","console","error","Error","nodeWalker","createTreeWalker","NodeFilter","SHOW_ALL","elementWalker","SHOW_ELEMENT","nodes","currentNode","nextSibling","lastChild","previousSibling","parentElement","firstElementChild","lastElementChild","previousElementSibling","nextElementSibling","children","innerHTML","DOCUMENT_FRAGMENT_NODE","textWalker","SHOW_TEXT","nextNode","nodeValue","nativeInnerHTMLDesc","HTMLElement","htmlContainer","implementation","createHTMLDocument","inertDoc","createElement","nativeActiveElementDescriptor","Document","OutsideAccessors","nativeTree","className","getAttribute","setAttribute","InsideAccessors","item","childNodes.item","childElementCount","tc","cn","join","text","removeChild","appendChild","filter","call","children.item","ShadowRootAccessor","shadowRoot","publicRoot","ActiveElementAccessor","activeElement","active","host","contains","activeRoot","patchAccessorGroup","descriptors","force","objDesc","warn","patchAccessors","proto","patchOutsideElementAccessors","element","__outsideAccessors","patchInsideElementAccessors","__insideAccessors","linkNode","container","ref_node","ps","ns","recordChildNodes","insertBefore","removeAttribute","cloneNode","importNode","addEventListener","removeEventListener","windowAddEventListener","Window","windowRemoveEventListener","dispatchEvent","querySelector","querySelectorAll","parent","ownerRoot","slots","slotsAdded","_asyncRender","resetTo","hasShadowRootWithSlot","preventNativeInsert","firstComposedNode","nativeMethods","scheduleObserver","_slotMap","_slotList","slot","_nameForSlot","slotNamesToSort","_sortSlots","preventNativeRemove","removeOwnerShadyRoot","changeSlotContent","map","x","indexOf","flattenedNodes","didRemove","ownerShadyRoot","composed","flattened","distributeAttributeChange","oldName","__slotName","list","addedNode","removedNode","observer","addedNodes","removedNodes","schedule","documentElement","query","matcher","halter","queryElements","elements","result","scopingShim","deep","ownerDocument","nc","flushList","scheduled","enqueue","flush","didFlush","ShadyRootConstructionToken","ShadyRoot","token","options","TypeError","createDocumentFragment","__proto__","_mode","mode","_renderPending","create","DocumentFragment","ShadyRoot.prototype._asyncRender","_render","ShadyRoot.prototype._render","renderRoot","_getRenderRoot","_distribute","assignedNodes","_previouslyAssignedNodes","_prevAssignedSlot","assignedSlot","_distributeNodeToSlot","slotParent","slotParentRoot","_addAssignedToFlattenedNodes","prevAssignedNodes","dirty","_fireSlotChange","_compose","composeList","targetNode","distributedNode","d","next","ShadyRoot.prototype._distributeNodeToSlot","forcedSlot","oldSlot","CATCHALL_NAME","ShadyRoot.prototype._addAssignedToFlattenedNodes","asssigned","ShadyRoot.prototype._fireSlotChange","Event","ShadyRoot.prototype._nameForSlot","ShadyRoot.prototype._sortSlots","sort","a","b","listA","ancestorList","listB","nA","nB","from","ancestors","unshift","ShadyRoot.prototype.addEventListener","type","fn","optionsOrCapture","capture","__shadyTarget","ShadyRoot.prototype.removeEventListener","getElementById","ShadyRoot.prototype.getElementById","id","constructor","AsyncObserver","_scheduled","callbacks","Set","mutations","takeRecords","forEach","cb","observeChildren","add","_callback","_observer","_node","unobserveChildren","handle","delete","size","filterMutations","targetRootNode","mutation","mutationInScope","m","alwaysComposed","pathComposer","startNode","composedPath","startRoot","retarget","refNode","path","refNodePath","ancestor","lastRoot","rootIdx","eventMixin","isTrusted","__composed","__composedPath","currentTarget","relatedTarget","__relatedTarget","__relatedTargetComposedPath","stopPropagation","__propagationStopped","stopImmediatePropagation","__immediatePropagationStopped","mixinComposedFlag","Base","klazz","event","nonBubblingEventsToRetarget","fireHandlers","phase","hs","__handlers","retargetNonBubblingEvent","AT_TARGET","lastFiredRoot","findListener","wrappers","once","passive","savedType","savedListener","savedCapture","savedOnce","savedPassive","savedNode","fnOrObj","__eventWrappers","wrapperFn","patchEvent","lastCurrentTargetDesc","eventPhase","BUBBLING_PHASE","CAPTURING_PHASE","bubbles","ret","handleEvent","ael","idx","rel","activateFocusEventOverrides","ev","getPrototypeOf","hasOwnProperty","patchProto","__sourceProto","PatchedEvent","PatchedCustomEvent","CustomEvent","PatchedMouseEvent","MouseEvent","getAssignedSlot","windowMixin","bind","nodeMixin","replaceChild","isConnected","ownerDocumentElement","textMixin","fragmentMixin","selector","slotMixin","flatten","elementMixin","defineProperties","documentMixin","nativeBlur","blur","htmlElementMixin","shadowActive","patchBuiltin","ShadyDOM","patch","nativeHTMLElement","Text","HTMLSlotElement","ShadowRoot"],"mappings":"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","file":"shadydom.min.js","sourcesContent":[]} \ No newline at end of file diff --git a/src/logical-mutation.js b/src/logical-mutation.js index 872cbc1..67e6152 100644 --- a/src/logical-mutation.js +++ b/src/logical-mutation.js @@ -178,7 +178,7 @@ function hasCachedOwnerRoot(node) { function firstComposedNode(node) { let composed = node; if (node && node.localName === 'slot') { - let flattened = node.__shady.flattenedNodes; + let flattened = node.__shady && node.__shady.flattenedNodes; composed = flattened && flattened.length ? flattened[0] : firstComposedNode(node.nextSibling); } diff --git a/tests/shady-dynamic.html b/tests/shady-dynamic.html index fb17b8a..b5a8715 100644 --- a/tests/shady-dynamic.html +++ b/tests/shady-dynamic.html @@ -249,6 +249,11 @@ })(); + @@ -525,6 +530,17 @@ assert.equal(testElement.shadowRoot.querySelector('#added2'), s); }); + test('insertBefore before a in light', function() { + var template = document.querySelector('template#insertBeforeSlot'); + var frag = template.content.cloneNode(true); + var div = frag.querySelector('div#slotHost'); + var slot = div.firstElementChild; + document.body.appendChild(frag); + var el = document.createElement('span'); + div.insertBefore(el, slot); + div.parentNode.removeChild(div); + }); + test('removeChild (light)', function() { var added = testElement.shadowRoot.querySelector('#added'); var added2 = testElement.shadowRoot.querySelector('#added2');