From 7d1d9ae44dbb2017a56eb5125e62634a2da08e5a Mon Sep 17 00:00:00 2001 From: Adetunji Dahunsi Date: Tue, 8 Oct 2024 08:02:50 -0400 Subject: [PATCH 1/4] Three pane adaptatio for material three pane scaffold --- .../java/com/tunjid/tyler/MainActivity.kt | 4 ++-- .../demo/common/ui/{App.kt => DemoApp.kt} | 20 +++++++----------- sample/common/src/iosMain/kotlin/main.ios.kt | 4 ++-- sample/desktop/.gitignore | 1 + .../jvm/main/META-INF/desktop.kotlin_module | Bin 51 -> 0 bytes .../jvm/main/com/tunjid/demo/MainKt.class | Bin 849 -> 0 bytes .../caches-jvm/inputs/source-to-output.tab | Bin 4096 -> 0 bytes .../inputs/source-to-output.tab.keystream | Bin 4096 -> 0 bytes .../inputs/source-to-output.tab.keystream.len | Bin 8 -> 0 bytes .../inputs/source-to-output.tab.len | Bin 8 -> 0 bytes .../inputs/source-to-output.tab.values.at | Bin 1118 -> 0 bytes .../caches-jvm/inputs/source-to-output.tab_i | Bin 32768 -> 0 bytes .../inputs/source-to-output.tab_i.len | Bin 8 -> 0 bytes .../jvm/kotlin/internal-name-to-source.tab | Bin 4096 -> 0 bytes .../internal-name-to-source.tab.keystream | Bin 4096 -> 0 bytes .../internal-name-to-source.tab.keystream.len | Bin 8 -> 0 bytes .../kotlin/internal-name-to-source.tab.len | Bin 8 -> 0 bytes .../internal-name-to-source.tab.values.at | Bin 769 -> 0 bytes .../jvm/kotlin/internal-name-to-source.tab_i | Bin 32768 -> 0 bytes .../kotlin/internal-name-to-source.tab_i.len | Bin 8 -> 0 bytes .../caches-jvm/jvm/kotlin/package-parts.tab | Bin 4096 -> 0 bytes .../jvm/kotlin/package-parts.tab.keystream | Bin 4096 -> 0 bytes .../kotlin/package-parts.tab.keystream.len | Bin 8 -> 0 bytes .../jvm/kotlin/package-parts.tab.len | Bin 8 -> 0 bytes .../jvm/kotlin/package-parts.tab.values.at | Bin 52 -> 0 bytes .../caches-jvm/jvm/kotlin/package-parts.tab_i | Bin 32768 -> 0 bytes .../jvm/kotlin/package-parts.tab_i.len | Bin 8 -> 0 bytes .../cacheable/caches-jvm/jvm/kotlin/proto.tab | Bin 4096 -> 0 bytes .../caches-jvm/jvm/kotlin/proto.tab.keystream | Bin 4096 -> 0 bytes .../jvm/kotlin/proto.tab.keystream.len | Bin 8 -> 0 bytes .../caches-jvm/jvm/kotlin/proto.tab.len | Bin 8 -> 0 bytes .../caches-jvm/jvm/kotlin/proto.tab.values.at | Bin 159 -> 0 bytes .../caches-jvm/jvm/kotlin/proto.tab_i | Bin 32768 -> 0 bytes .../caches-jvm/jvm/kotlin/proto.tab_i.len | Bin 8 -> 0 bytes .../jvm/kotlin/source-to-classes.tab | Bin 4096 -> 0 bytes .../kotlin/source-to-classes.tab.keystream | Bin 4096 -> 0 bytes .../source-to-classes.tab.keystream.len | Bin 8 -> 0 bytes .../jvm/kotlin/source-to-classes.tab.len | Bin 8 -> 0 bytes .../kotlin/source-to-classes.tab.values.at | Bin 678 -> 0 bytes .../jvm/kotlin/source-to-classes.tab_i | Bin 32768 -> 0 bytes .../jvm/kotlin/source-to-classes.tab_i.len | Bin 8 -> 0 bytes .../cacheable/caches-jvm/lookups/counters.tab | 2 -- .../caches-jvm/lookups/file-to-id.tab | Bin 4096 -> 0 bytes .../lookups/file-to-id.tab.keystream | Bin 4096 -> 0 bytes .../lookups/file-to-id.tab.keystream.len | Bin 8 -> 0 bytes .../caches-jvm/lookups/file-to-id.tab.len | Bin 8 -> 0 bytes .../lookups/file-to-id.tab.values.at | Bin 55 -> 0 bytes .../caches-jvm/lookups/file-to-id.tab_i | Bin 32768 -> 0 bytes .../caches-jvm/lookups/file-to-id.tab_i.len | Bin 8 -> 0 bytes .../caches-jvm/lookups/id-to-file.tab | Bin 4096 -> 0 bytes .../lookups/id-to-file.tab.keystream | Bin 4096 -> 0 bytes .../lookups/id-to-file.tab.keystream.len | Bin 8 -> 0 bytes .../caches-jvm/lookups/id-to-file.tab.len | Bin 8 -> 0 bytes .../lookups/id-to-file.tab.values.at | Bin 109 -> 0 bytes .../caches-jvm/lookups/id-to-file.tab_i.len | Bin 8 -> 0 bytes .../cacheable/caches-jvm/lookups/lookups.tab | Bin 4096 -> 0 bytes .../caches-jvm/lookups/lookups.tab.keystream | Bin 4096 -> 0 bytes .../lookups/lookups.tab.keystream.len | Bin 8 -> 0 bytes .../caches-jvm/lookups/lookups.tab.len | Bin 8 -> 0 bytes .../caches-jvm/lookups/lookups.tab.values.at | Bin 229 -> 0 bytes .../caches-jvm/lookups/lookups.tab_i | Bin 32768 -> 0 bytes .../caches-jvm/lookups/lookups.tab_i.len | Bin 8 -> 0 bytes .../compileKotlinJvm/cacheable/last-build.bin | Bin 18 -> 0 bytes .../shrunk-classpath-snapshot.bin | Bin 4338 -> 0 bytes .../local-state/build-history.bin | Bin 31 -> 0 bytes sample/desktop/build/libs/desktop-jvm.jar | Bin 8855 -> 0 bytes sample/desktop/build/tmp/jvmJar/MANIFEST.MF | 2 -- .../jvmMain/kotlin/com/tunjid/demo/Main.kt | 4 ++-- 68 files changed, 15 insertions(+), 22 deletions(-) rename sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/{App.kt => DemoApp.kt} (93%) create mode 100644 sample/desktop/.gitignore delete mode 100644 sample/desktop/build/classes/kotlin/jvm/main/META-INF/desktop.kotlin_module delete mode 100644 sample/desktop/build/classes/kotlin/jvm/main/com/tunjid/demo/MainKt.class delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/inputs/source-to-output.tab delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/inputs/source-to-output.tab.keystream delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/inputs/source-to-output.tab.len delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/inputs/source-to-output.tab.values.at delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/inputs/source-to-output.tab_i delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/inputs/source-to-output.tab_i.len delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/package-parts.tab delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i.len delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/proto.tab delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/proto.tab.len delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/proto.tab_i delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/counters.tab delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/file-to-id.tab delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/file-to-id.tab.keystream delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/file-to-id.tab.len delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/file-to-id.tab.values.at delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/file-to-id.tab_i delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/file-to-id.tab_i.len delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/id-to-file.tab delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/id-to-file.tab.keystream delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/id-to-file.tab.len delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/id-to-file.tab.values.at delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/id-to-file.tab_i.len delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/lookups.tab delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/lookups.tab.keystream delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/lookups.tab.keystream.len delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/lookups.tab.len delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/lookups.tab.values.at delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/lookups.tab_i delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/lookups.tab_i.len delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/cacheable/last-build.bin delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/classpath-snapshot/shrunk-classpath-snapshot.bin delete mode 100644 sample/desktop/build/kotlin/compileKotlinJvm/local-state/build-history.bin delete mode 100644 sample/desktop/build/libs/desktop-jvm.jar delete mode 100644 sample/desktop/build/tmp/jvmJar/MANIFEST.MF diff --git a/sample/android/src/main/java/com/tunjid/tyler/MainActivity.kt b/sample/android/src/main/java/com/tunjid/tyler/MainActivity.kt index 807c1b6..fe88935 100644 --- a/sample/android/src/main/java/com/tunjid/tyler/MainActivity.kt +++ b/sample/android/src/main/java/com/tunjid/tyler/MainActivity.kt @@ -21,7 +21,7 @@ import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity import com.tunjid.demo.common.ui.AppTheme -import com.tunjid.demo.common.ui.App +import com.tunjid.demo.common.ui.SampleApp class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -29,7 +29,7 @@ class MainActivity : AppCompatActivity() { enableEdgeToEdge() setContent { AppTheme { - App() + SampleApp() } } } diff --git a/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/App.kt b/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/DemoApp.kt similarity index 93% rename from sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/App.kt rename to sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/DemoApp.kt index 057f3f3..d367e66 100644 --- a/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/App.kt +++ b/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/DemoApp.kt @@ -65,19 +65,14 @@ import kotlin.math.roundToInt @OptIn(ExperimentalSharedTransitionApi::class, ExperimentalMaterial3AdaptiveApi::class) @Composable -fun App( +fun SampleApp( appState: SampleAppState = remember { SampleAppState() }, ) { NavigationSuiteScaffold( navigationSuiteItems = { SampleDestination.NavTabs.entries.forEach { item( - icon = { - Icon( - it.icon, - contentDescription = it.title - ) - }, + icon = { Icon(it.icon, contentDescription = it.title) }, label = { Text(it.title) }, selected = it == appState.currentNavigation.current, onClick = { } @@ -109,7 +104,6 @@ fun App( .onSizeChanged { windowWidthDp.value = (it.width / density.density).roundToInt() } - then sharedTransitionModifier ) { ListDetailPaneScaffold( modifier = Modifier @@ -123,13 +117,16 @@ fun App( tertiary = if (nodeFor(ThreePane.Tertiary) == null) PaneAdaptedValue.Hidden else PaneAdaptedValue.Expanded, ), listPane = { - Destination(ThreePane.Secondary) + if (nodeFor(ThreePane.Tertiary) == null) Destination(ThreePane.Secondary) + else Destination(ThreePane.Tertiary) }, detailPane = { - Destination(ThreePane.Primary) + if (nodeFor(ThreePane.Tertiary) == null) Destination(ThreePane.Primary) + else Destination(ThreePane.Secondary) }, extraPane = { - Destination(ThreePane.Tertiary) + if (nodeFor(ThreePane.Tertiary) == null) Destination(ThreePane.Tertiary) + else Destination(ThreePane.Primary) } ) } @@ -137,7 +134,6 @@ fun App( } } - @Stable class SampleAppState( private val navigationRepository: NavigationRepository = NavigationRepository diff --git a/sample/common/src/iosMain/kotlin/main.ios.kt b/sample/common/src/iosMain/kotlin/main.ios.kt index 52228e6..836268c 100644 --- a/sample/common/src/iosMain/kotlin/main.ios.kt +++ b/sample/common/src/iosMain/kotlin/main.ios.kt @@ -1,9 +1,9 @@ import androidx.compose.ui.window.ComposeUIViewController import com.tunjid.demo.common.ui.AppTheme -import com.tunjid.demo.common.ui.App +import com.tunjid.demo.common.ui.SampleApp fun MainViewController() = ComposeUIViewController { AppTheme { - App() + SampleApp() } } diff --git a/sample/desktop/.gitignore b/sample/desktop/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/sample/desktop/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/sample/desktop/build/classes/kotlin/jvm/main/META-INF/desktop.kotlin_module b/sample/desktop/build/classes/kotlin/jvm/main/META-INF/desktop.kotlin_module deleted file mode 100644 index a8057677fc7563377745a3347eca148c8ad30354..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZQzU|?ooU|YuG7=C7cKP~OykiXWqcQ@n#RPKOy1Au{g~(d_Wko00Q=Zs*cfQvF`*hs*KvifokK3wE0Y9c z$d34oJ04d<=XHN11{94k#C<|A#7gBZ!}itkhV~~q;C)YYq#Am{XcZJMdnOrD&35Og z-fp~PsI>m0xRya0b{Z*MV^|*w)8c;L<(0jnD}u4n6NW;m+!|}+N#%@YzH=O^fsr)c zIapYG)MOdgZECW@Q02;hk;d@3V<5wtrxoDRf+j1aju zp)%4JT^UG%)Rod^&UJuY`e-~_mUIsEbDCZzue^vZ$37zS3E4P1$HoUrFl>>G_yIPN z!B#d+Ww#b(g*gIeSnEDq8~2%LkOPe|RU{AdV_hQMeD jjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kgRc_9D*#r_JH diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/inputs/source-to-output.tab.keystream b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/inputs/source-to-output.tab.keystream deleted file mode 100644 index 931dcf095d4930f148709de3e469de93d02f00da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeIuJrY1L7)8;$BB?FHA`A+NU diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/inputs/source-to-output.tab.len b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/inputs/source-to-output.tab.len deleted file mode 100644 index 2a17e6e5bd9e7704741c2a3ae485eb2d2e302b87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 LcmZQz0D}$y0FVHQ diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/inputs/source-to-output.tab.values.at b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/inputs/source-to-output.tab.values.at deleted file mode 100644 index 287119039bcff53224d72304bc1b7da9b2047f93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1118 zcmdT@%c{aK6r4}+6S{D##e2oQh@wa@7Zq_Qu{rqcgCzRVeudNMqM$AWL7S2`=S;5dQ}PkO;CGMj#)AVE`n@4dozE40qIph`rY6E|CN{+7|MV&K66IpMnhmU1V%$(Gz3ONU^E0qLtr!n WMnhmU1V%$(Gz3ONU^E1j#|$yC0pLsWs?sweA>L zQ>eK}*tbpGSHAnIM4n6EWV*PnzV?2;yPm?s0v51<1uS3z3s}Gc7O;Q?{!8Em0dr}} diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len deleted file mode 100644 index 80eee97112e296b2c1972bf68f955eb6e5bd12ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz00E{T003S9RR910 diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len deleted file mode 100644 index 9e27f732fe29db9f82162c1114700ef23f6ac174..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 LcmZQz0D}zx0Js3L diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at deleted file mode 100644 index fd1772f5fdf1ebd9ba997da97741c92659d142ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 769 zcmeHFOA5k341GtL6F6%xAl(#1!F}ii?PoeAllJ_+qId$A%_7NrFCPerXjGC~xM^1` zg-fw;RjYkv@2?|DQ`s zPW!Y=4gmrL2oNAZfB*pk1PBmVxxgIxe%E8a@|fZgAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyP*C6*yFT~# zx8O>v2oNAZfIxKuV>HU0e?6+ZScM1>Ah2eSnEDq8~2%LkOPe|RU{AdV_hQMeD jjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kgRc_9D*#r_JH diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream deleted file mode 100644 index e7acecf33e070832699949b61112f9719693ac73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeIuu?>JQ5JS;FMb=;tlp!KQ0aB6%_Qz`={i}SIs|OSg7K4q4m&wgV&(}HAuB1v! cH`%lB6i`3`1r$&~0ROmjFH#6dEh^3|E=kQR@klJr@J%cTOUx-v4KB$qN=#2> HWMBjU-P#fc diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i deleted file mode 100644 index 21b6db252b11afe5ddefee29be33d1bd4e92b5e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeIuK@9*P5CpL$=)eP}@WB_?Amb7`3MNfUj|dPTK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C81onGa^Na#376=d^K!5-N0t5&UAV7cs0RjXF c5FkK+009C72oNAZfB*pk1PBlyK;T1x3z?JwzyJUM diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i.len b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i.len deleted file mode 100644 index 131e265740f37d77b7c4a3676d2a7704ca3e4a29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz0D%Su009U9fdBvi diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/proto.tab b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/proto.tab deleted file mode 100644 index 979c8742f5c190d494099967fca305f082722dd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmbR3vzw0r2$(jE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mk0O=tB054DuZvX%Q diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream deleted file mode 100644 index 56bde15679d91388e4ee4afaa410cebdd84c9b98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeIuu?>JQ3`EgC0VQL=Acz?dA{0PKny^0>Q&47>3Mim}0tzUgfC38qPT&Q8e+~=) diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len deleted file mode 100644 index c2592889fcec434bcb6fcd7dde5fbbf270432423..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 LcmZQz0D}Mk09XJ~ diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/proto.tab.len b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/proto.tab.len deleted file mode 100644 index 01bdaa1da7d937c7e7d98e54ba912f88ab95c7f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 LcmZQz0D}nt0GI%g diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at deleted file mode 100644 index 67fb84c91879c6848424f8dccecc3a851e89fe72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159 zcmWlQu?oU47=*8>RL#;NE_MnofAFbM^BeSnEDq8~2%LkOPe|RU{AdV_hQMeD jjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kgRc_9D*#r_JH diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream deleted file mode 100644 index 931dcf095d4930f148709de3e469de93d02f00da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeIuJrY1L7)8;$BB?FHA`A+NU diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len deleted file mode 100644 index 2a17e6e5bd9e7704741c2a3ae485eb2d2e302b87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 LcmZQz0D}$y0FVHQ diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at deleted file mode 100644 index c0418c1003a6696a495b5f5a9553c87b7429224d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 678 zcmchVF$=;l5QX3B;^^F=n`o(mgR39~DToDENt;8fH7RNO$NdGqwk}RiHbc1F3-=v& zFG3+C1@d+$>$@t`L>_td%J()&o$U3AVHU*dv# diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i deleted file mode 100644 index bce00899f0521745ed34884b328697bfada2be95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeIup%DNe5Cg$5)J98a1TEvie+SG)Ufiao#|RK0K!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZpa`s2#+kbu0s#U92oNAZfB*pk1PBly bK!5-N0t5&UAV7cs0RjXF5FkK+z?T9S;`;)* diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len deleted file mode 100644 index 131e265740f37d77b7c4a3676d2a7704ca3e4a29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz0D%Su009U9fdBvi diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/counters.tab b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/counters.tab deleted file mode 100644 index 166c057..0000000 --- a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/counters.tab +++ /dev/null @@ -1,2 +0,0 @@ -1 -0 \ No newline at end of file diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/file-to-id.tab b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/file-to-id.tab deleted file mode 100644 index bdf584a84b58bf0b45e9b3a4c946653433feaad2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmbR3vzw0r2pB;G3eSnEDq8~2%LkOPe|RU{AdV_hQMeD jjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kgRc_9D*#r_JH diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/file-to-id.tab.keystream b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/file-to-id.tab.keystream deleted file mode 100644 index 931dcf095d4930f148709de3e469de93d02f00da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeIuJrY1L7)8;$BB?FHA`A+NU diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/file-to-id.tab.len b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/file-to-id.tab.len deleted file mode 100644 index 2a17e6e5bd9e7704741c2a3ae485eb2d2e302b87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 LcmZQz0D}$y0FVHQ diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/file-to-id.tab.values.at b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/file-to-id.tab.values.at deleted file mode 100644 index 5875372349163668e6e0a816c8855cd692143458..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55 zcmdOA@JLNeNi9+cN=?o$N>OmjFH#6dEh^3|E=kQR@klJr@J%cTOUx-v4KB$qN=#2> HVE_RD6bTXt diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/file-to-id.tab_i b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/file-to-id.tab_i deleted file mode 100644 index bce00899f0521745ed34884b328697bfada2be95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeIup%DNe5Cg$5)J98a1TEvie+SG)Ufiao#|RK0K!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZpa`s2#+kbu0s#U92oNAZfB*pk1PBly bK!5-N0t5&UAV7cs0RjXF5FkK+z?T9S;`;)* diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/file-to-id.tab_i.len b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/file-to-id.tab_i.len deleted file mode 100644 index 131e265740f37d77b7c4a3676d2a7704ca3e4a29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz0D%Su009U9fdBvi diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/id-to-file.tab b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/id-to-file.tab deleted file mode 100644 index 8aad32b3b84c79ee82814f17430d858dce49687b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmbR3vzw0r2pB;G38wk9 diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/lookups.tab b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/lookups.tab deleted file mode 100644 index 75e4ef7e1214e4f12cf25be8b29e2cd6d9c93737..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeIuKMMh29Ki9%pE4+U1u}@m!bD0b8Dvn(!enBRFvw(5%EBaylF4L{iGg!d^meIr_-Y}1Dr&3uAVH#7I#1h7^g;AVh7!3^K75&KP%SZt!AO)m=6p#W^ RKnh3!DIf);fE4(9ffwa?emMXD diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/lookups.tab.keystream b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/lookups.tab.keystream deleted file mode 100644 index f8e29578fd66f7548e4e737fb68bdb4480d68480..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeH{O;5ux42G=%6JipZvcUeU#K%=V8(HXd_sQKDR<9US|p0s%LF_s#-Pa9UkGy;X@4b?sc!vb8MJRP}OmjFH#6dEh^3|E=kQR@klJr@J%cTOUx-v4KB$qN=#2> KVE}=lMFIeR^%8sl diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/lookups.tab_i b/sample/desktop/build/kotlin/compileKotlinJvm/cacheable/caches-jvm/lookups/lookups.tab_i deleted file mode 100644 index 1faf4774a2e09363f5c38a4385d396f857142612..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeI(!7GDt9LMnoE2Gq0)^||Ed5|V=`2ZD{hs&E-{1H5{k)#1=lRuov@)$g1G9Lm6Ab@~50vEEa?{xjxoZZ8 z2{g$$rM^3VF11xuBY*$`2;_>ulML#t2_5O3*CX$R!?x9k-g@c~KmY**j1_p3_K_F& zqOrTs9RUQC6p(Y><8+k diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/classpath-snapshot/shrunk-classpath-snapshot.bin b/sample/desktop/build/kotlin/compileKotlinJvm/classpath-snapshot/shrunk-classpath-snapshot.bin deleted file mode 100644 index aeb5c0c84ce7e00e12c03974555ee6949df7847a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4338 zcmcInL1-Lh6n;%M*~untH_>Vvp-78TTg=97K`;kNjiJ%R7T2n@rDeOjNjBNtgxN_G zQxFkE5xm)hA|C2R@gfL4c#$F~UV0LwmmWNL5PK5wkc;2<{`s>rvpdZ?t-H+5KmYsZ zz3+eT{oi{lB15uEL=H$vR-`Ut;>nscWJ#)0##31;m|elh$T@D{X$^9bKADtNd|$>} zSM#6!e)#OqA3YdtP~L-!%HG2@CK>!@Fqg$;$NP2MBaVN!&pX{6=~Z23oye#>3cbAd z$T)1~p^-Xi%gpu4DM`z9>DSp5W}k($5BI||A}L&aGaVQ^7(aw-81n=A<`8sdFhkvg zx{{+K2*5b>=5f!;ZfNA2R-*&i9@y@YFR^AXFcN34?{*CFaipk0C?E($Toue6m03Sv zxlllJ+X2mm0-Do+=A-}(b!e+WiwSK@>jd<^3cUY^=2_Tn0Go^SV&ZLx#kY!?CeY*{ zV`6%c*Y)`YNQl+QU73&>e4monf%72ViSA?)dg&=@xB?A)zajH@T7YI3GD7(-LwM<3q6|93<#0+#e-tOU@+NQ4m!Y+czYe z3J@=;m6S?i9LAb7o_7a`F$J096S4z>4bpQ4==La4T0(zQ-bGRv`X(MDx8%M{qH>b$ zAl41x%F2``+p-?r8q(0!^dm)jntY<9xO0lsp~oa^6{DIQMR28}7Zhdg~4^kpnNq|TaJ zUBKuxyt;(djF(xL6w$sIM3;OLU4{iBW54%l=GPj0Z0CMh;CTv6>(Q=>Em~4vPj45DHv&;;`TD@t)o*UR^Z6O>hfLRvub*r~V+)>* zye)ab$mgUp0$NVK!@(G>*M9ux=#5XV|3KX=2i@$8Ym<69io-UgU(9CS{`TP73F__^ z2iGOVu`l8ei=$I6U%2?z$-5tx_?JdwAGZfVOV9R?Wwwq}NA?KE(ptG6L_P1qs9Ix@*@^sUC zQ{aH-CpO1^I==ZGwRC%y9`49(ma9#>r`3b59ng}L|PLQEeGWim2)pu)ZrV!Zva7pEzqZ^OD^etC*?ow96Qj6<@!0 z7`CgRg(}uh|?ekyVqBh2PM;43Al79h4g})X6 diff --git a/sample/desktop/build/kotlin/compileKotlinJvm/local-state/build-history.bin b/sample/desktop/build/kotlin/compileKotlinJvm/local-state/build-history.bin deleted file mode 100644 index 6cfb852f6b3a889a6532de9525761e4c439de1a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31 ccmZ4UmVvcgk^ur385kHRWjfnFh4L8~09=CvkpKVy diff --git a/sample/desktop/build/libs/desktop-jvm.jar b/sample/desktop/build/libs/desktop-jvm.jar deleted file mode 100644 index f6c4e65beaaeb07673c8de9e3ae55d719a950562..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8855 zcmbVybyOT%_B8<-Z6J8#!QI`0CIokPcZc8*tZ@xaa2nERf;+(-f`kyHgA-hW1PJgW zlX>%AGVh!9%~Y>jU4NW?cHLU{oI3aHQjteM#DjxFL4kvVleiynaPa>)!@;56|0_Px zkYJTnddiLfr}B$oO%VJ6$-M#5{kVt!X{acnB>VJV6=aDIpH@^?=H@16%f6Wo` z{@UEx@!zKRR~z(y+IV<6+1XnBN7IMDnp#*oI{%wJ>gNG@(tF;o$Z&8Xe`7D@?C9d` zZffRWsc!3J?O^HQ?Bq_PXlm;u??K~W>S$(R%F0Q@$!6|g>h7MS@mZVX3EnLoB`Rux z${YBQ6gh_Ax=)hz;-L&wGpXXt!8ZCq7(*bigVn{JlUcy=2ma4zL;S{-xzmNYYumL! zDFedUkoQyS@7=^Ty%oaSJOP6QD8Sg-;9#fi~~j`9a6)Z{cQ3=d94!8?Byi zWl*M$Vh?lHIxE5$15HDHEecR-emuuw$%&;@m}j`Y0FoV(@k|}F^pffnI}1L@H;?_5 zIC9UIkr?`i){*RT@VaJ^R;9zX9#ol_C@29`WwXgC{b=4Q0TM$#3J}EX*%@+5Qp}CIGtGLERMq^`mY?(jf zmcjFQpLd{i;;%5DzXcWUk-3KX~w%iV5xsg>hqG?9_-(d~tppJ@P!3L?2i-CjHd znSH~?MF!nG*zSm-PU?_H&M;}V8F=6p+_(jInU_?ol2yls(`V@0KRM}F#SZqf*j<57 zmsNc!fndH*Wr{GL)pwQ;1++yqGF(0W)B=U&OJqey+`=q(PM?0+AKn$x;>^S$XW$Olor_g|O3u~*%bt*NN)JZh)?v@ZyP#?fM0xC{pX28`B47C;Lequg0s-dLtc>B@T_$?&=B?4M#Sp$k8zD0VoMtV=hSk4(5 zMc$|q%{ve|9{(i)ze817f9jc{X?VEV7=|M>c8qnPNnKluVQ5juK~A0fNflEEGxG(I z`Gh*Qh37y{)Af)z=CN1r*)ulXDtfePit}Bjlz5wDyucLzQVH4<&GIZftyCa-EdV@P z&Vp-WD$pQ2jW`dQx1tFi(|FY1F`%!12^(V|>aSC6|d>$Ptm!UdBeY)n&_Q_3#!SaJwR2t)Z)fEW$Xx zx!B_}dO^s!LnF8@1QBK?VCINY-mnU0_FU)~KD&|HKTM^ z1t9$ePz(N$!{hyi9PhSI*u#x0E8+o{HiS@tE{;0-LCdn&>OfI0hU-O~l9ruTO=Cm} zVqH>YQ!(&71V$NIm~yWIjO)c@K2)=)m1PSsd1L%?O`aQqi%K10&Pku3~gXk+JFCiaL6= z_2dv}b+BoKc|NUOg1G{~Q~L(T4a}LK?#ySh9o;$R2ulF9z?YTOw63>$vd?EpscBEs z3q42Peh#*1@QKwkv7w;ZhUwaePO&ioM=hG_{62p#xBBLZuQ~Q$kltk*@~KtLYu2*| zKZ=U?j<|7`YKMfsjCrqT4+M{1zNXAu=K_^U(`~ndmH^UEX0uw=4wlnS zn6!?q62E&uhSH*nezSf3G)plVe44ZUN$3QT46EqjjEy3H%IOT9sE{rq1cN+LOUi(B zU$iE!C^R$InL9Htk^CBio+z+)jt_R90b$&sZ(%Eru>%yQJDlTjmg5Z$Ydto#ek2rk zu{64)+%|cxb9D^`kWTx2e9R%kV*4IjyHai)Nw!sd=gbRC*NJ-xyp z(rAk@0o=ExDFA_#OlqB4pTh;jl9j8cPxDq!=G1}lVtps({^uZw%(w4^hB(+S8wRD$ z0Z0K8pwks3r>EBeO;6NVk~q^*V`kX?L#fMkE#DvsE$*%?iB7 zVjoVF*yYC#7x?~#5&QjDP|kX>erI?S>WFlB;6u8Dd^@u>ieJ+rf{d3--F?9;3V?$X z|KEx+ZkqdY?2pu#qh_d#D}g6E4Syq@AH7N#sOczSAP#`^7E>lWRAlJvg+5mFk|Avo zp59Yp7L$*g{1STniNdn2wz4Fe(yl?6Tl8YQ+4`{AxHI4iXhOyd#!!xk--ZTk3wNN@ z*Ft)#;(df4DnifUP3xjZ5}Guy6a|+}7q;XZhndfZUT})od(@#8yPaPbP^V%itp?XF zsplr?iDI)$)1=TZz9E@;s%{MAUd?MB$rf8xPUWe;rm4F6xJVSsIZ82>*M->ATS9Yw z4XjP=e|+dpzic<*vj`*1g=*>pV+<~n(r$y-XmcJaDGOB>pPVt5!uFA-*3v4sx2pyp zO>od+786BTs9G@GAZe9Vvcz-pFdeMaP!DRoTl2=V$%=INhOnxo|HOhbXF$LT)ITau z#O=U$`&rq}n-3>9F#vm#kaSjd>1A29a0sR0+YM`1t_VCOLe*Y_2Y^?W0;*8*4&7eH z(G5n=+yahOHzY#n>(=ST%0mZHlZ@|{h|x{4%z_4znWmdE>q#7oTi};j8gt6iq@{cC zNV9Jvcvg_7a?^-rZ>vd&7A@u~d2UVd>>^$k<#KW1^<+^I>pUOc8Jy+m|seErQHIb)dU#_34=z&xyK*{S}%V*;C{rvt+Mc|tdEWBdXO%Vp@SMY!jAaX76*9&8tZ5<0^(2{($gD>ff!oWb0s#= z1V9eKG>*hJdN$c%b&A=`JSGu*XA0IrIpZEz-xh*0w-as;CzQT;X>;-A&w*F0&*uCt z7TqUAFJ2ukx*z0;`Q9PGwZ3I|7_B#y|B^F-KnG?X#Bh;5_(2+@c{q-xBrE6l1t6qznzSGCm7rQZz)OeFF+8>nPC`r6#Z z_l?-c-8tdcnVbt;X7r(|USy&foFVi;ZmS%W^I|nr>N45>XESo!OO0F$MAMwfzDlx7 z2Sx=Fa~`KnG#eTMHpEI7JxlN#{Pxg%@#T&WyqYRBDs><86C(g^o@Z-;cs-?s56i@Z zxgCoE=RjEI*=vm?({VlSmUlW!OAWG3fd03&tQna`fL&Ti z{d!5gMQmDV{|RYu+yh(4i-xvvGl!1JBcuSUY&}V#3BJ)fY(?fKnS3sxN*QY~tF^$( zXR$U7X)|QaJL4@PiTWkd#fjdHrysO5pmQP0D0@27W@rZ+vxU=m1p`gqxleZJzc*nm z$g9K=2jl2bbD0;b8H@ptWe#O3Nik4ns+yMrC66SC2cIQ;($m1orf$G*JoA`O5Sl5Q zi}F3BF#3L!0563%nGDd0LDU&xg0t6!*BLPys~c69WqujhRHB60Fe+fU@3#{(Nu#nk z$a`(&IUOaCwU6RZi5}5&IW`xPuTiRLqW?I>3Pj!oO9^=n)=eoBcuu#Y^Sm}mffhvP zd2@CX=wX%~jTwemrj1P%S0iI0<;-LzQprydMFA5{JHTeB*gdSKI4VM4Vj}N03ZB)3 z-%MO^F^>;qDJiuk9l;+3!K`*=MFpV?%sN>Kq<+HBUPe^s`+K z5R9nHgW$6;ho(TssH*;@K#^#2{Dfsr=hM&Ccj*jr^6c?DjL@aEhE!SEo(Rar)q8f% zOM#q@Iv-KKDq61C@iEV{#_q)g4y5&z8~Df294j|;_%ZuKN|&4*H896sQ3`^Hv6FdW zh%!1Jcf(aO<5mge%2#sKu^2YCO^fyCpn8 zMo{c!^yIf9e&WdldKVqN-CCYEPW@U}?-J-&UYgJAK}$3xQe=iRB+|SU*}b%ZSEa{% z4HYj?*f6nV`hCF{XR=;P{T3}F?_4QLIH})6%~FicSBoabPy}B`rGA*E4W}_J!!z6X zdO4Nn{0;bg0x1$e9(nWDm+vSoF=^$RTd5pW&HS;(#;{F$g3(w$d+7?CjK4 zsvcJG!roSSkUuvU#E=P(ixuBKc>uHS|1Ll|lAI$jRLeb9%wyFI=Mj-RZg%7jZ}$#G z0q|wX=t?~dwaMXmJOsYKLYzLLUff;7eAUs&*#+CZmJ8DW6~FOm#=G+hooE}Q@qh1I#0vi2`PPJd5$tDKKdp{ z-3O~fGn$(`E0~ldCUy1QS+ZGuWRq@m2sb=dm9i#)9SvAvgcraB#^;YCnl66kV zp*wSIlmX179`}3=+51V~h`{auQVR5FIil`7x?8_10cD0n&edo1)y2v{)1zhC`XQNC ze-D-KFq`hmItYy>SK8HF>)?6=joC9V9`Y_?%~Kld_O=f1bp(&o*gbDqG220Mdwg2$ zuP8jg&2m0!t^W9(_A3iInAg;#t{0a*b_`oqI4B-?7W-O|XeUtn#r#94?#@|x9Iqp< z{F+x<7DHis2|q2MLJv2oy2uK3&8OL!mF)vqqQ0`B66&t4ojpH$sp9CTZT-yA-ubiU z!X)0#&SHBT(MKdNTN#7;qWT8Kst=Qt3rmWW^##gC>F2tfhUC~<8uGFB4N2`9O^sn{ z@Pb0z#Sphc%TO@Xx*)yCfn@A}!(p7*Hnf<0x{j3J#2fi*gra)m1#O*&-j=;?9+Bdk zQ?51X(Yn65uTNr|pn^o%g)h5`JCLrd7g3;ADZv57M->%mkw z+bE4wYhFkY7?<&DsOkD+l9bH|#v1f@@xSRIIWg`lppMh#cpEw4k*dY02|*Xwl+fIM zf_HKNc;<_ZpHuucngF|;=~PPrwfY*{3^QuvnXKiy^L5ZB=k5W-fxMKhd%!1;Fp=PN z6)lh8`$v^fNdP&3o#8bBPhAsTWlQopcDK6fIkqo;8_hG{6c*uSNK3>% zZ`w3}WI_2Rqi?hkCPxtF(EwD7%<(eEb`=nbD%g(SzcVr8ni^zgj zS(dP7@W=X6hn5rtRJl`FO)+OY5Cl9vIG(+9DcKoxIsYBm&+#;+0EkuU;eR ztq9dVQuL4UJBw2D&-Mr4L<%Mj!>s&e;M3a=-KqxmMU@}36AV70G&tzaEXe6EIU%RI z^lKIucxuYU)4;>Swi;gYM1!Awbz?-pi>P{hh5m35VX@vdiG=u~h0kVCNq6c+d!8Fb z_x??+Xu^VDoGANQ(2ehmqpQq|G3c3Y5m_h-ijeCegKMRgiul+xzAq`%B*0lrJJ_(Q3T@mS06tI9X2J-i{}d7 zeilVb>UX|H{BH+*|%z3z^)?x0g3qaOrP{UB-{~tln!X>hkXvZe&_ke>fLv+l(&L zz|cm_-TBdQ`51}_>Pe#eyj(J(+0&+Kj}}pZ)MF#dL}Xyf;Z|#J8*9Q7E`S3(UPk_8 zno)a^R66KVM+u+ZXy^HuKd&-o+;_R2sKmYYyoInyEpsd`?J_`HFt|8iQ;lb2dbVGs zH2Hp-7Zx{F+hGi0+g_TF^r<9izZbR}mO$Vq-|P`UQo@wV>o+Bpr2-#6MmxFA&lhJr#PamT1Q^=FlFAO2IMe-M zIL6^$%hu|j9E+{m$3%Tsp+oEK)%Vut=A0amHqDMAWN~}D^c;eFTbZtAK^ceJjs~MN zA9C$MPo~Oo>dVlCRWMs> zk_nnNavR5@z ziw;D+$)2c21`cTZ>ax~T3MY?uubvC{B~}cBS0z4{+7q+;dEyW)xHq--2SAm_%g8~P z3u;kvjheWD7P9(ssGWN!N-`?>8XtDA;&qaJ9l3^^&lR4IsyD{q_6yK?ex*L;vn`^* zN>bP%OcY7;^!(;w5(f(_wU0rtr+;1%Fx$u{=|(fdR6J(WQFpc{6?;QGHAtz5c~dafbD=Qp0fyvx!WPg8M9a5ybYx8Hy{8bGzT6& zX1%o!qentdczC@@spMov_mY>~yQz3U|q~L0Wj*gom>1rrV=)>ABU0ei% z8d~WWdaESr6O2WwUC!jv9w6?_H{Tk(q11;9o*J@BswrHTfwyEpbZu6a$q059f7Frg z`k)8DhW6R8^aR0u=Roy7yh;Biw0|l#KchHRRq?(n01C9ypRXZc%x8!+)~N@W#$>oG zOB2fyqtm3FnqXPA2=h!IjPoq%E)Px|mmy1ufL13dEd8w+?INQ%GuyrfiX46o47fYq zV1B_`!998{bfQpr#dQRaZR?yMf7ZX=1(FL09Bof5&-Hr0kDk{?1a^={0V_b}t#sOR zjXqAQ478C%r)jjSfGSr{@U3$T-p@Ic9qfHH=C0tqqxNZylx=#+u#D7WpqxRM(DJ}| zfd!e093*O?Q>BrO;3x@gyLDYBqaEf?2DL4{ZIGo=Z`#Hg;*p9gHz~Gs*}1gUU7?*4 zPGWjb4;yy@$>l8+Uzi6j+yPTJJEb(PBIyfE=gQiywYQ&sz2a*u->2Gi8R=tjnxP{HL=YC?f$swzukn+gi@n2%)?rjso6m8bcZ-Ir+0to}u1;n#x_T4oXInrB ztuTqZ)yC7O0$-C^5PQFWC*|uc%|y;0c_@p_@{~xKk=&fBzZNtR^jm}eehK|cmBjwJ zp6+EpOEpV(XHPeCOZR`%5&sI1`a6J!o28|b>2q6aQx98bCpLFeM;8Z6wm&3QYfC3f zH&YKw3pTf3C?3G$A^gAf;2)%La1Y`3{~;CsOC45`{}uMTI{Xs`2Ui@-cz^jX*k82b z-#z>;3IFNg`CmQ!F`Him;@^G!!2Tg>{}6nC9zQ0ret-Ex{{2sgAM)?d;|Bue!B50L z#o+%0{2>Pa3FQ72_z!9Lcl7Vl@E`c%VDrC0|2IPM?@YhTL4PuRy6=SkcqIRv;6Lv3 z|AXmY;?VC*zjs*wWIDPpiv9 Date: Wed, 9 Oct 2024 21:03:19 -0400 Subject: [PATCH 2/4] UI clean up --- .../ui/{CollapsingHeader.kt => AppBars.kt} | 63 +------ .../tunjid/demo/common/ui/chat/ChatScreen.kt | 7 +- .../demo/common/ui/chat/ChatViewModel.kt | 10 + .../demo/common/ui/chat/Configuration.kt | 8 + .../common/ui/chatrooms/ChatRoomsScreen.kt | 110 +++++++++-- .../demo/common/ui/profile/ProfileScreen.kt | 177 +++++++++++------- 6 files changed, 229 insertions(+), 146 deletions(-) rename sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/{CollapsingHeader.kt => AppBars.kt} (55%) diff --git a/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/CollapsingHeader.kt b/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/AppBars.kt similarity index 55% rename from sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/CollapsingHeader.kt rename to sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/AppBars.kt index 8366040..d1d71f4 100644 --- a/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/CollapsingHeader.kt +++ b/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/AppBars.kt @@ -17,18 +17,9 @@ package com.tunjid.demo.common.ui -import androidx.compose.animation.animateColorAsState import androidx.compose.animation.splineBasedDecay -import androidx.compose.foundation.background -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.statusBars -import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material3.ExperimentalMaterial3Api @@ -38,70 +29,30 @@ import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.layout.onSizeChanged import androidx.compose.ui.platform.LocalDensity -import androidx.compose.ui.unit.IntOffset +import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import com.tunjid.composables.collapsingheader.CollapsingHeader import com.tunjid.composables.collapsingheader.CollapsingHeaderState -import kotlin.math.max -import kotlin.math.roundToInt @Composable -internal fun SampleCollapsingHeader( - title: String, - headerColor: Color, - onBackPressed: () -> Unit, - body: @Composable (collapsedHeight: Float) -> Unit, -) { +fun rememberAppBarCollapsingHeaderState( + expandedHeight: Dp +): CollapsingHeaderState { val density = LocalDensity.current val collapsedHeight = with(density) { 56.dp.toPx() } + WindowInsets.statusBars.getTop(density).toFloat() + WindowInsets.statusBars.getBottom(density).toFloat() - val headerState = remember { + + return remember { CollapsingHeaderState( collapsedHeight = collapsedHeight, - initialExpandedHeight = with(density) { 400.dp.toPx() }, + initialExpandedHeight = with(density) { expandedHeight.toPx() }, decayAnimationSpec = splineBasedDecay(density) ) } - val animatedColor by animateColorAsState( - headerColor.copy(alpha = max(1f - headerState.progress, 0.6f)) - ) - CollapsingHeader( - state = headerState, - headerContent = { - Box { - Column( - modifier = Modifier.fillMaxWidth() - .offset { - IntOffset( - x = 0, - y = -headerState.translation.roundToInt() - ) - } - .background(animatedColor) - ) { - Spacer(Modifier.windowInsetsPadding(WindowInsets.statusBars)) - Spacer(Modifier.height(200.dp)) - } - SampleTopAppBar( - title = title, - onBackPressed = onBackPressed, - modifier = Modifier.onSizeChanged { - headerState.collapsedHeight = it.height.toFloat() - } - ) - } - }, - body = { - body(collapsedHeight) - } - ) } @OptIn(ExperimentalMaterial3Api::class) diff --git a/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/chat/ChatScreen.kt b/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/chat/ChatScreen.kt index 39cfef4..b439387 100644 --- a/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/chat/ChatScreen.kt +++ b/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/chat/ChatScreen.kt @@ -39,6 +39,7 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip @@ -68,7 +69,11 @@ fun ChatScreen( ) { SampleTopAppBar( title = state.room?.name ?: "", - onBackPressed = { onAction(Action.Navigation.Pop) }, + onBackPressed = remember(state.isInPrimaryPane) { + if (state.isInPrimaryPane) return@remember { + onAction(Action.Navigation.Pop) + } else null + }, ) Messages( me = state.me, diff --git a/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/chat/ChatViewModel.kt b/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/chat/ChatViewModel.kt index cf2527b..ae37549 100644 --- a/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/chat/ChatViewModel.kt +++ b/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/chat/ChatViewModel.kt @@ -62,6 +62,7 @@ class ChatViewModel( keySelector = Action::key ) { when (val type = type()) { + is Action.UpdateInPrimaryPane -> type.flow.updateInPrimaryPaneMutations() is Action.Navigation -> navigationRepository.navigationMutations( type.flow ) @@ -106,9 +107,13 @@ private fun chatLoadMutations( copy(chats = it) } +private fun Flow.updateInPrimaryPaneMutations(): Flow> = + mapToMutation { copy(isInPrimaryPane = it.isInPrimaryPane) } + data class State( val me: Profile? = null, val room: ChatRoom? = null, + val isInPrimaryPane: Boolean = true, val chats: List = emptyList() ) @@ -120,6 +125,11 @@ data class MessageItem( sealed class Action( val key: String ) { + + data class UpdateInPrimaryPane( + val isInPrimaryPane: Boolean + ) : Action("UpdateInPrimaryPane") + sealed class Navigation : Action("Navigation"), NavigationAction { data object Pop : Navigation(), NavigationAction by navigationAction( MultiStackNav::pop diff --git a/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/chat/Configuration.kt b/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/chat/Configuration.kt index e58153e..98455ad 100644 --- a/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/chat/Configuration.kt +++ b/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/chat/Configuration.kt @@ -16,6 +16,7 @@ package com.tunjid.demo.common.ui.chat +import androidx.compose.runtime.LaunchedEffect import androidx.lifecycle.compose.LocalLifecycleOwner import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.coroutineScope @@ -46,6 +47,13 @@ fun chatAdaptiveConfiguration( state = viewModel.state.collectAsStateWithLifecycle().value, onAction = viewModel.accept ) + LaunchedEffect(paneState.pane) { + viewModel.accept( + Action.UpdateInPrimaryPane( + isInPrimaryPane = paneState.pane == ThreePane.Primary + ) + ) + } }, paneMapping = { mapOf( diff --git a/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/chatrooms/ChatRoomsScreen.kt b/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/chatrooms/ChatRoomsScreen.kt index 393bc95..fc8360c 100644 --- a/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/chatrooms/ChatRoomsScreen.kt +++ b/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/chatrooms/ChatRoomsScreen.kt @@ -16,42 +16,112 @@ package com.tunjid.demo.common.ui.chatrooms -import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items +import androidx.compose.material3.Card import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import com.tunjid.demo.common.ui.SampleCollapsingHeader +import androidx.compose.ui.unit.IntOffset +import androidx.compose.ui.unit.dp +import com.tunjid.composables.collapsingheader.CollapsingHeader +import com.tunjid.composables.collapsingheader.CollapsingHeaderState +import com.tunjid.demo.common.ui.SampleTopAppBar import com.tunjid.demo.common.ui.data.ChatRoom +import com.tunjid.demo.common.ui.rememberAppBarCollapsingHeaderState +import kotlin.math.roundToInt @Composable fun ChatRoomsScreen( state: State, onAction: (Action) -> Unit, ) { - SampleCollapsingHeader( - title = "Chat Rooms", - headerColor = MaterialTheme.colorScheme.primaryContainer, - onBackPressed = {} + val headerState = rememberAppBarCollapsingHeaderState(200.dp) + + CollapsingHeader( + state = headerState, + headerContent = { + Header(headerState) + }, + body = { + ChatRooms(state, onAction) + } + ) +} + +@Composable +private fun Header(headerState: CollapsingHeaderState) { + Box( + modifier = Modifier + .fillMaxWidth() + .height(200.dp) + .offset { + IntOffset( + x = 0, + y = -headerState.translation.roundToInt() + ) + } + ) { + SampleTopAppBar( + title = "Chat Rooms", + onBackPressed = null + ) + } +} + +@Composable +private fun ChatRooms( + state: State, + onAction: (Action) -> Unit +) { + LazyColumn( + modifier = Modifier.fillMaxSize() + ) { + items( + items = state.chatRooms, + key = ChatRoom::name, + itemContent = { room -> + ChatRoomListItem( + roomName = room.name, + onRoomClicked = { + onAction(Action.Navigation.ToRoom(roomName = it)) + } + ) + } + ) + } +} + +@Composable +fun ChatRoomListItem( + roomName: String, + modifier: Modifier = Modifier, + onRoomClicked: (String) -> Unit, +) { + Card( + modifier = modifier + .fillMaxWidth() + .padding(8.dp), + onClick = { onRoomClicked(roomName) } ) { - LazyColumn( - modifier = Modifier.fillMaxSize() + Row( + modifier = Modifier + .fillMaxWidth() + .padding(16.dp), + verticalAlignment = Alignment.CenterVertically ) { - items( - items = state.chatRooms, - key = ChatRoom::name, - itemContent = { room -> - Text( - text = room.name, - modifier = Modifier - .clickable { - onAction(Action.Navigation.ToRoom(roomName = room.name)) - } - ) - } + Text( + text = roomName, + style = MaterialTheme.typography.bodyLarge ) } } diff --git a/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/profile/ProfileScreen.kt b/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/profile/ProfileScreen.kt index d6f1d6a..19ff986 100644 --- a/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/profile/ProfileScreen.kt +++ b/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/profile/ProfileScreen.kt @@ -17,106 +17,145 @@ package com.tunjid.demo.common.ui.profile import androidx.compose.animation.ExperimentalSharedTransitionApi -import androidx.compose.animation.animateColorAsState -import androidx.compose.animation.splineBasedDecay -import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.offset -import androidx.compose.foundation.layout.statusBars +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.layout.ContentScale -import androidx.compose.ui.layout.onSizeChanged -import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.dp import com.tunjid.composables.collapsingheader.CollapsingHeader -import com.tunjid.composables.collapsingheader.CollapsingHeaderState import com.tunjid.demo.common.ui.ProfilePhoto import com.tunjid.demo.common.ui.ProfilePhotoArgs import com.tunjid.demo.common.ui.SampleTopAppBar +import com.tunjid.demo.common.ui.rememberAppBarCollapsingHeaderState import com.tunjid.scaffold.treenav.adaptive.moveablesharedelement.MovableSharedElementScope -import kotlin.math.max import kotlin.math.roundToInt -@OptIn(ExperimentalSharedTransitionApi::class) @Composable fun ProfileScreen( movableSharedElementScope: MovableSharedElementScope, state: State, onAction: (Action) -> Unit, ) { - val density = LocalDensity.current - val collapsedHeight = with(density) { 56.dp.toPx() } + - WindowInsets.statusBars.getTop(density).toFloat() + - WindowInsets.statusBars.getBottom(density).toFloat() - val headerState = remember { - CollapsingHeaderState( - collapsedHeight = collapsedHeight, - initialExpandedHeight = with(density) { 400.dp.toPx() }, - decayAnimationSpec = splineBasedDecay(density) - ) - } - val animatedColor by animateColorAsState( - MaterialTheme.colorScheme.primaryContainer.copy( - alpha = max( - 1f - headerState.progress, - 0.6f - ) - ) - ) + val headerState = rememberAppBarCollapsingHeaderState(400.dp) + CollapsingHeader( state = headerState, headerContent = { - Box { - Column( - modifier = Modifier - .fillMaxWidth() - .height(400.dp) - .offset { - IntOffset( - x = 0, - y = -headerState.translation.roundToInt() - ) - } - .background(animatedColor) - ) { - val profileName = state.profileName ?: state.profile?.name - if (profileName != null) { - val sharedImage = movableSharedElementScope.movableSharedElementOf( - key = profileName, - sharedElement = { args: ProfilePhotoArgs, innerModifier: Modifier -> - ProfilePhoto(args, innerModifier) - } - ) - sharedImage( - ProfilePhotoArgs( - profileName = profileName, - contentScale = ContentScale.Crop, - contentDescription = null, - ), - Modifier.fillMaxSize(), + ProfileHeader( + state = state, + movableSharedElementScope = movableSharedElementScope, + onBackPressed = { + onAction(Action.Navigation.Pop) + }, + modifier = Modifier + .fillMaxWidth() + .height(400.dp) + .offset { + IntOffset( + x = 0, + y = -headerState.translation.roundToInt() ) } - } - SampleTopAppBar( - title = state.profile?.name ?: "", - onBackPressed = { onAction(Action.Navigation.Pop) }, - modifier = Modifier.onSizeChanged { - headerState.collapsedHeight = it.height.toFloat() - } - ) - } + ) }, body = { + ProfileDetails(state) } ) -} \ No newline at end of file +} + +@Composable +private fun ProfileHeader( + state: State, + movableSharedElementScope: MovableSharedElementScope, + modifier: Modifier = Modifier, + onBackPressed: () -> Unit +) { + Box { + Box( + modifier = modifier + ) { + ProfilePhoto( + state = state, + movableSharedElementScope = movableSharedElementScope, + modifier = Modifier.fillMaxSize() + ) + } + SampleTopAppBar( + title = "Profile", + onBackPressed = onBackPressed, + ) + } +} + +@OptIn(ExperimentalSharedTransitionApi::class) +@Composable +private fun ProfilePhoto( + state: State, + movableSharedElementScope: MovableSharedElementScope, + modifier: Modifier = Modifier, +) { + val profileName = state.profileName ?: state.profile?.name + if (profileName != null) { + val sharedImage = movableSharedElementScope.movableSharedElementOf( + key = profileName, + sharedElement = { args: ProfilePhotoArgs, innerModifier: Modifier -> + ProfilePhoto(args, innerModifier) + } + ) + sharedImage( + ProfilePhotoArgs( + profileName = profileName, + contentScale = ContentScale.Crop, + contentDescription = null, + ), + modifier, + ) + } +} + +@Composable +private fun ProfileDetails(state: State) { + Column( + modifier = Modifier + .padding(horizontal = 16.dp) + .verticalScroll(rememberScrollState()) + ) { + Spacer(modifier = Modifier.height(16.dp)) + Text( + text = state.profile?.name ?: "", + style = MaterialTheme.typography.headlineSmall, + fontWeight = FontWeight.Bold + ) + Spacer(modifier = Modifier.height(4.dp)) + Text( + text = state.profile?.jobTitle ?: "", + style = MaterialTheme.typography.bodyLarge, + fontWeight = FontWeight.Medium + ) + Spacer(modifier = Modifier.height(4.dp)) + Text( + text = state.profile?.location ?: "", + style = MaterialTheme.typography.bodyLarge, + fontWeight = FontWeight.Medium + ) + Spacer(modifier = Modifier.height(4.dp)) + Text( + text = state.profile?.selfDescription ?: "", + style = MaterialTheme.typography.bodyMedium + ) + } +} From c53db41790afebd4c1f8b5233a9d13984bbbaba8 Mon Sep 17 00:00:00 2001 From: Adetunji Dahunsi Date: Wed, 9 Oct 2024 21:35:01 -0400 Subject: [PATCH 3/4] Swap panes for profiles if not in primary --- .../com/tunjid/demo/common/ui/chat/ChatScreen.kt | 7 ++++++- .../com/tunjid/demo/common/ui/chat/ChatViewModel.kt | 12 +++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/chat/ChatScreen.kt b/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/chat/ChatScreen.kt index b439387..1db6bd8 100644 --- a/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/chat/ChatScreen.kt +++ b/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/chat/ChatScreen.kt @@ -79,6 +79,7 @@ fun ChatScreen( me = state.me, roomName = state.room?.name, messages = state.chats, + isInPrimaryPane = state.isInPrimaryPane, navigateToProfile = onAction, modifier = Modifier.weight(1f), scrollState = scrollState, @@ -92,6 +93,7 @@ fun ChatScreen( fun Messages( me: Profile?, roomName: String?, + isInPrimaryPane: Boolean, messages: List, navigateToProfile: (Action.Navigation.GoToProfile) -> Unit, scrollState: LazyListState, @@ -118,6 +120,7 @@ fun Messages( roomName = roomName, item = content, isUserMe = content.sender.name == me?.name, + isInPrimaryPane = isInPrimaryPane, isFirstMessageByAuthor = isFirstMessageByAuthor, isLastMessageByAuthor = isLastMessageByAuthor, movableSharedElementScope = movableSharedElementScope, @@ -134,6 +137,7 @@ fun Message( item: MessageItem, roomName: String?, isUserMe: Boolean, + isInPrimaryPane: Boolean, isFirstMessageByAuthor: Boolean, isLastMessageByAuthor: Boolean, movableSharedElementScope: MovableSharedElementScope @@ -167,8 +171,9 @@ fun Message( roomName?.let { onAuthorClick( Action.Navigation.GoToProfile( + roomName = it, profileName = item.sender.name, - roomName = it + isInPrimaryPane = isInPrimaryPane, ) ) } diff --git a/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/chat/ChatViewModel.kt b/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/chat/ChatViewModel.kt index ae37549..3223a55 100644 --- a/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/chat/ChatViewModel.kt +++ b/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/chat/ChatViewModel.kt @@ -35,6 +35,7 @@ import com.tunjid.mutator.coroutines.toMutationStream import com.tunjid.treenav.MultiStackNav import com.tunjid.treenav.pop import com.tunjid.treenav.push +import com.tunjid.treenav.swap import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.flatMapLatest @@ -138,14 +139,15 @@ sealed class Action( data class GoToProfile( val profileName: String, val roomName: String, + val isInPrimaryPane: Boolean, ) : Navigation(), NavigationAction by navigationAction( { - push( - SampleDestination.Profile( - profileName = profileName, - roomName = roomName, - ) + val profileDestination = SampleDestination.Profile( + profileName = profileName, + roomName = roomName, ) + if (isInPrimaryPane) push(profileDestination) + else swap(profileDestination) } ) } From 3a0189ca95d2da8496863fd78c203b43d781e151 Mon Sep 17 00:00:00 2001 From: Adetunji Dahunsi Date: Thu, 10 Oct 2024 09:08:56 -0400 Subject: [PATCH 4/4] Renamed adaptive package to compose --- library/{adaptive => compose}/.gitignore | 0 library/{adaptive => compose}/build.gradle.kts | 0 library/{adaptive => compose}/proguard-rules.pro | 0 .../kotlin/com/tunjid/treenav/adaptive/AdaptiveNavHost.kt | 0 .../com/tunjid/treenav/adaptive/AdaptiveNavHostConfiguration.kt | 0 .../com/tunjid/treenav/adaptive/AdaptiveNavigationState.kt | 0 .../kotlin/com/tunjid/treenav/adaptive/AdaptivePaneScope.kt | 0 .../kotlin/com/tunjid/treenav/adaptive/AdaptivePaneStrategy.kt | 0 .../tunjid/treenav/adaptive/SavedStateAdaptiveNavHostState.kt | 0 .../tunjid/treenav/adaptive/SlotBasedAdaptiveNavigationState.kt | 0 .../treenav/adaptive/lifecycle/DestinationLifecycleOwner.kt | 0 .../adaptive/lifecycle/DestinationViewModelStoreCreator.kt | 0 .../moveablesharedelement/BoundsTransformDeferredAnimation.kt | 0 .../adaptive/moveablesharedelement/MovableSharedElementState.kt | 0 .../adaptive/moveablesharedelement/MovableSharedElements.kt | 0 .../kotlin/com/tunjid/treenav/adaptive/threepane/ThreePane.kt | 0 .../configurations/MovableSharedElementConfiguration.kt | 0 .../threepane/configurations/ThreePaneAdaptiveConfiguration.kt | 0 .../treenav/adaptive/SlotBasedAdaptiveNavigationStateTest.kt | 0 libraryVersion.properties | 2 +- sample/common/build.gradle.kts | 2 +- settings.gradle.kts | 2 +- 22 files changed, 3 insertions(+), 3 deletions(-) rename library/{adaptive => compose}/.gitignore (100%) rename library/{adaptive => compose}/build.gradle.kts (100%) rename library/{adaptive => compose}/proguard-rules.pro (100%) rename library/{adaptive => compose}/src/commonMain/kotlin/com/tunjid/treenav/adaptive/AdaptiveNavHost.kt (100%) rename library/{adaptive => compose}/src/commonMain/kotlin/com/tunjid/treenav/adaptive/AdaptiveNavHostConfiguration.kt (100%) rename library/{adaptive => compose}/src/commonMain/kotlin/com/tunjid/treenav/adaptive/AdaptiveNavigationState.kt (100%) rename library/{adaptive => compose}/src/commonMain/kotlin/com/tunjid/treenav/adaptive/AdaptivePaneScope.kt (100%) rename library/{adaptive => compose}/src/commonMain/kotlin/com/tunjid/treenav/adaptive/AdaptivePaneStrategy.kt (100%) rename library/{adaptive => compose}/src/commonMain/kotlin/com/tunjid/treenav/adaptive/SavedStateAdaptiveNavHostState.kt (100%) rename library/{adaptive => compose}/src/commonMain/kotlin/com/tunjid/treenav/adaptive/SlotBasedAdaptiveNavigationState.kt (100%) rename library/{adaptive => compose}/src/commonMain/kotlin/com/tunjid/treenav/adaptive/lifecycle/DestinationLifecycleOwner.kt (100%) rename library/{adaptive => compose}/src/commonMain/kotlin/com/tunjid/treenav/adaptive/lifecycle/DestinationViewModelStoreCreator.kt (100%) rename library/{adaptive => compose}/src/commonMain/kotlin/com/tunjid/treenav/adaptive/moveablesharedelement/BoundsTransformDeferredAnimation.kt (100%) rename library/{adaptive => compose}/src/commonMain/kotlin/com/tunjid/treenav/adaptive/moveablesharedelement/MovableSharedElementState.kt (100%) rename library/{adaptive => compose}/src/commonMain/kotlin/com/tunjid/treenav/adaptive/moveablesharedelement/MovableSharedElements.kt (100%) rename library/{adaptive => compose}/src/commonMain/kotlin/com/tunjid/treenav/adaptive/threepane/ThreePane.kt (100%) rename library/{adaptive => compose}/src/commonMain/kotlin/com/tunjid/treenav/adaptive/threepane/configurations/MovableSharedElementConfiguration.kt (100%) rename library/{adaptive => compose}/src/commonMain/kotlin/com/tunjid/treenav/adaptive/threepane/configurations/ThreePaneAdaptiveConfiguration.kt (100%) rename library/{adaptive => compose}/src/commonTest/kotlin/com/tunjid/treenav/adaptive/SlotBasedAdaptiveNavigationStateTest.kt (100%) diff --git a/library/adaptive/.gitignore b/library/compose/.gitignore similarity index 100% rename from library/adaptive/.gitignore rename to library/compose/.gitignore diff --git a/library/adaptive/build.gradle.kts b/library/compose/build.gradle.kts similarity index 100% rename from library/adaptive/build.gradle.kts rename to library/compose/build.gradle.kts diff --git a/library/adaptive/proguard-rules.pro b/library/compose/proguard-rules.pro similarity index 100% rename from library/adaptive/proguard-rules.pro rename to library/compose/proguard-rules.pro diff --git a/library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/AdaptiveNavHost.kt b/library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/AdaptiveNavHost.kt similarity index 100% rename from library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/AdaptiveNavHost.kt rename to library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/AdaptiveNavHost.kt diff --git a/library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/AdaptiveNavHostConfiguration.kt b/library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/AdaptiveNavHostConfiguration.kt similarity index 100% rename from library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/AdaptiveNavHostConfiguration.kt rename to library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/AdaptiveNavHostConfiguration.kt diff --git a/library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/AdaptiveNavigationState.kt b/library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/AdaptiveNavigationState.kt similarity index 100% rename from library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/AdaptiveNavigationState.kt rename to library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/AdaptiveNavigationState.kt diff --git a/library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/AdaptivePaneScope.kt b/library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/AdaptivePaneScope.kt similarity index 100% rename from library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/AdaptivePaneScope.kt rename to library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/AdaptivePaneScope.kt diff --git a/library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/AdaptivePaneStrategy.kt b/library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/AdaptivePaneStrategy.kt similarity index 100% rename from library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/AdaptivePaneStrategy.kt rename to library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/AdaptivePaneStrategy.kt diff --git a/library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/SavedStateAdaptiveNavHostState.kt b/library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/SavedStateAdaptiveNavHostState.kt similarity index 100% rename from library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/SavedStateAdaptiveNavHostState.kt rename to library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/SavedStateAdaptiveNavHostState.kt diff --git a/library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/SlotBasedAdaptiveNavigationState.kt b/library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/SlotBasedAdaptiveNavigationState.kt similarity index 100% rename from library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/SlotBasedAdaptiveNavigationState.kt rename to library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/SlotBasedAdaptiveNavigationState.kt diff --git a/library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/lifecycle/DestinationLifecycleOwner.kt b/library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/lifecycle/DestinationLifecycleOwner.kt similarity index 100% rename from library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/lifecycle/DestinationLifecycleOwner.kt rename to library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/lifecycle/DestinationLifecycleOwner.kt diff --git a/library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/lifecycle/DestinationViewModelStoreCreator.kt b/library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/lifecycle/DestinationViewModelStoreCreator.kt similarity index 100% rename from library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/lifecycle/DestinationViewModelStoreCreator.kt rename to library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/lifecycle/DestinationViewModelStoreCreator.kt diff --git a/library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/moveablesharedelement/BoundsTransformDeferredAnimation.kt b/library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/moveablesharedelement/BoundsTransformDeferredAnimation.kt similarity index 100% rename from library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/moveablesharedelement/BoundsTransformDeferredAnimation.kt rename to library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/moveablesharedelement/BoundsTransformDeferredAnimation.kt diff --git a/library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/moveablesharedelement/MovableSharedElementState.kt b/library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/moveablesharedelement/MovableSharedElementState.kt similarity index 100% rename from library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/moveablesharedelement/MovableSharedElementState.kt rename to library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/moveablesharedelement/MovableSharedElementState.kt diff --git a/library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/moveablesharedelement/MovableSharedElements.kt b/library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/moveablesharedelement/MovableSharedElements.kt similarity index 100% rename from library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/moveablesharedelement/MovableSharedElements.kt rename to library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/moveablesharedelement/MovableSharedElements.kt diff --git a/library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/threepane/ThreePane.kt b/library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/threepane/ThreePane.kt similarity index 100% rename from library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/threepane/ThreePane.kt rename to library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/threepane/ThreePane.kt diff --git a/library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/threepane/configurations/MovableSharedElementConfiguration.kt b/library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/threepane/configurations/MovableSharedElementConfiguration.kt similarity index 100% rename from library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/threepane/configurations/MovableSharedElementConfiguration.kt rename to library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/threepane/configurations/MovableSharedElementConfiguration.kt diff --git a/library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/threepane/configurations/ThreePaneAdaptiveConfiguration.kt b/library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/threepane/configurations/ThreePaneAdaptiveConfiguration.kt similarity index 100% rename from library/adaptive/src/commonMain/kotlin/com/tunjid/treenav/adaptive/threepane/configurations/ThreePaneAdaptiveConfiguration.kt rename to library/compose/src/commonMain/kotlin/com/tunjid/treenav/adaptive/threepane/configurations/ThreePaneAdaptiveConfiguration.kt diff --git a/library/adaptive/src/commonTest/kotlin/com/tunjid/treenav/adaptive/SlotBasedAdaptiveNavigationStateTest.kt b/library/compose/src/commonTest/kotlin/com/tunjid/treenav/adaptive/SlotBasedAdaptiveNavigationStateTest.kt similarity index 100% rename from library/adaptive/src/commonTest/kotlin/com/tunjid/treenav/adaptive/SlotBasedAdaptiveNavigationStateTest.kt rename to library/compose/src/commonTest/kotlin/com/tunjid/treenav/adaptive/SlotBasedAdaptiveNavigationStateTest.kt diff --git a/libraryVersion.properties b/libraryVersion.properties index 8c7d675..f499a74 100644 --- a/libraryVersion.properties +++ b/libraryVersion.properties @@ -17,4 +17,4 @@ groupId=com.tunjid.treenav treenav_version=0.0.7 strings_version=0.0.7 -adaptive_version=0.0.7 \ No newline at end of file +compose_version=0.0.7 \ No newline at end of file diff --git a/sample/common/build.gradle.kts b/sample/common/build.gradle.kts index 6f294e9..09d7a3c 100755 --- a/sample/common/build.gradle.kts +++ b/sample/common/build.gradle.kts @@ -37,7 +37,7 @@ kotlin { dependencies { implementation(project(":library:treenav")) implementation(project(":library:strings")) - implementation(project(":library:adaptive")) + implementation(project(":library:compose")) implementation(compose.components.resources) diff --git a/settings.gradle.kts b/settings.gradle.kts index 8b5c097..6504b4a 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -39,7 +39,7 @@ rootProject.name = "TreeNavigation" include( ":library:treenav", ":library:strings", - ":library:adaptive", + ":library:compose", ":sample:android", ":sample:common", ":sample:desktop",