NavigationProjection
Everything about the navigation position that is a pure function of the back stack, the active modal contexts, and the registered graph definitions.
The reducer computes one of these per state change and io.github.syrou.reaktiv.navigation.NavigationState exposes each field through an accessor of the same name, so callers read navState.visibleLayers rather than navState.derived.visibleLayers.
Adding a derived value means adding it here and adding one accessor, rather than threading a field through the state class, an intermediate holder, and every construction site.
The constructor is internal on purpose: a projection is something the reducer computes from the back stack, never something a caller supplies. Nothing outside the navigation module can fabricate one, so a derived value cannot disagree with the stack it describes.
Properties
Breadcrumb trail derived from currentFullPath.
Entries assigned to io.github.syrou.reaktiv.navigation.layer.RenderLayer.CONTENT.
The full slash-separated path for the current entry.
Graph IDs from root to the graph containing the current entry.
Entries assigned to io.github.syrou.reaktiv.navigation.layer.RenderLayer.GLOBAL_OVERLAY.
true when at least one modal is present anywhere in the back stack.
true when the current entry is a io.github.syrou.reaktiv.navigation.definition.Modal.
true when the current entry is a io.github.syrou.reaktiv.navigation.definition.Screen.
All modal entries currently present in the back stack.
true when the current destination wants a navigation header.
Entries assigned to io.github.syrou.reaktiv.navigation.layer.RenderLayer.SYSTEM.
The screen rendered underneath the current modal, or null.
Graph hierarchy of underlyingScreen.
Entries that should be rendered, ordered from bottom to top layer.