GeoLeaf Core API - v3.19.0
    Preparing search index...

    Represents the GeoLeaf UI subsystem plus all feature module orchestration. Runs after config, core-map (map available), shared (i18n ready) and geojson (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).

    Implements

    Index
    id: "ui" = ...

    Unique module identifier within the GeoLeaf instance.

    The registry enforces uniqueness — registering two modules with the same id throws a GeoLeafError. Use lowercase kebab-case.

    `'geojson'`, `'route'`, `'legend'`, `'layer-manager'`
    
    dependencies: readonly ["config", "core-map", "shared", "geojson"] = ...

    IDs 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 true
      • config.isLoaded() returns true
      • All modules listed in dependencies have completed their init()

      Returning void (synchronous) is allowed for modules that do not perform async work. The registry handles both with Promise.resolve().

      Parameters

      Returns Promise<void>

    • 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.

      Returns void