diff --git a/lib/com/vaadin/polymer/Polymer.java b/lib/com/vaadin/polymer/Polymer.java index a671379..c957a3e 100644 --- a/lib/com/vaadin/polymer/Polymer.java +++ b/lib/com/vaadin/polymer/Polymer.java @@ -11,6 +11,7 @@ import elemental2.dom.HTMLElement; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -43,6 +44,14 @@ public abstract class Polymer { @JsProperty(namespace = JsPackage.GLOBAL) public static native String getGwtBowerLocation(); + /** + * Set path to webcomponents.js - default webcomponentsjs/webcomponents-lite.min.js + */ + @JsProperty(namespace = JsPackage.GLOBAL) + public static native void setWebcomponentsJsLocation(String s); + + @JsProperty(namespace = JsPackage.GLOBAL) + public static native String getWebcomponentsJsLocation(); static { if (getGwtBowerLocation() == null) { @@ -54,6 +63,9 @@ public abstract class Polymer { } setGwtBowerLocation(moduleBase + "bower_components/"); } + if(getWebcomponentsJsLocation() == null) { + setWebcomponentsJsLocation("webcomponentsjs/webcomponents-lite.min.js"); + } } @JsType(isNative=true, namespace="Polymer") @@ -269,6 +281,8 @@ public static void importHref(String hrefOrTag, final PolymerFunction ok, final pending.add(ok); } return; + } else { + Base.importHref(href, done, err); } urlImported.add(href); } @@ -333,7 +347,7 @@ public static T createElement(final String tagName, final String... imports) } public static void ensureCustomElement(final T elem, String... imports) { - if (isRegisteredElement(elem)) { + if (isRegisteredElement(elem) && urlImported.containsAll(Arrays.asList(imports))) { return; } @@ -427,7 +441,7 @@ function done() { function loadPolyfill() { var s = $doc.createElement('script'); s.src = @com.vaadin.polymer.Polymer::absoluteHref(*) - ('webcomponentsjs/webcomponents-lite.min.js'); + ($wnd.webcomponentsJsLocation); s.onreadystatechange = s.onload = done; $doc.head.appendChild(s); }