mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-19 15:26:36 +00:00
Remove deprecated HTML support (#6858)
This commit is contained in:
parent
4631994f20
commit
9149bb9333
@ -7,5 +7,3 @@ import "../util/legacy-support";
|
||||
setPassiveTouchGestures(true);
|
||||
|
||||
(window as any).frontendVersion = __VERSION__;
|
||||
|
||||
import("../resources/html-import/polyfill");
|
||||
|
@ -100,9 +100,5 @@
|
||||
{% endfor -%}
|
||||
}
|
||||
</script>
|
||||
|
||||
{% for extra_url in extra_urls -%}
|
||||
<link rel="import" href="{{ extra_url }}" async />
|
||||
{% endfor -%}
|
||||
</body>
|
||||
</html>
|
||||
|
@ -30,12 +30,6 @@ export const loadLovelaceResources = (
|
||||
loadModule(normalizedUrl);
|
||||
break;
|
||||
|
||||
case "html":
|
||||
import(
|
||||
/* webpackChunkName: "import-href-polyfill" */ "../../../resources/html-import/import-href"
|
||||
).then(({ importHref }) => importHref(normalizedUrl));
|
||||
break;
|
||||
|
||||
default:
|
||||
// eslint-disable-next-line
|
||||
console.warn(`Unknown resource type specified: ${resource.type}`);
|
||||
|
@ -1,101 +0,0 @@
|
||||
/* eslint-disable */
|
||||
import "./polyfill";
|
||||
/**
|
||||
@license
|
||||
Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
||||
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
|
||||
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
|
||||
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
|
||||
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
|
||||
*/
|
||||
|
||||
// run a callback when HTMLImports are ready or immediately if
|
||||
// this api is not available.
|
||||
function whenImportsReady(cb) {
|
||||
if (window.HTMLImports) {
|
||||
HTMLImports.whenReady(cb);
|
||||
} else {
|
||||
cb();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience method for importing an HTML document imperatively.
|
||||
*
|
||||
* This method creates a new `<link rel="import">` element with
|
||||
* the provided URL and appends it to the document to start loading.
|
||||
* In the `onload` callback, the `import` property of the `link`
|
||||
* element will contain the imported document contents.
|
||||
*
|
||||
* @param {string} href URL to document to load.
|
||||
* @param {?function(!Event):void=} onload Callback to notify when an import successfully
|
||||
* loaded.
|
||||
* @param {?function(!ErrorEvent):void=} onerror Callback to notify when an import
|
||||
* unsuccessfully loaded.
|
||||
* @param {boolean=} optAsync True if the import should be loaded `async`.
|
||||
* Defaults to `false`.
|
||||
* @return {!HTMLLinkElement} The link element for the URL to be loaded.
|
||||
*/
|
||||
export const importHref = function (href, onload, onerror, optAsync) {
|
||||
let link /** @type {HTMLLinkElement} */ = document.head.querySelector(
|
||||
'link[href="' + href + '"][import-href]'
|
||||
);
|
||||
if (!link) {
|
||||
link = /** @type {HTMLLinkElement} */ (document.createElement("link"));
|
||||
link.rel = "import";
|
||||
link.href = href;
|
||||
link.setAttribute("import-href", "");
|
||||
}
|
||||
// always ensure link has `async` attribute if user specified one,
|
||||
// even if it was previously not async. This is considered less confusing.
|
||||
if (optAsync) {
|
||||
link.setAttribute("async", "");
|
||||
}
|
||||
// NOTE: the link may now be in 3 states: (1) pending insertion,
|
||||
// (2) inflight, (3) already loaded. In each case, we need to add
|
||||
// event listeners to process callbacks.
|
||||
const cleanup = function () {
|
||||
link.removeEventListener("load", loadListener);
|
||||
link.removeEventListener("error", errorListener);
|
||||
};
|
||||
let loadListener = function (event) {
|
||||
cleanup();
|
||||
// In case of a successful load, cache the load event on the link so
|
||||
// that it can be used to short-circuit this method in the future when
|
||||
// it is called with the same href param.
|
||||
link.__dynamicImportLoaded = true;
|
||||
if (onload) {
|
||||
whenImportsReady(() => {
|
||||
onload(event);
|
||||
});
|
||||
}
|
||||
};
|
||||
let errorListener = function (event) {
|
||||
cleanup();
|
||||
// In case of an error, remove the link from the document so that it
|
||||
// will be automatically created again the next time `importHref` is
|
||||
// called.
|
||||
if (link.parentNode) {
|
||||
link.parentNode.removeChild(link);
|
||||
}
|
||||
if (onerror) {
|
||||
whenImportsReady(() => {
|
||||
onerror(event);
|
||||
});
|
||||
}
|
||||
};
|
||||
link.addEventListener("load", loadListener);
|
||||
link.addEventListener("error", errorListener);
|
||||
if (link.parentNode == null) {
|
||||
document.head.appendChild(link);
|
||||
// if the link already loaded, dispatch a fake load event
|
||||
// so that listeners are called and get a proper event argument.
|
||||
} else if (link.__dynamicImportLoaded) {
|
||||
link.dispatchEvent(new Event("load"));
|
||||
}
|
||||
return link;
|
||||
};
|
||||
|
||||
export const importHrefPromise = (href) =>
|
||||
new Promise((resolve, reject) => importHref(href, resolve, reject));
|
@ -1,451 +0,0 @@
|
||||
/* eslint-disable */
|
||||
/*
|
||||
Copyright (c) 2016 The Polymer Project Authors. All rights reserved.
|
||||
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
|
||||
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
|
||||
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
|
||||
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
|
||||
*/
|
||||
(function (q) {
|
||||
function y(a, b) {
|
||||
if ("function" === typeof window.CustomEvent) return new CustomEvent(a, b);
|
||||
var c = document.createEvent("CustomEvent");
|
||||
c.initCustomEvent(a, !!b.bubbles, !!b.cancelable, b.detail);
|
||||
return c;
|
||||
}
|
||||
function m(a) {
|
||||
if (u) return a.ownerDocument !== document ? a.ownerDocument : null;
|
||||
var b = a.__importDoc;
|
||||
if (!b && a.parentNode) {
|
||||
b = a.parentNode;
|
||||
if ("function" === typeof b.closest) b = b.closest("link[rel=import]");
|
||||
else for (; !r(b) && (b = b.parentNode); );
|
||||
a.__importDoc = b;
|
||||
}
|
||||
return b;
|
||||
}
|
||||
function D(a) {
|
||||
var b = k(document, "link[rel=import]:not([import-dependency])"),
|
||||
c = b.length;
|
||||
c
|
||||
? g(b, function (b) {
|
||||
return t(b, function () {
|
||||
0 === --c && a();
|
||||
});
|
||||
})
|
||||
: a();
|
||||
}
|
||||
function z(a) {
|
||||
function b() {
|
||||
"loading" !== document.readyState &&
|
||||
document.body &&
|
||||
(document.removeEventListener("readystatechange", b), a());
|
||||
}
|
||||
document.addEventListener("readystatechange", b);
|
||||
b();
|
||||
}
|
||||
function A(a) {
|
||||
z(function () {
|
||||
return D(function () {
|
||||
return a && a();
|
||||
});
|
||||
});
|
||||
}
|
||||
function t(a, b) {
|
||||
if (a.__loaded) b && b();
|
||||
else if (
|
||||
("script" === a.localName && !a.src) ||
|
||||
("style" === a.localName && !a.firstChild)
|
||||
)
|
||||
(a.__loaded = !0), b && b();
|
||||
else {
|
||||
var c = function (d) {
|
||||
a.removeEventListener(d.type, c);
|
||||
a.__loaded = !0;
|
||||
b && b();
|
||||
};
|
||||
a.addEventListener("load", c);
|
||||
(v && "style" === a.localName) || a.addEventListener("error", c);
|
||||
}
|
||||
}
|
||||
function r(a) {
|
||||
return (
|
||||
a.nodeType === Node.ELEMENT_NODE &&
|
||||
"link" === a.localName &&
|
||||
"import" === a.rel
|
||||
);
|
||||
}
|
||||
function h() {
|
||||
var a = this;
|
||||
this.a = {};
|
||||
this.b = 0;
|
||||
this.g = new MutationObserver(function (b) {
|
||||
return a.w(b);
|
||||
});
|
||||
this.g.observe(document.head, { childList: !0, subtree: !0 });
|
||||
this.loadImports(document);
|
||||
}
|
||||
function B(a) {
|
||||
g(k(a, "template"), function (a) {
|
||||
g(
|
||||
k(
|
||||
a.content,
|
||||
'script:not([type]),script[type="application/javascript"],script[type="text/javascript"]'
|
||||
),
|
||||
function (a) {
|
||||
var b = document.createElement("script");
|
||||
g(a.attributes, function (a) {
|
||||
return b.setAttribute(a.name, a.value);
|
||||
});
|
||||
b.textContent = a.textContent;
|
||||
a.parentNode.replaceChild(b, a);
|
||||
}
|
||||
);
|
||||
B(a.content);
|
||||
});
|
||||
}
|
||||
function k(a, b) {
|
||||
return a.childNodes.length ? a.querySelectorAll(b) : E;
|
||||
}
|
||||
function g(a, b, c) {
|
||||
var d = a ? a.length : 0,
|
||||
f = c ? -1 : 1;
|
||||
for (c = c ? d - 1 : 0; c < d && 0 <= c; c += f) b(a[c], c);
|
||||
}
|
||||
var n = document.createElement("link"),
|
||||
u = "import" in n,
|
||||
E = n.querySelectorAll("*"),
|
||||
w = null;
|
||||
!1 === "currentScript" in document &&
|
||||
Object.defineProperty(document, "currentScript", {
|
||||
get: function () {
|
||||
return (
|
||||
w ||
|
||||
("complete" !== document.readyState
|
||||
? document.scripts[document.scripts.length - 1]
|
||||
: null)
|
||||
);
|
||||
},
|
||||
configurable: !0,
|
||||
});
|
||||
var F = /(url\()([^)]*)(\))/g,
|
||||
G = /(@import[\s]+(?!url\())([^;]*)(;)/g,
|
||||
H = /(<link[^>]*)(rel=['|"]?stylesheet['|"]?[^>]*>)/g,
|
||||
e = {
|
||||
u: function (a, b) {
|
||||
a.href && a.setAttribute("href", e.c(a.getAttribute("href"), b));
|
||||
a.src && a.setAttribute("src", e.c(a.getAttribute("src"), b));
|
||||
if ("style" === a.localName) {
|
||||
var c = e.o(a.textContent, b, F);
|
||||
a.textContent = e.o(c, b, G);
|
||||
}
|
||||
},
|
||||
o: function (a, b, c) {
|
||||
return a.replace(c, function (a, c, l, g) {
|
||||
a = l.replace(/["']/g, "");
|
||||
b && (a = e.c(a, b));
|
||||
return c + "'" + a + "'" + g;
|
||||
});
|
||||
},
|
||||
c: function (a, b) {
|
||||
if (void 0 === e.f) {
|
||||
e.f = !1;
|
||||
try {
|
||||
var c = new URL("b", "http://a");
|
||||
c.pathname = "c%20d";
|
||||
e.f = "http://a/c%20d" === c.href;
|
||||
} catch (d) {}
|
||||
}
|
||||
if (e.f) return new URL(a, b).href;
|
||||
c = e.s;
|
||||
c ||
|
||||
((c = document.implementation.createHTMLDocument("temp")),
|
||||
(e.s = c),
|
||||
(c.i = c.createElement("base")),
|
||||
c.head.appendChild(c.i),
|
||||
(c.h = c.createElement("a")));
|
||||
c.i.href = b;
|
||||
c.h.href = a;
|
||||
return c.h.href || a;
|
||||
},
|
||||
},
|
||||
C = {
|
||||
async: !0,
|
||||
load: function (a, b, c) {
|
||||
if (a)
|
||||
if (a.match(/^data:/)) {
|
||||
a = a.split(",");
|
||||
var d = a[1];
|
||||
d = -1 < a[0].indexOf(";base64") ? atob(d) : decodeURIComponent(d);
|
||||
b(d);
|
||||
} else {
|
||||
var f = new XMLHttpRequest();
|
||||
f.open("GET", a, C.async);
|
||||
f.onload = function () {
|
||||
var a = f.responseURL || f.getResponseHeader("Location");
|
||||
a &&
|
||||
0 === a.indexOf("/") &&
|
||||
(a =
|
||||
(location.origin ||
|
||||
location.protocol + "//" + location.host) + a);
|
||||
var d = f.response || f.responseText;
|
||||
304 === f.status ||
|
||||
0 === f.status ||
|
||||
(200 <= f.status && 300 > f.status)
|
||||
? b(d, a)
|
||||
: c(d);
|
||||
};
|
||||
f.send();
|
||||
}
|
||||
else c("error: href must be specified");
|
||||
},
|
||||
},
|
||||
v =
|
||||
/Trident/.test(navigator.userAgent) ||
|
||||
/Edge\/\d./i.test(navigator.userAgent);
|
||||
h.prototype.loadImports = function (a) {
|
||||
var b = this;
|
||||
g(k(a, "link[rel=import]"), function (a) {
|
||||
return b.l(a);
|
||||
});
|
||||
};
|
||||
h.prototype.l = function (a) {
|
||||
var b = this,
|
||||
c = a.href;
|
||||
if (void 0 !== this.a[c]) {
|
||||
var d = this.a[c];
|
||||
d && d.__loaded && ((a.__import = d), this.j(a));
|
||||
} else
|
||||
this.b++,
|
||||
(this.a[c] = "pending"),
|
||||
C.load(
|
||||
c,
|
||||
function (a, d) {
|
||||
a = b.A(a, d || c);
|
||||
b.a[c] = a;
|
||||
b.b--;
|
||||
b.loadImports(a);
|
||||
b.m();
|
||||
},
|
||||
function () {
|
||||
b.a[c] = null;
|
||||
b.b--;
|
||||
b.m();
|
||||
}
|
||||
);
|
||||
};
|
||||
h.prototype.A = function (a, b) {
|
||||
if (!a) return document.createDocumentFragment();
|
||||
v &&
|
||||
(a = a.replace(H, function (a, b, c) {
|
||||
return -1 === a.indexOf("type=") ? b + " type=import-disable " + c : a;
|
||||
}));
|
||||
var c = document.createElement("template");
|
||||
c.innerHTML = a;
|
||||
if (c.content) (a = c.content), B(a);
|
||||
else
|
||||
for (a = document.createDocumentFragment(); c.firstChild; )
|
||||
a.appendChild(c.firstChild);
|
||||
if ((c = a.querySelector("base")))
|
||||
(b = e.c(c.getAttribute("href"), b)), c.removeAttribute("href");
|
||||
var d = 0;
|
||||
g(
|
||||
k(
|
||||
a,
|
||||
'link[rel=import],link[rel=stylesheet][href][type=import-disable],style:not([type]),link[rel=stylesheet][href]:not([type]),script:not([type]),script[type="application/javascript"],script[type="text/javascript"]'
|
||||
),
|
||||
function (a) {
|
||||
t(a);
|
||||
e.u(a, b);
|
||||
a.setAttribute("import-dependency", "");
|
||||
"script" === a.localName &&
|
||||
!a.src &&
|
||||
a.textContent &&
|
||||
(a.setAttribute(
|
||||
"src",
|
||||
"data:text/javascript;charset=utf-8," +
|
||||
encodeURIComponent(
|
||||
a.textContent +
|
||||
("\n//# sourceURL=" + b + (d ? "-" + d : "") + ".js\n")
|
||||
)
|
||||
),
|
||||
(a.textContent = ""),
|
||||
d++);
|
||||
}
|
||||
);
|
||||
return a;
|
||||
};
|
||||
h.prototype.m = function () {
|
||||
var a = this;
|
||||
if (!this.b) {
|
||||
this.g.disconnect();
|
||||
this.flatten(document);
|
||||
var b = !1,
|
||||
c = !1,
|
||||
d = function () {
|
||||
c &&
|
||||
b &&
|
||||
(a.loadImports(document),
|
||||
a.b ||
|
||||
(a.g.observe(document.head, { childList: !0, subtree: !0 }),
|
||||
a.v()));
|
||||
};
|
||||
this.C(function () {
|
||||
c = !0;
|
||||
d();
|
||||
});
|
||||
this.B(function () {
|
||||
b = !0;
|
||||
d();
|
||||
});
|
||||
}
|
||||
};
|
||||
h.prototype.flatten = function (a) {
|
||||
var b = this;
|
||||
g(k(a, "link[rel=import]"), function (a) {
|
||||
var c = b.a[a.href];
|
||||
(a.__import = c) &&
|
||||
c.nodeType === Node.DOCUMENT_FRAGMENT_NODE &&
|
||||
((b.a[a.href] = a),
|
||||
(a.readyState = "loading"),
|
||||
(a.__import = a),
|
||||
b.flatten(c),
|
||||
a.appendChild(c));
|
||||
});
|
||||
};
|
||||
h.prototype.B = function (a) {
|
||||
function b(f) {
|
||||
if (f < d) {
|
||||
var l = c[f],
|
||||
e = document.createElement("script");
|
||||
l.removeAttribute("import-dependency");
|
||||
g(l.attributes, function (a) {
|
||||
return e.setAttribute(a.name, a.value);
|
||||
});
|
||||
w = e;
|
||||
l.parentNode.replaceChild(e, l);
|
||||
t(e, function () {
|
||||
w = null;
|
||||
b(f + 1);
|
||||
});
|
||||
} else a();
|
||||
}
|
||||
var c = k(document, "script[import-dependency]"),
|
||||
d = c.length;
|
||||
b(0);
|
||||
};
|
||||
h.prototype.C = function (a) {
|
||||
var b = k(
|
||||
document,
|
||||
"style[import-dependency],link[rel=stylesheet][import-dependency]"
|
||||
),
|
||||
c = b.length;
|
||||
if (c) {
|
||||
var d =
|
||||
v &&
|
||||
!!document.querySelector(
|
||||
"link[rel=stylesheet][href][type=import-disable]"
|
||||
);
|
||||
g(b, function (b) {
|
||||
t(b, function () {
|
||||
b.removeAttribute("import-dependency");
|
||||
0 === --c && a();
|
||||
});
|
||||
if (d && b.parentNode !== document.head) {
|
||||
var e = document.createElement(b.localName);
|
||||
e.__appliedElement = b;
|
||||
e.setAttribute("type", "import-placeholder");
|
||||
b.parentNode.insertBefore(e, b.nextSibling);
|
||||
for (e = m(b); e && m(e); ) e = m(e);
|
||||
e.parentNode !== document.head && (e = null);
|
||||
document.head.insertBefore(b, e);
|
||||
b.removeAttribute("type");
|
||||
}
|
||||
});
|
||||
} else a();
|
||||
};
|
||||
h.prototype.v = function () {
|
||||
var a = this;
|
||||
g(
|
||||
k(document, "link[rel=import]"),
|
||||
function (b) {
|
||||
return a.j(b);
|
||||
},
|
||||
!0
|
||||
);
|
||||
};
|
||||
h.prototype.j = function (a) {
|
||||
a.__loaded ||
|
||||
((a.__loaded = !0),
|
||||
a.import && (a.import.readyState = "complete"),
|
||||
a.dispatchEvent(
|
||||
y(a.import ? "load" : "error", {
|
||||
bubbles: !1,
|
||||
cancelable: !1,
|
||||
detail: void 0,
|
||||
})
|
||||
));
|
||||
};
|
||||
h.prototype.w = function (a) {
|
||||
var b = this;
|
||||
g(a, function (a) {
|
||||
return g(a.addedNodes, function (a) {
|
||||
a &&
|
||||
a.nodeType === Node.ELEMENT_NODE &&
|
||||
(r(a) ? b.l(a) : b.loadImports(a));
|
||||
});
|
||||
});
|
||||
};
|
||||
var x = null;
|
||||
if (u)
|
||||
g(k(document, "link[rel=import]"), function (a) {
|
||||
(a.import && "loading" === a.import.readyState) || (a.__loaded = !0);
|
||||
}),
|
||||
(n = function (a) {
|
||||
a = a.target;
|
||||
r(a) && (a.__loaded = !0);
|
||||
}),
|
||||
document.addEventListener("load", n, !0),
|
||||
document.addEventListener("error", n, !0);
|
||||
else {
|
||||
var p = Object.getOwnPropertyDescriptor(Node.prototype, "baseURI");
|
||||
Object.defineProperty(
|
||||
(!p || p.configurable ? Node : Element).prototype,
|
||||
"baseURI",
|
||||
{
|
||||
get: function () {
|
||||
var a = r(this) ? this : m(this);
|
||||
return a
|
||||
? a.href
|
||||
: p && p.get
|
||||
? p.get.call(this)
|
||||
: (document.querySelector("base") || window.location).href;
|
||||
},
|
||||
configurable: !0,
|
||||
enumerable: !0,
|
||||
}
|
||||
);
|
||||
Object.defineProperty(HTMLLinkElement.prototype, "import", {
|
||||
get: function () {
|
||||
return this.__import || null;
|
||||
},
|
||||
configurable: !0,
|
||||
enumerable: !0,
|
||||
});
|
||||
z(function () {
|
||||
x = new h();
|
||||
});
|
||||
}
|
||||
A(function () {
|
||||
return document.dispatchEvent(
|
||||
y("HTMLImportsLoaded", { cancelable: !0, bubbles: !0, detail: void 0 })
|
||||
);
|
||||
});
|
||||
q.useNative = u;
|
||||
q.whenReady = A;
|
||||
q.importForElement = m;
|
||||
q.loadImports = function (a) {
|
||||
x && x.loadImports(a);
|
||||
};
|
||||
})((window.HTMLImports = window.HTMLImports || {}));
|
@ -47,17 +47,6 @@ export const loadCustomPanel = (
|
||||
): Promise<unknown> => {
|
||||
const panelSource = getUrl(panelConfig);
|
||||
|
||||
if (panelSource.type === "html") {
|
||||
const toLoad = [
|
||||
import(
|
||||
/* webpackChunkName: "import-href-polyfill" */ "../../resources/html-import/import-href"
|
||||
),
|
||||
];
|
||||
|
||||
return Promise.all(toLoad).then(([{ importHrefPromise }]) =>
|
||||
importHrefPromise(panelSource.url)
|
||||
);
|
||||
}
|
||||
if (panelSource.type === "js") {
|
||||
if (!(panelSource.url in JS_CACHE)) {
|
||||
JS_CACHE[panelSource.url] = loadJS(panelSource.url);
|
||||
|
Loading…
x
Reference in New Issue
Block a user