From e4b56e4614ef63a9d5bc7ea800c93e0f35e1f913 Mon Sep 17 00:00:00 2001 From: Daniel Freedman Date: Mon, 17 Dec 2018 11:50:59 -0800 Subject: [PATCH] Closure typing fixes --- lib/legacy/polymer.dom.js | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/lib/legacy/polymer.dom.js b/lib/legacy/polymer.dom.js index cb6fc45732..fa853a38f8 100644 --- a/lib/legacy/polymer.dom.js +++ b/lib/legacy/polymer.dom.js @@ -40,8 +40,9 @@ export const matchesSelector = function(node, selector) { * Node API wrapper class returned from `Polymer.dom.(target)` when * `target` is a `Node`. * @implements {PolymerDomApi} + * @unrestricted */ -export let DomApi = class { +class DomApi { /** * @param {Node} node Node for which to create a Polymer.dom helper object. @@ -377,10 +378,14 @@ DomApi.prototype.textContent; /** @type {string} */ DomApi.prototype.innerHTML; +let DomApiImpl = DomApi; if (window['ShadyDOM'] && window['ShadyDOM']['inUse'] && window['ShadyDOM']['noPatch'] && window['ShadyDOM']['Wrapper']) { - /** @private */ + /** + * @private + * @extends {HTMLElement} + */ class Wrapper extends window['ShadyDOM']['Wrapper'] {} // copy bespoke API onto wrapper @@ -390,7 +395,7 @@ if (window['ShadyDOM'] && window['ShadyDOM']['inUse'] && window['ShadyDOM']['noP } }); - DomApi = Wrapper; + DomApiImpl = Wrapper; Object.defineProperties(EventApi.prototype, { @@ -429,6 +434,8 @@ if (window['ShadyDOM'] && window['ShadyDOM']['inUse'] && window['ShadyDOM']['noP ]); } +export {DomApiImpl as DomApi}; + /** * Legacy DOM and Event manipulation API wrapper factory used to abstract * differences between native Shadow DOM and "Shady DOM" when polyfilling on @@ -440,20 +447,23 @@ if (window['ShadyDOM'] && window['ShadyDOM']['inUse'] && window['ShadyDOM']['noP * * @summary Legacy DOM and Event manipulation API wrapper factory used to * abstract differences between native Shadow DOM and "Shady DOM." - * @param {(Node|Event)=} obj Node or event to operate on + * @param {(Node|Event|DomApi|EventApi)=} obj Node or event to operate on * @return {!DomApi|!EventApi} Wrapper providing either node API or event API */ export const dom = function(obj) { obj = obj || document; - if (obj instanceof DomApi || obj instanceof EventApi) { - return obj; + if (obj instanceof DomApiImpl) { + return /** @type {!DomApi} */(obj); + } + if (obj instanceof EventApi) { + return /** @type {!EventApi} */(obj); } let helper = obj['__domApi']; if (!helper) { if (obj instanceof Event) { helper = new EventApi(obj); } else { - helper = new DomApi(obj); + helper = new DomApi(/** @type {Node} */(obj)); } obj['__domApi'] = helper; }