Skip to content

Commit

Permalink
Added key argument to Pages
Browse files Browse the repository at this point in the history
  • Loading branch information
arkivanov committed Sep 30, 2023
1 parent 0f18291 commit ac55808
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ public final class com/arkivanov/decompose/extensions/compose/jetbrains/pages/Co
}

public final class com/arkivanov/decompose/extensions/compose/jetbrains/pages/PagesKt {
public static final fun Pages (Landroidx/compose/runtime/State;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Lcom/arkivanov/decompose/extensions/compose/jetbrains/pages/PagesScrollAnimation;Lkotlin/jvm/functions/Function6;Lkotlin/jvm/functions/Function5;Landroidx/compose/runtime/Composer;II)V
public static final fun Pages (Lcom/arkivanov/decompose/value/Value;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Lcom/arkivanov/decompose/extensions/compose/jetbrains/pages/PagesScrollAnimation;Lkotlin/jvm/functions/Function6;Lkotlin/jvm/functions/Function5;Landroidx/compose/runtime/Composer;II)V
public static final fun Pages (Landroidx/compose/runtime/State;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Lcom/arkivanov/decompose/extensions/compose/jetbrains/pages/PagesScrollAnimation;Lkotlin/jvm/functions/Function6;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function5;Landroidx/compose/runtime/Composer;II)V
public static final fun Pages (Lcom/arkivanov/decompose/value/Value;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Lcom/arkivanov/decompose/extensions/compose/jetbrains/pages/PagesScrollAnimation;Lkotlin/jvm/functions/Function6;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function5;Landroidx/compose/runtime/Composer;II)V
public static final fun defaultHorizontalPager ()Lkotlin/jvm/functions/Function6;
public static final fun defaultVerticalPager ()Lkotlin/jvm/functions/Function6;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ public final class com/arkivanov/decompose/extensions/compose/jetbrains/pages/Co
}

public final class com/arkivanov/decompose/extensions/compose/jetbrains/pages/PagesKt {
public static final fun Pages (Landroidx/compose/runtime/State;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Lcom/arkivanov/decompose/extensions/compose/jetbrains/pages/PagesScrollAnimation;Lkotlin/jvm/functions/Function6;Lkotlin/jvm/functions/Function5;Landroidx/compose/runtime/Composer;II)V
public static final fun Pages (Lcom/arkivanov/decompose/value/Value;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Lcom/arkivanov/decompose/extensions/compose/jetbrains/pages/PagesScrollAnimation;Lkotlin/jvm/functions/Function6;Lkotlin/jvm/functions/Function5;Landroidx/compose/runtime/Composer;II)V
public static final fun Pages (Landroidx/compose/runtime/State;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Lcom/arkivanov/decompose/extensions/compose/jetbrains/pages/PagesScrollAnimation;Lkotlin/jvm/functions/Function6;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function5;Landroidx/compose/runtime/Composer;II)V
public static final fun Pages (Lcom/arkivanov/decompose/value/Value;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Lcom/arkivanov/decompose/extensions/compose/jetbrains/pages/PagesScrollAnimation;Lkotlin/jvm/functions/Function6;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function5;Landroidx/compose/runtime/Composer;II)V
public static final fun defaultHorizontalPager ()Lkotlin/jvm/functions/Function6;
public static final fun defaultVerticalPager ()Lkotlin/jvm/functions/Function6;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.State
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import com.arkivanov.decompose.Child
import com.arkivanov.decompose.ExperimentalDecomposeApi
import com.arkivanov.decompose.InternalDecomposeApi
import com.arkivanov.decompose.extensions.compose.jetbrains.subscribeAsState
import com.arkivanov.decompose.hashString
import com.arkivanov.decompose.router.pages.ChildPages
Expand All @@ -21,15 +23,17 @@ import com.arkivanov.decompose.value.Value
/**
* Displays a list of pages represented by [ChildPages].
*/
@OptIn(InternalDecomposeApi::class)
@ExperimentalFoundationApi
@ExperimentalDecomposeApi
@Composable
fun <T : Any> Pages(
pages: Value<ChildPages<*, T>>,
fun <C : Any, T : Any> Pages(
pages: Value<ChildPages<C, T>>,
onPageSelected: (index: Int) -> Unit,
modifier: Modifier = Modifier,
scrollAnimation: PagesScrollAnimation = PagesScrollAnimation.Disabled,
pager: Pager = defaultHorizontalPager(),
key: (Child<C, T>) -> Any = { it.configuration.hashString() },
pageContent: @Composable PagerScope.(index: Int, page: T) -> Unit,
) {
val state = pages.subscribeAsState()
Expand All @@ -40,25 +44,28 @@ fun <T : Any> Pages(
modifier = modifier,
scrollAnimation = scrollAnimation,
pager = pager,
key = key,
pageContent = pageContent,
)
}

/**
* Displays a list of pages represented by [ChildPages].
*/
@OptIn(InternalDecomposeApi::class)
@ExperimentalFoundationApi
@ExperimentalDecomposeApi
@Composable
fun <T : Any> Pages(
pages: State<ChildPages<*, T>>,
fun <C : Any, T : Any> Pages(
pages: State<ChildPages<C, T>>,
onPageSelected: (index: Int) -> Unit,
modifier: Modifier = Modifier,
scrollAnimation: PagesScrollAnimation = PagesScrollAnimation.Disabled,
pager: Pager = defaultHorizontalPager(),
key: (Child<C, T>) -> Any = { it.configuration.hashString() },
pageContent: @Composable PagerScope.(index: Int, page: T) -> Unit,
) {
val childPages by pages
val childPages by pages
val selectedIndex = childPages.selectedIndex
val state = rememberPagerState(
initialPage = selectedIndex,
Expand All @@ -83,7 +90,7 @@ fun <T : Any> Pages(
pager(
modifier,
state,
{ childPages.items[it].configuration.hashString() },
{ key(childPages.items[it]) },
) { pageIndex ->
childPages.items[pageIndex].instance?.also { page ->
pageContent(pageIndex, page)
Expand Down
4 changes: 2 additions & 2 deletions extensions-compose-jetpack/api/extensions-compose-jetpack.api
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ public final class com/arkivanov/decompose/extensions/compose/jetpack/pages/Comp
}

public final class com/arkivanov/decompose/extensions/compose/jetpack/pages/PagesKt {
public static final fun Pages (Landroidx/compose/runtime/State;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Lcom/arkivanov/decompose/extensions/compose/jetpack/pages/PagesScrollAnimation;Lkotlin/jvm/functions/Function6;Lkotlin/jvm/functions/Function5;Landroidx/compose/runtime/Composer;II)V
public static final fun Pages (Lcom/arkivanov/decompose/value/Value;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Lcom/arkivanov/decompose/extensions/compose/jetpack/pages/PagesScrollAnimation;Lkotlin/jvm/functions/Function6;Lkotlin/jvm/functions/Function5;Landroidx/compose/runtime/Composer;II)V
public static final fun Pages (Landroidx/compose/runtime/State;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Lcom/arkivanov/decompose/extensions/compose/jetpack/pages/PagesScrollAnimation;Lkotlin/jvm/functions/Function6;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function5;Landroidx/compose/runtime/Composer;II)V
public static final fun Pages (Lcom/arkivanov/decompose/value/Value;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Lcom/arkivanov/decompose/extensions/compose/jetpack/pages/PagesScrollAnimation;Lkotlin/jvm/functions/Function6;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function5;Landroidx/compose/runtime/Composer;II)V
public static final fun defaultHorizontalPager ()Lkotlin/jvm/functions/Function6;
public static final fun defaultVerticalPager ()Lkotlin/jvm/functions/Function6;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.State
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import com.arkivanov.decompose.Child
import com.arkivanov.decompose.ExperimentalDecomposeApi
import com.arkivanov.decompose.InternalDecomposeApi
import com.arkivanov.decompose.extensions.compose.jetpack.subscribeAsState
Expand All @@ -22,15 +23,17 @@ import com.arkivanov.decompose.value.Value
/**
* Displays a list of pages represented by [ChildPages].
*/
@OptIn(InternalDecomposeApi::class)
@ExperimentalFoundationApi
@ExperimentalDecomposeApi
@Composable
fun <T : Any> Pages(
pages: Value<ChildPages<*, T>>,
fun <C : Any, T : Any> Pages(
pages: Value<ChildPages<C, T>>,
onPageSelected: (index: Int) -> Unit,
modifier: Modifier = Modifier,
scrollAnimation: PagesScrollAnimation = PagesScrollAnimation.Disabled,
pager: Pager = defaultHorizontalPager(),
key: (Child<C, T>) -> Any = { it.configuration.hashString() },
pageContent: @Composable PagerScope.(index: Int, page: T) -> Unit,
) {
val state = pages.subscribeAsState()
Expand All @@ -41,6 +44,7 @@ fun <T : Any> Pages(
modifier = modifier,
scrollAnimation = scrollAnimation,
pager = pager,
key = key,
pageContent = pageContent,
)
}
Expand All @@ -52,12 +56,13 @@ fun <T : Any> Pages(
@ExperimentalFoundationApi
@ExperimentalDecomposeApi
@Composable
fun <T : Any> Pages(
pages: State<ChildPages<*, T>>,
fun <C : Any, T : Any> Pages(
pages: State<ChildPages<C, T>>,
onPageSelected: (index: Int) -> Unit,
modifier: Modifier = Modifier,
scrollAnimation: PagesScrollAnimation = PagesScrollAnimation.Disabled,
pager: Pager = defaultHorizontalPager(),
key: (Child<C, T>) -> Any = { it.configuration.hashString() },
pageContent: @Composable PagerScope.(index: Int, page: T) -> Unit,
) {
val childPages by pages
Expand Down Expand Up @@ -85,7 +90,7 @@ fun <T : Any> Pages(
pager(
modifier,
state,
{ childPages.items[it].configuration.hashString() },
{ key(childPages.items[it]) },
) { pageIndex ->
childPages.items[pageIndex].instance?.also { page ->
pageContent(pageIndex, page)
Expand Down

0 comments on commit ac55808

Please sign in to comment.