1
0
Fork 0
VaultUI/src/main.tsx
2021-11-21 11:06:10 +00:00

112 lines
2.9 KiB
TypeScript

"use strict";
// JS & CSS
/* eslint-disable */
import "./scss/main.scss";
import UIkit from 'uikit';
// Don't Sort These!
import Icons from 'uikit/dist/js/uikit-icons';
// @ts-ignore
UIkit.use(Icons);
import Prism from "prismjs";
// Don't Sort These!
import "prismjs/components/prism-json";
import "prismjs/components/prism-hcl";
Prism.highlightAll();
/* eslint-enable */
// @ts-ignore
import translations from "./translations/index.mjs";
// Actual Imports
import { PageRouter } from "./pagerouter/PageRouter";
import { formatDistance } from "./formatDistance";
import { getSealStatus } from "./api/sys/getSealStatus";
import { pageList } from "./allPages";
import { pageState } from "./globalPageState";
import { playground } from "./playground";
import { reloadNavBar } from "./ui/elements/NavBar";
import { render } from "preact";
import i18next from "i18next";
async function onLoad(): Promise<void> {
render(
<>
<div id="navBarBox" />
<div class="uk-container uk-container-medium uk-align-center">
<div class="uk-card uk-card-body">
<h3 class="uk-card-title" id="pageTitle" />
<div id="pageContent" />
</div>
</div>
</>,
document.body,
);
const pageRouter = new PageRouter({
pageList: pageList,
state: pageState,
pageTitleElement: document.querySelector("#pageTitle"),
pageContentElement: document.querySelector("#pageContent"),
resetElementContent: !true,
onPageChange: async function () {
pageState.currentPage = await pageRouter.getCurrentPageID();
document.documentElement.dir = pageState.pageDirection;
},
});
reloadNavBar(pageRouter);
if (process.env.NODE_ENV == "development") {
await playground(pageRouter);
}
await pageRouter.changePage(pageState.currentPage);
setInterval(async () => {
if ((await pageRouter.getCurrentPageID()) != "UNSEAL") {
if (pageState.apiURL.length != 0) {
return;
}
const sealStatus = await getSealStatus();
if (sealStatus.sealed) {
await pageRouter.changePage("UNSEAL");
return;
}
}
}, 5000);
}
document.addEventListener(
"DOMContentLoaded",
async () => {
console.log("Loading...");
// @ts-expect-error
console.log("Build Data:", BUILD_STRING);
await i18next.init({
lng: pageState.language,
fallbackLng: "en",
debug: true,
// @ts-ignore
resources: Object.fromEntries(
Object.entries(translations).map(([k, v]) => [k, { translation: v }]),
),
interpolation: {
escape: (str) => {
return str;
},
format: function (value: unknown, format, _): string {
if (format === "until_date" && value instanceof Date)
return formatDistance(new Date(), new Date(value), pageState.language);
return value as string;
},
},
});
await onLoad();
},
false,
);