54 lines
1.6 KiB
JavaScript
54 lines
1.6 KiB
JavaScript
(function () {
|
|
"use strict";
|
|
|
|
var loaderScript = document.currentScript;
|
|
|
|
function supportsModuleScripts() {
|
|
var script = document.createElement("script");
|
|
return "noModule" in script;
|
|
}
|
|
|
|
function supportsImportMaps() {
|
|
return !!(window.HTMLScriptElement && HTMLScriptElement.supports && HTMLScriptElement.supports("importmap"));
|
|
}
|
|
|
|
function supportsWebGL() {
|
|
try {
|
|
var canvas = document.createElement("canvas");
|
|
return !!(window.WebGLRenderingContext && (canvas.getContext("webgl") || canvas.getContext("experimental-webgl")));
|
|
} catch (err) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
function bootstrapMapModule() {
|
|
var map = document.getElementById("map");
|
|
var script;
|
|
|
|
if (!map || map.getAttribute("data-map-module-loaded") === "true") {
|
|
return;
|
|
}
|
|
|
|
if (!supportsModuleScripts() || !supportsImportMaps() || !supportsWebGL() || typeof Promise === "undefined" || typeof fetch === "undefined") {
|
|
return;
|
|
}
|
|
|
|
map.setAttribute("data-map-module-loaded", "true");
|
|
|
|
script = document.createElement("script");
|
|
script.type = "module";
|
|
script.src = loaderScript ? new URL("map3d.js", loaderScript.src).toString() : "assets/js/map3d.js";
|
|
script.onerror = function () {
|
|
map.removeAttribute("data-map-module-loaded");
|
|
};
|
|
|
|
document.body.appendChild(script);
|
|
}
|
|
|
|
if (document.readyState === "loading") {
|
|
document.addEventListener("DOMContentLoaded", bootstrapMapModule);
|
|
} else {
|
|
bootstrapMapModule();
|
|
}
|
|
}());
|