grid-apps-cmms/src.old/kiri-mode/sla/driver.js

48 lines
1.4 KiB
JavaScript
Raw Normal View History

2025-07-04 22:18:18 -04:00
/** Copyright Stewart Allen <sa@grid.space> -- All Rights Reserved */
"use strict";
2025-07-04 22:18:18 -04:00
// use: kiri.print
gapp.register("kiri-mode.sla.driver", [], (root, exports) => {
const { kiri } = root
const { driver } = kiri;
const SLA = driver.SLA = {
prepare,
legacy: false
2025-07-04 22:18:18 -04:00
};
2025-07-05 18:52:53 -04:00
if (SLA.legacy) {
2025-07-04 22:18:18 -04:00
console.log("SLA Driver in Legacy Mode");
}
// runs in worker. would usually be in src/mode/sla/prepare.js
// but the SLA driver skips the prepare step because there is no path routing
async function prepare(widgets, settings, update) {
root.worker.print = kiri.newPrint(settings, widgets);
2025-07-05 18:52:53 -04:00
if (!SLA.wasm) {
2025-07-04 22:18:18 -04:00
fetch('/wasm/kiri-sla.wasm')
.then(response => response.arrayBuffer())
.then(bytes => WebAssembly.instantiate(bytes, {
env: {
reportf: (a,b) => { console.log('[f]',a,b) },
reporti: (a,b) => { console.log('[i]',a,b) }
}
}))
.then(results => {
let {module, instance} = results;
let {exports} = instance;
let heap = new Uint8Array(exports.memory.buffer);
2025-07-05 18:52:53 -04:00
SLA.wasm = {
2025-07-04 22:18:18 -04:00
heap,
memory: exports.memory,
render: exports.render,
rle_encode: exports.rle_encode
};
});
}
update(1);
}
});