forked from MapComplete/MapComplete
47 lines
1.7 KiB
TypeScript
47 lines
1.7 KiB
TypeScript
import DetermineTheme from "./Logic/DetermineTheme"
|
|
import SvelteUIElement from "./UI/Base/SvelteUIElement"
|
|
import { FixedUiElement } from "./UI/Base/FixedUiElement"
|
|
import Combine from "./UI/Base/Combine"
|
|
import { SubtleButton } from "./UI/Base/SubtleButton"
|
|
import { Utils } from "./Utils"
|
|
import ArrowDownTray from "@babeard/svelte-heroicons/mini/ArrowDownTray"
|
|
import SingleThemeGui from "./UI/SingleThemeGui.svelte"
|
|
|
|
|
|
async function main() {
|
|
try {
|
|
|
|
const theme = await DetermineTheme.getTheme()
|
|
const target = document.getElementById("maindiv")
|
|
const childs = Array.from(target.children)
|
|
new SingleThemeGui({
|
|
target,
|
|
props: { theme }
|
|
})
|
|
childs.forEach((ch) => target.removeChild(ch))
|
|
Array.from(document.getElementsByClassName("delete-on-load")).forEach((el) => {
|
|
el.parentElement.removeChild(el)
|
|
})
|
|
} catch (err) {
|
|
console.error("Error while initializing: ", err, err.stack)
|
|
const customDefinition = DetermineTheme.getCustomDefinition()
|
|
new Combine([
|
|
new FixedUiElement(err.toString().split("\n").join("<br/>")).SetClass("block alert"),
|
|
|
|
customDefinition?.length > 0
|
|
? new SubtleButton(
|
|
new SvelteUIElement(ArrowDownTray),
|
|
"Download the raw file"
|
|
).onClick(() =>
|
|
Utils.offerContentsAsDownloadableFile(
|
|
DetermineTheme.getCustomDefinition(),
|
|
"mapcomplete-theme.json",
|
|
{ mimetype: "application/json" }
|
|
)
|
|
)
|
|
: undefined,
|
|
]).AttachTo("maindiv")
|
|
}
|
|
}
|
|
|
|
main().then((_) => {})
|