ReadonlyidUnique module identifier within the GeoLeaf instance.
The registry enforces uniqueness — registering two modules with the same
id throws a GeoLeafError. Use lowercase kebab-case.
ReadonlydependenciesIDs of modules that must be fully initialised before this module's
init() is called.
The registry resolves a topological order from these declarations. An empty array means this module has no dependencies.
Use as const in implementing classes for best type inference:
readonly dependencies = ['poi', 'ui'] as const;
Initialises the module.
Called by the registry after all declared dependencies are ready. Guaranteed postconditions at call time:
adapter.isReady() returns trueconfig.isLoaded() returns truedependencies have completed their init()Returning void (synchronous) is allowed for modules that do not
perform async work. The registry handles both with Promise.resolve().
Read-only configuration access.
Unwires what init() wired, when the application is unmounted (ModuleRegistry.destroy(),
which only GeoLeaf.mount()'s teardown calls). Runs while the map is still alive: the
permalink detaches its moveend from it, and the basemap registry forgets it — without
that, the next map got no basemap at all. The panels and the toolbar are torn down after,
with the map, by the lifecycle seam Core.destroy() runs.
Represents the GeoLeaf UI subsystem plus all feature module orchestration. Runs after
config,core-map(map available),shared(i18n ready) andgeojson(F0/S8: layers loaded by GeoJSONModule.init() before the theme applier at #20 runs — makes the registry-order guarantee explicit rather than relying on registration order).