summaryrefslogtreecommitdiffstats
path: root/web_src/js/webcomponents/origin-url.js
diff options
context:
space:
mode:
Diffstat (limited to 'web_src/js/webcomponents/origin-url.js')
-rw-r--r--web_src/js/webcomponents/origin-url.js22
1 files changed, 22 insertions, 0 deletions
diff --git a/web_src/js/webcomponents/origin-url.js b/web_src/js/webcomponents/origin-url.js
new file mode 100644
index 0000000..09aa77f
--- /dev/null
+++ b/web_src/js/webcomponents/origin-url.js
@@ -0,0 +1,22 @@
+// Convert an absolute or relative URL to an absolute URL with the current origin. It only
+// processes absolute HTTP/HTTPS URLs or relative URLs like '/xxx' or '//host/xxx'.
+// NOTE: Keep this function in sync with clone_script.tmpl
+export function toOriginUrl(urlStr) {
+ try {
+ if (urlStr.startsWith('http://') || urlStr.startsWith('https://') || urlStr.startsWith('/')) {
+ const {origin, protocol, hostname, port} = window.location;
+ const url = new URL(urlStr, origin);
+ url.protocol = protocol;
+ url.hostname = hostname;
+ url.port = port || (protocol === 'https:' ? '443' : '80');
+ return url.toString();
+ }
+ } catch {}
+ return urlStr;
+}
+
+window.customElements.define('origin-url', class extends HTMLElement {
+ connectedCallback() {
+ this.textContent = toOriginUrl(this.getAttribute('data-url'));
+ }
+});