import ThemeViewState from "./src/Models/ThemeViewState" import SvelteUIElement from "./src/UI/Base/SvelteUIElement" import ThemeViewGUI from "./src/UI/ThemeViewGUI.svelte" import LayoutConfig from "./src/Models/ThemeConfig/LayoutConfig"; import MetaTagging from "./src/Logic/MetaTagging"; import { FixedUiElement } from "./src/UI/Base/FixedUiElement"; import { Utils } from "./src/Utils" import Constants from "./src/Models/Constants" function webgl_support() { try { var canvas = document.createElement("canvas") return ( !!window.WebGLRenderingContext && (canvas.getContext("webgl") || canvas.getContext("experimental-webgl")) ) } catch (e) { return false } } async function timeout(timeMS: number): Promise<{ layers: string[] }> { await Utils.waitFor(timeMS) return { layers: [] } } async function getAvailableLayers(): Promise> { try { const host = new URL(Constants.VectorTileServer).host const status = await Promise.any([ // Utils.downloadJson("https://" + host + "/summary/status.json"), timeout(0) ]) return new Set(status.layers) } catch (e) { console.error("Could not get MVT available layers due to", e) return new Set() } } async function main() { if (!webgl_support()) { new FixedUiElement("WebGL is not supported or not enabled. This is essential for MapComplete to function, please enable this.").SetClass("block alert").AttachTo("maindiv") }else{ const availableLayers = await getAvailableLayers() MetaTagging.setThemeMetatagging(new ThemeMetaTagging()) // LAYOUT.ADD_LAYERS const state = new ThemeViewState(new LayoutConfig( layout), availableLayers) const main = new SvelteUIElement(ThemeViewGUI, { state }) main.AttachTo("maindiv") Array.from(document.getElementsByClassName("delete-on-load")).forEach(el => { el.parentElement.removeChild(el) }) } } main()