mirror of
https://github.com/maplibre/maplibre-rs.git
synced 2025-12-08 19:05:57 +00:00
75 lines
1.9 KiB
TypeScript
75 lines
1.9 KiB
TypeScript
import init from "./dist/libs/mapr";
|
|
// @ts-ignore
|
|
import {Spector} from "spectorjs";
|
|
|
|
declare var WEBGL: boolean;
|
|
|
|
const isWebGLSupported = () => {
|
|
try {
|
|
const canvas = document.createElement('canvas');
|
|
canvas.getContext("webgl");
|
|
return true;
|
|
} catch (x) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
const start = async () => {
|
|
if (!isSecureContext) {
|
|
let message = "isSecureContext is false!";
|
|
console.error(message)
|
|
alert(message)
|
|
return;
|
|
}
|
|
|
|
if (!crossOriginIsolated) {
|
|
let message = "crossOriginIsolated is false! " +
|
|
"The Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy HTTP headers are required.";
|
|
console.error(message)
|
|
alert(message)
|
|
return;
|
|
}
|
|
|
|
if (WEBGL) {
|
|
if (!isWebGLSupported()) {
|
|
console.error("WebGL is not supported in this Browser!")
|
|
return;
|
|
}
|
|
|
|
let spector = new Spector();
|
|
spector.displayUI();
|
|
} else {
|
|
if (!("gpu" in navigator)) {
|
|
console.error("WebGPU is not supported in this Browser!")
|
|
return;
|
|
}
|
|
}
|
|
|
|
if ('serviceWorker' in navigator) {
|
|
window.addEventListener('load', () => {
|
|
navigator.serviceWorker.register('/service-worker.js');
|
|
});
|
|
}
|
|
|
|
let MEMORY = 16 * 1024;
|
|
const memory = new WebAssembly.Memory({initial: 1024, maximum: MEMORY, shared: true});
|
|
const module = await init(undefined, memory);
|
|
|
|
const worker = new Worker(new URL('./cache-worker.ts', import.meta.url), {
|
|
type: "module",
|
|
});
|
|
|
|
let cache_address = module.create_cache();
|
|
|
|
console.log("Starting cache-worker")
|
|
worker.postMessage({type: "init", memory, cache_address});
|
|
|
|
/* worker.onmessage = (e) => {
|
|
console.log(e)
|
|
}*/
|
|
|
|
await module.run(cache_address);
|
|
}
|
|
|
|
start().then(r => console.log("started via wasm"));
|