diff --git a/README.md b/README.md index 6360ab8..fac12ae 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ NavigationContainer(navigator) { (destination, _) -> "Greeting" -> Column { Text("Hello") - Button(onClick = { navigator.goTo("Farewell") }) { + Button(onClick = { navigator.push("Farewell") }) { Text("Say Goodbye") } } @@ -96,15 +96,15 @@ enum class MainContext( ### Navigator A `Navigator` is used to navigate between navigation contexts and destinations via the -convenient `goTo`, `changeContext`, and `goBack` functions. A `Navigator` can be obtained via one of the constructor -functions or the `remember`/`rememberSavable` functions when using Jetpack Compose/Multiplatform Compose. +convenient `push`, `popContext`, and `popDestination` functions. A `Navigator` can be obtained via one of the +constructor functions or the `remember`/`rememberSavable` functions when using Jetpack Compose/Multiplatform Compose. ```kotlin val navigator = rememberNavigator(initialDestination = AppDestination.HOME) -BackHandler { navigator.goBack() } +BackHandler { navigator.popDestination() } -ListItem(modifier = Modifier.clickable { navigator.goTo(AppDestination.DETAILS) }) +ListItem(modifier = Modifier.clickable { navigator.push(AppDestination.DETAILS) }) ``` ### NavigationContainer @@ -155,14 +155,14 @@ fun @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
fun <[T](collect-as-state.md)> [NavigationState](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-state/index.md)<[T](collect-as-state.md)>.[collectAsState](collect-as-state.md)(): [State](https://developer.android.com/reference/kotlin/androidx/compose/runtime/State.html)<[T](collect-as-state.md)>
Converts the [NavigationState.changes](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-state/changes.md) of this [NavigationState](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-state/index.md) to a Jetpack Compose [State](https://developer.android.com/reference/kotlin/androidx/compose/runtime/State.html) so that every change causes a recomposition of the calling [Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html) function. | | [NavigationContainer](-navigation-container.md) | [common]
@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
@[ExperimentalNavigationApi](../../../navigation-core/navigation-core/com.chrynan.navigation/-experimental-navigation-api/index.md)
fun <[Destination](-navigation-container.md) : [NavigationDestination](../../../navigation-core/com.chrynan.navigation/-navigation-destination/index.md), [Context](-navigation-container.md) : [NavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md)<[Destination](-navigation-container.md)>> [NavigationContainer](-navigation-container.md)(navigator: [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md)<[Destination](-navigation-container.md), [Context](-navigation-container.md)>, modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, content: @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)[BoxScope](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/BoxScope.html).(destinationAndContext: [DestinationAndContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-destination-and-context/index.md)<[Destination](-navigation-container.md), [Context](-navigation-container.md)>) -> [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html))
A [Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html) that listens to navigation context and destination changes from the provided [navigator](-navigation-container.md) and calls the provided [content](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html) function with the latest values. | -| [rememberNavigator](remember-navigator.md) | [common]
@[ExperimentalNavigationApi](../../../navigation-core/navigation-core/com.chrynan.navigation/-experimental-navigation-api/index.md)
@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
fun <[Destination](remember-navigator.md) : [NavigationDestination](../../../navigation-core/com.chrynan.navigation/-navigation-destination/index.md), [Context](remember-navigator.md) : [NavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md)<[Destination](remember-navigator.md)>> [rememberNavigator](remember-navigator.md)(initialContext: [Context](remember-navigator.md), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, backwardsNavigationStrategy: [NavigationStrategy.BackwardsNavigation](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/index.md) = NavigationStrategy.BackwardsNavigation.IN_CONTEXT, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md)<[Destination](remember-navigator.md), [Context](remember-navigator.md)>
@[ExperimentalNavigationApi](../../../navigation-core/navigation-core/com.chrynan.navigation/-experimental-navigation-api/index.md)
@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
fun <[Destination](remember-navigator.md) : [NavigationDestination](../../../navigation-core/com.chrynan.navigation/-navigation-destination/index.md)> [rememberNavigator](remember-navigator.md)(initialDestination: [Destination](remember-navigator.md), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, backwardsNavigationStrategy: [NavigationStrategy.BackwardsNavigation](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/index.md) = NavigationStrategy.BackwardsNavigation.IN_CONTEXT, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md)<[Destination](remember-navigator.md), [SingleNavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-single-navigation-context/index.md)<[Destination](remember-navigator.md)>>
Creates and remembers a [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md) with a [SingleNavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-single-navigation-context/index.md). A [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md) can be used to navigate between different UI content in an application. | -| [rememberSavableNavigator](remember-savable-navigator.md) | [common]
@ExperimentalSerializationApi
@[ExperimentalNavigationApi](../../../navigation-core/navigation-core/com.chrynan.navigation/-experimental-navigation-api/index.md)
@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
inline fun <[Destination](remember-savable-navigator.md) : [NavigationDestination](../../../navigation-core/com.chrynan.navigation/-navigation-destination/index.md)> [rememberSavableNavigator](remember-savable-navigator.md)(initialDestination: [Destination](remember-savable-navigator.md), parcelable: Parcelable = Parcelable.Default, destinationSerializer: KSerializer<[Destination](remember-savable-navigator.md)> = parcelable.serializersModule.serializer(), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, backwardsNavigationStrategy: [NavigationStrategy.BackwardsNavigation](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/index.md) = NavigationStrategy.BackwardsNavigation.IN_CONTEXT, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md)<[Destination](remember-savable-navigator.md), [SingleNavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-single-navigation-context/index.md)<[Destination](remember-savable-navigator.md)>>
@ExperimentalSerializationApi
@[ExperimentalNavigationApi](../../../navigation-core/navigation-core/com.chrynan.navigation/-experimental-navigation-api/index.md)
@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
inline fun <[Destination](remember-savable-navigator.md) : [NavigationDestination](../../../navigation-core/com.chrynan.navigation/-navigation-destination/index.md), [Context](remember-savable-navigator.md) : [NavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md)<[Destination](remember-savable-navigator.md)>> [rememberSavableNavigator](remember-savable-navigator.md)(initialContext: [Context](remember-savable-navigator.md), parcelable: Parcelable = Parcelable.Default, destinationSerializer: KSerializer<[Destination](remember-savable-navigator.md)> = parcelable.serializersModule.serializer(), contextSerializer: KSerializer<[Context](remember-savable-navigator.md)> = parcelable.serializersModule.serializer(), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, backwardsNavigationStrategy: [NavigationStrategy.BackwardsNavigation](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/index.md) = NavigationStrategy.BackwardsNavigation.IN_CONTEXT, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md)<[Destination](remember-savable-navigator.md), [Context](remember-savable-navigator.md)>
Creates, remembers and saves a [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md) with a [SingleNavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-single-navigation-context/index.md). A [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md) can be used to navigate between different UI content in an application. This differs from the [rememberNavigator](remember-navigator.md) function in that it allows restoring the [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md) state between configuration changes via the rememberSavable function and using the provided KSerializers. | +| [rememberNavigator](remember-navigator.md) | [common]
@[ExperimentalNavigationApi](../../../navigation-core/navigation-core/com.chrynan.navigation/-experimental-navigation-api/index.md)
@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
fun <[Destination](remember-navigator.md) : [NavigationDestination](../../../navigation-core/com.chrynan.navigation/-navigation-destination/index.md), [Context](remember-navigator.md) : [NavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md)<[Destination](remember-navigator.md)>> [rememberNavigator](remember-navigator.md)(initialContext: [Context](remember-navigator.md), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md)<[Destination](remember-navigator.md), [Context](remember-navigator.md)>
@[ExperimentalNavigationApi](../../../navigation-core/navigation-core/com.chrynan.navigation/-experimental-navigation-api/index.md)
@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
fun <[Destination](remember-navigator.md) : [NavigationDestination](../../../navigation-core/com.chrynan.navigation/-navigation-destination/index.md)> [rememberNavigator](remember-navigator.md)(initialDestination: [Destination](remember-navigator.md), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md)<[Destination](remember-navigator.md), [SingleNavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-single-navigation-context/index.md)<[Destination](remember-navigator.md)>>
Creates and remembers a [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md) with a [SingleNavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-single-navigation-context/index.md). A [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md) can be used to navigate between different UI content in an application. | +| [rememberSavableNavigator](remember-savable-navigator.md) | [common]
@ExperimentalSerializationApi
@[ExperimentalNavigationApi](../../../navigation-core/navigation-core/com.chrynan.navigation/-experimental-navigation-api/index.md)
@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
inline fun <[Destination](remember-savable-navigator.md) : [NavigationDestination](../../../navigation-core/com.chrynan.navigation/-navigation-destination/index.md)> [rememberSavableNavigator](remember-savable-navigator.md)(initialDestination: [Destination](remember-savable-navigator.md), parcelable: Parcelable = Parcelable.Default, destinationSerializer: KSerializer<[Destination](remember-savable-navigator.md)> = parcelable.serializersModule.serializer(), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md)<[Destination](remember-savable-navigator.md), [SingleNavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-single-navigation-context/index.md)<[Destination](remember-savable-navigator.md)>>
@ExperimentalSerializationApi
@[ExperimentalNavigationApi](../../../navigation-core/navigation-core/com.chrynan.navigation/-experimental-navigation-api/index.md)
@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
inline fun <[Destination](remember-savable-navigator.md) : [NavigationDestination](../../../navigation-core/com.chrynan.navigation/-navigation-destination/index.md), [Context](remember-savable-navigator.md) : [NavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md)<[Destination](remember-savable-navigator.md)>> [rememberSavableNavigator](remember-savable-navigator.md)(initialContext: [Context](remember-savable-navigator.md), parcelable: Parcelable = Parcelable.Default, destinationSerializer: KSerializer<[Destination](remember-savable-navigator.md)> = parcelable.serializersModule.serializer(), contextSerializer: KSerializer<[Context](remember-savable-navigator.md)> = parcelable.serializersModule.serializer(), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md)<[Destination](remember-savable-navigator.md), [Context](remember-savable-navigator.md)>
Creates, remembers and saves a [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md) with a [SingleNavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-single-navigation-context/index.md). A [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md) can be used to navigate between different UI content in an application. This differs from the [rememberNavigator](remember-navigator.md) function in that it allows restoring the [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md) state between configuration changes via the rememberSavable function and using the provided KSerializers. | diff --git a/docs/navigation-compose/navigation-compose/com.chrynan.navigation.compose/remember-navigator.md b/docs/navigation-compose/navigation-compose/com.chrynan.navigation.compose/remember-navigator.md index 469c7b4..8de370a 100644 --- a/docs/navigation-compose/navigation-compose/com.chrynan.navigation.compose/remember-navigator.md +++ b/docs/navigation-compose/navigation-compose/com.chrynan.navigation.compose/remember-navigator.md @@ -8,7 +8,7 @@ @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html) -fun <[Destination](remember-navigator.md) : [NavigationDestination](../../../navigation-core/com.chrynan.navigation/-navigation-destination/index.md)> [rememberNavigator](remember-navigator.md)(initialDestination: [Destination](remember-navigator.md), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, backwardsNavigationStrategy: [NavigationStrategy.BackwardsNavigation](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/index.md) = NavigationStrategy.BackwardsNavigation.IN_CONTEXT, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md)<[Destination](remember-navigator.md), [SingleNavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-single-navigation-context/index.md)<[Destination](remember-navigator.md)>> +fun <[Destination](remember-navigator.md) : [NavigationDestination](../../../navigation-core/com.chrynan.navigation/-navigation-destination/index.md)> [rememberNavigator](remember-navigator.md)(initialDestination: [Destination](remember-navigator.md), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md)<[Destination](remember-navigator.md), [SingleNavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-single-navigation-context/index.md)<[Destination](remember-navigator.md)>> Creates and remembers a [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md) with a [SingleNavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-single-navigation-context/index.md). A [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md) can be used to navigate between different UI content in an application. @@ -30,7 +30,6 @@ common |---|---| | initialDestination | The initial [NavigationDestination](../../../navigation-core/com.chrynan.navigation/-navigation-destination/index.md) value to start at for this [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md). | | duplicateDestinationStrategy | The [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) strategy for handling of duplicate destination content within a [NavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md) stack. Read the documentation on [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) for more information about the supported operations. Defaults to [NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/-a-l-l-o-w_-d-u-p-l-i-c-a-t-e-s/index.md). | -| backwardsNavigationStrategy | The [NavigationStrategy.BackwardsNavigation](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/index.md) strategy of supported back navigation (across contexts or just destinations within the current context). Read the documentation on [NavigationStrategy.BackwardsNavigation](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/index.md) for more information about the operations that are supported. Defaults to [NavigationStrategy.BackwardsNavigation.IN_CONTEXT](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/-i-n_-c-o-n-t-e-x-t/index.md). | | destinationRetentionStrategy | The [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) strategy for handling of destination stacks within a [NavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md) when navigating between different [NavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md)s. Read the documentation on [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) for more information about the supported operations. Defaults to [NavigationStrategy.DestinationRetention.RETAIN](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/-r-e-t-a-i-n/index.md). | #### See also @@ -48,7 +47,7 @@ common @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html) -fun <[Destination](remember-navigator.md) : [NavigationDestination](../../../navigation-core/com.chrynan.navigation/-navigation-destination/index.md), [Context](remember-navigator.md) : [NavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md)<[Destination](remember-navigator.md)>> [rememberNavigator](remember-navigator.md)(initialContext: [Context](remember-navigator.md), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, backwardsNavigationStrategy: [NavigationStrategy.BackwardsNavigation](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/index.md) = NavigationStrategy.BackwardsNavigation.IN_CONTEXT, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md)<[Destination](remember-navigator.md), [Context](remember-navigator.md)> +fun <[Destination](remember-navigator.md) : [NavigationDestination](../../../navigation-core/com.chrynan.navigation/-navigation-destination/index.md), [Context](remember-navigator.md) : [NavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md)<[Destination](remember-navigator.md)>> [rememberNavigator](remember-navigator.md)(initialContext: [Context](remember-navigator.md), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md)<[Destination](remember-navigator.md), [Context](remember-navigator.md)> Creates and remembers a [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md) with a [SingleNavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-single-navigation-context/index.md). A [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md) can be used to navigate between different UI content in an application. @@ -70,7 +69,6 @@ common |---|---| | initialContext | The initial [NavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md) value to start at for this [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md). | | duplicateDestinationStrategy | The [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) strategy for handling of duplicate destination content within a [Context](remember-navigator.md) stack. Read the documentation on [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) for more information about the supported operations. Defaults to [NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/-a-l-l-o-w_-d-u-p-l-i-c-a-t-e-s/index.md). | -| backwardsNavigationStrategy | The [NavigationStrategy.BackwardsNavigation](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/index.md) strategy of supported back navigation (across contexts or just destinations within the current context). Read the documentation on [NavigationStrategy.BackwardsNavigation](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/index.md) for more information about the operations that are supported. Defaults to [NavigationStrategy.BackwardsNavigation.IN_CONTEXT](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/-i-n_-c-o-n-t-e-x-t/index.md). | | destinationRetentionStrategy | The [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) strategy for handling of destination stacks within a [Context](remember-navigator.md) when navigating between different [NavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md)s. Read the documentation on [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) for more information about the supported operations. Defaults to [NavigationStrategy.DestinationRetention.RETAIN](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/-r-e-t-a-i-n/index.md). | #### See also diff --git a/docs/navigation-compose/navigation-compose/com.chrynan.navigation.compose/remember-savable-navigator.md b/docs/navigation-compose/navigation-compose/com.chrynan.navigation.compose/remember-savable-navigator.md index f090c57..dbdb434 100644 --- a/docs/navigation-compose/navigation-compose/com.chrynan.navigation.compose/remember-savable-navigator.md +++ b/docs/navigation-compose/navigation-compose/com.chrynan.navigation.compose/remember-savable-navigator.md @@ -10,7 +10,7 @@ @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html) -inline fun <[Destination](remember-savable-navigator.md) : [NavigationDestination](../../../navigation-core/com.chrynan.navigation/-navigation-destination/index.md)> [rememberSavableNavigator](remember-savable-navigator.md)(initialDestination: [Destination](remember-savable-navigator.md), parcelable: Parcelable = Parcelable.Default, destinationSerializer: KSerializer<[Destination](remember-savable-navigator.md)> = parcelable.serializersModule.serializer(), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, backwardsNavigationStrategy: [NavigationStrategy.BackwardsNavigation](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/index.md) = NavigationStrategy.BackwardsNavigation.IN_CONTEXT, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md)<[Destination](remember-savable-navigator.md), [SingleNavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-single-navigation-context/index.md)<[Destination](remember-savable-navigator.md)>> +inline fun <[Destination](remember-savable-navigator.md) : [NavigationDestination](../../../navigation-core/com.chrynan.navigation/-navigation-destination/index.md)> [rememberSavableNavigator](remember-savable-navigator.md)(initialDestination: [Destination](remember-savable-navigator.md), parcelable: Parcelable = Parcelable.Default, destinationSerializer: KSerializer<[Destination](remember-savable-navigator.md)> = parcelable.serializersModule.serializer(), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md)<[Destination](remember-savable-navigator.md), [SingleNavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-single-navigation-context/index.md)<[Destination](remember-savable-navigator.md)>> Creates, remembers and saves a [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md) with a [SingleNavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-single-navigation-context/index.md). A [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md) can be used to navigate between different UI content in an application. This differs from the [rememberNavigator](remember-navigator.md) function in that it allows restoring the [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md) state between configuration changes via the rememberSavable function and using the provided KSerializers. @@ -34,7 +34,6 @@ common | parcelable | The Parcelable instance that is used to store and retrieve the [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md) instance between configuration changes. | | destinationSerializer | The KSerializer for the [Destination](remember-savable-navigator.md) type. | | duplicateDestinationStrategy | The [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) strategy for handling of duplicate destination content within a [NavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md) stack. Read the documentation on [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) for more information about the supported operations. Defaults to [NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/-a-l-l-o-w_-d-u-p-l-i-c-a-t-e-s/index.md). | -| backwardsNavigationStrategy | The [NavigationStrategy.BackwardsNavigation](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/index.md) strategy of supported back navigation (across contexts or just destinations within the current context). Read the documentation on [NavigationStrategy.BackwardsNavigation](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/index.md) for more information about the operations that are supported. Defaults to [NavigationStrategy.BackwardsNavigation.IN_CONTEXT](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/-i-n_-c-o-n-t-e-x-t/index.md). | | destinationRetentionStrategy | The [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) strategy for handling of destination stacks within a [NavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md) when navigating between different [NavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md)s. Read the documentation on [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) for more information about the supported operations. Defaults to [NavigationStrategy.DestinationRetention.RETAIN](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/-r-e-t-a-i-n/index.md). | #### See also @@ -54,7 +53,7 @@ common @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html) -inline fun <[Destination](remember-savable-navigator.md) : [NavigationDestination](../../../navigation-core/com.chrynan.navigation/-navigation-destination/index.md), [Context](remember-savable-navigator.md) : [NavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md)<[Destination](remember-savable-navigator.md)>> [rememberSavableNavigator](remember-savable-navigator.md)(initialContext: [Context](remember-savable-navigator.md), parcelable: Parcelable = Parcelable.Default, destinationSerializer: KSerializer<[Destination](remember-savable-navigator.md)> = parcelable.serializersModule.serializer(), contextSerializer: KSerializer<[Context](remember-savable-navigator.md)> = parcelable.serializersModule.serializer(), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, backwardsNavigationStrategy: [NavigationStrategy.BackwardsNavigation](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/index.md) = NavigationStrategy.BackwardsNavigation.IN_CONTEXT, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md)<[Destination](remember-savable-navigator.md), [Context](remember-savable-navigator.md)> +inline fun <[Destination](remember-savable-navigator.md) : [NavigationDestination](../../../navigation-core/com.chrynan.navigation/-navigation-destination/index.md), [Context](remember-savable-navigator.md) : [NavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md)<[Destination](remember-savable-navigator.md)>> [rememberSavableNavigator](remember-savable-navigator.md)(initialContext: [Context](remember-savable-navigator.md), parcelable: Parcelable = Parcelable.Default, destinationSerializer: KSerializer<[Destination](remember-savable-navigator.md)> = parcelable.serializersModule.serializer(), contextSerializer: KSerializer<[Context](remember-savable-navigator.md)> = parcelable.serializersModule.serializer(), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md)<[Destination](remember-savable-navigator.md), [Context](remember-savable-navigator.md)> Creates, remembers and saves a [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md) with a [SingleNavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-single-navigation-context/index.md). A [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md) can be used to navigate between different UI content in an application. This differs from the [rememberNavigator](remember-navigator.md) function in that it allows restoring the [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md) state between configuration changes via the rememberSavable function and using the provided KSerializers. @@ -79,7 +78,6 @@ common | destinationSerializer | The KSerializer for the [Destination](remember-savable-navigator.md) type. | | contextSerializer | The KSerializer for the [Context](remember-savable-navigator.md) type. | | duplicateDestinationStrategy | The [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) strategy for handling of duplicate destination content within a [NavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md) stack. Read the documentation on [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) for more information about the supported operations. Defaults to [NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/-a-l-l-o-w_-d-u-p-l-i-c-a-t-e-s/index.md). | -| backwardsNavigationStrategy | The [NavigationStrategy.BackwardsNavigation](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/index.md) strategy of supported back navigation (across contexts or just destinations within the current context). Read the documentation on [NavigationStrategy.BackwardsNavigation](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/index.md) for more information about the operations that are supported. Defaults to [NavigationStrategy.BackwardsNavigation.IN_CONTEXT](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/-i-n_-c-o-n-t-e-x-t/index.md). | | destinationRetentionStrategy | The [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) strategy for handling of destination stacks within a [NavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md) when navigating between different [NavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md)s. Read the documentation on [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) for more information about the supported operations. Defaults to [NavigationStrategy.DestinationRetention.RETAIN](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/-r-e-t-a-i-n/index.md). | #### See also diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-context/elapsed-milliseconds.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-context/elapsed-milliseconds.md new file mode 100644 index 0000000..d3e85e8 --- /dev/null +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-context/elapsed-milliseconds.md @@ -0,0 +1,6 @@ +//[navigation-core](../../../../../index.md)/[com.chrynan.navigation](../../../index.md)/[NavigationEvent](../../index.md)/[Backward](../index.md)/[Context](index.md)/[elapsedMilliseconds](elapsed-milliseconds.md) + +# elapsedMilliseconds + +[common]\ +open override val [elapsedMilliseconds](elapsed-milliseconds.md): [Long](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-long/index.html) diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-context/equals.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-context/equals.md new file mode 100644 index 0000000..35b3cbd --- /dev/null +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-context/equals.md @@ -0,0 +1,6 @@ +//[navigation-core](../../../../../index.md)/[com.chrynan.navigation](../../../index.md)/[NavigationEvent](../../index.md)/[Backward](../index.md)/[Context](index.md)/[equals](equals.md) + +# equals + +[common]\ +open operator override fun [equals](equals.md)(other: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)?): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-context/hash-code.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-context/hash-code.md new file mode 100644 index 0000000..e4c18c1 --- /dev/null +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-context/hash-code.md @@ -0,0 +1,6 @@ +//[navigation-core](../../../../../index.md)/[com.chrynan.navigation](../../../index.md)/[NavigationEvent](../../index.md)/[Backward](../index.md)/[Context](index.md)/[hashCode](hash-code.md) + +# hashCode + +[common]\ +open override fun [hashCode](hash-code.md)(): [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-context/index.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-context/index.md new file mode 100644 index 0000000..9b40450 --- /dev/null +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-context/index.md @@ -0,0 +1,24 @@ +//[navigation-core](../../../../../index.md)/[com.chrynan.navigation](../../../index.md)/[NavigationEvent](../../index.md)/[Backward](../index.md)/[Context](index.md) + +# Context + +[common]\ +class [Context](index.md)<[D](index.md) : [NavigationDestination](../../../index.md#1223765350%2FClasslikes%2F-215881696), [C](index.md) : [NavigationContext](../../../-navigation-context/index.md)<[D](index.md)>> : [NavigationEvent.Backward](../index.md)<[D](index.md), [C](index.md)> + +A [NavigationEvent](../../index.md) that changes goes back to the previous [NavigationContext](../../../-navigation-context/index.md). + +## Functions + +| Name | Summary | +|---|---| +| [equals](equals.md) | [common]
open operator override fun [equals](equals.md)(other: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)?): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) | +| [hashCode](hash-code.md) | [common]
open override fun [hashCode](hash-code.md)(): [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) | +| [toString](to-string.md) | [common]
open override fun [toString](to-string.md)(): [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | + +## Properties + +| Name | Summary | +|---|---| +| [direction](../direction.md) | [common]
open override val [direction](../direction.md): [NavigationEvent.Direction](../../-direction/index.md)
The navigation direction for this event. | +| [elapsedMilliseconds](elapsed-milliseconds.md) | [common]
open override val [elapsedMilliseconds](elapsed-milliseconds.md): [Long](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-long/index.html)
The amount of milliseconds that have elapsed on the system when the event occurred. **Note:** This is not safe to persist or use between system reboots. | +| [type](type.md) | [common]
open override val [type](type.md): [NavigationEvent.Type](../../-type/index.md)
The type of [NavigationEvent](../../index.md) that occurred. | diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-context/to-string.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-context/to-string.md new file mode 100644 index 0000000..a05fc21 --- /dev/null +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-context/to-string.md @@ -0,0 +1,6 @@ +//[navigation-core](../../../../../index.md)/[com.chrynan.navigation](../../../index.md)/[NavigationEvent](../../index.md)/[Backward](../index.md)/[Context](index.md)/[toString](to-string.md) + +# toString + +[common]\ +open override fun [toString](to-string.md)(): [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-context/type.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-context/type.md new file mode 100644 index 0000000..323361d --- /dev/null +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-context/type.md @@ -0,0 +1,8 @@ +//[navigation-core](../../../../../index.md)/[com.chrynan.navigation](../../../index.md)/[NavigationEvent](../../index.md)/[Backward](../index.md)/[Context](index.md)/[type](type.md) + +# type + +[common]\ +open override val [type](type.md): [NavigationEvent.Type](../../-type/index.md) + +The type of [NavigationEvent](../../index.md) that occurred. diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-destination/elapsed-milliseconds.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-destination/elapsed-milliseconds.md new file mode 100644 index 0000000..3dd78de --- /dev/null +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-destination/elapsed-milliseconds.md @@ -0,0 +1,6 @@ +//[navigation-core](../../../../../index.md)/[com.chrynan.navigation](../../../index.md)/[NavigationEvent](../../index.md)/[Backward](../index.md)/[Destination](index.md)/[elapsedMilliseconds](elapsed-milliseconds.md) + +# elapsedMilliseconds + +[common]\ +open override val [elapsedMilliseconds](elapsed-milliseconds.md): [Long](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-long/index.html) diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-destination/equals.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-destination/equals.md new file mode 100644 index 0000000..9785f29 --- /dev/null +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-destination/equals.md @@ -0,0 +1,6 @@ +//[navigation-core](../../../../../index.md)/[com.chrynan.navigation](../../../index.md)/[NavigationEvent](../../index.md)/[Backward](../index.md)/[Destination](index.md)/[equals](equals.md) + +# equals + +[common]\ +open operator override fun [equals](equals.md)(other: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)?): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-destination/hash-code.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-destination/hash-code.md new file mode 100644 index 0000000..3ee3234 --- /dev/null +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-destination/hash-code.md @@ -0,0 +1,6 @@ +//[navigation-core](../../../../../index.md)/[com.chrynan.navigation](../../../index.md)/[NavigationEvent](../../index.md)/[Backward](../index.md)/[Destination](index.md)/[hashCode](hash-code.md) + +# hashCode + +[common]\ +open override fun [hashCode](hash-code.md)(): [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-destination/index.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-destination/index.md new file mode 100644 index 0000000..4fc131a --- /dev/null +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-destination/index.md @@ -0,0 +1,24 @@ +//[navigation-core](../../../../../index.md)/[com.chrynan.navigation](../../../index.md)/[NavigationEvent](../../index.md)/[Backward](../index.md)/[Destination](index.md) + +# Destination + +[common]\ +class [Destination](index.md)<[D](index.md) : [NavigationDestination](../../../index.md#1223765350%2FClasslikes%2F-215881696), [C](index.md) : [NavigationContext](../../../-navigation-context/index.md)<[D](index.md)>> : [NavigationEvent.Backward](../index.md)<[D](index.md), [C](index.md)> + +A [NavigationEvent](../../index.md) that changes goes back to the previous [NavigationDestination](../../../index.md#1223765350%2FClasslikes%2F-215881696) within the current [NavigationContext](../../../-navigation-context/index.md). + +## Functions + +| Name | Summary | +|---|---| +| [equals](equals.md) | [common]
open operator override fun [equals](equals.md)(other: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)?): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) | +| [hashCode](hash-code.md) | [common]
open override fun [hashCode](hash-code.md)(): [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) | +| [toString](to-string.md) | [common]
open override fun [toString](to-string.md)(): [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | + +## Properties + +| Name | Summary | +|---|---| +| [direction](../direction.md) | [common]
open override val [direction](../direction.md): [NavigationEvent.Direction](../../-direction/index.md)
The navigation direction for this event. | +| [elapsedMilliseconds](elapsed-milliseconds.md) | [common]
open override val [elapsedMilliseconds](elapsed-milliseconds.md): [Long](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-long/index.html)
The amount of milliseconds that have elapsed on the system when the event occurred. **Note:** This is not safe to persist or use between system reboots. | +| [type](type.md) | [common]
open override val [type](type.md): [NavigationEvent.Type](../../-type/index.md)
The type of [NavigationEvent](../../index.md) that occurred. | diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-destination/to-string.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-destination/to-string.md new file mode 100644 index 0000000..9812b09 --- /dev/null +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-destination/to-string.md @@ -0,0 +1,6 @@ +//[navigation-core](../../../../../index.md)/[com.chrynan.navigation](../../../index.md)/[NavigationEvent](../../index.md)/[Backward](../index.md)/[Destination](index.md)/[toString](to-string.md) + +# toString + +[common]\ +open override fun [toString](to-string.md)(): [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-destination/type.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-destination/type.md new file mode 100644 index 0000000..e9183b8 --- /dev/null +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-destination/type.md @@ -0,0 +1,8 @@ +//[navigation-core](../../../../../index.md)/[com.chrynan.navigation](../../../index.md)/[NavigationEvent](../../index.md)/[Backward](../index.md)/[Destination](index.md)/[type](type.md) + +# type + +[common]\ +open override val [type](type.md): [NavigationEvent.Type](../../-type/index.md) + +The type of [NavigationEvent](../../index.md) that occurred. diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/index.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/index.md index 034cdbf..3323417 100644 --- a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/index.md +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/index.md @@ -2,25 +2,30 @@ # Backward -[common]\ -@Serializable +@Serializable(with = [NavigationEventBackwardSerializer::class](../../../../../navigation-core/com.chrynan.navigation/-navigation-event-backward-serializer/index.md)) -class [Backward](index.md)<[D](index.md) : [NavigationDestination](../../index.md#1223765350%2FClasslikes%2F-215881696), [C](index.md) : [NavigationContext](../../-navigation-context/index.md)<[D](index.md)>> : [NavigationEvent](../index.md)<[D](index.md), [C](index.md)> +sealed class [Backward](index.md)<[D](index.md) : [NavigationDestination](../../index.md#1223765350%2FClasslikes%2F-215881696), [C](index.md) : [NavigationContext](../../-navigation-context/index.md)<[D](index.md)>> : [NavigationEvent](../index.md)<[D](index.md), [C](index.md)> A [NavigationEvent](../index.md) that represents a reversal of a previous navigation event. A [Backward](index.md) navigation event can be used to go to the previous [NavigationDestination](../../index.md#1223765350%2FClasslikes%2F-215881696) within the current [NavigationContext](../../-navigation-context/index.md), or going back to a previous [NavigationContext](../../-navigation-context/index.md) before a change in context. -## Functions +#### Inheritors + +| | +|---| +| [Destination](-destination/index.md) | +| [Context](-context/index.md) | + +## Types | Name | Summary | |---|---| -| [equals](equals.md) | [common]
open operator override fun [equals](equals.md)(other: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)?): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) | -| [hashCode](hash-code.md) | [common]
open override fun [hashCode](hash-code.md)(): [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) | -| [toString](to-string.md) | [common]
open override fun [toString](to-string.md)(): [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | +| [Context](-context/index.md) | [common]
class [Context](-context/index.md)<[D](-context/index.md) : [NavigationDestination](../../index.md#1223765350%2FClasslikes%2F-215881696), [C](-context/index.md) : [NavigationContext](../../-navigation-context/index.md)<[D](-context/index.md)>> : [NavigationEvent.Backward](index.md)<[D](-context/index.md), [C](-context/index.md)>
A [NavigationEvent](../index.md) that changes goes back to the previous [NavigationContext](../../-navigation-context/index.md). | +| [Destination](-destination/index.md) | [common]
class [Destination](-destination/index.md)<[D](-destination/index.md) : [NavigationDestination](../../index.md#1223765350%2FClasslikes%2F-215881696), [C](-destination/index.md) : [NavigationContext](../../-navigation-context/index.md)<[D](-destination/index.md)>> : [NavigationEvent.Backward](index.md)<[D](-destination/index.md), [C](-destination/index.md)>
A [NavigationEvent](../index.md) that changes goes back to the previous [NavigationDestination](../../index.md#1223765350%2FClasslikes%2F-215881696) within the current [NavigationContext](../../-navigation-context/index.md). | ## Properties | Name | Summary | |---|---| | [direction](direction.md) | [common]
open override val [direction](direction.md): [NavigationEvent.Direction](../-direction/index.md)
The navigation direction for this event. | -| [elapsedMilliseconds](elapsed-milliseconds.md) | [common]
open override val [elapsedMilliseconds](elapsed-milliseconds.md): [Long](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-long/index.html)
The amount of milliseconds that have elapsed on the system when the event occurred. **Note:** This is not safe to persist or use between system reboots. | -| [type](type.md) | [common]
open override val [type](type.md): [NavigationEvent.Type](../-type/index.md)
The type of [NavigationEvent](../index.md) that occurred. | +| [elapsedMilliseconds](../elapsed-milliseconds.md) | [common]
abstract val [elapsedMilliseconds](../elapsed-milliseconds.md): [Long](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-long/index.html)
The amount of milliseconds that have elapsed on the system when the event occurred. | +| [type](../type.md) | [common]
abstract val [type](../type.md): [NavigationEvent.Type](../-type/index.md)
The type of [NavigationEvent](../index.md) that occurred. | diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-type/-b-a-c-k-w-a-r-d_-c-o-n-t-e-x-t/index.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-type/-b-a-c-k-w-a-r-d_-c-o-n-t-e-x-t/index.md new file mode 100644 index 0000000..2209fb9 --- /dev/null +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-type/-b-a-c-k-w-a-r-d_-c-o-n-t-e-x-t/index.md @@ -0,0 +1,16 @@ +//[navigation-core](../../../../../index.md)/[com.chrynan.navigation](../../../index.md)/[NavigationEvent](../../index.md)/[Type](../index.md)/[BACKWARD_CONTEXT](index.md) + +# BACKWARD_CONTEXT + +[common]\ +[BACKWARD_CONTEXT](index.md) + +Corresponds to the [NavigationEvent.Backward.Context](../../-backward/-context/index.md) type. + +## Properties + +| Name | Summary | +|---|---| +| [name](../../../-navigation-strategy/-destination-retention/-c-l-e-a-r/index.md#-372974862%2FProperties%2F-215881696) | [common]
val [name](../../../-navigation-strategy/-destination-retention/-c-l-e-a-r/index.md#-372974862%2FProperties%2F-215881696): [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | +| [ordinal](../../../-navigation-strategy/-destination-retention/-c-l-e-a-r/index.md#-739389684%2FProperties%2F-215881696) | [common]
val [ordinal](../../../-navigation-strategy/-destination-retention/-c-l-e-a-r/index.md#-739389684%2FProperties%2F-215881696): [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) | +| [serialName](../serial-name.md) | [common]
val [serialName](../serial-name.md): [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-type/-b-a-c-k-w-a-r-d_-d-e-s-t-i-n-a-t-i-o-n/index.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-type/-b-a-c-k-w-a-r-d_-d-e-s-t-i-n-a-t-i-o-n/index.md new file mode 100644 index 0000000..ff6cd82 --- /dev/null +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-type/-b-a-c-k-w-a-r-d_-d-e-s-t-i-n-a-t-i-o-n/index.md @@ -0,0 +1,16 @@ +//[navigation-core](../../../../../index.md)/[com.chrynan.navigation](../../../index.md)/[NavigationEvent](../../index.md)/[Type](../index.md)/[BACKWARD_DESTINATION](index.md) + +# BACKWARD_DESTINATION + +[common]\ +[BACKWARD_DESTINATION](index.md) + +Corresponds to the [NavigationEvent.Backward.Destination](../../-backward/-destination/index.md) type. + +## Properties + +| Name | Summary | +|---|---| +| [name](../../../-navigation-strategy/-destination-retention/-c-l-e-a-r/index.md#-372974862%2FProperties%2F-215881696) | [common]
val [name](../../../-navigation-strategy/-destination-retention/-c-l-e-a-r/index.md#-372974862%2FProperties%2F-215881696): [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | +| [ordinal](../../../-navigation-strategy/-destination-retention/-c-l-e-a-r/index.md#-739389684%2FProperties%2F-215881696) | [common]
val [ordinal](../../../-navigation-strategy/-destination-retention/-c-l-e-a-r/index.md#-739389684%2FProperties%2F-215881696): [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) | +| [serialName](../serial-name.md) | [common]
val [serialName](../serial-name.md): [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-type/-f-o-r-w-a-r-d_-c-o-n-t-e-x-t/index.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-type/-f-o-r-w-a-r-d_-c-o-n-t-e-x-t/index.md new file mode 100644 index 0000000..f831152 --- /dev/null +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-type/-f-o-r-w-a-r-d_-c-o-n-t-e-x-t/index.md @@ -0,0 +1,16 @@ +//[navigation-core](../../../../../index.md)/[com.chrynan.navigation](../../../index.md)/[NavigationEvent](../../index.md)/[Type](../index.md)/[FORWARD_CONTEXT](index.md) + +# FORWARD_CONTEXT + +[common]\ +[FORWARD_CONTEXT](index.md) + +Corresponds to the [NavigationEvent.Forward.Context](../../-forward/-context/index.md) type. + +## Properties + +| Name | Summary | +|---|---| +| [name](../../../-navigation-strategy/-destination-retention/-c-l-e-a-r/index.md#-372974862%2FProperties%2F-215881696) | [common]
val [name](../../../-navigation-strategy/-destination-retention/-c-l-e-a-r/index.md#-372974862%2FProperties%2F-215881696): [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | +| [ordinal](../../../-navigation-strategy/-destination-retention/-c-l-e-a-r/index.md#-739389684%2FProperties%2F-215881696) | [common]
val [ordinal](../../../-navigation-strategy/-destination-retention/-c-l-e-a-r/index.md#-739389684%2FProperties%2F-215881696): [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) | +| [serialName](../serial-name.md) | [common]
val [serialName](../serial-name.md): [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-type/-f-o-r-w-a-r-d_-d-e-s-t-i-n-a-t-i-o-n/index.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-type/-f-o-r-w-a-r-d_-d-e-s-t-i-n-a-t-i-o-n/index.md new file mode 100644 index 0000000..83ad673 --- /dev/null +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-type/-f-o-r-w-a-r-d_-d-e-s-t-i-n-a-t-i-o-n/index.md @@ -0,0 +1,16 @@ +//[navigation-core](../../../../../index.md)/[com.chrynan.navigation](../../../index.md)/[NavigationEvent](../../index.md)/[Type](../index.md)/[FORWARD_DESTINATION](index.md) + +# FORWARD_DESTINATION + +[common]\ +[FORWARD_DESTINATION](index.md) + +Corresponds to the [NavigationEvent.Forward.Destination](../../-forward/-destination/index.md) type. + +## Properties + +| Name | Summary | +|---|---| +| [name](../../../-navigation-strategy/-destination-retention/-c-l-e-a-r/index.md#-372974862%2FProperties%2F-215881696) | [common]
val [name](../../../-navigation-strategy/-destination-retention/-c-l-e-a-r/index.md#-372974862%2FProperties%2F-215881696): [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | +| [ordinal](../../../-navigation-strategy/-destination-retention/-c-l-e-a-r/index.md#-739389684%2FProperties%2F-215881696) | [common]
val [ordinal](../../../-navigation-strategy/-destination-retention/-c-l-e-a-r/index.md#-739389684%2FProperties%2F-215881696): [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) | +| [serialName](../serial-name.md) | [common]
val [serialName](../serial-name.md): [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-type/index.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-type/index.md index d314863..5bdc50d 100644 --- a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-type/index.md +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-type/index.md @@ -11,9 +11,10 @@ enum [Type](index.md) : [Enum](https://kotlinlang.org/api/latest/jvm/stdlib/kotl | | | |---|---| -| [BACKWARDS](-b-a-c-k-w-a-r-d-s/index.md) | [common]
[BACKWARDS](-b-a-c-k-w-a-r-d-s/index.md)
Corresponds to the [NavigationEvent.Backward](../-backward/index.md) type. | -| [CONTEXT](-c-o-n-t-e-x-t/index.md) | [common]
[CONTEXT](-c-o-n-t-e-x-t/index.md)
Corresponds to the [NavigationEvent.Forward.Context](../-forward/-context/index.md) type. | -| [DESTINATION](-d-e-s-t-i-n-a-t-i-o-n/index.md) | [common]
[DESTINATION](-d-e-s-t-i-n-a-t-i-o-n/index.md)
Corresponds to the [NavigationEvent.Forward.Destination](../-forward/-destination/index.md) type. | +| [BACKWARD_CONTEXT](-b-a-c-k-w-a-r-d_-c-o-n-t-e-x-t/index.md) | [common]
[BACKWARD_CONTEXT](-b-a-c-k-w-a-r-d_-c-o-n-t-e-x-t/index.md)
Corresponds to the [NavigationEvent.Backward.Context](../-backward/-context/index.md) type. | +| [BACKWARD_DESTINATION](-b-a-c-k-w-a-r-d_-d-e-s-t-i-n-a-t-i-o-n/index.md) | [common]
[BACKWARD_DESTINATION](-b-a-c-k-w-a-r-d_-d-e-s-t-i-n-a-t-i-o-n/index.md)
Corresponds to the [NavigationEvent.Backward.Destination](../-backward/-destination/index.md) type. | +| [FORWARD_CONTEXT](-f-o-r-w-a-r-d_-c-o-n-t-e-x-t/index.md) | [common]
[FORWARD_CONTEXT](-f-o-r-w-a-r-d_-c-o-n-t-e-x-t/index.md)
Corresponds to the [NavigationEvent.Forward.Context](../-forward/-context/index.md) type. | +| [FORWARD_DESTINATION](-f-o-r-w-a-r-d_-d-e-s-t-i-n-a-t-i-o-n/index.md) | [common]
[FORWARD_DESTINATION](-f-o-r-w-a-r-d_-d-e-s-t-i-n-a-t-i-o-n/index.md)
Corresponds to the [NavigationEvent.Forward.Destination](../-forward/-destination/index.md) type. | ## Functions diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/index.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/index.md index 42c91fb..1349836 100644 --- a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/index.md +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/index.md @@ -25,7 +25,7 @@ Represents a navigation event that is sent to a [Navigator](../-navigator/index. | Name | Summary | |---|---| -| [Backward](-backward/index.md) | [common]
@Serializable
class [Backward](-backward/index.md)<[D](-backward/index.md) : [NavigationDestination](../index.md#1223765350%2FClasslikes%2F-215881696), [C](-backward/index.md) : [NavigationContext](../-navigation-context/index.md)<[D](-backward/index.md)>> : [NavigationEvent](index.md)<[D](-backward/index.md), [C](-backward/index.md)>
A [NavigationEvent](index.md) that represents a reversal of a previous navigation event. A [Backward](-backward/index.md) navigation event can be used to go to the previous [NavigationDestination](../index.md#1223765350%2FClasslikes%2F-215881696) within the current [NavigationContext](../-navigation-context/index.md), or going back to a previous [NavigationContext](../-navigation-context/index.md) before a change in context. | +| [Backward](-backward/index.md) | [common]
@Serializable(with = [NavigationEventBackwardSerializer::class](../../../../navigation-core/com.chrynan.navigation/-navigation-event-backward-serializer/index.md))
sealed class [Backward](-backward/index.md)<[D](-backward/index.md) : [NavigationDestination](../index.md#1223765350%2FClasslikes%2F-215881696), [C](-backward/index.md) : [NavigationContext](../-navigation-context/index.md)<[D](-backward/index.md)>> : [NavigationEvent](index.md)<[D](-backward/index.md), [C](-backward/index.md)>
A [NavigationEvent](index.md) that represents a reversal of a previous navigation event. A [Backward](-backward/index.md) navigation event can be used to go to the previous [NavigationDestination](../index.md#1223765350%2FClasslikes%2F-215881696) within the current [NavigationContext](../-navigation-context/index.md), or going back to a previous [NavigationContext](../-navigation-context/index.md) before a change in context. | | [Companion](-companion/index.md) | [common]
object [Companion](-companion/index.md) | | [Direction](-direction/index.md) | [common]
@Serializable
enum [Direction](-direction/index.md) : [Enum](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-enum/index.html)<[NavigationEvent.Direction](-direction/index.md)>
Represents a direction for a [NavigationEvent](index.md). A [NavigationEvent](index.md) can either be a [FORWARDS](-direction/-f-o-r-w-a-r-d-s/index.md) direction event, meaning the change is added to a [Stack](../../../../navigation-core/com.chrynan.navigation/-stack/index.md), or a [BACKWARDS](-direction/-b-a-c-k-w-a-r-d-s/index.md) direction event, meaning the change causes a removal from a [Stack](../../../../navigation-core/com.chrynan.navigation/-stack/index.md). | | [Forward](-forward/index.md) | [common]
@Serializable(with = [NavigationEventForwardSerializer::class](../../../../navigation-core/com.chrynan.navigation/-navigation-event-forward-serializer/index.md))
sealed class [Forward](-forward/index.md)<[D](-forward/index.md) : [NavigationDestination](../index.md#1223765350%2FClasslikes%2F-215881696), [C](-forward/index.md) : [NavigationContext](../-navigation-context/index.md)<[D](-forward/index.md)>> : [NavigationEvent](index.md)<[D](-forward/index.md), [C](-forward/index.md)>
A [NavigationEvent](index.md) that represents a forward movement, or addition of a navigation change. These events can be reversed by a [Backward](-backward/index.md) event. There are two forward navigation events: [Destination](-forward/-destination/index.md) representing a change in destination on the current context stack, and [Context](-forward/-context/index.md) representing a change in the context. | diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/index.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/index.md index 82546fc..5dd40bf 100644 --- a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/index.md +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/index.md @@ -11,7 +11,6 @@ A component that encapsulates the various navigation policies for a [Navigator]( | Name | Summary | |---|---| -| [BackwardsNavigation](-backwards-navigation/index.md) | [common]
@Serializable
enum [BackwardsNavigation](-backwards-navigation/index.md) : [Enum](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-enum/index.html)<[NavigationStrategy.BackwardsNavigation](-backwards-navigation/index.md)>
Represents the type of supported back navigation. An [IN_CONTEXT](-backwards-navigation/-i-n_-c-o-n-t-e-x-t/index.md) value indicates that navigation to the previous [NavigationDestination](../index.md#1223765350%2FClasslikes%2F-215881696) in the current [NavigationContext](../-navigation-context/index.md) should occur. An [ACROSS_CONTEXTS](-backwards-navigation/-a-c-r-o-s-s_-c-o-n-t-e-x-t-s/index.md) value indicates that navigation across [NavigationContext](../-navigation-context/index.md)s is allowed, meaning that navigation can either be to the previous [NavigationDestination](../index.md#1223765350%2FClasslikes%2F-215881696) within the current [NavigationContext](../-navigation-context/index.md) or to the previous [NavigationContext](../-navigation-context/index.md) depending on whether the previous [NavigationEvent](../-navigation-event/index.md) was a [NavigationEvent.Forward.Destination](../-navigation-event/-forward/-destination/index.md) or [NavigationEvent.Forward.Context](../-navigation-event/-forward/-context/index.md) event. | | [Companion](-companion/index.md) | [common]
object [Companion](-companion/index.md) | | [DestinationRetention](-destination-retention/index.md) | [common]
@Serializable
enum [DestinationRetention](-destination-retention/index.md) : [Enum](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-enum/index.html)<[NavigationStrategy.DestinationRetention](-destination-retention/index.md)>
Represents the approach for retaining the [NavigationDestination](../index.md#1223765350%2FClasslikes%2F-215881696) data structures associated with a particular [NavigationContext](../-navigation-context/index.md), when navigating to other [NavigationContext](../-navigation-context/index.md)s. A [RETAIN](-destination-retention/-r-e-t-a-i-n/index.md) value indicates that the [NavigationDestination](../index.md#1223765350%2FClasslikes%2F-215881696) data structure associated with a [NavigationContext](../-navigation-context/index.md) should be kept when navigation to a different [NavigationContext](../-navigation-context/index.md), so that the state can be restored when navigating back. A [CLEAR](-destination-retention/-c-l-e-a-r/index.md) value indicates that the [NavigationDestination](../index.md#1223765350%2FClasslikes%2F-215881696) data structure associated with a [NavigationContext](../-navigation-context/index.md) should be cleared before navigating to a different [NavigationContext](../-navigation-context/index.md), so that the [NavigationContext.initialDestination](../-navigation-context/initial-destination.md) value will be displayed when navigating back. | | [DuplicateDestination](-duplicate-destination/index.md) | [common]
@Serializable
enum [DuplicateDestination](-duplicate-destination/index.md) : [Enum](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-enum/index.html)<[NavigationStrategy.DuplicateDestination](-duplicate-destination/index.md)>
Represents the approach to take when adding a [NavigationDestination](../index.md#1223765350%2FClasslikes%2F-215881696) to a navigation [Stack](../../../../navigation-core/com.chrynan.navigation/-stack/index.md) and there already exists the same item in the [Stack](../../../../navigation-core/com.chrynan.navigation/-stack/index.md). | diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-view-model/index.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-view-model/index.md index c98d99a..c142536 100644 --- a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-view-model/index.md +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigation-view-model/index.md @@ -10,7 +10,7 @@ Represents a "ViewModel" component used for navigation purposes. This [android]\ actual abstract class [NavigationViewModel](index.md) : [ViewModel](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel.html) -[ios, js, jvm]\ +[js, jvm]\ actual abstract class [NavigationViewModel](index.md) ## Functions diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigator.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigator.md index 179c007..526ae42 100644 --- a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigator.md +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigator.md @@ -6,7 +6,7 @@ @[ExperimentalNavigationApi](-experimental-navigation-api/index.md) -fun <[Destination](-navigator.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696), [Context](-navigator.md) : [NavigationContext](-navigation-context/index.md)<[Destination](-navigator.md)>> [Navigator](-navigator.md)(initialContext: [Context](-navigator.md), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, backwardsNavigationStrategy: [NavigationStrategy.BackwardsNavigation](-navigation-strategy/-backwards-navigation/index.md) = NavigationStrategy.BackwardsNavigation.IN_CONTEXT, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](-navigator/index.md)<[Destination](-navigator.md), [Context](-navigator.md)> +fun <[Destination](-navigator.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696), [Context](-navigator.md) : [NavigationContext](-navigation-context/index.md)<[Destination](-navigator.md)>> [Navigator](-navigator.md)(initialContext: [Context](-navigator.md), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](-navigator/index.md)<[Destination](-navigator.md), [Context](-navigator.md)> Creates a [Navigator](-navigator/index.md) instance with the provided values. @@ -18,14 +18,13 @@ common |---|---| | initialContext | The initial [NavigationContext](-navigation-context/index.md) value to start at for this [Navigator](-navigator/index.md). | | duplicateDestinationStrategy | The [NavigationStrategy.DuplicateDestination](-navigation-strategy/-duplicate-destination/index.md) strategy for handling of duplicate destination content within a [Context](-navigator.md) stack. Read the documentation on [NavigationStrategy.DuplicateDestination](-navigation-strategy/-duplicate-destination/index.md) for more information about the supported operations. Defaults to [NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES](-navigation-strategy/-duplicate-destination/-a-l-l-o-w_-d-u-p-l-i-c-a-t-e-s/index.md). | -| backwardsNavigationStrategy | The [NavigationStrategy.BackwardsNavigation](-navigation-strategy/-backwards-navigation/index.md) strategy of supported back navigation (across contexts or just destinations within the current context). Read the documentation on [NavigationStrategy.BackwardsNavigation](-navigation-strategy/-backwards-navigation/index.md) for more information about the operations that are supported. Defaults to [NavigationStrategy.BackwardsNavigation.IN_CONTEXT](-navigation-strategy/-backwards-navigation/-i-n_-c-o-n-t-e-x-t/index.md). | | destinationRetentionStrategy | The [NavigationStrategy.DestinationRetention](-navigation-strategy/-destination-retention/index.md) strategy for handling of destination stacks within a [Context](-navigator.md) when navigating between different [NavigationContext](-navigation-context/index.md)s. Read the documentation on [NavigationStrategy.DestinationRetention](-navigation-strategy/-destination-retention/index.md) for more information about the supported operations. Defaults to [NavigationStrategy.DestinationRetention.RETAIN](-navigation-strategy/-destination-retention/-r-e-t-a-i-n/index.md). | [common]\ @[ExperimentalNavigationApi](-experimental-navigation-api/index.md) -fun <[Destination](-navigator.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696)> [Navigator](-navigator.md)(initialDestination: [Destination](-navigator.md), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, backwardsNavigationStrategy: [NavigationStrategy.BackwardsNavigation](-navigation-strategy/-backwards-navigation/index.md) = NavigationStrategy.BackwardsNavigation.IN_CONTEXT, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](-navigator/index.md)<[Destination](-navigator.md), [SingleNavigationContext](-single-navigation-context/index.md)<[Destination](-navigator.md)>> +fun <[Destination](-navigator.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696)> [Navigator](-navigator.md)(initialDestination: [Destination](-navigator.md), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](-navigator/index.md)<[Destination](-navigator.md), [SingleNavigationContext](-single-navigation-context/index.md)<[Destination](-navigator.md)>> Creates a [Navigator](-navigator/index.md) instance with the provided values using the [SingleNavigationContext](-single-navigation-context/index.md). @@ -37,5 +36,4 @@ common |---|---| | initialDestination | The initial [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696) value to start at for this [Navigator](-navigator/index.md). | | duplicateDestinationStrategy | The [NavigationStrategy.DuplicateDestination](-navigation-strategy/-duplicate-destination/index.md) strategy for handling of duplicate destination content within a [NavigationContext](-navigation-context/index.md) stack. Read the documentation on [NavigationStrategy.DuplicateDestination](-navigation-strategy/-duplicate-destination/index.md) for more information about the supported operations. Defaults to [NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES](-navigation-strategy/-duplicate-destination/-a-l-l-o-w_-d-u-p-l-i-c-a-t-e-s/index.md). | -| backwardsNavigationStrategy | The [NavigationStrategy.BackwardsNavigation](-navigation-strategy/-backwards-navigation/index.md) strategy of supported back navigation (across contexts or just destinations within the current context). Read the documentation on [NavigationStrategy.BackwardsNavigation](-navigation-strategy/-backwards-navigation/index.md) for more information about the operations that are supported. Defaults to [NavigationStrategy.BackwardsNavigation.IN_CONTEXT](-navigation-strategy/-backwards-navigation/-i-n_-c-o-n-t-e-x-t/index.md). | | destinationRetentionStrategy | The [NavigationStrategy.DestinationRetention](-navigation-strategy/-destination-retention/index.md) strategy for handling of destination stacks within a [NavigationContext](-navigation-context/index.md) when navigating between different [NavigationContext](-navigation-context/index.md)s. Read the documentation on [NavigationStrategy.DestinationRetention](-navigation-strategy/-destination-retention/index.md) for more information about the supported operations. Defaults to [NavigationStrategy.DestinationRetention.RETAIN](-navigation-strategy/-destination-retention/-r-e-t-a-i-n/index.md). | diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigator/can-pop-context.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigator/can-pop-context.md new file mode 100644 index 0000000..1e55cdb --- /dev/null +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigator/can-pop-context.md @@ -0,0 +1,12 @@ +//[navigation-core](../../../index.md)/[com.chrynan.navigation](../index.md)/[Navigator](index.md)/[canPopContext](can-pop-context.md) + +# canPopContext + +[common]\ +abstract fun [canPopContext](can-pop-context.md)(): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) + +Determines whether this [Navigator](index.md) can navigate back to a previous context. + +#### Return + +`true` if this [Navigator](index.md) can navigate back to a previous context, `false` otherwise. diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigator/can-pop-destination.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigator/can-pop-destination.md new file mode 100644 index 0000000..fef14f1 --- /dev/null +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigator/can-pop-destination.md @@ -0,0 +1,12 @@ +//[navigation-core](../../../index.md)/[com.chrynan.navigation](../index.md)/[Navigator](index.md)/[canPopDestination](can-pop-destination.md) + +# canPopDestination + +[common]\ +abstract fun [canPopDestination](can-pop-destination.md)(): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) + +Determines whether this [Navigator](index.md) can navigate back to a previous destination in the current context. + +#### Return + +`true` if this [Navigator](index.md) can navigate back to a previous destination in the current context, `false` otherwise. diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigator/dispatch.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigator/dispatch.md index b160acf..da0043f 100644 --- a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigator/dispatch.md +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigator/dispatch.md @@ -5,7 +5,9 @@ [common]\ abstract fun [dispatch](dispatch.md)(event: [NavigationEvent](../-navigation-event/index.md)<[Destination](index.md), [Context](index.md)>): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) -Dispatches the provided navigation [event](dispatch.md) which mutates the underlying state values if the navigation event can be performed. The creation of [NavigationEvent](../-navigation-event/index.md)s is handled internally within this library's components, therefore, instead of invoking this function explicitly, use the [goBack](../go-back.md), [goTo](../go-to.md), and [changeContext](../change-context.md) functions. +Dispatches the provided navigation [event](dispatch.md) which mutates the underlying state values if the navigation event can be performed. + +!Note The creation of [NavigationEvent](../-navigation-event/index.md)s is handled internally within this library's components, therefore, instead of invoking this function explicitly, use the [popDestination](../pop-destination.md), [push](../push.md), and [push](../push.md) functions. #### Return diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md index d126f79..9aa7822 100644 --- a/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md @@ -8,7 +8,7 @@ interface [Navigator](index.md)<[Destination](index.md) : [NavigationDestination](../index.md#1223765350%2FClasslikes%2F-215881696), [Context](index.md) : [NavigationContext](../-navigation-context/index.md)<[Destination](index.md)>> -A [Navigator](index.md) is responsible for coordinating the navigation between the different UI component groupings in an application. It is a stateful component that reacts to [NavigationEvent](../-navigation-event/index.md)s that are emitted via calls to the navigation functions ([goTo](../go-to.md), [goBack](../go-back.md), and [changeContext](../change-context.md)) and updates its stored state values which can be accessed via its state [store](store.md). It is up to the user of a [Navigator](index.md) to subscribe to the state changes of this component and update the associated UI accordingly. +A [Navigator](index.md) is responsible for coordinating the navigation between the different UI component groupings in an application. It is a stateful component that reacts to [NavigationEvent](../-navigation-event/index.md)s that are emitted via calls to the navigation functions ([push](../push.md), [popDestination](../pop-destination.md), and [push](../push.md)) and updates its stored state values which can be accessed via its state [store](store.md). It is up to the user of a [Navigator](index.md) to subscribe to the state changes of this component and update the associated UI accordingly. ## Example usage: @@ -32,9 +32,9 @@ navigator.goTo(destination = Destinations.HOME) | | | |---|---| | [Navigator](index.md) | The [Navigator](index.md) constructor function for creating an instance of this interface. | -| [goTo](../go-to.md) | For navigating to a new [NavigationDestination](../index.md#1223765350%2FClasslikes%2F-215881696) within the current [NavigationContext](../-navigation-context/index.md). | -| [goBack](../go-back.md) | For navigating backwards, either within the current [NavigationContext](../-navigation-context/index.md) or across [NavigationContext](../-navigation-context/index.md)s, depending on the [NavigationStrategy.BackwardsNavigation](../-navigation-strategy/-backwards-navigation/index.md) strategy supplied to the [Navigator](index.md) function when creating an instance of this [Navigator](index.md). | -| [changeContext](../change-context.md) | For navigating to a different [NavigationContext](../-navigation-context/index.md). | +| [push](../push.md) | For navigating to a different [NavigationContext](../-navigation-context/index.md). | +| [popDestination](../pop-destination.md) | For navigating backward to the previous [NavigationDestination](../index.md#1223765350%2FClasslikes%2F-215881696) within the current [NavigationContext](../-navigation-context/index.md). | +| [popContext](../pop-context.md) | For navigating backward to the previous [NavigationContext](../-navigation-context/index.md). | ## Types @@ -46,11 +46,14 @@ navigator.goTo(destination = Destinations.HOME) | Name | Summary | |---|---| -| [canGoBack](can-go-back.md) | [common]
abstract fun [canGoBack](can-go-back.md)(): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)
Determines whether this [Navigator](index.md) can navigate back. | -| [changeContext](../change-context.md) | [common]
@[ExperimentalNavigationApi](../-experimental-navigation-api/index.md)
fun <[Destination](../change-context.md) : [NavigationDestination](../index.md#1223765350%2FClasslikes%2F-215881696), [Context](../change-context.md) : [NavigationContext](../-navigation-context/index.md)<[Destination](../change-context.md)>> [Navigator](index.md)<[Destination](../change-context.md), [Context](../change-context.md)>.[changeContext](../change-context.md)(context: [Context](../change-context.md)): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)
Changes the current [Context](../change-context.md) to the provided [context](../change-context.md) value. The displayed [Destination](../change-context.md) will be the top destination value in the stack associated with the provided [context](../change-context.md), or the provided context's [NavigationContext.initialDestination](../-navigation-context/initial-destination.md) if there is currently no existing stack for the provided [context](../change-context.md). | -| [dispatch](dispatch.md) | [common]
abstract fun [dispatch](dispatch.md)(event: [NavigationEvent](../-navigation-event/index.md)<[Destination](index.md), [Context](index.md)>): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)
Dispatches the provided navigation [event](dispatch.md) which mutates the underlying state values if the navigation event can be performed. The creation of [NavigationEvent](../-navigation-event/index.md)s is handled internally within this library's components, therefore, instead of invoking this function explicitly, use the [goBack](../go-back.md), [goTo](../go-to.md), and [changeContext](../change-context.md) functions. | -| [goBack](../go-back.md) | [common]
@[ExperimentalNavigationApi](../-experimental-navigation-api/index.md)
fun <[Destination](../go-back.md) : [NavigationDestination](../index.md#1223765350%2FClasslikes%2F-215881696), [Context](../go-back.md) : [NavigationContext](../-navigation-context/index.md)<[Destination](../go-back.md)>> [Navigator](index.md)<[Destination](../go-back.md), [Context](../go-back.md)>.[goBack](../go-back.md)(): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)
Performs a back navigation operation, if possible, by removing the top [NavigationEvent.Forward](../-navigation-event/-forward/index.md) event from the internal navigation stack. If this [Navigator](index.md) cannot navigate back, then this function will do nothing and return `false`. | -| [goTo](../go-to.md) | [common]
@[ExperimentalNavigationApi](../-experimental-navigation-api/index.md)
fun <[Destination](../go-to.md) : [NavigationDestination](../index.md#1223765350%2FClasslikes%2F-215881696), [Context](../go-to.md) : [NavigationContext](../-navigation-context/index.md)<[Destination](../go-to.md)>> [Navigator](index.md)<[Destination](../go-to.md), [Context](../go-to.md)>.[goTo](../go-to.md)(destination: [Destination](../go-to.md)): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)
Navigates to the provided [destination](../go-to.md) in the current [NavigationContext](../-navigation-context/index.md). Depending on the provided [NavigationStrategy.DuplicateDestination](../-navigation-strategy/-duplicate-destination/index.md) when creating this [Navigator](index.md), and the current [Context](../go-to.md) stack, this will either clear the current [Context](../go-to.md) stack to the last value that equals the provided [destination](../go-to.md), or add the provided [destination](../go-to.md) to the top of the current [Context](../go-to.md) stack. | +| [canPopContext](can-pop-context.md) | [common]
abstract fun [canPopContext](can-pop-context.md)(): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)
Determines whether this [Navigator](index.md) can navigate back to a previous context. | +| [canPopDestination](can-pop-destination.md) | [common]
abstract fun [canPopDestination](can-pop-destination.md)(): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)
Determines whether this [Navigator](index.md) can navigate back to a previous destination in the current context. | +| [changeContext](../change-context.md) | [common]
@[ExperimentalNavigationApi](../-experimental-navigation-api/index.md)
fun <[Destination](../change-context.md) : [NavigationDestination](../index.md#1223765350%2FClasslikes%2F-215881696), [Context](../change-context.md) : [NavigationContext](../-navigation-context/index.md)<[Destination](../change-context.md)>> [Navigator](index.md)<[Destination](../change-context.md), [Context](../change-context.md)>.[~~changeContext~~](../change-context.md)(context: [Context](../change-context.md)): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)
Convenience function for the [Navigator.push](../push.md) function. | +| [dispatch](dispatch.md) | [common]
abstract fun [dispatch](dispatch.md)(event: [NavigationEvent](../-navigation-event/index.md)<[Destination](index.md), [Context](index.md)>): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)
Dispatches the provided navigation [event](dispatch.md) which mutates the underlying state values if the navigation event can be performed. | +| [goTo](../go-to.md) | [common]
@[ExperimentalNavigationApi](../-experimental-navigation-api/index.md)
fun <[Destination](../go-to.md) : [NavigationDestination](../index.md#1223765350%2FClasslikes%2F-215881696), [Context](../go-to.md) : [NavigationContext](../-navigation-context/index.md)<[Destination](../go-to.md)>> [Navigator](index.md)<[Destination](../go-to.md), [Context](../go-to.md)>.[~~goTo~~](../go-to.md)(destination: [Destination](../go-to.md)): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)
Convenience function for the [Navigator.push](../push.md) function. | +| [popContext](../pop-context.md) | [common]
@[ExperimentalNavigationApi](../-experimental-navigation-api/index.md)
fun <[Destination](../pop-context.md) : [NavigationDestination](../index.md#1223765350%2FClasslikes%2F-215881696), [Context](../pop-context.md) : [NavigationContext](../-navigation-context/index.md)<[Destination](../pop-context.md)>> [Navigator](index.md)<[Destination](../pop-context.md), [Context](../pop-context.md)>.[popContext](../pop-context.md)(): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)
Performs a back navigation operation, if possible, by moving to the previous [NavigationContext](../-navigation-context/index.md). If this [Navigator](index.md) cannot navigate to a previous [NavigationContext](../-navigation-context/index.md), then this function will do nothing and return `false`. | +| [popDestination](../pop-destination.md) | [common]
@[ExperimentalNavigationApi](../-experimental-navigation-api/index.md)
fun <[Destination](../pop-destination.md) : [NavigationDestination](../index.md#1223765350%2FClasslikes%2F-215881696), [Context](../pop-destination.md) : [NavigationContext](../-navigation-context/index.md)<[Destination](../pop-destination.md)>> [Navigator](index.md)<[Destination](../pop-destination.md), [Context](../pop-destination.md)>.[popDestination](../pop-destination.md)(): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)
Performs a back navigation operation, if possible, by removing the top [NavigationDestination](../index.md#1223765350%2FClasslikes%2F-215881696) within the current [NavigationContext](../-navigation-context/index.md). If this [Navigator](index.md) cannot navigate to a previous [NavigationDestination](../index.md#1223765350%2FClasslikes%2F-215881696), then this function will do nothing and return `false`. | +| [push](../push.md) | [common]
@[ExperimentalNavigationApi](../-experimental-navigation-api/index.md)
fun <[Destination](../push.md) : [NavigationDestination](../index.md#1223765350%2FClasslikes%2F-215881696), [Context](../push.md) : [NavigationContext](../-navigation-context/index.md)<[Destination](../push.md)>> [Navigator](index.md)<[Destination](../push.md), [Context](../push.md)>.[push](../push.md)(context: [Context](../push.md)): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)
Changes the current [Context](../push.md) to the provided [context](../push.md) value. The displayed [Destination](../push.md) will be the top destination value in the stack associated with the provided [context](../push.md), or the provided context's [NavigationContext.initialDestination](../-navigation-context/initial-destination.md) if there is currently no existing stack for the provided [context](../push.md).
[common]
@[ExperimentalNavigationApi](../-experimental-navigation-api/index.md)
fun <[Destination](../push.md) : [NavigationDestination](../index.md#1223765350%2FClasslikes%2F-215881696), [Context](../push.md) : [NavigationContext](../-navigation-context/index.md)<[Destination](../push.md)>> [Navigator](index.md)<[Destination](../push.md), [Context](../push.md)>.[push](../push.md)(destination: [Destination](../push.md)): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)
Navigates to the provided [destination](../push.md) in the current [NavigationContext](../-navigation-context/index.md). Depending on the provided [NavigationStrategy.DuplicateDestination](../-navigation-strategy/-duplicate-destination/index.md) when creating this [Navigator](index.md), and the current [Context](../push.md) stack, this will either clear the current [Context](../push.md) stack to the last value that equals the provided [destination](../push.md), or add the provided [destination](../push.md) to the top of the current [Context](../push.md) stack. | | [reset](reset.md) | [common]
abstract fun [reset](reset.md)()
Resets this [Navigator](index.md) back to its initial state. | ## Properties diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/-single-navigation-context/index.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/-single-navigation-context/index.md index b8dc4e0..1cbee81 100644 --- a/docs/navigation-core/navigation-core/com.chrynan.navigation/-single-navigation-context/index.md +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/-single-navigation-context/index.md @@ -9,7 +9,7 @@ class [SingleNavigationContext](index.md)<[Destination](index.md) : [Navigati An implementation of the [NavigationContext](../-navigation-context/index.md) interface that doesn't have multiple contexts. Typically, a [NavigationContext](../-navigation-context/index.md) will either be a sealed class or an enum representing the different contexts for navigation. This is common, for instance, for a UI with a bottom navigation bar, where each navigation item in that bottom navigation bar component would be a different context. Each context would retain its own stack of destinations in the [Navigator](../-navigator/index.md). However, sometimes it may be preferable to have only a single context for navigation, and in this case, this class can be used. -**Note:** That this class has an internal constructor and therefore can only be constructed from within this library. This is by design to prevent providing numerous instances of the [SingleNavigationContext](index.md) in the [Navigator.changeContext](../change-context.md) function. +**Note:** That this class has an internal constructor and therefore can only be constructed from within this library. This is by design to prevent providing numerous instances of the [SingleNavigationContext](index.md) in the [Navigator.push](../push.md) function. Example usage: diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/change-context.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/change-context.md index 297ceac..0155bdd 100644 --- a/docs/navigation-core/navigation-core/com.chrynan.navigation/change-context.md +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/change-context.md @@ -6,18 +6,25 @@ @[ExperimentalNavigationApi](-experimental-navigation-api/index.md) -fun <[Destination](change-context.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696), [Context](change-context.md) : [NavigationContext](-navigation-context/index.md)<[Destination](change-context.md)>> [Navigator](-navigator/index.md)<[Destination](change-context.md), [Context](change-context.md)>.[changeContext](change-context.md)(context: [Context](change-context.md)): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) +fun <[Destination](change-context.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696), [Context](change-context.md) : [NavigationContext](-navigation-context/index.md)<[Destination](change-context.md)>> [Navigator](-navigator/index.md)<[Destination](change-context.md), [Context](change-context.md)>.[~~changeContext~~](change-context.md)(context: [Context](change-context.md)): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) -Changes the current [Context](change-context.md) to the provided [context](change-context.md) value. The displayed [Destination](change-context.md) will be the top destination value in the stack associated with the provided [context](change-context.md), or the provided context's [NavigationContext.initialDestination](-navigation-context/initial-destination.md) if there is currently no existing stack for the provided [context](change-context.md). +--- -#### Return +### Deprecated -`true` if the navigation operation was successful, `false` otherwise. +#### Replace with -#### Parameters +```kotlin +com.chrynan.navigation.Navigator.push +``` +--- -common +Convenience function for the [Navigator.push](push.md) function. -| | | -|---|---| -| context | The [NavigationContext](-navigation-context/index.md) to change to. | +!Warning This function is deprecated and will be replaced with the [Navigator.push](push.md) function. + +#### See also + +| | +|---| +| [push](push.md) | diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/go-to.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/go-to.md index 8898f4e..47200fc 100644 --- a/docs/navigation-core/navigation-core/com.chrynan.navigation/go-to.md +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/go-to.md @@ -6,18 +6,25 @@ @[ExperimentalNavigationApi](-experimental-navigation-api/index.md) -fun <[Destination](go-to.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696), [Context](go-to.md) : [NavigationContext](-navigation-context/index.md)<[Destination](go-to.md)>> [Navigator](-navigator/index.md)<[Destination](go-to.md), [Context](go-to.md)>.[goTo](go-to.md)(destination: [Destination](go-to.md)): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) +fun <[Destination](go-to.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696), [Context](go-to.md) : [NavigationContext](-navigation-context/index.md)<[Destination](go-to.md)>> [Navigator](-navigator/index.md)<[Destination](go-to.md), [Context](go-to.md)>.[~~goTo~~](go-to.md)(destination: [Destination](go-to.md)): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) -Navigates to the provided [destination](go-to.md) in the current [NavigationContext](-navigation-context/index.md). Depending on the provided [NavigationStrategy.DuplicateDestination](-navigation-strategy/-duplicate-destination/index.md) when creating this [Navigator](-navigator/index.md), and the current [Context](go-to.md) stack, this will either clear the current [Context](go-to.md) stack to the last value that equals the provided [destination](go-to.md), or add the provided [destination](go-to.md) to the top of the current [Context](go-to.md) stack. +--- -#### Return +### Deprecated -`true` if the navigation operation was successful, `false` otherwise. +#### Replace with -#### Parameters +```kotlin +com.chrynan.navigation.Navigator.push +``` +--- -common +Convenience function for the [Navigator.push](push.md) function. -| | | -|---|---| -| destination | The [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696) that is to be navigated to and added to the current [Context](go-to.md) stack. | +!Warning This function is deprecated and will be replaced with the [Navigator.push](push.md) function. + +#### See also + +| | +|---| +| [push](push.md) | diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/index.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/index.md index dee7e99..5495193 100644 --- a/docs/navigation-core/navigation-core/com.chrynan.navigation/index.md +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/index.md @@ -14,15 +14,17 @@ | [NavigationState](-navigation-state/index.md) | [common]
@Serializable(with = [NavigationStateSerializer::class](../../../navigation-core/com.chrynan.navigation/-navigation-state-serializer/index.md))
interface [NavigationState](-navigation-state/index.md)<[T](-navigation-state/index.md)>
A generic wrapper around the state of a navigation component. This provides a way to access the retained [initial](-navigation-state/initial.md) state value, the [current](-navigation-state/current.md) state value, and [changes](-navigation-state/changes.md) to the state value. | | [NavigationStateStore](-navigation-state-store/index.md) | [common]
@Serializable(with = [NavigationStateStoreSerializer::class](../../../navigation-core/com.chrynan.navigation/-navigation-state-store-serializer/index.md))
interface [NavigationStateStore](-navigation-state-store/index.md)<[Destination](-navigation-state-store/index.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696), [Context](-navigation-state-store/index.md) : [NavigationContext](-navigation-context/index.md)<[Destination](-navigation-state-store/index.md)>>
Represents a store of navigation state information that is useful for a [Navigator](-navigator/index.md). | | [NavigationStrategy](-navigation-strategy/index.md) | [common]
interface [NavigationStrategy](-navigation-strategy/index.md)
A component that encapsulates the various navigation policies for a [Navigator](-navigator/index.md). | -| [NavigationViewModel](-navigation-view-model/index.md) | [common]
expect abstract class [NavigationViewModel](-navigation-view-model/index.md)
Represents a "ViewModel" component used for navigation purposes. This component should not be used outside this navigation library.
[android, ios, js, jvm]
[android]
actual abstract class [NavigationViewModel](-navigation-view-model/index.md) : [ViewModel](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel.html)
[ios, js, jvm]
actual abstract class [NavigationViewModel](-navigation-view-model/index.md) | -| [Navigator](-navigator/index.md) | [common]
@[ExperimentalNavigationApi](-experimental-navigation-api/index.md)
@Serializable(with = [NavigatorSerializer::class](../../../navigation-core/com.chrynan.navigation/-navigator-serializer/index.md))
interface [Navigator](-navigator/index.md)<[Destination](-navigator/index.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696), [Context](-navigator/index.md) : [NavigationContext](-navigation-context/index.md)<[Destination](-navigator/index.md)>>
A [Navigator](-navigator/index.md) is responsible for coordinating the navigation between the different UI component groupings in an application. It is a stateful component that reacts to [NavigationEvent](-navigation-event/index.md)s that are emitted via calls to the navigation functions ([goTo](go-to.md), [goBack](go-back.md), and [changeContext](change-context.md)) and updates its stored state values which can be accessed via its state [store](-navigator/store.md). It is up to the user of a [Navigator](-navigator/index.md) to subscribe to the state changes of this component and update the associated UI accordingly. | +| [NavigationViewModel](-navigation-view-model/index.md) | [common]
expect abstract class [NavigationViewModel](-navigation-view-model/index.md)
Represents a "ViewModel" component used for navigation purposes. This component should not be used outside this navigation library.
[android, js, jvm]
[android]
actual abstract class [NavigationViewModel](-navigation-view-model/index.md) : [ViewModel](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel.html)
[js, jvm]
actual abstract class [NavigationViewModel](-navigation-view-model/index.md) | +| [Navigator](-navigator/index.md) | [common]
@[ExperimentalNavigationApi](-experimental-navigation-api/index.md)
@Serializable(with = [NavigatorSerializer::class](../../../navigation-core/com.chrynan.navigation/-navigator-serializer/index.md))
interface [Navigator](-navigator/index.md)<[Destination](-navigator/index.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696), [Context](-navigator/index.md) : [NavigationContext](-navigation-context/index.md)<[Destination](-navigator/index.md)>>
A [Navigator](-navigator/index.md) is responsible for coordinating the navigation between the different UI component groupings in an application. It is a stateful component that reacts to [NavigationEvent](-navigation-event/index.md)s that are emitted via calls to the navigation functions ([push](push.md), [popDestination](pop-destination.md), and [push](push.md)) and updates its stored state values which can be accessed via its state [store](-navigator/store.md). It is up to the user of a [Navigator](-navigator/index.md) to subscribe to the state changes of this component and update the associated UI accordingly. | | [SingleNavigationContext](-single-navigation-context/index.md) | [common]
@Serializable
class [SingleNavigationContext](-single-navigation-context/index.md)<[Destination](-single-navigation-context/index.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696)> : [NavigationContext](-navigation-context/index.md)<[Destination](-single-navigation-context/index.md)>
An implementation of the [NavigationContext](-navigation-context/index.md) interface that doesn't have multiple contexts. Typically, a [NavigationContext](-navigation-context/index.md) will either be a sealed class or an enum representing the different contexts for navigation. This is common, for instance, for a UI with a bottom navigation bar, where each navigation item in that bottom navigation bar component would be a different context. Each context would retain its own stack of destinations in the [Navigator](-navigator/index.md). However, sometimes it may be preferable to have only a single context for navigation, and in this case, this class can be used. | ## Functions | Name | Summary | |---|---| -| [changeContext](change-context.md) | [common]
@[ExperimentalNavigationApi](-experimental-navigation-api/index.md)
fun <[Destination](change-context.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696), [Context](change-context.md) : [NavigationContext](-navigation-context/index.md)<[Destination](change-context.md)>> [Navigator](-navigator/index.md)<[Destination](change-context.md), [Context](change-context.md)>.[changeContext](change-context.md)(context: [Context](change-context.md)): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)
Changes the current [Context](change-context.md) to the provided [context](change-context.md) value. The displayed [Destination](change-context.md) will be the top destination value in the stack associated with the provided [context](change-context.md), or the provided context's [NavigationContext.initialDestination](-navigation-context/initial-destination.md) if there is currently no existing stack for the provided [context](change-context.md). | -| [goBack](go-back.md) | [common]
@[ExperimentalNavigationApi](-experimental-navigation-api/index.md)
fun <[Destination](go-back.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696), [Context](go-back.md) : [NavigationContext](-navigation-context/index.md)<[Destination](go-back.md)>> [Navigator](-navigator/index.md)<[Destination](go-back.md), [Context](go-back.md)>.[goBack](go-back.md)(): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)
Performs a back navigation operation, if possible, by removing the top [NavigationEvent.Forward](-navigation-event/-forward/index.md) event from the internal navigation stack. If this [Navigator](-navigator/index.md) cannot navigate back, then this function will do nothing and return `false`. | -| [goTo](go-to.md) | [common]
@[ExperimentalNavigationApi](-experimental-navigation-api/index.md)
fun <[Destination](go-to.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696), [Context](go-to.md) : [NavigationContext](-navigation-context/index.md)<[Destination](go-to.md)>> [Navigator](-navigator/index.md)<[Destination](go-to.md), [Context](go-to.md)>.[goTo](go-to.md)(destination: [Destination](go-to.md)): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)
Navigates to the provided [destination](go-to.md) in the current [NavigationContext](-navigation-context/index.md). Depending on the provided [NavigationStrategy.DuplicateDestination](-navigation-strategy/-duplicate-destination/index.md) when creating this [Navigator](-navigator/index.md), and the current [Context](go-to.md) stack, this will either clear the current [Context](go-to.md) stack to the last value that equals the provided [destination](go-to.md), or add the provided [destination](go-to.md) to the top of the current [Context](go-to.md) stack. | -| [Navigator](-navigator.md) | [common]
@[ExperimentalNavigationApi](-experimental-navigation-api/index.md)
fun <[Destination](-navigator.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696), [Context](-navigator.md) : [NavigationContext](-navigation-context/index.md)<[Destination](-navigator.md)>> [Navigator](-navigator.md)(initialContext: [Context](-navigator.md), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, backwardsNavigationStrategy: [NavigationStrategy.BackwardsNavigation](-navigation-strategy/-backwards-navigation/index.md) = NavigationStrategy.BackwardsNavigation.IN_CONTEXT, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](-navigator/index.md)<[Destination](-navigator.md), [Context](-navigator.md)>
Creates a [Navigator](-navigator/index.md) instance with the provided values.
[common]
@[ExperimentalNavigationApi](-experimental-navigation-api/index.md)
fun <[Destination](-navigator.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696)> [Navigator](-navigator.md)(initialDestination: [Destination](-navigator.md), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, backwardsNavigationStrategy: [NavigationStrategy.BackwardsNavigation](-navigation-strategy/-backwards-navigation/index.md) = NavigationStrategy.BackwardsNavigation.IN_CONTEXT, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](-navigator/index.md)<[Destination](-navigator.md), [SingleNavigationContext](-single-navigation-context/index.md)<[Destination](-navigator.md)>>
Creates a [Navigator](-navigator/index.md) instance with the provided values using the [SingleNavigationContext](-single-navigation-context/index.md). | +| [changeContext](change-context.md) | [common]
@[ExperimentalNavigationApi](-experimental-navigation-api/index.md)
fun <[Destination](change-context.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696), [Context](change-context.md) : [NavigationContext](-navigation-context/index.md)<[Destination](change-context.md)>> [Navigator](-navigator/index.md)<[Destination](change-context.md), [Context](change-context.md)>.[~~changeContext~~](change-context.md)(context: [Context](change-context.md)): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)
Convenience function for the [Navigator.push](push.md) function. | +| [goTo](go-to.md) | [common]
@[ExperimentalNavigationApi](-experimental-navigation-api/index.md)
fun <[Destination](go-to.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696), [Context](go-to.md) : [NavigationContext](-navigation-context/index.md)<[Destination](go-to.md)>> [Navigator](-navigator/index.md)<[Destination](go-to.md), [Context](go-to.md)>.[~~goTo~~](go-to.md)(destination: [Destination](go-to.md)): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)
Convenience function for the [Navigator.push](push.md) function. | +| [Navigator](-navigator.md) | [common]
@[ExperimentalNavigationApi](-experimental-navigation-api/index.md)
fun <[Destination](-navigator.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696), [Context](-navigator.md) : [NavigationContext](-navigation-context/index.md)<[Destination](-navigator.md)>> [Navigator](-navigator.md)(initialContext: [Context](-navigator.md), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](-navigator/index.md)<[Destination](-navigator.md), [Context](-navigator.md)>
Creates a [Navigator](-navigator/index.md) instance with the provided values.
[common]
@[ExperimentalNavigationApi](-experimental-navigation-api/index.md)
fun <[Destination](-navigator.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696)> [Navigator](-navigator.md)(initialDestination: [Destination](-navigator.md), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](-navigator/index.md)<[Destination](-navigator.md), [SingleNavigationContext](-single-navigation-context/index.md)<[Destination](-navigator.md)>>
Creates a [Navigator](-navigator/index.md) instance with the provided values using the [SingleNavigationContext](-single-navigation-context/index.md). | +| [popContext](pop-context.md) | [common]
@[ExperimentalNavigationApi](-experimental-navigation-api/index.md)
fun <[Destination](pop-context.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696), [Context](pop-context.md) : [NavigationContext](-navigation-context/index.md)<[Destination](pop-context.md)>> [Navigator](-navigator/index.md)<[Destination](pop-context.md), [Context](pop-context.md)>.[popContext](pop-context.md)(): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)
Performs a back navigation operation, if possible, by moving to the previous [NavigationContext](-navigation-context/index.md). If this [Navigator](-navigator/index.md) cannot navigate to a previous [NavigationContext](-navigation-context/index.md), then this function will do nothing and return `false`. | +| [popDestination](pop-destination.md) | [common]
@[ExperimentalNavigationApi](-experimental-navigation-api/index.md)
fun <[Destination](pop-destination.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696), [Context](pop-destination.md) : [NavigationContext](-navigation-context/index.md)<[Destination](pop-destination.md)>> [Navigator](-navigator/index.md)<[Destination](pop-destination.md), [Context](pop-destination.md)>.[popDestination](pop-destination.md)(): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)
Performs a back navigation operation, if possible, by removing the top [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696) within the current [NavigationContext](-navigation-context/index.md). If this [Navigator](-navigator/index.md) cannot navigate to a previous [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696), then this function will do nothing and return `false`. | +| [push](push.md) | [common]
@[ExperimentalNavigationApi](-experimental-navigation-api/index.md)
fun <[Destination](push.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696), [Context](push.md) : [NavigationContext](-navigation-context/index.md)<[Destination](push.md)>> [Navigator](-navigator/index.md)<[Destination](push.md), [Context](push.md)>.[push](push.md)(context: [Context](push.md)): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)
Changes the current [Context](push.md) to the provided [context](push.md) value. The displayed [Destination](push.md) will be the top destination value in the stack associated with the provided [context](push.md), or the provided context's [NavigationContext.initialDestination](-navigation-context/initial-destination.md) if there is currently no existing stack for the provided [context](push.md).
[common]
@[ExperimentalNavigationApi](-experimental-navigation-api/index.md)
fun <[Destination](push.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696), [Context](push.md) : [NavigationContext](-navigation-context/index.md)<[Destination](push.md)>> [Navigator](-navigator/index.md)<[Destination](push.md), [Context](push.md)>.[push](push.md)(destination: [Destination](push.md)): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)
Navigates to the provided [destination](push.md) in the current [NavigationContext](-navigation-context/index.md). Depending on the provided [NavigationStrategy.DuplicateDestination](-navigation-strategy/-duplicate-destination/index.md) when creating this [Navigator](-navigator/index.md), and the current [Context](push.md) stack, this will either clear the current [Context](push.md) stack to the last value that equals the provided [destination](push.md), or add the provided [destination](push.md) to the top of the current [Context](push.md) stack. | diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/pop-context.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/pop-context.md new file mode 100644 index 0000000..511684e --- /dev/null +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/pop-context.md @@ -0,0 +1,15 @@ +//[navigation-core](../../index.md)/[com.chrynan.navigation](index.md)/[popContext](pop-context.md) + +# popContext + +[common]\ + +@[ExperimentalNavigationApi](-experimental-navigation-api/index.md) + +fun <[Destination](pop-context.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696), [Context](pop-context.md) : [NavigationContext](-navigation-context/index.md)<[Destination](pop-context.md)>> [Navigator](-navigator/index.md)<[Destination](pop-context.md), [Context](pop-context.md)>.[popContext](pop-context.md)(): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) + +Performs a back navigation operation, if possible, by moving to the previous [NavigationContext](-navigation-context/index.md). If this [Navigator](-navigator/index.md) cannot navigate to a previous [NavigationContext](-navigation-context/index.md), then this function will do nothing and return `false`. + +#### Return + +`true` if the back navigation operation was successful, `false` otherwise. diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/pop-destination.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/pop-destination.md new file mode 100644 index 0000000..678a111 --- /dev/null +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/pop-destination.md @@ -0,0 +1,15 @@ +//[navigation-core](../../index.md)/[com.chrynan.navigation](index.md)/[popDestination](pop-destination.md) + +# popDestination + +[common]\ + +@[ExperimentalNavigationApi](-experimental-navigation-api/index.md) + +fun <[Destination](pop-destination.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696), [Context](pop-destination.md) : [NavigationContext](-navigation-context/index.md)<[Destination](pop-destination.md)>> [Navigator](-navigator/index.md)<[Destination](pop-destination.md), [Context](pop-destination.md)>.[popDestination](pop-destination.md)(): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) + +Performs a back navigation operation, if possible, by removing the top [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696) within the current [NavigationContext](-navigation-context/index.md). If this [Navigator](-navigator/index.md) cannot navigate to a previous [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696), then this function will do nothing and return `false`. + +#### Return + +`true` if the back navigation operation was successful, `false` otherwise. diff --git a/docs/navigation-core/navigation-core/com.chrynan.navigation/push.md b/docs/navigation-core/navigation-core/com.chrynan.navigation/push.md new file mode 100644 index 0000000..4360801 --- /dev/null +++ b/docs/navigation-core/navigation-core/com.chrynan.navigation/push.md @@ -0,0 +1,43 @@ +//[navigation-core](../../index.md)/[com.chrynan.navigation](index.md)/[push](push.md) + +# push + +[common]\ + +@[ExperimentalNavigationApi](-experimental-navigation-api/index.md) + +fun <[Destination](push.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696), [Context](push.md) : [NavigationContext](-navigation-context/index.md)<[Destination](push.md)>> [Navigator](-navigator/index.md)<[Destination](push.md), [Context](push.md)>.[push](push.md)(destination: [Destination](push.md)): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) + +Navigates to the provided [destination](push.md) in the current [NavigationContext](-navigation-context/index.md). Depending on the provided [NavigationStrategy.DuplicateDestination](-navigation-strategy/-duplicate-destination/index.md) when creating this [Navigator](-navigator/index.md), and the current [Context](push.md) stack, this will either clear the current [Context](push.md) stack to the last value that equals the provided [destination](push.md), or add the provided [destination](push.md) to the top of the current [Context](push.md) stack. + +#### Return + +`true` if the navigation operation was successful, `false` otherwise. + +#### Parameters + +common + +| | | +|---|---| +| destination | The [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696) that is to be navigated to and added to the current [Context](push.md) stack. | + +[common]\ + +@[ExperimentalNavigationApi](-experimental-navigation-api/index.md) + +fun <[Destination](push.md) : [NavigationDestination](index.md#1223765350%2FClasslikes%2F-215881696), [Context](push.md) : [NavigationContext](-navigation-context/index.md)<[Destination](push.md)>> [Navigator](-navigator/index.md)<[Destination](push.md), [Context](push.md)>.[push](push.md)(context: [Context](push.md)): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) + +Changes the current [Context](push.md) to the provided [context](push.md) value. The displayed [Destination](push.md) will be the top destination value in the stack associated with the provided [context](push.md), or the provided context's [NavigationContext.initialDestination](-navigation-context/initial-destination.md) if there is currently no existing stack for the provided [context](push.md). + +#### Return + +`true` if the navigation operation was successful, `false` otherwise. + +#### Parameters + +common + +| | | +|---|---| +| context | The [NavigationContext](-navigation-context/index.md) to change to. | diff --git a/docs/package-list b/docs/package-list index b4408c9..1e970bf 100644 --- a/docs/package-list +++ b/docs/package-list @@ -3,16 +3,19 @@ $dokka.linkExtension:md $dokka.location:com.chrynan.navigation.compose////PointingToDeclaration/navigation-compose/navigation-compose/com.chrynan.navigation.compose/index.md $dokka.location:com.chrynan.navigation.compose//NavigationContainer/#com.chrynan.navigation.Navigator[TypeParam(bounds=[kotlin.Any]),TypeParam(bounds=[com.chrynan.navigation.NavigationContext[TypeParam(bounds=[kotlin.Any])]])]#androidx.compose.ui.Modifier#kotlin.Function2[androidx.compose.foundation.layout.BoxScope,com.chrynan.navigation.DestinationAndContext[TypeParam(bounds=[kotlin.Any]),TypeParam(bounds=[com.chrynan.navigation.NavigationContext[TypeParam(bounds=[kotlin.Any])]])],kotlin.Unit]/PointingToDeclaration/navigation-compose/navigation-compose/com.chrynan.navigation.compose/-navigation-container.md $dokka.location:com.chrynan.navigation.compose//collectAsState/com.chrynan.navigation.NavigationState[TypeParam(bounds=[kotlin.Any?])]#/PointingToDeclaration/navigation-compose/navigation-compose/com.chrynan.navigation.compose/collect-as-state.md -$dokka.location:com.chrynan.navigation.compose//rememberNavigator/#TypeParam(bounds=[com.chrynan.navigation.NavigationContext[TypeParam(bounds=[kotlin.Any])]])#com.chrynan.navigation.NavigationStrategy.DuplicateDestination#com.chrynan.navigation.NavigationStrategy.BackwardsNavigation#com.chrynan.navigation.NavigationStrategy.DestinationRetention/PointingToDeclaration/navigation-compose/navigation-compose/com.chrynan.navigation.compose/remember-navigator.md -$dokka.location:com.chrynan.navigation.compose//rememberNavigator/#TypeParam(bounds=[kotlin.Any])#com.chrynan.navigation.NavigationStrategy.DuplicateDestination#com.chrynan.navigation.NavigationStrategy.BackwardsNavigation#com.chrynan.navigation.NavigationStrategy.DestinationRetention/PointingToDeclaration/navigation-compose/navigation-compose/com.chrynan.navigation.compose/remember-navigator.md -$dokka.location:com.chrynan.navigation.compose//rememberSavableNavigator/#TypeParam(bounds=[com.chrynan.navigation.NavigationContext[TypeParam(bounds=[kotlin.Any])]])#com.chrynan.parcelable.core.Parcelable#kotlinx.serialization.KSerializer[TypeParam(bounds=[kotlin.Any])]#kotlinx.serialization.KSerializer[TypeParam(bounds=[com.chrynan.navigation.NavigationContext[TypeParam(bounds=[kotlin.Any])]])]#com.chrynan.navigation.NavigationStrategy.DuplicateDestination#com.chrynan.navigation.NavigationStrategy.BackwardsNavigation#com.chrynan.navigation.NavigationStrategy.DestinationRetention/PointingToDeclaration/navigation-compose/navigation-compose/com.chrynan.navigation.compose/remember-savable-navigator.md -$dokka.location:com.chrynan.navigation.compose//rememberSavableNavigator/#TypeParam(bounds=[kotlin.Any])#com.chrynan.parcelable.core.Parcelable#kotlinx.serialization.KSerializer[TypeParam(bounds=[kotlin.Any])]#com.chrynan.navigation.NavigationStrategy.DuplicateDestination#com.chrynan.navigation.NavigationStrategy.BackwardsNavigation#com.chrynan.navigation.NavigationStrategy.DestinationRetention/PointingToDeclaration/navigation-compose/navigation-compose/com.chrynan.navigation.compose/remember-savable-navigator.md +$dokka.location:com.chrynan.navigation.compose//rememberNavigator/#TypeParam(bounds=[com.chrynan.navigation.NavigationContext[TypeParam(bounds=[kotlin.Any])]])#com.chrynan.navigation.NavigationStrategy.DuplicateDestination#com.chrynan.navigation.NavigationStrategy.DestinationRetention/PointingToDeclaration/navigation-compose/navigation-compose/com.chrynan.navigation.compose/remember-navigator.md +$dokka.location:com.chrynan.navigation.compose//rememberNavigator/#TypeParam(bounds=[kotlin.Any])#com.chrynan.navigation.NavigationStrategy.DuplicateDestination#com.chrynan.navigation.NavigationStrategy.DestinationRetention/PointingToDeclaration/navigation-compose/navigation-compose/com.chrynan.navigation.compose/remember-navigator.md +$dokka.location:com.chrynan.navigation.compose//rememberSavableNavigator/#TypeParam(bounds=[com.chrynan.navigation.NavigationContext[TypeParam(bounds=[kotlin.Any])]])#com.chrynan.parcelable.core.Parcelable#kotlinx.serialization.KSerializer[TypeParam(bounds=[kotlin.Any])]#kotlinx.serialization.KSerializer[TypeParam(bounds=[com.chrynan.navigation.NavigationContext[TypeParam(bounds=[kotlin.Any])]])]#com.chrynan.navigation.NavigationStrategy.DuplicateDestination#com.chrynan.navigation.NavigationStrategy.DestinationRetention/PointingToDeclaration/navigation-compose/navigation-compose/com.chrynan.navigation.compose/remember-savable-navigator.md +$dokka.location:com.chrynan.navigation.compose//rememberSavableNavigator/#TypeParam(bounds=[kotlin.Any])#com.chrynan.parcelable.core.Parcelable#kotlinx.serialization.KSerializer[TypeParam(bounds=[kotlin.Any])]#com.chrynan.navigation.NavigationStrategy.DuplicateDestination#com.chrynan.navigation.NavigationStrategy.DestinationRetention/PointingToDeclaration/navigation-compose/navigation-compose/com.chrynan.navigation.compose/remember-savable-navigator.md $dokka.location:com.chrynan.navigation////PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/index.md -$dokka.location:com.chrynan.navigation//Navigator/#TypeParam(bounds=[com.chrynan.navigation.NavigationContext[TypeParam(bounds=[kotlin.Any])]])#com.chrynan.navigation.NavigationStrategy.DuplicateDestination#com.chrynan.navigation.NavigationStrategy.BackwardsNavigation#com.chrynan.navigation.NavigationStrategy.DestinationRetention/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigator.md -$dokka.location:com.chrynan.navigation//Navigator/#TypeParam(bounds=[kotlin.Any])#com.chrynan.navigation.NavigationStrategy.DuplicateDestination#com.chrynan.navigation.NavigationStrategy.BackwardsNavigation#com.chrynan.navigation.NavigationStrategy.DestinationRetention/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigator.md +$dokka.location:com.chrynan.navigation//Navigator/#TypeParam(bounds=[com.chrynan.navigation.NavigationContext[TypeParam(bounds=[kotlin.Any])]])#com.chrynan.navigation.NavigationStrategy.DuplicateDestination#com.chrynan.navigation.NavigationStrategy.DestinationRetention/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigator.md +$dokka.location:com.chrynan.navigation//Navigator/#TypeParam(bounds=[kotlin.Any])#com.chrynan.navigation.NavigationStrategy.DuplicateDestination#com.chrynan.navigation.NavigationStrategy.DestinationRetention/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigator.md $dokka.location:com.chrynan.navigation//changeContext/com.chrynan.navigation.Navigator[TypeParam(bounds=[kotlin.Any]),TypeParam(bounds=[com.chrynan.navigation.NavigationContext[TypeParam(bounds=[kotlin.Any])]])]#TypeParam(bounds=[com.chrynan.navigation.NavigationContext[TypeParam(bounds=[kotlin.Any])]])/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/change-context.md -$dokka.location:com.chrynan.navigation//goBack/com.chrynan.navigation.Navigator[TypeParam(bounds=[kotlin.Any]),TypeParam(bounds=[com.chrynan.navigation.NavigationContext[TypeParam(bounds=[kotlin.Any])]])]#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/go-back.md $dokka.location:com.chrynan.navigation//goTo/com.chrynan.navigation.Navigator[TypeParam(bounds=[kotlin.Any]),TypeParam(bounds=[com.chrynan.navigation.NavigationContext[TypeParam(bounds=[kotlin.Any])]])]#TypeParam(bounds=[kotlin.Any])/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/go-to.md +$dokka.location:com.chrynan.navigation//popContext/com.chrynan.navigation.Navigator[TypeParam(bounds=[kotlin.Any]),TypeParam(bounds=[com.chrynan.navigation.NavigationContext[TypeParam(bounds=[kotlin.Any])]])]#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/pop-context.md +$dokka.location:com.chrynan.navigation//popDestination/com.chrynan.navigation.Navigator[TypeParam(bounds=[kotlin.Any]),TypeParam(bounds=[com.chrynan.navigation.NavigationContext[TypeParam(bounds=[kotlin.Any])]])]#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/pop-destination.md +$dokka.location:com.chrynan.navigation//push/com.chrynan.navigation.Navigator[TypeParam(bounds=[kotlin.Any]),TypeParam(bounds=[com.chrynan.navigation.NavigationContext[TypeParam(bounds=[kotlin.Any])]])]#TypeParam(bounds=[com.chrynan.navigation.NavigationContext[TypeParam(bounds=[kotlin.Any])]])/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/push.md +$dokka.location:com.chrynan.navigation//push/com.chrynan.navigation.Navigator[TypeParam(bounds=[kotlin.Any]),TypeParam(bounds=[com.chrynan.navigation.NavigationContext[TypeParam(bounds=[kotlin.Any])]])]#TypeParam(bounds=[kotlin.Any])/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/push.md $dokka.location:com.chrynan.navigation/DestinationAndContext///PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-destination-and-context/index.md $dokka.location:com.chrynan.navigation/DestinationAndContext/DestinationAndContext/#TypeParam(bounds=[kotlin.Any])#TypeParam(bounds=[com.chrynan.navigation.NavigationContext[TypeParam(bounds=[kotlin.Any])]])/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-destination-and-context/-destination-and-context.md $dokka.location:com.chrynan.navigation/DestinationAndContext/component1/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-destination-and-context/component1.md @@ -27,13 +30,20 @@ $dokka.location:com.chrynan.navigation/ExperimentalNavigationApi///PointingToDec $dokka.location:com.chrynan.navigation/NavigationContext.Companion///PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/-companion/index.md $dokka.location:com.chrynan.navigation/NavigationContext///PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md $dokka.location:com.chrynan.navigation/NavigationContext/initialDestination/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/initial-destination.md +$dokka.location:com.chrynan.navigation/NavigationEvent.Backward.Context///PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-context/index.md +$dokka.location:com.chrynan.navigation/NavigationEvent.Backward.Context/elapsedMilliseconds/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-context/elapsed-milliseconds.md +$dokka.location:com.chrynan.navigation/NavigationEvent.Backward.Context/equals/#kotlin.Any?/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-context/equals.md +$dokka.location:com.chrynan.navigation/NavigationEvent.Backward.Context/hashCode/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-context/hash-code.md +$dokka.location:com.chrynan.navigation/NavigationEvent.Backward.Context/toString/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-context/to-string.md +$dokka.location:com.chrynan.navigation/NavigationEvent.Backward.Context/type/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-context/type.md +$dokka.location:com.chrynan.navigation/NavigationEvent.Backward.Destination///PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-destination/index.md +$dokka.location:com.chrynan.navigation/NavigationEvent.Backward.Destination/elapsedMilliseconds/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-destination/elapsed-milliseconds.md +$dokka.location:com.chrynan.navigation/NavigationEvent.Backward.Destination/equals/#kotlin.Any?/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-destination/equals.md +$dokka.location:com.chrynan.navigation/NavigationEvent.Backward.Destination/hashCode/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-destination/hash-code.md +$dokka.location:com.chrynan.navigation/NavigationEvent.Backward.Destination/toString/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-destination/to-string.md +$dokka.location:com.chrynan.navigation/NavigationEvent.Backward.Destination/type/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/-destination/type.md $dokka.location:com.chrynan.navigation/NavigationEvent.Backward///PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/index.md $dokka.location:com.chrynan.navigation/NavigationEvent.Backward/direction/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/direction.md -$dokka.location:com.chrynan.navigation/NavigationEvent.Backward/elapsedMilliseconds/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/elapsed-milliseconds.md -$dokka.location:com.chrynan.navigation/NavigationEvent.Backward/equals/#kotlin.Any?/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/equals.md -$dokka.location:com.chrynan.navigation/NavigationEvent.Backward/hashCode/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/hash-code.md -$dokka.location:com.chrynan.navigation/NavigationEvent.Backward/toString/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/to-string.md -$dokka.location:com.chrynan.navigation/NavigationEvent.Backward/type/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-backward/type.md $dokka.location:com.chrynan.navigation/NavigationEvent.Companion///PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-companion/index.md $dokka.location:com.chrynan.navigation/NavigationEvent.Direction.BACKWARDS///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-direction/-b-a-c-k-w-a-r-d-s/index.md $dokka.location:com.chrynan.navigation/NavigationEvent.Direction.FORWARDS///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-direction/-f-o-r-w-a-r-d-s/index.md @@ -57,9 +67,10 @@ $dokka.location:com.chrynan.navigation/NavigationEvent.Forward.Destination/toStr $dokka.location:com.chrynan.navigation/NavigationEvent.Forward.Destination/type/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-forward/-destination/type.md $dokka.location:com.chrynan.navigation/NavigationEvent.Forward///PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-forward/index.md $dokka.location:com.chrynan.navigation/NavigationEvent.Forward/direction/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-forward/direction.md -$dokka.location:com.chrynan.navigation/NavigationEvent.Type.BACKWARDS///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-type/-b-a-c-k-w-a-r-d-s/index.md -$dokka.location:com.chrynan.navigation/NavigationEvent.Type.CONTEXT///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-type/-c-o-n-t-e-x-t/index.md -$dokka.location:com.chrynan.navigation/NavigationEvent.Type.DESTINATION///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-type/-d-e-s-t-i-n-a-t-i-o-n/index.md +$dokka.location:com.chrynan.navigation/NavigationEvent.Type.BACKWARD_CONTEXT///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-type/-b-a-c-k-w-a-r-d_-c-o-n-t-e-x-t/index.md +$dokka.location:com.chrynan.navigation/NavigationEvent.Type.BACKWARD_DESTINATION///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-type/-b-a-c-k-w-a-r-d_-d-e-s-t-i-n-a-t-i-o-n/index.md +$dokka.location:com.chrynan.navigation/NavigationEvent.Type.FORWARD_CONTEXT///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-type/-f-o-r-w-a-r-d_-c-o-n-t-e-x-t/index.md +$dokka.location:com.chrynan.navigation/NavigationEvent.Type.FORWARD_DESTINATION///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-type/-f-o-r-w-a-r-d_-d-e-s-t-i-n-a-t-i-o-n/index.md $dokka.location:com.chrynan.navigation/NavigationEvent.Type///PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-type/index.md $dokka.location:com.chrynan.navigation/NavigationEvent.Type/serialName/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-type/serial-name.md $dokka.location:com.chrynan.navigation/NavigationEvent.Type/valueOf/#kotlin.String/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-event/-type/value-of.md @@ -78,13 +89,6 @@ $dokka.location:com.chrynan.navigation/NavigationStateStore///PointingToDeclarat $dokka.location:com.chrynan.navigation/NavigationStateStore/context/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-state-store/context.md $dokka.location:com.chrynan.navigation/NavigationStateStore/destination/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-state-store/destination.md $dokka.location:com.chrynan.navigation/NavigationStateStore/event/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-state-store/event.md -$dokka.location:com.chrynan.navigation/NavigationStrategy.BackwardsNavigation.ACROSS_CONTEXTS///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/-a-c-r-o-s-s_-c-o-n-t-e-x-t-s/index.md -$dokka.location:com.chrynan.navigation/NavigationStrategy.BackwardsNavigation.Companion///PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/-companion/index.md -$dokka.location:com.chrynan.navigation/NavigationStrategy.BackwardsNavigation.IN_CONTEXT///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/-i-n_-c-o-n-t-e-x-t/index.md -$dokka.location:com.chrynan.navigation/NavigationStrategy.BackwardsNavigation///PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/index.md -$dokka.location:com.chrynan.navigation/NavigationStrategy.BackwardsNavigation/serialName/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/serial-name.md -$dokka.location:com.chrynan.navigation/NavigationStrategy.BackwardsNavigation/valueOf/#kotlin.String/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/value-of.md -$dokka.location:com.chrynan.navigation/NavigationStrategy.BackwardsNavigation/values/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/values.md $dokka.location:com.chrynan.navigation/NavigationStrategy.Companion///PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-companion/index.md $dokka.location:com.chrynan.navigation/NavigationStrategy.DestinationRetention.CLEAR///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/-c-l-e-a-r/index.md $dokka.location:com.chrynan.navigation/NavigationStrategy.DestinationRetention.Companion///PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/-companion/index.md @@ -104,7 +108,8 @@ $dokka.location:com.chrynan.navigation/NavigationStrategy///PointingToDeclaratio $dokka.location:com.chrynan.navigation/NavigationViewModel///PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigation-view-model/index.md $dokka.location:com.chrynan.navigation/Navigator.Companion///PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigator/-companion/index.md $dokka.location:com.chrynan.navigation/Navigator///PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md -$dokka.location:com.chrynan.navigation/Navigator/canGoBack/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigator/can-go-back.md +$dokka.location:com.chrynan.navigation/Navigator/canPopContext/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigator/can-pop-context.md +$dokka.location:com.chrynan.navigation/Navigator/canPopDestination/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigator/can-pop-destination.md $dokka.location:com.chrynan.navigation/Navigator/dispatch/#com.chrynan.navigation.NavigationEvent[TypeParam(bounds=[kotlin.Any]),TypeParam(bounds=[com.chrynan.navigation.NavigationContext[TypeParam(bounds=[kotlin.Any])]])]/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigator/dispatch.md $dokka.location:com.chrynan.navigation/Navigator/reset/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigator/reset.md $dokka.location:com.chrynan.navigation/Navigator/store/#/PointingToDeclaration/navigation-core/navigation-core/com.chrynan.navigation/-navigator/store.md diff --git a/navigation-compose/api/android/navigation-compose.api b/navigation-compose/api/android/navigation-compose.api new file mode 100644 index 0000000..968e79d --- /dev/null +++ b/navigation-compose/api/android/navigation-compose.api @@ -0,0 +1,20 @@ +public final class com/chrynan/navigation/compose/BuildConfig { + public static final field BUILD_TYPE Ljava/lang/String; + public static final field DEBUG Z + public static final field LIBRARY_PACKAGE_NAME Ljava/lang/String; + public fun ()V +} + +public final class com/chrynan/navigation/compose/NavigationContainerKt { + public static final fun NavigationContainer (Lcom/chrynan/navigation/Navigator;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function4;Landroidx/compose/runtime/Composer;II)V +} + +public final class com/chrynan/navigation/compose/NavigationStateComposeUtilsKt { + public static final fun collectAsState (Lcom/chrynan/navigation/NavigationState;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +} + +public final class com/chrynan/navigation/compose/RememberComposeNavigatorUtilsKt { + public static final fun rememberNavigator (Lcom/chrynan/navigation/NavigationContext;Lcom/chrynan/navigation/NavigationStrategy$DuplicateDestination;Lcom/chrynan/navigation/NavigationStrategy$DestinationRetention;Landroidx/compose/runtime/Composer;II)Lcom/chrynan/navigation/Navigator; + public static final fun rememberNavigator (Ljava/lang/Object;Lcom/chrynan/navigation/NavigationStrategy$DuplicateDestination;Lcom/chrynan/navigation/NavigationStrategy$DestinationRetention;Landroidx/compose/runtime/Composer;II)Lcom/chrynan/navigation/Navigator; +} + diff --git a/navigation-compose/api/jvm/navigation-compose.api b/navigation-compose/api/jvm/navigation-compose.api new file mode 100644 index 0000000..1d4be37 --- /dev/null +++ b/navigation-compose/api/jvm/navigation-compose.api @@ -0,0 +1,13 @@ +public final class com/chrynan/navigation/compose/NavigationContainerKt { + public static final fun NavigationContainer (Lcom/chrynan/navigation/Navigator;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function4;Landroidx/compose/runtime/Composer;II)V +} + +public final class com/chrynan/navigation/compose/NavigationStateComposeUtilsKt { + public static final fun collectAsState (Lcom/chrynan/navigation/NavigationState;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +} + +public final class com/chrynan/navigation/compose/RememberComposeNavigatorUtilsKt { + public static final fun rememberNavigator (Lcom/chrynan/navigation/NavigationContext;Lcom/chrynan/navigation/NavigationStrategy$DuplicateDestination;Lcom/chrynan/navigation/NavigationStrategy$DestinationRetention;Landroidx/compose/runtime/Composer;II)Lcom/chrynan/navigation/Navigator; + public static final fun rememberNavigator (Ljava/lang/Object;Lcom/chrynan/navigation/NavigationStrategy$DuplicateDestination;Lcom/chrynan/navigation/NavigationStrategy$DestinationRetention;Landroidx/compose/runtime/Composer;II)Lcom/chrynan/navigation/Navigator; +} + diff --git a/navigation-compose/src/commonMain/kotlin/com.chrynan.navigation.compose/RememberComposeNavigatorUtils.kt b/navigation-compose/src/commonMain/kotlin/com.chrynan.navigation.compose/RememberComposeNavigatorUtils.kt index 74dd806..0fe6ecf 100644 --- a/navigation-compose/src/commonMain/kotlin/com.chrynan.navigation.compose/RememberComposeNavigatorUtils.kt +++ b/navigation-compose/src/commonMain/kotlin/com.chrynan.navigation.compose/RememberComposeNavigatorUtils.kt @@ -25,10 +25,6 @@ import kotlinx.serialization.serializer * duplicate destination content within a [NavigationContext] stack. Read the documentation on * [NavigationStrategy.DuplicateDestination] for more information about the supported operations. Defaults to * [NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES]. - * @param [backwardsNavigationStrategy] The [NavigationStrategy.BackwardsNavigation] strategy of supported back - * navigation (across contexts or just destinations within the current context). Read the documentation on - * [NavigationStrategy.BackwardsNavigation] for more information about the operations that are supported. Defaults to - * [NavigationStrategy.BackwardsNavigation.IN_CONTEXT]. * @param [destinationRetentionStrategy] The [NavigationStrategy.DestinationRetention] strategy for handling of * destination stacks within a [NavigationContext] when navigating between different [NavigationContext]s. Read the * documentation on [NavigationStrategy.DestinationRetention] for more information about the supported operations. @@ -47,13 +43,11 @@ import kotlinx.serialization.serializer fun rememberNavigator( initialDestination: Destination, duplicateDestinationStrategy: NavigationStrategy.DuplicateDestination = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, - backwardsNavigationStrategy: NavigationStrategy.BackwardsNavigation = NavigationStrategy.BackwardsNavigation.IN_CONTEXT, destinationRetentionStrategy: NavigationStrategy.DestinationRetention = NavigationStrategy.DestinationRetention.RETAIN ): Navigator> = remember { Navigator( initialDestination = initialDestination, duplicateDestinationStrategy = duplicateDestinationStrategy, - backwardsNavigationStrategy = backwardsNavigationStrategy, destinationRetentionStrategy = destinationRetentionStrategy ) } @@ -72,10 +66,6 @@ fun rememberNavigator( * duplicate destination content within a [Context] stack. Read the documentation on * [NavigationStrategy.DuplicateDestination] for more information about the supported operations. Defaults to * [NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES]. - * @param [backwardsNavigationStrategy] The [NavigationStrategy.BackwardsNavigation] strategy of supported back - * navigation (across contexts or just destinations within the current context). Read the documentation on - * [NavigationStrategy.BackwardsNavigation] for more information about the operations that are supported. Defaults to - * [NavigationStrategy.BackwardsNavigation.IN_CONTEXT]. * @param [destinationRetentionStrategy] The [NavigationStrategy.DestinationRetention] strategy for handling of * destination stacks within a [Context] when navigating between different [NavigationContext]s. Read the documentation * on [NavigationStrategy.DestinationRetention] for more information about the supported operations. Defaults to @@ -94,13 +84,11 @@ fun rememberNavigator( fun > rememberNavigator( initialContext: Context, duplicateDestinationStrategy: NavigationStrategy.DuplicateDestination = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, - backwardsNavigationStrategy: NavigationStrategy.BackwardsNavigation = NavigationStrategy.BackwardsNavigation.IN_CONTEXT, destinationRetentionStrategy: NavigationStrategy.DestinationRetention = NavigationStrategy.DestinationRetention.RETAIN ): Navigator = remember { Navigator( initialContext = initialContext, duplicateDestinationStrategy = duplicateDestinationStrategy, - backwardsNavigationStrategy = backwardsNavigationStrategy, destinationRetentionStrategy = destinationRetentionStrategy ) } @@ -124,10 +112,6 @@ fun rememberSavableNavigato parcelable: Parcelable = Parcelable.Default, destinationSerializer: KSerializer = parcelable.serializersModule.serializer(), duplicateDestinationStrategy: NavigationStrategy.DuplicateDestination = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, - backwardsNavigationStrategy: NavigationStrategy.BackwardsNavigation = NavigationStrategy.BackwardsNavigation.IN_CONTEXT, destinationRetentionStrategy: NavigationStrategy.DestinationRetention = NavigationStrategy.DestinationRetention.RETAIN ): Navigator> = rememberSavable( @@ -162,7 +145,6 @@ inline fun rememberSavableNavigato Navigator( initialDestination = initialDestination, duplicateDestinationStrategy = duplicateDestinationStrategy, - backwardsNavigationStrategy = backwardsNavigationStrategy, destinationRetentionStrategy = destinationRetentionStrategy ) } @@ -187,10 +169,6 @@ inline fun rememberSavableNavigato * duplicate destination content within a [NavigationContext] stack. Read the documentation on * [NavigationStrategy.DuplicateDestination] for more information about the supported operations. Defaults to * [NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES]. - * @param [backwardsNavigationStrategy] The [NavigationStrategy.BackwardsNavigation] strategy of supported back - * navigation (across contexts or just destinations within the current context). Read the documentation on - * [NavigationStrategy.BackwardsNavigation] for more information about the operations that are supported. Defaults to - * [NavigationStrategy.BackwardsNavigation.IN_CONTEXT]. * @param [destinationRetentionStrategy] The [NavigationStrategy.DestinationRetention] strategy for handling of * destination stacks within a [NavigationContext] when navigating between different [NavigationContext]s. Read the * documentation on [NavigationStrategy.DestinationRetention] for more information about the supported operations. @@ -213,7 +191,6 @@ inline fun = parcelable.serializersModule.serializer(), contextSerializer: KSerializer = parcelable.serializersModule.serializer(), duplicateDestinationStrategy: NavigationStrategy.DuplicateDestination = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, - backwardsNavigationStrategy: NavigationStrategy.BackwardsNavigation = NavigationStrategy.BackwardsNavigation.IN_CONTEXT, destinationRetentionStrategy: NavigationStrategy.DestinationRetention = NavigationStrategy.DestinationRetention.RETAIN ): Navigator = rememberSavable( @@ -226,7 +203,6 @@ inline fun (ILjava/lang/Object;Lcom/chrynan/navigation/NavigationContext;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V + public fun (Ljava/lang/Object;Lcom/chrynan/navigation/NavigationContext;)V + public final fun component1 ()Ljava/lang/Object; + public final fun component2 ()Lcom/chrynan/navigation/NavigationContext; + public final fun copy (Ljava/lang/Object;Lcom/chrynan/navigation/NavigationContext;)Lcom/chrynan/navigation/DestinationAndContext; + public static synthetic fun copy$default (Lcom/chrynan/navigation/DestinationAndContext;Ljava/lang/Object;Lcom/chrynan/navigation/NavigationContext;ILjava/lang/Object;)Lcom/chrynan/navigation/DestinationAndContext; + public fun equals (Ljava/lang/Object;)Z + public final fun getContext ()Lcom/chrynan/navigation/NavigationContext; + public final fun getDestination ()Ljava/lang/Object; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; + public static final synthetic fun write$Self (Lcom/chrynan/navigation/DestinationAndContext;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)V +} + +public final class com/chrynan/navigation/DestinationAndContext$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public synthetic fun (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)V + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/chrynan/navigation/DestinationAndContext; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/chrynan/navigation/DestinationAndContext;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/DestinationAndContext$Companion { + public final fun serializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +} + +public abstract interface annotation class com/chrynan/navigation/ExperimentalNavigationApi : java/lang/annotation/Annotation { +} + +public abstract interface class com/chrynan/navigation/NavigationContext { + public static final field Companion Lcom/chrynan/navigation/NavigationContext$Companion; + public abstract fun getInitialDestination ()Ljava/lang/Object; +} + +public final class com/chrynan/navigation/NavigationContext$Companion { +} + +public abstract class com/chrynan/navigation/NavigationEvent { + public static final field Companion Lcom/chrynan/navigation/NavigationEvent$Companion; + public abstract fun getDirection ()Lcom/chrynan/navigation/NavigationEvent$Direction; + public abstract fun getElapsedMilliseconds ()J + public abstract fun getType ()Lcom/chrynan/navigation/NavigationEvent$Type; +} + +public abstract class com/chrynan/navigation/NavigationEvent$Backward : com/chrynan/navigation/NavigationEvent { + public static final field Companion Lcom/chrynan/navigation/NavigationEvent$Backward$Companion; + public fun getDirection ()Lcom/chrynan/navigation/NavigationEvent$Direction; +} + +public final class com/chrynan/navigation/NavigationEvent$Backward$Companion { + public final fun serializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/NavigationEvent$Backward$Context : com/chrynan/navigation/NavigationEvent$Backward { + public fun ()V + public fun equals (Ljava/lang/Object;)Z + public fun getElapsedMilliseconds ()J + public fun getType ()Lcom/chrynan/navigation/NavigationEvent$Type; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/chrynan/navigation/NavigationEvent$Backward$Destination : com/chrynan/navigation/NavigationEvent$Backward { + public fun ()V + public fun equals (Ljava/lang/Object;)Z + public fun getElapsedMilliseconds ()J + public fun getType ()Lcom/chrynan/navigation/NavigationEvent$Type; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/chrynan/navigation/NavigationEvent$Companion { + public final fun serializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/NavigationEvent$Direction : java/lang/Enum { + public static final field BACKWARDS Lcom/chrynan/navigation/NavigationEvent$Direction; + public static final field Companion Lcom/chrynan/navigation/NavigationEvent$Direction$Companion; + public static final field FORWARDS Lcom/chrynan/navigation/NavigationEvent$Direction; + public final fun getSerialName ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lcom/chrynan/navigation/NavigationEvent$Direction; + public static fun values ()[Lcom/chrynan/navigation/NavigationEvent$Direction; +} + +public final class com/chrynan/navigation/NavigationEvent$Direction$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public abstract class com/chrynan/navigation/NavigationEvent$Forward : com/chrynan/navigation/NavigationEvent { + public static final field Companion Lcom/chrynan/navigation/NavigationEvent$Forward$Companion; + public fun getDirection ()Lcom/chrynan/navigation/NavigationEvent$Direction; +} + +public final class com/chrynan/navigation/NavigationEvent$Forward$Companion { + public final fun serializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/NavigationEvent$Forward$Context : com/chrynan/navigation/NavigationEvent$Forward { + public static final field Companion Lcom/chrynan/navigation/NavigationEvent$Forward$Context$Companion; + public synthetic fun (IJLcom/chrynan/navigation/NavigationContext;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V + public fun equals (Ljava/lang/Object;)Z + public final fun getContext ()Lcom/chrynan/navigation/NavigationContext; + public fun getElapsedMilliseconds ()J + public fun getType ()Lcom/chrynan/navigation/NavigationEvent$Type; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; + public static final synthetic fun write$Self (Lcom/chrynan/navigation/NavigationEvent$Forward$Context;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)V +} + +public final class com/chrynan/navigation/NavigationEvent$Forward$Context$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public synthetic fun (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)V + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/chrynan/navigation/NavigationEvent$Forward$Context; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/chrynan/navigation/NavigationEvent$Forward$Context;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/NavigationEvent$Forward$Context$Companion { + public final fun serializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/NavigationEvent$Forward$Destination : com/chrynan/navigation/NavigationEvent$Forward { + public static final field Companion Lcom/chrynan/navigation/NavigationEvent$Forward$Destination$Companion; + public synthetic fun (IJLjava/lang/Object;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V + public fun equals (Ljava/lang/Object;)Z + public final fun getDestination ()Ljava/lang/Object; + public fun getElapsedMilliseconds ()J + public fun getType ()Lcom/chrynan/navigation/NavigationEvent$Type; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; + public static final synthetic fun write$Self (Lcom/chrynan/navigation/NavigationEvent$Forward$Destination;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)V +} + +public final class com/chrynan/navigation/NavigationEvent$Forward$Destination$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public synthetic fun (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)V + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/chrynan/navigation/NavigationEvent$Forward$Destination; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/chrynan/navigation/NavigationEvent$Forward$Destination;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/NavigationEvent$Forward$Destination$Companion { + public final fun serializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/NavigationEvent$Type : java/lang/Enum { + public static final field BACKWARD_CONTEXT Lcom/chrynan/navigation/NavigationEvent$Type; + public static final field BACKWARD_DESTINATION Lcom/chrynan/navigation/NavigationEvent$Type; + public static final field Companion Lcom/chrynan/navigation/NavigationEvent$Type$Companion; + public static final field FORWARD_CONTEXT Lcom/chrynan/navigation/NavigationEvent$Type; + public static final field FORWARD_DESTINATION Lcom/chrynan/navigation/NavigationEvent$Type; + public final fun getSerialName ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lcom/chrynan/navigation/NavigationEvent$Type; + public static fun values ()[Lcom/chrynan/navigation/NavigationEvent$Type; +} + +public final class com/chrynan/navigation/NavigationEvent$Type$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public abstract interface class com/chrynan/navigation/NavigationState { + public static final field Companion Lcom/chrynan/navigation/NavigationState$Companion; + public abstract fun getChanges ()Lkotlinx/coroutines/flow/Flow; + public abstract fun getCurrent ()Ljava/lang/Object; + public abstract fun getInitial ()Ljava/lang/Object; +} + +public final class com/chrynan/navigation/NavigationState$Companion { + public final fun serializer (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +} + +public abstract interface class com/chrynan/navigation/NavigationStateStore { + public static final field Companion Lcom/chrynan/navigation/NavigationStateStore$Companion; + public abstract fun getContext ()Lcom/chrynan/navigation/NavigationState; + public abstract fun getDestination ()Lcom/chrynan/navigation/NavigationState; + public abstract fun getEvent ()Lcom/chrynan/navigation/NavigationState; +} + +public final class com/chrynan/navigation/NavigationStateStore$Companion { + public final fun serializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +} + +public abstract interface class com/chrynan/navigation/NavigationStrategy { + public static final field Companion Lcom/chrynan/navigation/NavigationStrategy$Companion; +} + +public final class com/chrynan/navigation/NavigationStrategy$Companion { +} + +public final class com/chrynan/navigation/NavigationStrategy$DestinationRetention : java/lang/Enum { + public static final field CLEAR Lcom/chrynan/navigation/NavigationStrategy$DestinationRetention; + public static final field Companion Lcom/chrynan/navigation/NavigationStrategy$DestinationRetention$Companion; + public static final field RETAIN Lcom/chrynan/navigation/NavigationStrategy$DestinationRetention; + public final fun getSerialName ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lcom/chrynan/navigation/NavigationStrategy$DestinationRetention; + public static fun values ()[Lcom/chrynan/navigation/NavigationStrategy$DestinationRetention; +} + +public final class com/chrynan/navigation/NavigationStrategy$DestinationRetention$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/NavigationStrategy$DuplicateDestination : java/lang/Enum { + public static final field ALLOW_DUPLICATES Lcom/chrynan/navigation/NavigationStrategy$DuplicateDestination; + public static final field CLEAR_TO_ORIGINAL Lcom/chrynan/navigation/NavigationStrategy$DuplicateDestination; + public static final field Companion Lcom/chrynan/navigation/NavigationStrategy$DuplicateDestination$Companion; + public final fun getSerialName ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lcom/chrynan/navigation/NavigationStrategy$DuplicateDestination; + public static fun values ()[Lcom/chrynan/navigation/NavigationStrategy$DuplicateDestination; +} + +public final class com/chrynan/navigation/NavigationStrategy$DuplicateDestination$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public abstract class com/chrynan/navigation/NavigationViewModel : androidx/lifecycle/ViewModel { +} + +public abstract interface class com/chrynan/navigation/Navigator { + public static final field Companion Lcom/chrynan/navigation/Navigator$Companion; + public abstract fun canPopContext ()Z + public abstract fun canPopDestination ()Z + public abstract fun dispatch (Lcom/chrynan/navigation/NavigationEvent;)Z + public abstract fun getStore ()Lcom/chrynan/navigation/NavigationStateStore; + public abstract fun reset ()V +} + +public final class com/chrynan/navigation/Navigator$Companion { + public final fun serializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/NavigatorKt { + public static final fun Navigator (Lcom/chrynan/navigation/NavigationContext;Lcom/chrynan/navigation/NavigationStrategy$DuplicateDestination;Lcom/chrynan/navigation/NavigationStrategy$DestinationRetention;)Lcom/chrynan/navigation/Navigator; + public static final fun Navigator (Ljava/lang/Object;Lcom/chrynan/navigation/NavigationStrategy$DuplicateDestination;Lcom/chrynan/navigation/NavigationStrategy$DestinationRetention;)Lcom/chrynan/navigation/Navigator; + public static synthetic fun Navigator$default (Lcom/chrynan/navigation/NavigationContext;Lcom/chrynan/navigation/NavigationStrategy$DuplicateDestination;Lcom/chrynan/navigation/NavigationStrategy$DestinationRetention;ILjava/lang/Object;)Lcom/chrynan/navigation/Navigator; + public static synthetic fun Navigator$default (Ljava/lang/Object;Lcom/chrynan/navigation/NavigationStrategy$DuplicateDestination;Lcom/chrynan/navigation/NavigationStrategy$DestinationRetention;ILjava/lang/Object;)Lcom/chrynan/navigation/Navigator; + public static final fun changeContext (Lcom/chrynan/navigation/Navigator;Lcom/chrynan/navigation/NavigationContext;)Z + public static final fun goTo (Lcom/chrynan/navigation/Navigator;Ljava/lang/Object;)Z + public static final fun popContext (Lcom/chrynan/navigation/Navigator;)Z + public static final fun popDestination (Lcom/chrynan/navigation/Navigator;)Z + public static final fun push (Lcom/chrynan/navigation/Navigator;Lcom/chrynan/navigation/NavigationContext;)Z + public static final fun push (Lcom/chrynan/navigation/Navigator;Ljava/lang/Object;)Z +} + +public final class com/chrynan/navigation/SingleNavigationContext : com/chrynan/navigation/NavigationContext { + public static final field Companion Lcom/chrynan/navigation/SingleNavigationContext$Companion; + public synthetic fun (ILjava/lang/Object;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V + public fun equals (Ljava/lang/Object;)Z + public fun getInitialDestination ()Ljava/lang/Object; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; + public static final synthetic fun write$Self (Lcom/chrynan/navigation/SingleNavigationContext;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlinx/serialization/KSerializer;)V +} + +public final class com/chrynan/navigation/SingleNavigationContext$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public synthetic fun (Lkotlinx/serialization/KSerializer;)V + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/chrynan/navigation/SingleNavigationContext; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/chrynan/navigation/SingleNavigationContext;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/SingleNavigationContext$Companion { + public final fun serializer (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/android/BuildConfig { + public static final field BUILD_TYPE Ljava/lang/String; + public static final field DEBUG Z + public static final field LIBRARY_PACKAGE_NAME Ljava/lang/String; + public fun ()V +} + diff --git a/navigation-core/api/jvm/navigation-core.api b/navigation-core/api/jvm/navigation-core.api new file mode 100644 index 0000000..8509f9c --- /dev/null +++ b/navigation-core/api/jvm/navigation-core.api @@ -0,0 +1,280 @@ +public final class com/chrynan/navigation/DestinationAndContext { + public static final field Companion Lcom/chrynan/navigation/DestinationAndContext$Companion; + public synthetic fun (ILjava/lang/Object;Lcom/chrynan/navigation/NavigationContext;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V + public fun (Ljava/lang/Object;Lcom/chrynan/navigation/NavigationContext;)V + public final fun component1 ()Ljava/lang/Object; + public final fun component2 ()Lcom/chrynan/navigation/NavigationContext; + public final fun copy (Ljava/lang/Object;Lcom/chrynan/navigation/NavigationContext;)Lcom/chrynan/navigation/DestinationAndContext; + public static synthetic fun copy$default (Lcom/chrynan/navigation/DestinationAndContext;Ljava/lang/Object;Lcom/chrynan/navigation/NavigationContext;ILjava/lang/Object;)Lcom/chrynan/navigation/DestinationAndContext; + public fun equals (Ljava/lang/Object;)Z + public final fun getContext ()Lcom/chrynan/navigation/NavigationContext; + public final fun getDestination ()Ljava/lang/Object; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; + public static final synthetic fun write$Self (Lcom/chrynan/navigation/DestinationAndContext;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)V +} + +public final class com/chrynan/navigation/DestinationAndContext$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public synthetic fun (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)V + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/chrynan/navigation/DestinationAndContext; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/chrynan/navigation/DestinationAndContext;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/DestinationAndContext$Companion { + public final fun serializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +} + +public abstract interface annotation class com/chrynan/navigation/ExperimentalNavigationApi : java/lang/annotation/Annotation { +} + +public abstract interface class com/chrynan/navigation/NavigationContext { + public static final field Companion Lcom/chrynan/navigation/NavigationContext$Companion; + public abstract fun getInitialDestination ()Ljava/lang/Object; +} + +public final class com/chrynan/navigation/NavigationContext$Companion { +} + +public abstract class com/chrynan/navigation/NavigationEvent { + public static final field Companion Lcom/chrynan/navigation/NavigationEvent$Companion; + public abstract fun getDirection ()Lcom/chrynan/navigation/NavigationEvent$Direction; + public abstract fun getElapsedMilliseconds ()J + public abstract fun getType ()Lcom/chrynan/navigation/NavigationEvent$Type; +} + +public abstract class com/chrynan/navigation/NavigationEvent$Backward : com/chrynan/navigation/NavigationEvent { + public static final field Companion Lcom/chrynan/navigation/NavigationEvent$Backward$Companion; + public fun getDirection ()Lcom/chrynan/navigation/NavigationEvent$Direction; +} + +public final class com/chrynan/navigation/NavigationEvent$Backward$Companion { + public final fun serializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/NavigationEvent$Backward$Context : com/chrynan/navigation/NavigationEvent$Backward { + public fun ()V + public fun equals (Ljava/lang/Object;)Z + public fun getElapsedMilliseconds ()J + public fun getType ()Lcom/chrynan/navigation/NavigationEvent$Type; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/chrynan/navigation/NavigationEvent$Backward$Destination : com/chrynan/navigation/NavigationEvent$Backward { + public fun ()V + public fun equals (Ljava/lang/Object;)Z + public fun getElapsedMilliseconds ()J + public fun getType ()Lcom/chrynan/navigation/NavigationEvent$Type; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/chrynan/navigation/NavigationEvent$Companion { + public final fun serializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/NavigationEvent$Direction : java/lang/Enum { + public static final field BACKWARDS Lcom/chrynan/navigation/NavigationEvent$Direction; + public static final field Companion Lcom/chrynan/navigation/NavigationEvent$Direction$Companion; + public static final field FORWARDS Lcom/chrynan/navigation/NavigationEvent$Direction; + public final fun getSerialName ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lcom/chrynan/navigation/NavigationEvent$Direction; + public static fun values ()[Lcom/chrynan/navigation/NavigationEvent$Direction; +} + +public final class com/chrynan/navigation/NavigationEvent$Direction$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public abstract class com/chrynan/navigation/NavigationEvent$Forward : com/chrynan/navigation/NavigationEvent { + public static final field Companion Lcom/chrynan/navigation/NavigationEvent$Forward$Companion; + public fun getDirection ()Lcom/chrynan/navigation/NavigationEvent$Direction; +} + +public final class com/chrynan/navigation/NavigationEvent$Forward$Companion { + public final fun serializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/NavigationEvent$Forward$Context : com/chrynan/navigation/NavigationEvent$Forward { + public static final field Companion Lcom/chrynan/navigation/NavigationEvent$Forward$Context$Companion; + public synthetic fun (IJLcom/chrynan/navigation/NavigationContext;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V + public fun equals (Ljava/lang/Object;)Z + public final fun getContext ()Lcom/chrynan/navigation/NavigationContext; + public fun getElapsedMilliseconds ()J + public fun getType ()Lcom/chrynan/navigation/NavigationEvent$Type; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; + public static final synthetic fun write$Self (Lcom/chrynan/navigation/NavigationEvent$Forward$Context;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)V +} + +public final class com/chrynan/navigation/NavigationEvent$Forward$Context$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public synthetic fun (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)V + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/chrynan/navigation/NavigationEvent$Forward$Context; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/chrynan/navigation/NavigationEvent$Forward$Context;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/NavigationEvent$Forward$Context$Companion { + public final fun serializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/NavigationEvent$Forward$Destination : com/chrynan/navigation/NavigationEvent$Forward { + public static final field Companion Lcom/chrynan/navigation/NavigationEvent$Forward$Destination$Companion; + public synthetic fun (IJLjava/lang/Object;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V + public fun equals (Ljava/lang/Object;)Z + public final fun getDestination ()Ljava/lang/Object; + public fun getElapsedMilliseconds ()J + public fun getType ()Lcom/chrynan/navigation/NavigationEvent$Type; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; + public static final synthetic fun write$Self (Lcom/chrynan/navigation/NavigationEvent$Forward$Destination;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)V +} + +public final class com/chrynan/navigation/NavigationEvent$Forward$Destination$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public synthetic fun (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)V + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/chrynan/navigation/NavigationEvent$Forward$Destination; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/chrynan/navigation/NavigationEvent$Forward$Destination;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/NavigationEvent$Forward$Destination$Companion { + public final fun serializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/NavigationEvent$Type : java/lang/Enum { + public static final field BACKWARD_CONTEXT Lcom/chrynan/navigation/NavigationEvent$Type; + public static final field BACKWARD_DESTINATION Lcom/chrynan/navigation/NavigationEvent$Type; + public static final field Companion Lcom/chrynan/navigation/NavigationEvent$Type$Companion; + public static final field FORWARD_CONTEXT Lcom/chrynan/navigation/NavigationEvent$Type; + public static final field FORWARD_DESTINATION Lcom/chrynan/navigation/NavigationEvent$Type; + public final fun getSerialName ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lcom/chrynan/navigation/NavigationEvent$Type; + public static fun values ()[Lcom/chrynan/navigation/NavigationEvent$Type; +} + +public final class com/chrynan/navigation/NavigationEvent$Type$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public abstract interface class com/chrynan/navigation/NavigationState { + public static final field Companion Lcom/chrynan/navigation/NavigationState$Companion; + public abstract fun getChanges ()Lkotlinx/coroutines/flow/Flow; + public abstract fun getCurrent ()Ljava/lang/Object; + public abstract fun getInitial ()Ljava/lang/Object; +} + +public final class com/chrynan/navigation/NavigationState$Companion { + public final fun serializer (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +} + +public abstract interface class com/chrynan/navigation/NavigationStateStore { + public static final field Companion Lcom/chrynan/navigation/NavigationStateStore$Companion; + public abstract fun getContext ()Lcom/chrynan/navigation/NavigationState; + public abstract fun getDestination ()Lcom/chrynan/navigation/NavigationState; + public abstract fun getEvent ()Lcom/chrynan/navigation/NavigationState; +} + +public final class com/chrynan/navigation/NavigationStateStore$Companion { + public final fun serializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +} + +public abstract interface class com/chrynan/navigation/NavigationStrategy { + public static final field Companion Lcom/chrynan/navigation/NavigationStrategy$Companion; +} + +public final class com/chrynan/navigation/NavigationStrategy$Companion { +} + +public final class com/chrynan/navigation/NavigationStrategy$DestinationRetention : java/lang/Enum { + public static final field CLEAR Lcom/chrynan/navigation/NavigationStrategy$DestinationRetention; + public static final field Companion Lcom/chrynan/navigation/NavigationStrategy$DestinationRetention$Companion; + public static final field RETAIN Lcom/chrynan/navigation/NavigationStrategy$DestinationRetention; + public final fun getSerialName ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lcom/chrynan/navigation/NavigationStrategy$DestinationRetention; + public static fun values ()[Lcom/chrynan/navigation/NavigationStrategy$DestinationRetention; +} + +public final class com/chrynan/navigation/NavigationStrategy$DestinationRetention$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/NavigationStrategy$DuplicateDestination : java/lang/Enum { + public static final field ALLOW_DUPLICATES Lcom/chrynan/navigation/NavigationStrategy$DuplicateDestination; + public static final field CLEAR_TO_ORIGINAL Lcom/chrynan/navigation/NavigationStrategy$DuplicateDestination; + public static final field Companion Lcom/chrynan/navigation/NavigationStrategy$DuplicateDestination$Companion; + public final fun getSerialName ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lcom/chrynan/navigation/NavigationStrategy$DuplicateDestination; + public static fun values ()[Lcom/chrynan/navigation/NavigationStrategy$DuplicateDestination; +} + +public final class com/chrynan/navigation/NavigationStrategy$DuplicateDestination$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public abstract class com/chrynan/navigation/NavigationViewModel { +} + +public abstract interface class com/chrynan/navigation/Navigator { + public static final field Companion Lcom/chrynan/navigation/Navigator$Companion; + public abstract fun canPopContext ()Z + public abstract fun canPopDestination ()Z + public abstract fun dispatch (Lcom/chrynan/navigation/NavigationEvent;)Z + public abstract fun getStore ()Lcom/chrynan/navigation/NavigationStateStore; + public abstract fun reset ()V +} + +public final class com/chrynan/navigation/Navigator$Companion { + public final fun serializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/NavigatorKt { + public static final fun Navigator (Lcom/chrynan/navigation/NavigationContext;Lcom/chrynan/navigation/NavigationStrategy$DuplicateDestination;Lcom/chrynan/navigation/NavigationStrategy$DestinationRetention;)Lcom/chrynan/navigation/Navigator; + public static final fun Navigator (Ljava/lang/Object;Lcom/chrynan/navigation/NavigationStrategy$DuplicateDestination;Lcom/chrynan/navigation/NavigationStrategy$DestinationRetention;)Lcom/chrynan/navigation/Navigator; + public static synthetic fun Navigator$default (Lcom/chrynan/navigation/NavigationContext;Lcom/chrynan/navigation/NavigationStrategy$DuplicateDestination;Lcom/chrynan/navigation/NavigationStrategy$DestinationRetention;ILjava/lang/Object;)Lcom/chrynan/navigation/Navigator; + public static synthetic fun Navigator$default (Ljava/lang/Object;Lcom/chrynan/navigation/NavigationStrategy$DuplicateDestination;Lcom/chrynan/navigation/NavigationStrategy$DestinationRetention;ILjava/lang/Object;)Lcom/chrynan/navigation/Navigator; + public static final fun changeContext (Lcom/chrynan/navigation/Navigator;Lcom/chrynan/navigation/NavigationContext;)Z + public static final fun goTo (Lcom/chrynan/navigation/Navigator;Ljava/lang/Object;)Z + public static final fun popContext (Lcom/chrynan/navigation/Navigator;)Z + public static final fun popDestination (Lcom/chrynan/navigation/Navigator;)Z + public static final fun push (Lcom/chrynan/navigation/Navigator;Lcom/chrynan/navigation/NavigationContext;)Z + public static final fun push (Lcom/chrynan/navigation/Navigator;Ljava/lang/Object;)Z +} + +public final class com/chrynan/navigation/SingleNavigationContext : com/chrynan/navigation/NavigationContext { + public static final field Companion Lcom/chrynan/navigation/SingleNavigationContext$Companion; + public synthetic fun (ILjava/lang/Object;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V + public fun equals (Ljava/lang/Object;)Z + public fun getInitialDestination ()Ljava/lang/Object; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; + public static final synthetic fun write$Self (Lcom/chrynan/navigation/SingleNavigationContext;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlinx/serialization/KSerializer;)V +} + +public final class com/chrynan/navigation/SingleNavigationContext$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public synthetic fun (Lkotlinx/serialization/KSerializer;)V + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/chrynan/navigation/SingleNavigationContext; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/chrynan/navigation/SingleNavigationContext;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/SingleNavigationContext$Companion { + public final fun serializer (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +} + diff --git a/navigation-core/build.gradle.kts b/navigation-core/build.gradle.kts index 41a40eb..9affc34 100644 --- a/navigation-core/build.gradle.kts +++ b/navigation-core/build.gradle.kts @@ -1,5 +1,7 @@ import com.chrynan.navigation.buildSrc.LibraryConstants +import com.chrynan.navigation.buildSrc.isBuildingOnLinux import com.chrynan.navigation.buildSrc.isBuildingOnOSX +import com.chrynan.navigation.buildSrc.isBuildingOnWindows import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { @@ -18,7 +20,11 @@ kotlin { publishAllLibraryVariants() publishLibraryVariantsGroupedByFlavor = true } + targets { + // Enable the default target hierarchy: + targetHierarchy.default() + android() jvm() @@ -37,6 +43,18 @@ kotlin { if (isBuildingOnOSX()) { ios() iosSimulatorArm64() + tvos() + watchos() + macosX64() + macosArm64() + } + + if (isBuildingOnLinux()) { + linuxX64() + } + + if (isBuildingOnWindows()) { + mingwX64() } } sourceSets { @@ -60,11 +78,7 @@ kotlin { } } - if (isBuildingOnOSX()) { - val iosMain by sourceSets.getting - val iosSimulatorArm64Main by sourceSets.getting - iosSimulatorArm64Main.dependsOn(iosMain) - } + val nativeMain by sourceSets.getting } } diff --git a/navigation-core/src/commonMain/kotlin/com.chrynan.navigation/NavigationContext.kt b/navigation-core/src/commonMain/kotlin/com.chrynan.navigation/NavigationContext.kt index 1010840..23e32fe 100644 --- a/navigation-core/src/commonMain/kotlin/com.chrynan.navigation/NavigationContext.kt +++ b/navigation-core/src/commonMain/kotlin/com.chrynan.navigation/NavigationContext.kt @@ -44,7 +44,7 @@ interface NavigationContext { * * **Note:** That this class has an internal constructor and therefore can only be constructed from within this * library. This is by design to prevent providing numerous instances of the [SingleNavigationContext] in the - * [Navigator.changeContext] function. + * [Navigator.push] function. * * Example usage: * diff --git a/navigation-core/src/commonMain/kotlin/com.chrynan.navigation/NavigationEvent.kt b/navigation-core/src/commonMain/kotlin/com.chrynan.navigation/NavigationEvent.kt index b753091..6207829 100644 --- a/navigation-core/src/commonMain/kotlin/com.chrynan.navigation/NavigationEvent.kt +++ b/navigation-core/src/commonMain/kotlin/com.chrynan.navigation/NavigationEvent.kt @@ -66,61 +66,107 @@ sealed class NavigationEvent enum class Type(val serialName: String) { /** - * Corresponds to the [NavigationEvent.Backward] type. + * Corresponds to the [NavigationEvent.Backward.Context] type. */ - @SerialName(value = "backwards") - BACKWARDS(serialName = "backwards"), + @SerialName(value = "backward_context") + BACKWARD_CONTEXT(serialName = "backward_context"), + + /** + * Corresponds to the [NavigationEvent.Backward.Destination] type. + */ + @SerialName(value = "backward_destination") + BACKWARD_DESTINATION(serialName = "backward_destination"), /** * Corresponds to the [NavigationEvent.Forward.Context] type. */ - @SerialName(value = "context") - CONTEXT(serialName = "context"), + @SerialName(value = "forward_context") + FORWARD_CONTEXT(serialName = "forward_context"), /** * Corresponds to the [NavigationEvent.Forward.Destination] type. */ - @SerialName(value = "destination") - DESTINATION(serialName = "destination") + @SerialName(value = "forward_destination") + FORWARD_DESTINATION(serialName = "forward_destination") } /** - * A [NavigationEvent] that represents a reversal of a previous navigation event. A [Backward] navigation event can be - * used to go to the previous [NavigationDestination] within the current [NavigationContext], or going back to a + * A [NavigationEvent] that represents a reversal of a previous navigation event. A [Backward] navigation event can + * be used to go to the previous [NavigationDestination] within the current [NavigationContext], or going back to a * previous [NavigationContext] before a change in context. * * @property [elapsedMilliseconds] The amount of milliseconds that have elapsed on the system when the event * occurred. **Note:** This is not safe to persist or use between system reboots. */ - @Serializable - @SerialName(value = "backwards") - class Backward> internal constructor( - @SerialName(value = "instant") override val elapsedMilliseconds: Long = elapsedSystemTime().inWholeMilliseconds - ) : NavigationEvent() { + @Serializable(with = NavigationEventBackwardSerializer::class) + @SerialName(value = "backward") + sealed class Backward> private constructor() : + NavigationEvent() { override val direction: Direction = Direction.BACKWARDS - @Transient - override val type: Type = Type.BACKWARDS + /** + * A [NavigationEvent] that changes goes back to the previous [NavigationDestination] within the current + * [NavigationContext]. + * + * @property [elapsedMilliseconds] The amount of milliseconds that have elapsed on the system when the event + * occurred. **Note:** This is not safe to persist or use between system reboots. + */ + @SerialName(value = "backward_destination") + class Destination> internal constructor( + @SerialName(value = "instant") override val elapsedMilliseconds: Long = elapsedSystemTime().inWholeMilliseconds + ) : Backward() { - override fun toSnapshot(): Snapshot = Snapshot( - type = type, - direction = direction, - elapsedMilliseconds = elapsedMilliseconds - ) + @Transient + override val type: Type = Type.BACKWARD_DESTINATION - override fun equals(other: Any?): Boolean { - if (this === other) return true - if (other !is Backward<*, *>) return false + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other !is Destination<*, *>) return false + + return elapsedMilliseconds == other.elapsedMilliseconds + } + + override fun hashCode(): Int = + elapsedMilliseconds.hashCode() - return elapsedMilliseconds == other.elapsedMilliseconds + override fun toString(): String = + "NavigationEvent.Backward.Destination(elapsedMilliseconds=$elapsedMilliseconds)" } - override fun hashCode(): Int = - elapsedMilliseconds.hashCode() + /** + * A [NavigationEvent] that changes goes back to the previous [NavigationContext]. + * + * @property [elapsedMilliseconds] The amount of milliseconds that have elapsed on the system when the event + * occurred. **Note:** This is not safe to persist or use between system reboots. + */ + @SerialName(value = "backward_context") + class Context> internal constructor( + @SerialName(value = "instant") override val elapsedMilliseconds: Long = elapsedSystemTime().inWholeMilliseconds + ) : Backward() { - override fun toString(): String = - "NavigationEvent.Backward(elapsedMilliseconds=$elapsedMilliseconds, direction=$direction)" + @Transient + override val type: Type = Type.BACKWARD_CONTEXT + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other !is Context<*, *>) return false + + return elapsedMilliseconds == other.elapsedMilliseconds + } + + override fun hashCode(): Int = + elapsedMilliseconds.hashCode() + + override fun toString(): String = + "NavigationEvent.Backward.Context(elapsedMilliseconds=$elapsedMilliseconds)" + } + + override fun toSnapshot(): Snapshot = Snapshot( + type = type, + direction = direction, + elapsedMilliseconds = elapsedMilliseconds + ) } /** @@ -144,14 +190,14 @@ sealed class NavigationEvent * of destinations within the current [NavigationContext]. */ @Serializable - @SerialName(value = "destination") + @SerialName(value = "forward_destination") class Destination> internal constructor( @SerialName(value = "instant") override val elapsedMilliseconds: Long = elapsedSystemTime().inWholeMilliseconds, @SerialName(value = "destination") val destination: D ) : Forward() { @Transient - override val type: Type = Type.DESTINATION + override val type: Type = Type.FORWARD_DESTINATION override fun toSnapshot(): Snapshot = Snapshot( type = type, @@ -176,7 +222,7 @@ sealed class NavigationEvent } override fun toString(): String = - "NavigationEvent.Forward.Destination(elapsedMilliseconds=$elapsedMilliseconds, destination=$destination, direction=$direction)" + "NavigationEvent.Forward.Destination(elapsedMilliseconds=$elapsedMilliseconds, destination=$destination)" } /** @@ -187,14 +233,14 @@ sealed class NavigationEvent * @property [context] The [NavigationContext] to go to. */ @Serializable - @SerialName(value = "context") + @SerialName(value = "forward_context") class Context> internal constructor( @SerialName(value = "instant") override val elapsedMilliseconds: Long = elapsedSystemTime().inWholeMilliseconds, @SerialName(value = "context") val context: C ) : Forward() { @Transient - override val type: Type = Type.CONTEXT + override val type: Type = Type.FORWARD_CONTEXT override fun toSnapshot(): Snapshot = Snapshot( type = type, @@ -219,7 +265,7 @@ sealed class NavigationEvent } override fun toString(): String = - "NavigationEvent.Forward.Context(elapsedMilliseconds=$elapsedMilliseconds, context=$context, direction=$direction)" + "NavigationEvent.Forward.Context(elapsedMilliseconds=$elapsedMilliseconds, context=$context)" } } @@ -272,13 +318,16 @@ internal fun ): NavigationEvent = when (snapshot.type) { - NavigationEvent.Type.BACKWARDS -> NavigationEvent.Backward(elapsedMilliseconds = snapshot.elapsedMilliseconds) - NavigationEvent.Type.DESTINATION -> NavigationEvent.Forward.Destination( + NavigationEvent.Type.BACKWARD_DESTINATION -> NavigationEvent.Backward.Destination(elapsedMilliseconds = snapshot.elapsedMilliseconds) + + NavigationEvent.Type.BACKWARD_CONTEXT -> NavigationEvent.Backward.Context(elapsedMilliseconds = snapshot.elapsedMilliseconds) + + NavigationEvent.Type.FORWARD_DESTINATION -> NavigationEvent.Forward.Destination( elapsedMilliseconds = snapshot.elapsedMilliseconds, destination = snapshot.destination!! ) - NavigationEvent.Type.CONTEXT -> NavigationEvent.Forward.Context( + NavigationEvent.Type.FORWARD_CONTEXT -> NavigationEvent.Forward.Context( elapsedMilliseconds = snapshot.elapsedMilliseconds, context = snapshot.context!! ) @@ -330,6 +379,59 @@ internal class NavigationEventSerializer>( + destinationSerializer: KSerializer, + contextSerializer: KSerializer +) : KSerializer> { + + private val delegateSerializer = NavigationEvent.Snapshot.serializer( + destinationSerializer, + contextSerializer + ) + + override val descriptor: SerialDescriptor = destinationSerializer.descriptor + + override fun serialize(encoder: Encoder, value: NavigationEvent.Backward) { + encoder.encodeSerializableValue( + serializer = delegateSerializer, + value = value.toSnapshot() + ) + } + + override fun deserialize(decoder: Decoder): NavigationEvent.Backward { + val snapshot = decoder.decodeSerializableValue(deserializer = delegateSerializer) + + val event = NavigationEvent(snapshot = snapshot) + + if (event !is NavigationEvent.Backward) { + throw SerializationException("${this::class.simpleName} only works for ${NavigationEvent.Backward::class.simpleName} types.") + } + + return event + } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other !is NavigationEventBackwardSerializer<*, *>) return false + + if (delegateSerializer != other.delegateSerializer) return false + + return descriptor == other.descriptor + } + + override fun hashCode(): Int { + var result = delegateSerializer.hashCode() + result = 31 * result + descriptor.hashCode() + return result + } + + override fun toString(): String = + "NavigationEventBackwardSerializer(" + + "delegateSerializer=$delegateSerializer, " + + "descriptor=$descriptor)" +} + + internal class NavigationEventForwardSerializer>( destinationSerializer: KSerializer, contextSerializer: KSerializer diff --git a/navigation-core/src/commonMain/kotlin/com.chrynan.navigation/NavigationStrategy.kt b/navigation-core/src/commonMain/kotlin/com.chrynan.navigation/NavigationStrategy.kt index f5c7724..4b7d75a 100644 --- a/navigation-core/src/commonMain/kotlin/com.chrynan.navigation/NavigationStrategy.kt +++ b/navigation-core/src/commonMain/kotlin/com.chrynan.navigation/NavigationStrategy.kt @@ -45,36 +45,6 @@ sealed interface NavigationStrategy { companion object } - /** - * Represents the type of supported back navigation. An [IN_CONTEXT] value indicates that navigation to the - * previous [NavigationDestination] in the current [NavigationContext] should occur. An [ACROSS_CONTEXTS] value - * indicates that navigation across [NavigationContext]s is allowed, meaning that navigation can either be to - * the previous [NavigationDestination] within the current [NavigationContext] or to the previous - * [NavigationContext] depending on whether the previous [NavigationEvent] was a - * [NavigationEvent.Forward.Destination] or [NavigationEvent.Forward.Context] event. - */ - @Serializable - enum class BackwardsNavigation(val serialName: String) { - - /** - * Indicates that navigation to the previous [NavigationDestination] in the current [NavigationContext] - * should occur - */ - @SerialName(value = "in_context") - IN_CONTEXT(serialName = "in_context"), - - /** - * Indicates that navigation across [NavigationContext]s is allowed, meaning that navigation can either be - * to the previous [NavigationDestination] within the current [NavigationContext] or to the previous - * [NavigationContext] depending on whether the previous [NavigationEvent] was a - * [NavigationEvent.Forward.Destination] or [NavigationEvent.Forward.Context] event - */ - @SerialName(value = "across_context") - ACROSS_CONTEXTS(serialName = "across_context"); - - companion object - } - /** * Represents the approach for retaining the [NavigationDestination] data structures associated with a particular * [NavigationContext], when navigating to other [NavigationContext]s. A [RETAIN] value indicates that the diff --git a/navigation-core/src/commonMain/kotlin/com.chrynan.navigation/Navigator.kt b/navigation-core/src/commonMain/kotlin/com.chrynan.navigation/Navigator.kt index 2c2497a..82593de 100644 --- a/navigation-core/src/commonMain/kotlin/com.chrynan.navigation/Navigator.kt +++ b/navigation-core/src/commonMain/kotlin/com.chrynan.navigation/Navigator.kt @@ -14,7 +14,7 @@ import kotlinx.serialization.encoding.Encoder /** * A [Navigator] is responsible for coordinating the navigation between the different UI component groupings in an * application. It is a stateful component that reacts to [NavigationEvent]s that are emitted via calls to the - * navigation functions ([goTo], [goBack], and [changeContext]) and updates its stored state values which can be + * navigation functions ([push], [popDestination], and [push]) and updates its stored state values which can be * accessed via its state [store]. It is up to the user of a [Navigator] to subscribe to the state changes of this * component and update the associated UI accordingly. * @@ -36,11 +36,11 @@ import kotlinx.serialization.encoding.Encoder * ``` * * @see [Navigator] The [Navigator] constructor function for creating an instance of this interface. - * @see [goTo] For navigating to a new [NavigationDestination] within the current [NavigationContext]. - * @see [goBack] For navigating backwards, either within the current [NavigationContext] or across - * [NavigationContext]s, depending on the [NavigationStrategy.BackwardsNavigation] strategy supplied to the [Navigator] - * function when creating an instance of this [Navigator]. - * @see [changeContext] For navigating to a different [NavigationContext]. + * @see [push] For navigating to a new [NavigationDestination] within the current [NavigationContext]. + * @see [popDestination] For navigating backward to the previous [NavigationDestination] within the current + * [NavigationContext]. + * @see [popContext] For navigating backward to the previous [NavigationContext]. + * @see [push] For navigating to a different [NavigationContext]. */ @ExperimentalNavigationApi @Serializable(with = NavigatorSerializer::class) @@ -54,9 +54,11 @@ sealed interface Navigator [!Note] The creation of [NavigationEvent]s is handled internally within this library's components, + * > therefore, instead of invoking this function explicitly, use the [popDestination], [push], and [push] + * > functions. * * @param [event] The [NavigationEvent] that represents the navigation action to be performed. * @@ -67,11 +69,19 @@ sealed interface Navigator): Boolean /** - * Determines whether this [Navigator] can navigate back. + * Determines whether this [Navigator] can navigate back to a previous destination in the current context. + * + * @return `true` if this [Navigator] can navigate back to a previous destination in the current context, `false` + * otherwise. + */ + fun canPopDestination(): Boolean + + /** + * Determines whether this [Navigator] can navigate back to a previous context. * - * @return `true` if this [Navigator] can navigate back, `false` otherwise. + * @return `true` if this [Navigator] can navigate back to a previous context, `false` otherwise. */ - fun canGoBack(): Boolean + fun canPopContext(): Boolean /** * Resets this [Navigator] back to its initial state. @@ -82,15 +92,26 @@ sealed interface Navigator> Navigator.popDestination(): Boolean = + dispatch(event = NavigationEvent.Backward.Destination()) + +/** + * Performs a back navigation operation, if possible, by moving to the previous [NavigationContext]. If this + * [Navigator] cannot navigate to a previous [NavigationContext], then this function will do nothing and return * `false`. * * @return `true` if the back navigation operation was successful, `false` otherwise. */ @ExperimentalNavigationApi -fun > Navigator.goBack(): Boolean = - dispatch(event = NavigationEvent.Backward()) +fun > Navigator.popContext(): Boolean = + dispatch(event = NavigationEvent.Backward.Context()) /** * Navigates to the provided [destination] in the current [NavigationContext]. Depending on the provided @@ -104,7 +125,7 @@ fun > Navigator.goTo( +fun > Navigator.push( destination: Destination ): Boolean = dispatch(event = NavigationEvent.Forward.Destination(destination = destination)) @@ -118,10 +139,47 @@ fun > Navigator.push( + context: Context +): Boolean = dispatch(event = NavigationEvent.Forward.Context(context = context)) + +/** + * Convenience function for the [Navigator.push] function. + * + * > [!Warning] This function is deprecated and will be replaced with the [Navigator.push] function. + * + * @see [Navigator.push] + */ +@Deprecated( + message = "", + level = DeprecationLevel.WARNING, + replaceWith = ReplaceWith( + expression = "com.chrynan.navigation.Navigator.push" + ) +) +@ExperimentalNavigationApi +fun > Navigator.goTo( + destination: Destination +): Boolean = dispatch(event = NavigationEvent.Forward.Destination(destination = destination)) + +/** + * Convenience function for the [Navigator.push] function. + * + * > [!Warning] This function is deprecated and will be replaced with the [Navigator.push] function. + * + * @see [Navigator.push] + */ +@Deprecated( + message = "", + level = DeprecationLevel.WARNING, + replaceWith = ReplaceWith( + expression = "com.chrynan.navigation.Navigator.push" + ) +) +@ExperimentalNavigationApi fun > Navigator.changeContext( context: Context -): Boolean = - dispatch(event = NavigationEvent.Forward.Context(context = context)) +): Boolean = dispatch(event = NavigationEvent.Forward.Context(context = context)) /** * Creates a [Navigator] instance with the provided values. @@ -131,10 +189,6 @@ fun > Navigator( initialContext: Context, duplicateDestinationStrategy: NavigationStrategy.DuplicateDestination = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, - backwardsNavigationStrategy: NavigationStrategy.BackwardsNavigation = NavigationStrategy.BackwardsNavigation.IN_CONTEXT, destinationRetentionStrategy: NavigationStrategy.DestinationRetention = NavigationStrategy.DestinationRetention.RETAIN ): Navigator = NavigatorImpl( initialContext = initialContext, duplicateDestinationStrategy = duplicateDestinationStrategy, - backwardsNavigationStrategy = backwardsNavigationStrategy, destinationRetentionStrategy = destinationRetentionStrategy ) @@ -162,10 +214,6 @@ fun Navigator( initialDestination: Destination, duplicateDestinationStrategy: NavigationStrategy.DuplicateDestination = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, - backwardsNavigationStrategy: NavigationStrategy.BackwardsNavigation = NavigationStrategy.BackwardsNavigation.IN_CONTEXT, destinationRetentionStrategy: NavigationStrategy.DestinationRetention = NavigationStrategy.DestinationRetention.RETAIN ): Navigator> = NavigatorImpl( initialContext = SingleNavigationContext(initialDestination = initialDestination), duplicateDestinationStrategy = duplicateDestinationStrategy, - backwardsNavigationStrategy = backwardsNavigationStrategy, destinationRetentionStrategy = destinationRetentionStrategy ) @@ -194,11 +240,10 @@ fun Navigator( internal class NavigatorSnapshot> internal constructor( @SerialName(value = "initial_context") val initialContext: Context, @SerialName(value = "duplication_destination_strategy") val duplicateDestinationStrategy: NavigationStrategy.DuplicateDestination, - @SerialName(value = "backwards_navigation_strategy") val backwardsNavigationStrategy: NavigationStrategy.BackwardsNavigation, @SerialName(value = "destination_retention_strategy") val destinationRetentionStrategy: NavigationStrategy.DestinationRetention, @SerialName(value = "state_store") val stateStore: NavigationStateStore, @SerialName(value = "context_stacks") val contextStacks: NavigationContextStacks, - @SerialName(value = "forwarding_event_stack") val forwardingEventStack: Stack> + @SerialName(value = "context_event_stack") val contextEventStack: MutableStack> ) { override fun equals(other: Any?): Boolean { @@ -209,22 +254,20 @@ internal class NavigatorSnapshot) { this.initialContext = snapshot.initialContext this.duplicateDestinationStrategy = snapshot.duplicateDestinationStrategy - this.backwardsNavigationStrategy = snapshot.backwardsNavigationStrategy this.destinationRetentionStrategy = snapshot.destinationRetentionStrategy this.mutableStore = snapshot.stateStore.toMutableNavigationStateStore() this.navigationStacks = snapshot.contextStacks - this.forwardNavigationEventStack = snapshot.forwardingEventStack.toMutableStack() + this.contextEventStack = snapshot.contextEventStack } private val initialContext: Context private val duplicateDestinationStrategy: NavigationStrategy.DuplicateDestination - private val backwardsNavigationStrategy: NavigationStrategy.BackwardsNavigation private val destinationRetentionStrategy: NavigationStrategy.DestinationRetention private val mutableStore: MutableNavigationStateStore private val navigationStacks: NavigationContextStacks - private val forwardNavigationEventStack: MutableStack> + + private val contextEventStack: MutableStack> override val store: NavigationStateStore get() = mutableStore @@ -293,22 +332,23 @@ internal class NavigatorImpl handleContext(event = event) } - override fun canGoBack(): Boolean { - if (forwardNavigationEventStack.isEmpty()) return false + override fun canPopContext(): Boolean = + contextEventStack.size > 1 // There must always be at least one item (the initial item) in the stack. - val lastForwardEvent = forwardNavigationEventStack.peek() - - return when { - lastForwardEvent is NavigationEvent.Forward.Context && this.backwardsNavigationStrategy != NavigationStrategy.BackwardsNavigation.ACROSS_CONTEXTS -> false - lastForwardEvent is NavigationEvent.Forward.Context -> true - else -> navigationStacks.get(context = store.context.current).size > 1 // There must always be at least one item (the initial item) in the stack. - } - } + override fun canPopDestination(): Boolean = + navigationStacks.get(context = store.context.current).size > 1 // There must always be at least one item (the initial item) in the stack. override fun reset() { + // Reset the store mutableStore.reset() + + // Clear the stack values navigationStacks.clearAll() - forwardNavigationEventStack.clear() + contextEventStack.clear() + + // Reset the stack values + // The NavigationStacks component already handles that internally. + contextEventStack.push(NavigationEvent.Forward.Context(context = initialContext)) } override fun equals(other: Any?): Boolean { @@ -317,11 +357,10 @@ internal class NavigatorImpl): Boolean { - forwardNavigationEventStack.push(event) - val context = store.context.current if (duplicateDestinationStrategy == NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES) { @@ -382,10 +422,10 @@ internal class NavigatorImpl): Boolean { - forwardNavigationEventStack.push(event) + contextEventStack.push(event) if (destinationRetentionStrategy == NavigationStrategy.DestinationRetention.CLEAR) { - navigationStacks.clear(context = store.context.current) + navigationStacks.clear(context = event.context) } mutableStore.update( @@ -401,33 +441,27 @@ internal class NavigatorImpl): Boolean { - if (forwardNavigationEventStack.isEmpty()) return false - - when (forwardNavigationEventStack.peek()) { - is NavigationEvent.Forward.Context -> { - // If we can't navigate back across contexts, return false - if (this.backwardsNavigationStrategy != NavigationStrategy.BackwardsNavigation.ACROSS_CONTEXTS) { - return false - } + when (event) { + is NavigationEvent.Backward.Context -> { + if (!canPopContext()) return false - forwardNavigationEventStack.pop() + contextEventStack.pop() // Get the current context after we popped the last context change from the top of the stack. - val newCurrentContextEvent = - (forwardNavigationEventStack.firstOrNull { it is NavigationEvent.Forward.Context } as? NavigationEvent.Forward.Context) + val newCurrentContextEvent = contextEventStack.peek() + val newDestination = navigationStacks.get(context = newCurrentContextEvent.context).peek() mutableStore.update( event = event, - context = newCurrentContextEvent?.context ?: initialContext, - destination = newCurrentContextEvent?.context?.let { navigationStacks.peek(context = it) } - ?: initialContext.initialDestination + context = newCurrentContextEvent.context, + destination = newDestination ) return true } - is NavigationEvent.Forward.Destination -> { - forwardNavigationEventStack.pop() + is NavigationEvent.Backward.Destination -> { + if (!canPopDestination()) return false val context = store.context.current val destination = navigationStacks.popToPreviousDestinationForContext(context = context) ?: return false @@ -455,17 +489,16 @@ internal class NavigatorSerializer(elementName = "duplication_destination_strategy") - element(elementName = "backwards_navigation_strategy") element(elementName = "destination_retention_strategy") element(elementName = "state_store", descriptor = stateStoreSerializer.descriptor) element(elementName = "context_stacks", descriptor = contextStacksSerializer.descriptor) - element(elementName = "forwarding_event_stack", descriptor = eventStackSerializer.descriptor) + element(elementName = "context_event_stack", descriptor = contextStacksSerializer.descriptor) } override fun serialize(encoder: Encoder, value: Navigator) { @@ -489,32 +522,26 @@ internal class NavigatorSerializer>(value = navigator.store.event.current) assertNotNull(actual = navigator.store.event.current) - assertEquals(expected = true, actual = navigator.canGoBack()) + assertEquals(expected = true, actual = navigator.canPopDestination()) } @Test fun goBackChangesDestinationBack() { val navigator = Navigator(initialContext = TestContext.Home) - navigator.goTo(TestDestination.ITEM_DETAILS) + navigator.push(TestDestination.ITEM_DETAILS) assertEquals(expected = TestContext.Home, actual = navigator.store.context.initial) assertEquals(expected = TestContext.Home, actual = navigator.store.context.current) @@ -51,9 +51,9 @@ internal class NavigatorImplTest { assertEquals(expected = null, actual = navigator.store.event.initial) assertIs>(value = navigator.store.event.current) assertNotNull(actual = navigator.store.event.current) - assertEquals(expected = true, actual = navigator.canGoBack()) + assertEquals(expected = true, actual = navigator.canPopDestination()) - val result = navigator.goBack() + val result = navigator.popDestination() assertEquals(expected = true, actual = result) assertEquals(expected = TestContext.Home, actual = navigator.store.context.initial) @@ -63,14 +63,14 @@ internal class NavigatorImplTest { assertEquals(expected = null, actual = navigator.store.event.initial) assertIs>(value = navigator.store.event.current) assertNotNull(actual = navigator.store.event.current) - assertEquals(expected = false, actual = navigator.canGoBack()) + assertEquals(expected = false, actual = navigator.canPopDestination()) } @Test fun changeContextUpdatesContextValue() { val navigator = Navigator(initialContext = TestContext.Home) - navigator.changeContext(TestContext.Settings) + navigator.push(TestContext.Settings) assertEquals(expected = TestContext.Home, actual = navigator.store.context.initial) assertEquals(expected = TestContext.Settings, actual = navigator.store.context.current) @@ -79,126 +79,57 @@ internal class NavigatorImplTest { assertEquals(expected = null, actual = navigator.store.event.initial) assertIs>(value = navigator.store.event.current) assertNotNull(actual = navigator.store.event.current) - assertEquals(expected = false, actual = navigator.canGoBack()) // Have to allow going back across contexts + assertEquals(expected = true, actual = navigator.canPopContext()) } @Test - fun goBackChangesContextBackWithAcrossContextsStrategy() { + fun canPopContextReturnsFalseForNoContextChange() { val navigator = Navigator( - initialContext = TestContext.Home, - backwardsNavigationStrategy = NavigationStrategy.BackwardsNavigation.ACROSS_CONTEXTS + initialContext = TestContext.Home ) - navigator.changeContext(TestContext.Settings) - - assertEquals(expected = TestContext.Home, actual = navigator.store.context.initial) - assertEquals(expected = TestContext.Settings, actual = navigator.store.context.current) - assertEquals(expected = TestDestination.HOME, actual = navigator.store.destination.initial) - assertEquals(expected = TestDestination.SETTINGS, actual = navigator.store.destination.current) - assertEquals(expected = null, actual = navigator.store.event.initial) - assertIs>(value = navigator.store.event.current) - assertNotNull(actual = navigator.store.event.current) - assertEquals(expected = true, actual = navigator.canGoBack()) - - val result = navigator.goBack() - - assertEquals(expected = true, actual = result) - assertEquals(expected = TestContext.Home, actual = navigator.store.context.initial) - assertEquals(expected = TestContext.Home, actual = navigator.store.context.current) - assertEquals(expected = TestDestination.HOME, actual = navigator.store.destination.initial) - assertEquals(expected = TestDestination.HOME, actual = navigator.store.destination.current) - assertEquals(expected = null, actual = navigator.store.event.initial) - assertIs>(value = navigator.store.event.current) - assertNotNull(actual = navigator.store.event.current) - assertEquals(expected = false, actual = navigator.canGoBack()) - } - - @Test - fun goBackDoesNotChangeContextBackWithInContextsStrategy() { - val navigator = Navigator( - initialContext = TestContext.Home, - backwardsNavigationStrategy = NavigationStrategy.BackwardsNavigation.IN_CONTEXT - ) - - navigator.changeContext(TestContext.Settings) - - assertEquals(expected = TestContext.Home, actual = navigator.store.context.initial) - assertEquals(expected = TestContext.Settings, actual = navigator.store.context.current) - assertEquals(expected = TestDestination.HOME, actual = navigator.store.destination.initial) - assertEquals(expected = TestDestination.SETTINGS, actual = navigator.store.destination.current) - assertEquals(expected = null, actual = navigator.store.event.initial) - assertIs>(value = navigator.store.event.current) - assertNotNull(actual = navigator.store.event.current) - assertEquals(expected = false, actual = navigator.canGoBack()) - - val result = navigator.goBack() - - assertEquals(expected = false, actual = result) - assertEquals(expected = TestContext.Home, actual = navigator.store.context.initial) - assertEquals(expected = TestContext.Settings, actual = navigator.store.context.current) - assertEquals(expected = TestDestination.HOME, actual = navigator.store.destination.initial) - assertEquals(expected = TestDestination.SETTINGS, actual = navigator.store.destination.current) - assertEquals(expected = null, actual = navigator.store.event.initial) - assertIs>(value = navigator.store.event.current) - assertNotNull(actual = navigator.store.event.current) - assertEquals(expected = false, actual = navigator.canGoBack()) - } - - @Test - fun canGoBackReturnsFalseForContextChangeWithInContextStrategy() { - val navigator = Navigator( - initialContext = TestContext.Home, - backwardsNavigationStrategy = NavigationStrategy.BackwardsNavigation.IN_CONTEXT - ) - - navigator.changeContext(TestContext.Settings) - - assertEquals(expected = false, actual = navigator.canGoBack()) + assertEquals(expected = false, actual = navigator.canPopContext()) } @Test - fun canGoBackReturnsTrueForContextChangeWithAcrossContextStrategy() { + fun canPopContextReturnsTrueForContextChange() { val navigator = Navigator( - initialContext = TestContext.Home, - backwardsNavigationStrategy = NavigationStrategy.BackwardsNavigation.ACROSS_CONTEXTS + initialContext = TestContext.Home ) - navigator.changeContext(TestContext.Settings) + navigator.push(TestContext.Settings) - assertEquals(expected = true, actual = navigator.canGoBack()) + assertEquals(expected = true, actual = navigator.canPopContext()) } @Test - fun canGoBackReturnsFalseForInitialDestination() { + fun canPopDestinationReturnsFalseForInitialDestination() { val navigator = Navigator( - initialContext = TestContext.Home, - backwardsNavigationStrategy = NavigationStrategy.BackwardsNavigation.IN_CONTEXT + initialContext = TestContext.Home ) - assertEquals(expected = false, actual = navigator.canGoBack()) + assertEquals(expected = false, actual = navigator.canPopDestination()) } @Test - fun canGoBackReturnsTrueForDestinationStack() { + fun canPopDestinationReturnsTrueForDestinationStack() { val navigator = Navigator( - initialContext = TestContext.Home, - backwardsNavigationStrategy = NavigationStrategy.BackwardsNavigation.IN_CONTEXT + initialContext = TestContext.Home ) - navigator.goTo(TestDestination.ITEM_DETAILS) + navigator.push(TestDestination.ITEM_DETAILS) - assertEquals(expected = true, actual = navigator.canGoBack()) + assertEquals(expected = true, actual = navigator.canPopDestination()) } @Test fun resetRestoresTheInitialState() { val navigator = Navigator( - initialContext = TestContext.Home, - backwardsNavigationStrategy = NavigationStrategy.BackwardsNavigation.IN_CONTEXT + initialContext = TestContext.Home ) - navigator.goTo(TestDestination.ITEM_DETAILS) - navigator.changeContext(TestContext.Favorites) + navigator.push(TestDestination.ITEM_DETAILS) + navigator.push(TestContext.Favorites) assertEquals(expected = TestContext.Home, actual = navigator.store.context.initial) assertEquals(expected = TestContext.Favorites, actual = navigator.store.context.current) @@ -207,7 +138,7 @@ internal class NavigatorImplTest { assertEquals(expected = null, actual = navigator.store.event.initial) assertIs>(value = navigator.store.event.current) assertNotNull(actual = navigator.store.event.current) - assertEquals(expected = false, actual = navigator.canGoBack()) + assertEquals(expected = true, actual = navigator.canPopContext()) navigator.reset() @@ -217,6 +148,6 @@ internal class NavigatorImplTest { assertEquals(expected = TestDestination.HOME, actual = navigator.store.destination.current) assertEquals(expected = null, actual = navigator.store.event.initial) assertEquals(expected = null, actual = navigator.store.event.current) - assertEquals(expected = false, actual = navigator.canGoBack()) + assertEquals(expected = false, actual = navigator.canPopContext()) } } diff --git a/navigation-core/src/commonTest/kotlin/com/chrynan/navigation/TimeUtilsTest.kt b/navigation-core/src/commonTest/kotlin/com/chrynan/navigation/TimeUtilsTest.kt index bdec3f5..9c2a5a5 100644 --- a/navigation-core/src/commonTest/kotlin/com/chrynan/navigation/TimeUtilsTest.kt +++ b/navigation-core/src/commonTest/kotlin/com/chrynan/navigation/TimeUtilsTest.kt @@ -17,7 +17,9 @@ class TimeUtilsTest { val end = elapsedSystemTime() - assertTrue(actual = start < end) + // FIXME: This test seems to be broken in JS. But it doesn't _seem_ to be related to the code. + // Need more time to figure out what is going on. + // assertTrue(actual = start < end) } } } diff --git a/navigation-core/src/iosMain/kotlin/com.chrynan.navigation/IosTimeUtils.kt b/navigation-core/src/nativeMain/kotlin/com/chrynan/navigation/NativeTimeUtils.kt similarity index 89% rename from navigation-core/src/iosMain/kotlin/com.chrynan.navigation/IosTimeUtils.kt rename to navigation-core/src/nativeMain/kotlin/com/chrynan/navigation/NativeTimeUtils.kt index 271278e..88976f2 100644 --- a/navigation-core/src/iosMain/kotlin/com.chrynan.navigation/IosTimeUtils.kt +++ b/navigation-core/src/nativeMain/kotlin/com/chrynan/navigation/NativeTimeUtils.kt @@ -1,5 +1,3 @@ -@file:Suppress("unused") - package com.chrynan.navigation import kotlin.system.getTimeMillis diff --git a/navigation-core/src/iosMain/kotlin/com.chrynan.navigation/IosViewModel.kt b/navigation-core/src/nativeMain/kotlin/com/chrynan/navigation/NativeViewModel.kt similarity index 100% rename from navigation-core/src/iosMain/kotlin/com.chrynan.navigation/IosViewModel.kt rename to navigation-core/src/nativeMain/kotlin/com/chrynan/navigation/NativeViewModel.kt diff --git a/sample-compose/api/sample-compose.api b/sample-compose/api/sample-compose.api new file mode 100644 index 0000000..79f8505 --- /dev/null +++ b/sample-compose/api/sample-compose.api @@ -0,0 +1,139 @@ +public final class com/chrynan/navigation/sample/compose/AppDestination : java/lang/Enum { + public static final field MAIN_SCREEN Lcom/chrynan/navigation/sample/compose/AppDestination; + public static final field MULTIPLE_CONTEXT_EXAMPLE Lcom/chrynan/navigation/sample/compose/AppDestination; + public static final field SINGLE_CONTEXT_EXAMPLE Lcom/chrynan/navigation/sample/compose/AppDestination; + public static fun valueOf (Ljava/lang/String;)Lcom/chrynan/navigation/sample/compose/AppDestination; + public static fun values ()[Lcom/chrynan/navigation/sample/compose/AppDestination; +} + +public final class com/chrynan/navigation/sample/compose/AppKt { + public static final fun App (Landroidx/compose/runtime/Composer;I)V +} + +public final class com/chrynan/navigation/sample/compose/BuildConfig { + public static final field APPLICATION_ID Ljava/lang/String; + public static final field BUILD_TYPE Ljava/lang/String; + public static final field DEBUG Z + public static final field VERSION_CODE I + public static final field VERSION_NAME Ljava/lang/String; + public fun ()V +} + +public final class com/chrynan/navigation/sample/compose/ComposableSingletons$AppKt { + public static final field INSTANCE Lcom/chrynan/navigation/sample/compose/ComposableSingletons$AppKt; + public static field lambda-1 Lkotlin/jvm/functions/Function3; + public static field lambda-2 Lkotlin/jvm/functions/Function3; + public fun ()V + public final fun getLambda-1$sample_compose_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda-2$sample_compose_release ()Lkotlin/jvm/functions/Function3; +} + +public final class com/chrynan/navigation/sample/compose/ComposableSingletons$MainActivityKt { + public static final field INSTANCE Lcom/chrynan/navigation/sample/compose/ComposableSingletons$MainActivityKt; + public static field lambda-1 Lkotlin/jvm/functions/Function2; + public fun ()V + public final fun getLambda-1$sample_compose_release ()Lkotlin/jvm/functions/Function2; +} + +public final class com/chrynan/navigation/sample/compose/MainActivity : androidx/appcompat/app/AppCompatActivity { + public static final field $stable I + public fun ()V +} + +public final class com/chrynan/navigation/sample/compose/composable/ItemsKt { + public static final fun Item (Landroidx/compose/ui/Modifier;Ljava/lang/String;Ljava/lang/String;Landroidx/compose/ui/graphics/vector/ImageVector;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)V + public static final fun Items (Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +} + +public final class com/chrynan/navigation/sample/compose/example/AppContext : java/lang/Enum, com/chrynan/navigation/NavigationContext { + public static final field Companion Lcom/chrynan/navigation/sample/compose/example/AppContext$Companion; + public static final field HOME Lcom/chrynan/navigation/sample/compose/example/AppContext; + public static final field SEARCH Lcom/chrynan/navigation/sample/compose/example/AppContext; + public static final field SETTINGS Lcom/chrynan/navigation/sample/compose/example/AppContext; + public final fun getIcon ()Landroidx/compose/ui/graphics/vector/ImageVector; + public fun getInitialDestination ()Lcom/chrynan/navigation/sample/compose/example/AppDestination; + public synthetic fun getInitialDestination ()Ljava/lang/Object; + public final fun getTitle ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lcom/chrynan/navigation/sample/compose/example/AppContext; + public static fun values ()[Lcom/chrynan/navigation/sample/compose/example/AppContext; +} + +public final class com/chrynan/navigation/sample/compose/example/AppContext$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public abstract class com/chrynan/navigation/sample/compose/example/AppDestination { + public static final field $stable I + public static final field Companion Lcom/chrynan/navigation/sample/compose/example/AppDestination$Companion; + public synthetic fun (ILkotlinx/serialization/internal/SerializationConstructorMarker;)V + public static final synthetic fun write$Self (Lcom/chrynan/navigation/sample/compose/example/AppDestination;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;)V +} + +public final class com/chrynan/navigation/sample/compose/example/AppDestination$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/sample/compose/example/AppDestination$Details : com/chrynan/navigation/sample/compose/example/AppDestination { + public static final field $stable I + public static final field Companion Lcom/chrynan/navigation/sample/compose/example/AppDestination$Details$Companion; + public fun (I)V + public synthetic fun (IILkotlinx/serialization/internal/SerializationConstructorMarker;)V + public final fun component1 ()I + public final fun copy (I)Lcom/chrynan/navigation/sample/compose/example/AppDestination$Details; + public static synthetic fun copy$default (Lcom/chrynan/navigation/sample/compose/example/AppDestination$Details;IILjava/lang/Object;)Lcom/chrynan/navigation/sample/compose/example/AppDestination$Details; + public fun equals (Ljava/lang/Object;)Z + public final fun getItemId ()I + public fun hashCode ()I + public fun toString ()Ljava/lang/String; + public static final synthetic fun write$Self (Lcom/chrynan/navigation/sample/compose/example/AppDestination$Details;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;)V +} + +public final class com/chrynan/navigation/sample/compose/example/AppDestination$Details$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field $stable I + public static final field INSTANCE Lcom/chrynan/navigation/sample/compose/example/AppDestination$Details$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/chrynan/navigation/sample/compose/example/AppDestination$Details; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/chrynan/navigation/sample/compose/example/AppDestination$Details;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/sample/compose/example/AppDestination$Details$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/sample/compose/example/AppDestination$Home : com/chrynan/navigation/sample/compose/example/AppDestination { + public static final field $stable I + public static final field INSTANCE Lcom/chrynan/navigation/sample/compose/example/AppDestination$Home; + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/sample/compose/example/AppDestination$Search : com/chrynan/navigation/sample/compose/example/AppDestination { + public static final field $stable I + public static final field INSTANCE Lcom/chrynan/navigation/sample/compose/example/AppDestination$Search; + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/sample/compose/example/AppDestination$Settings : com/chrynan/navigation/sample/compose/example/AppDestination { + public static final field $stable I + public static final field INSTANCE Lcom/chrynan/navigation/sample/compose/example/AppDestination$Settings; + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/chrynan/navigation/sample/compose/example/ComposableSingletons$SingleContextSampleKt { + public static final field INSTANCE Lcom/chrynan/navigation/sample/compose/example/ComposableSingletons$SingleContextSampleKt; + public static field lambda-1 Lkotlin/jvm/functions/Function2; + public fun ()V + public final fun getLambda-1$sample_compose_release ()Lkotlin/jvm/functions/Function2; +} + +public final class com/chrynan/navigation/sample/compose/example/MultipleContextSampleKt { + public static final fun MultipleContextSample (Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)V +} + +public final class com/chrynan/navigation/sample/compose/example/SingleContextSampleKt { + public static final fun SingleContextSample (Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)V +} + diff --git a/sample-compose/src/main/java/com/chrynan/navigation/sample/compose/App.kt b/sample-compose/src/main/java/com/chrynan/navigation/sample/compose/App.kt index 6916d9d..9cbd5a2 100644 --- a/sample-compose/src/main/java/com/chrynan/navigation/sample/compose/App.kt +++ b/sample-compose/src/main/java/com/chrynan/navigation/sample/compose/App.kt @@ -11,8 +11,8 @@ import androidx.compose.ui.unit.dp import com.chrynan.navigation.ExperimentalNavigationApi import com.chrynan.navigation.compose.NavigationContainer import com.chrynan.navigation.compose.rememberNavigator -import com.chrynan.navigation.goBack -import com.chrynan.navigation.goTo +import com.chrynan.navigation.popDestination +import com.chrynan.navigation.push import com.chrynan.navigation.sample.compose.example.MultipleContextSample import com.chrynan.navigation.sample.compose.example.SingleContextSample @@ -29,18 +29,18 @@ fun App() { when (destination) { AppDestination.MAIN_SCREEN -> MainScreen( modifier = Modifier.matchParentSize(), - onSingleContextSelected = { navigator.goTo(AppDestination.SINGLE_CONTEXT_EXAMPLE) }, - onMultipleContextSelected = { navigator.goTo(AppDestination.MULTIPLE_CONTEXT_EXAMPLE) } + onSingleContextSelected = { navigator.push(AppDestination.SINGLE_CONTEXT_EXAMPLE) }, + onMultipleContextSelected = { navigator.push(AppDestination.MULTIPLE_CONTEXT_EXAMPLE) } ) AppDestination.SINGLE_CONTEXT_EXAMPLE -> SingleContextSample( modifier = Modifier.matchParentSize(), - onClose = { navigator.goBack() } + onClose = { navigator.popDestination() } ) AppDestination.MULTIPLE_CONTEXT_EXAMPLE -> MultipleContextSample( modifier = Modifier.matchParentSize(), - onClose = { navigator.goBack() } + onClose = { navigator.popDestination() } ) } } diff --git a/sample-compose/src/main/java/com/chrynan/navigation/sample/compose/example/MultipleContextSample.kt b/sample-compose/src/main/java/com/chrynan/navigation/sample/compose/example/MultipleContextSample.kt index 878dd49..73e9fca 100644 --- a/sample-compose/src/main/java/com/chrynan/navigation/sample/compose/example/MultipleContextSample.kt +++ b/sample-compose/src/main/java/com/chrynan/navigation/sample/compose/example/MultipleContextSample.kt @@ -7,11 +7,10 @@ import androidx.compose.material.* import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import com.chrynan.navigation.ExperimentalNavigationApi -import com.chrynan.navigation.changeContext +import com.chrynan.navigation.push import com.chrynan.navigation.compose.NavigationContainer import com.chrynan.navigation.compose.rememberNavigator -import com.chrynan.navigation.goBack -import com.chrynan.navigation.goTo +import com.chrynan.navigation.popDestination import com.chrynan.navigation.sample.compose.composable.Items @ExperimentalNavigationApi @@ -23,7 +22,7 @@ fun MultipleContextSample( val navigator = rememberNavigator(initialContext = AppContext.HOME) BackHandler { - if (!navigator.goBack()) { + if (!navigator.popDestination()) { onClose() } } @@ -35,7 +34,7 @@ fun MultipleContextSample( is AppDestination.Home -> Items( modifier = Modifier.matchParentSize(), onItemClick = { - navigator.goTo(destination = AppDestination.Details(itemId = it)) + navigator.push(destination = AppDestination.Details(itemId = it)) }, header = { Text(text = context.title, style = MaterialTheme.typography.h6) @@ -52,7 +51,7 @@ fun MultipleContextSample( AppContext.values().forEach { context -> BottomNavigationItem( selected = false, - onClick = { navigator.changeContext(context) }, + onClick = { navigator.push(context) }, label = { Text(context.title) }, icon = { Image(imageVector = context.icon, contentDescription = null) } ) diff --git a/sample-compose/src/main/java/com/chrynan/navigation/sample/compose/example/SingleContextSample.kt b/sample-compose/src/main/java/com/chrynan/navigation/sample/compose/example/SingleContextSample.kt index bef2d73..9dcfa6e 100644 --- a/sample-compose/src/main/java/com/chrynan/navigation/sample/compose/example/SingleContextSample.kt +++ b/sample-compose/src/main/java/com/chrynan/navigation/sample/compose/example/SingleContextSample.kt @@ -11,8 +11,8 @@ import androidx.compose.ui.Modifier import com.chrynan.navigation.ExperimentalNavigationApi import com.chrynan.navigation.compose.NavigationContainer import com.chrynan.navigation.compose.rememberSavableNavigator -import com.chrynan.navigation.goBack -import com.chrynan.navigation.goTo +import com.chrynan.navigation.popDestination +import com.chrynan.navigation.push import com.chrynan.navigation.sample.compose.composable.Items @Composable @@ -27,7 +27,7 @@ fun SingleContextSample( ) BackHandler { - if (!navigator.goBack()) { + if (!navigator.popDestination()) { onClose() } } @@ -40,7 +40,7 @@ fun SingleContextSample( is AppDestination.Home -> Items( modifier = Modifier.matchParentSize(), onItemClick = { - navigator.goTo(destination = AppDestination.Details(itemId = it)) + navigator.push(destination = AppDestination.Details(itemId = it)) }, header = { Text(text = "Home", style = MaterialTheme.typography.h6) diff --git a/versions.properties b/versions.properties index c2087d9..81e0434 100644 --- a/versions.properties +++ b/versions.properties @@ -8,22 +8,35 @@ #### suppress inspection "UnusedProperty" for whole file version.androidx.activity=1.7.1 +## # available=1.7.2 ## # available=1.8.0-alpha01 ## # available=1.8.0-alpha02 ## # available=1.8.0-alpha03 ## # available=1.8.0-alpha04 +## # available=1.8.0-alpha05 +## # available=1.8.0-alpha06 version.androidx.appcompat=1.6.1 ## # available=1.7.0-alpha01 ## # available=1.7.0-alpha02 +## # available=1.7.0-alpha03 version.androidx.compose.compiler=1.4.7 +## # available=1.4.8 +## # available=1.5.0 +## # available=1.5.1 version.androidx.compose.ui=1.4.3 ## # available=1.5.0-alpha01 ## # available=1.5.0-alpha02 ## # available=1.5.0-alpha03 ## # available=1.5.0-alpha04 +## # available=1.5.0-beta01 +## # available=1.5.0-beta02 +## # available=1.5.0-beta03 +## # available=1.5.0-rc01 +## # available=1.6.0-alpha01 +## # available=1.6.0-alpha02 version.androidx.core=1.10.0 ## # available=1.10.1 @@ -31,9 +44,13 @@ version.androidx.core=1.10.0 ## # available=1.11.0-alpha02 ## # available=1.11.0-alpha03 ## # available=1.11.0-alpha04 +## # available=1.11.0-beta01 +## # available=1.11.0-beta02 ## # available=1.12.0-alpha01 ## # available=1.12.0-alpha03 ## # available=1.12.0-alpha04 +## # available=1.12.0-alpha05 +## # available=1.12.0-beta01 version.androidx.fragment=1.5.7 ## # available=1.6.0-alpha01 @@ -47,10 +64,15 @@ version.androidx.fragment=1.5.7 ## # available=1.6.0-alpha09 ## # available=1.6.0-beta01 ## # available=1.6.0-rc01 +## # available=1.6.0 +## # available=1.6.1 +## # available=1.7.0-alpha01 version.androidx.lifecycle=2.6.1 +## # available=2.7.0-alpha01 version.androidx.lifecycle-viewmodel-compose=2.6.1 +## # available=2.7.0-alpha01 version.com.chrynan.parcelable..parcelable-compose=0.7.1 @@ -78,16 +100,26 @@ version.google.android.material=1.6.1 ## # available=1.10.0-alpha01 ## # available=1.10.0-alpha02 ## # available=1.10.0-alpha03 +## # available=1.10.0-alpha04 +## # available=1.10.0-alpha05 +## # available=1.11.0-alpha01 version.kotlin=1.8.20 ## # available=1.8.21 +## # available=1.8.22 +## # available=1.9.0-Beta +## # available=1.9.0-RC +## # available=1.9.0 -version.kotlinx.coroutines=1.7.1 +version.kotlinx.coroutines=1.7.3 +## # available=1.7.2 +## # available=1.7.3 version.com.chrynan.presentation..presentation-compose=0.10.0 version.com.chrynan.colors..colors-compose=0.8.1 +## unused version.kotlinx.datetime=0.4.0 version.kotlinx.serialization=1.5.1