lecodes-web-host
v2.0.3
Published
The web host of LeCodes: a compiled bundle in the browser on the runtime module (Filament, creator-2d, the tree UI) — a library that fills the container it is given
Readme
lecodes-web-host
A compiled LeCodes bundle in the browser, in the container it is given — the runtime as
WebAssembly (runtime/web) with its host tables in TypeScript. A library: the page around the
container is the embedder's (lecodes-web-player is the one this repo ships).
import { mount } from "lecodes-web-host"
const host = await mount(root, code, { onError })
host.destroy()import { createHost, parseBundleHeader } from "lecodes-web-host"
const host = await createHost(root, { header: parseBundleHeader(code) })
host.registerPlugin("map", half) // a plugin's web half, before the bundle that names it
host.run(code, { onError }) // repeatably
host.setSafeArea({ top: 59, right: 0, bottom: 34, left: 0 })The host fills root and follows its size. It knows nothing around it — no device, no frame, no
zoom, no url, no message.
| file | |
|---|---|
| host.ts | puts the parts together: the module, the tables, the frame |
| header.ts | the bundle's header, and the runtime profile it means |
| page.ts | the container, its size in device px, the canvases |
| engines/ | the 3D and the 2D surface (HostGL, HostScene2d) |
| tables/ | fetch, storage, device, app, socket, service, input, media — a file per table |
| plugins.ts | the doors of the plugins' web halves |
| safeArea.ts | the browser's insets, or the embedder's |
| errors.ts | what a bundle threw, mapped to its source |
| system.ts, materials.ts | the engine's built-in blobs, the archives a bundle asks for |
The UI is lecodes-web-canvas: the TreeUI painted on a canvas over the scenes, a native view and
a video under the picture, the field being edited over it.
