diff --git a/lib/legacy/legacy-element-mixin.html b/lib/legacy/legacy-element-mixin.html index 6c2045f155..c1302b1346 100644 --- a/lib/legacy/legacy-element-mixin.html +++ b/lib/legacy/legacy-element-mixin.html @@ -86,6 +86,18 @@ this._applyListeners(); } + /** + * Forwards `importMeta` from the prototype (i.e. from the info object + * passed to `Polymer({...})`) to the static API. + * + * @return {!Object} The `import.meta` object set on the prototype + * @suppress {missingProperties} `this` is always in the instance in + * closure for some reason even in a static method, rather than the class + */ + static get importMeta() { + return this.prototype.importMeta; + } + /** * Legacy callback called during the `constructor`, for overriding * by the user. diff --git a/lib/legacy/polymer.dom.html b/lib/legacy/polymer.dom.html index 5417f12e14..afae35b1c3 100644 --- a/lib/legacy/polymer.dom.html +++ b/lib/legacy/polymer.dom.html @@ -398,7 +398,7 @@ * This method facades to `Polymer.enqueueDebouncer`. * * @memberof Polymer.dom - * @param {Polymer.Debouncer} debouncer Debouncer to enqueue + * @param {!Polymer.Debouncer} debouncer Debouncer to enqueue */ Polymer.dom.addDebouncer = Polymer.enqueueDebouncer; })(); diff --git a/lib/mixins/element-mixin.html b/lib/mixins/element-mixin.html index 677767d71f..b0f7fba988 100644 --- a/lib/mixins/element-mixin.html +++ b/lib/mixins/element-mixin.html @@ -402,15 +402,18 @@ * This path is used to resolve url's in template style cssText. * The `importPath` property is also set on element instances and can be * used to create bindings relative to the import path. - * For elements defined in ES modules, users should implement `importMeta` - * and this getter will return `import.meta.url`'s path. For elements - * defined in HTML imports, this getter will return the path to the - * document containing a `dom-module` element matching this element's - * static `is` property. + * + * For elements defined in ES modules, users should implement + * `static get importMeta() { return import.meta; }`, and the default + * implementation of `importPath` will return `import.meta.url`'s path. + * For elements defined in HTML imports, this getter will return the path + * to the document containing a `dom-module` element matching this + * element's static `is` property. * * Note, this path should contain a trailing `/`. * * @return {string} The import path for this element class + * @suppress {missingProperties} */ static get importPath() { if (!this.hasOwnProperty(JSCompiler_renameProperty('_importPath', this))) { @@ -426,18 +429,6 @@ return this._importPath; } - /** - * When an element definition is being loaded from an ES module, users - * may override this getter to return the `import.meta` object from that - * module, which will be used to derive the `importPath` for the element. - * When implementing `importMeta`, users should not implement `importPath`. - * - * @return {!Object} The `import.meta` object for the element's module - */ - static get importMeta() { - return null; - } - constructor() { super(); /** @type {HTMLTemplateElement} */ diff --git a/lib/mixins/property-effects.html b/lib/mixins/property-effects.html index d5c60613e2..de92b17c4a 100644 --- a/lib/mixins/property-effects.html +++ b/lib/mixins/property-effects.html @@ -43,7 +43,7 @@ READ_ONLY: '__readOnly' }; - /** @const {string} */ + /** @const {RegExp} */ const capitalAttributeRegex = /[A-Z]/; /** diff --git a/test/unit/resolveurl.html b/test/unit/resolveurl.html index 5cd59980ca..9da04704ad 100644 --- a/test/unit/resolveurl.html +++ b/test/unit/resolveurl.html @@ -82,7 +82,9 @@ test('Urls in styles and attributes', testStylesAndAttributes('p-r', 'sub')); - test('Urls in styles and attributes (importMeta)', testStylesAndAttributes('p-r-im', 'http://foo.com/mymodule')); + test('Urls in styles and attributes (importMeta)', testStylesAndAttributes('p-r-im', 'http://class.com/mymodule')); + + test('Urls in styles and attributes (importMeta, hybrid)', testStylesAndAttributes('p-r-hybrid', 'http://hybrid.com/mymodule')); test('url changes via setting importPath/rootPath on element instance', function() { var el = document.createElement('p-r'); diff --git a/test/unit/sub/resolveurl-elements.html b/test/unit/sub/resolveurl-elements.html index 30611b6d24..b9bdfa82fb 100644 --- a/test/unit/sub/resolveurl-elements.html +++ b/test/unit/sub/resolveurl-elements.html @@ -34,19 +34,33 @@