Skip to content

Commit

Permalink
Adding the new parameter to all transitions apis
Browse files Browse the repository at this point in the history
  • Loading branch information
DevSrSouza committed Jun 4, 2024
1 parent fa93d7c commit c68e78e
Show file tree
Hide file tree
Showing 5 changed files with 90 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import androidx.compose.animation.fadeOut
import androidx.compose.animation.togetherWith
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import cafe.adriel.voyager.core.annotation.ExperimentalVoyagerApi
import cafe.adriel.voyager.navigator.Navigator

@Composable
Expand All @@ -16,10 +17,29 @@ public fun FadeTransition(
modifier: Modifier = Modifier,
animationSpec: FiniteAnimationSpec<Float> = spring(stiffness = Spring.StiffnessMediumLow),
content: ScreenTransitionContent = { it.Content() }
) {
FadeTransition(
navigator = navigator,
modifier = modifier,
disposeScreenAfterTransitionEnd = false,
animationSpec = animationSpec,
content = content,
)
}

@ExperimentalVoyagerApi
@Composable
public fun FadeTransition(
navigator: Navigator,
modifier: Modifier = Modifier,
animationSpec: FiniteAnimationSpec<Float> = spring(stiffness = Spring.StiffnessMediumLow),
disposeScreenAfterTransitionEnd: Boolean = false,
content: ScreenTransitionContent = { it.Content() }
) {
ScreenTransition(
navigator = navigator,
modifier = modifier,
disposeScreenAfterTransitionEnd = disposeScreenAfterTransitionEnd,
content = content,
transition = { fadeIn(animationSpec = animationSpec) togetherWith fadeOut(animationSpec = animationSpec) }
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import androidx.compose.animation.scaleOut
import androidx.compose.animation.togetherWith
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import cafe.adriel.voyager.core.annotation.ExperimentalVoyagerApi
import cafe.adriel.voyager.core.stack.StackEvent
import cafe.adriel.voyager.navigator.Navigator

Expand All @@ -20,10 +21,29 @@ public fun ScaleTransition(
modifier: Modifier = Modifier,
animationSpec: FiniteAnimationSpec<Float> = spring(stiffness = Spring.StiffnessMediumLow),
content: ScreenTransitionContent = { it.Content() }
) {
ScaleTransition(
navigator = navigator,
modifier = modifier,
animationSpec = animationSpec,
disposeScreenAfterTransitionEnd = false,
content = content,
)
}

@ExperimentalVoyagerApi
@Composable
public fun ScaleTransition(
navigator: Navigator,
modifier: Modifier = Modifier,
animationSpec: FiniteAnimationSpec<Float> = spring(stiffness = Spring.StiffnessMediumLow),
disposeScreenAfterTransitionEnd: Boolean = false,
content: ScreenTransitionContent = { it.Content() }
) {
ScreenTransition(
navigator = navigator,
modifier = modifier,
disposeScreenAfterTransitionEnd = disposeScreenAfterTransitionEnd,
content = content,
transition = {
val (initialScale, targetScale) = when (navigator.lastEvent) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,17 +40,20 @@ public interface ScreenTransition {

public typealias ScreenTransitionContent = @Composable AnimatedVisibilityScope.(Screen) -> Unit

@ExperimentalVoyagerApi
@Composable
public fun ScreenTransition(
navigator: Navigator,
enterTransition: AnimatedContentTransitionScope<Screen>.() -> ContentTransform,
exitTransition: AnimatedContentTransitionScope<Screen>.() -> ContentTransform,
modifier: Modifier = Modifier,
disposeScreenAfterTransitionEnd: Boolean = false,
content: ScreenTransitionContent = { it.Content() }
) {
ScreenTransition(
navigator = navigator,
modifier = modifier,
disposeScreenAfterTransitionEnd = disposeScreenAfterTransitionEnd,
content = content,
transition = {
when (navigator.lastEvent) {
Expand All @@ -61,12 +64,30 @@ public fun ScreenTransition(
)
}

@Composable
public fun ScreenTransition(
navigator: Navigator,
enterTransition: AnimatedContentTransitionScope<Screen>.() -> ContentTransform,
exitTransition: AnimatedContentTransitionScope<Screen>.() -> ContentTransform,
modifier: Modifier = Modifier,
content: ScreenTransitionContent = { it.Content() }
) {
ScreenTransition(
navigator = navigator,
enterTransition = enterTransition,
exitTransition = exitTransition,
modifier = modifier,
content = content,
)
}

@ExperimentalVoyagerApi
@Composable
public fun ScreenTransition(
navigator: Navigator,
defaultTransition: ScreenTransition,
modifier: Modifier = Modifier,
disposeScreenAfterTransitionEnd: Boolean = false,
content: ScreenTransitionContent = { it.Content() }
) {
ScreenTransition(
Expand All @@ -77,7 +98,8 @@ public fun ScreenTransition(
enter togetherWith exit
},
modifier = modifier,
content = content
disposeScreenAfterTransitionEnd = disposeScreenAfterTransitionEnd,
content = content,
)
}

Expand Down Expand Up @@ -145,6 +167,7 @@ public fun ScreenTransition(
}
}
}

navigator.saveableState("transition", screen) {
content(screen)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import androidx.compose.animation.togetherWith
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.IntOffset
import cafe.adriel.voyager.core.annotation.ExperimentalVoyagerApi
import cafe.adriel.voyager.core.stack.StackEvent
import cafe.adriel.voyager.navigator.Navigator

Expand All @@ -25,10 +26,34 @@ public fun SlideTransition(
visibilityThreshold = IntOffset.VisibilityThreshold
),
content: ScreenTransitionContent = { it.Content() }
) {
SlideTransition(
navigator = navigator,
modifier = modifier,
orientation = orientation,
animationSpec = animationSpec,
disposeScreenAfterTransitionEnd = false,
content = content,
)
}

@ExperimentalVoyagerApi
@Composable
public fun SlideTransition(
navigator: Navigator,
modifier: Modifier = Modifier,
orientation: SlideOrientation = SlideOrientation.Horizontal,
animationSpec: FiniteAnimationSpec<IntOffset> = spring(
stiffness = Spring.StiffnessMediumLow,
visibilityThreshold = IntOffset.VisibilityThreshold
),
disposeScreenAfterTransitionEnd: Boolean = false,
content: ScreenTransitionContent = { it.Content() }
) {
ScreenTransition(
navigator = navigator,
modifier = modifier,
disposeScreenAfterTransitionEnd = disposeScreenAfterTransitionEnd,
content = content,
transition = {
val (initialOffset, targetOffset) = when (navigator.lastEvent) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,7 @@ import androidx.compose.runtime.remember

@Composable
internal fun <T> rememberRef(): MutableState<T?> {
// for some reason it always recreated the value with vararg keys,
// leaving out the keys as a parameter for remember for now
return remember() {
return remember {
object: MutableState<T?> {
override var value: T? = null

Expand All @@ -27,7 +25,6 @@ internal fun <T> rememberPrevious(
): T? {
val ref = rememberRef<T>()

// launched after render, so the current render will have the old value anyway
SideEffect {
if (shouldUpdate(ref.value, current)) {
ref.value = current
Expand Down

0 comments on commit c68e78e

Please sign in to comment.