From a070ced312616a84f4fa6c7684a2fb0c592b0448 Mon Sep 17 00:00:00 2001 From: Tom Wiesing Date: Thu, 6 Oct 2022 17:23:39 +0200 Subject: [PATCH] frontend: Use typescript over javascript --- internal/component/static/dist/control/index.js | 2 +- internal/component/static/package.json | 4 ++-- .../src/autolink/{autolink.js => autolink.ts} | 0 .../component/static/src/base/{base.js => base.ts} | 0 internal/component/static/src/control/index.d.ts | 3 +++ .../static/src/control/{index.js => index.ts} | 13 +++++++------ internal/component/static/src/global.js | 2 -- internal/component/static/src/global.ts | 2 ++ internal/component/static/src/home/index.js | 2 -- internal/component/static/src/home/index.ts | 2 ++ 10 files changed, 17 insertions(+), 13 deletions(-) rename internal/component/static/src/autolink/{autolink.js => autolink.ts} (100%) rename internal/component/static/src/base/{base.js => base.ts} (100%) create mode 100644 internal/component/static/src/control/index.d.ts rename internal/component/static/src/control/{index.js => index.ts} (81%) delete mode 100644 internal/component/static/src/global.js create mode 100644 internal/component/static/src/global.ts delete mode 100644 internal/component/static/src/home/index.js create mode 100644 internal/component/static/src/home/index.ts diff --git a/internal/component/static/dist/control/index.js b/internal/component/static/dist/control/index.js index 503e815..d6b9f86 100644 --- a/internal/component/static/dist/control/index.js +++ b/internal/component/static/dist/control/index.js @@ -1 +1 @@ -(()=>{const e=e=>{const t=document.getElementsByTagName("h"+e);Array.from(t).forEach((e=>{void 0!==e.id&&""!==e.id&&e.appendChild((e=>{const t=document.createElement("a");return t.className="header-link",t.href="#"+e,t.innerHTML="#",t})(e.id))}))};new Array(6).fill(0).forEach(((t,n)=>e(n+1)));const t={date:e=>new Date(e.innerText).toISOString(),path:e=>{const t=e.innerText.split("/");return t[t.length-1]},pathbuilders:e=>{const t=window.pathbuilders,o=document.createElement("span");let r=!1;if(Object.keys(t).forEach((e=>{r=!0;const a=e+".xml",c=t[e];o.append(n(a,e,c,"application/xml")),o.append(document.createTextNode(" "))})),!r)return"(none)";const a=document.createElement("small");return a.append(document.createTextNode("(click to download)")),o.append(a),o}},n=(e,t,n,o)=>{const r=new Blob([n],{type:o??"text/plain"}),a=document.createElement("a");return a.target="_blank",a.download=e,a.href=URL.createObjectURL(r),a.append(document.createTextNode(t)),a};Object.keys(t).forEach((e=>{const n=t[e];document.querySelectorAll("code."+e).forEach((e=>{const t=n(e);if("string"==typeof t)return e.innerHTML="",void e.appendChild(document.createTextNode(t));e.parentNode.replaceChild(t,e)}))}))})(); \ No newline at end of file +(()=>{const e=e=>{const t=document.getElementsByTagName("h"+e);Array.from(t).forEach((e=>{void 0!==e.id&&""!==e.id&&e.appendChild((e=>{const t=document.createElement("a");return t.className="header-link",t.href="#"+e,t.innerHTML="#",t})(e.id))}))};new Array(6).fill(0).forEach(((t,n)=>e(n+1)));const t={date:e=>new Date(e.innerText).toISOString(),path:e=>{const t=e.innerText.split("/");return t[t.length-1]},pathbuilders:()=>{const e=window.pathbuilders,t=document.createElement("span");let o=!1;if(Object.keys(e).forEach((r=>{o=!0;const a=r+".xml",c=e[r];t.append(n(a,r,c,"application/xml")),t.append(document.createTextNode(" "))})),!o)return"(none)";const r=document.createElement("small");return r.append(document.createTextNode("(click to download)")),t.append(r),t}},n=(e,t,n,o)=>{const r=new Blob([n],{type:o??"text/plain"}),a=document.createElement("a");return a.target="_blank",a.download=e,a.href=URL.createObjectURL(r),a.append(document.createTextNode(t)),a};Object.keys(t).forEach((e=>{const n=t[e];document.querySelectorAll("code."+e).forEach((e=>{const t=n(e);if("string"==typeof t)return e.innerHTML="",void e.appendChild(document.createTextNode(t));e.parentNode.replaceChild(t,e)}))}))})(); \ No newline at end of file diff --git a/internal/component/static/package.json b/internal/component/static/package.json index e15bce7..e6a9cd5 100644 --- a/internal/component/static/package.json +++ b/internal/component/static/package.json @@ -13,8 +13,8 @@ "targets": { "default": { "source": [ - "src/control/index.js", - "src/home/index.js" + "src/control/index.ts", + "src/home/index.ts" ] } } diff --git a/internal/component/static/src/autolink/autolink.js b/internal/component/static/src/autolink/autolink.ts similarity index 100% rename from internal/component/static/src/autolink/autolink.js rename to internal/component/static/src/autolink/autolink.ts diff --git a/internal/component/static/src/base/base.js b/internal/component/static/src/base/base.ts similarity index 100% rename from internal/component/static/src/base/base.js rename to internal/component/static/src/base/base.ts diff --git a/internal/component/static/src/control/index.d.ts b/internal/component/static/src/control/index.d.ts new file mode 100644 index 0000000..caf4024 --- /dev/null +++ b/internal/component/static/src/control/index.d.ts @@ -0,0 +1,3 @@ +declare interface Window { + readonly pathbuilders: {[name: string]: string} +} \ No newline at end of file diff --git a/internal/component/static/src/control/index.js b/internal/component/static/src/control/index.ts similarity index 81% rename from internal/component/static/src/control/index.js rename to internal/component/static/src/control/index.ts index 88b9bd3..e5cf41f 100644 --- a/internal/component/static/src/control/index.js +++ b/internal/component/static/src/control/index.ts @@ -1,7 +1,8 @@ -import '../global.js'; +import '../global.ts'; import './index.css'; -const types = { + +const types: Record HTMLElement | string> = { "date": (element) => { return (new Date(element.innerText)).toISOString() }, @@ -9,7 +10,7 @@ const types = { const text = element.innerText.split("/"); return text[text.length - 1]; }, - "pathbuilders": (element) => { + "pathbuilders": () => { const pathbuilders = window.pathbuilders; // read from context! const wrapper = document.createElement("span"); @@ -34,7 +35,7 @@ const types = { } } -const make_download_link = (filename, title, content, type) => { +const make_download_link = (filename: string, title: string, content: string, type: string) => { const blob = new Blob( [content], { @@ -53,7 +54,7 @@ const make_download_link = (filename, title, content, type) => { Object.keys(types).forEach(key => { const f = types[key]; - const elements = document.querySelectorAll("code." + key) + const elements = document.querySelectorAll("code." + key) as NodeListOf elements.forEach(element => { const newElement = f(element) if (typeof newElement === 'string') { @@ -62,6 +63,6 @@ Object.keys(types).forEach(key => { return } - element.parentNode.replaceChild(newElement, element) + element.parentNode!.replaceChild(newElement, element) }) }) \ No newline at end of file diff --git a/internal/component/static/src/global.js b/internal/component/static/src/global.js deleted file mode 100644 index 115bb4e..0000000 --- a/internal/component/static/src/global.js +++ /dev/null @@ -1,2 +0,0 @@ -import './base/base.js'; -import './autolink/autolink.js'; diff --git a/internal/component/static/src/global.ts b/internal/component/static/src/global.ts new file mode 100644 index 0000000..f04e927 --- /dev/null +++ b/internal/component/static/src/global.ts @@ -0,0 +1,2 @@ +import './base/base.ts'; +import './autolink/autolink.ts'; diff --git a/internal/component/static/src/home/index.js b/internal/component/static/src/home/index.js deleted file mode 100644 index dccc34d..0000000 --- a/internal/component/static/src/home/index.js +++ /dev/null @@ -1,2 +0,0 @@ -import '../global.js'; -import './index.css'; \ No newline at end of file diff --git a/internal/component/static/src/home/index.ts b/internal/component/static/src/home/index.ts new file mode 100644 index 0000000..c040c1f --- /dev/null +++ b/internal/component/static/src/home/index.ts @@ -0,0 +1,2 @@ +import '../global.ts'; +import './index.css'; \ No newline at end of file