diff --git a/.gitignore b/.gitignore index b6a5529..30bedc3 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ captures .externalNativeBuild .cxx xcuserdata +.kotlin .gradle build/ diff --git a/build.gradle.kts b/build.gradle.kts index 06a4f50..db96744 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -7,6 +7,7 @@ plugins { alias(libs.plugins.kotlinAndroid).apply(false) alias(libs.plugins.kotlinJvm).apply(false) alias(libs.plugins.kotlinSerialization).apply(false) + alias(libs.plugins.composeCompiler).apply(false) alias(libs.plugins.composeMultiplatform).apply(false) alias(libs.plugins.conventionPlugin).apply(false) } diff --git a/calf-core/build.gradle.kts b/calf-core/build.gradle.kts index 26c7b3a..f9c72b1 100644 --- a/calf-core/build.gradle.kts +++ b/calf-core/build.gradle.kts @@ -1,5 +1,6 @@ plugins { alias(libs.plugins.kotlinMultiplatform) + alias(libs.plugins.composeCompiler) alias(libs.plugins.composeMultiplatform) alias(libs.plugins.androidLibrary) } diff --git a/calf-file-picker/build.gradle.kts b/calf-file-picker/build.gradle.kts index de4c872..522d62d 100644 --- a/calf-file-picker/build.gradle.kts +++ b/calf-file-picker/build.gradle.kts @@ -1,5 +1,6 @@ plugins { alias(libs.plugins.kotlinMultiplatform) + alias(libs.plugins.composeCompiler) alias(libs.plugins.composeMultiplatform) alias(libs.plugins.androidLibrary) } diff --git a/calf-file-picker/src/desktopMain/kotlin/com/mohamedrejeb/calf/picker/FilePickerLauncher.desktop.kt b/calf-file-picker/src/desktopMain/kotlin/com/mohamedrejeb/calf/picker/FilePickerLauncher.desktop.kt index 8eeed75..707cac8 100644 --- a/calf-file-picker/src/desktopMain/kotlin/com/mohamedrejeb/calf/picker/FilePickerLauncher.desktop.kt +++ b/calf-file-picker/src/desktopMain/kotlin/com/mohamedrejeb/calf/picker/FilePickerLauncher.desktop.kt @@ -47,14 +47,16 @@ actual fun rememberFilePickerLauncher( FilePickerFileType.Folder -> listOf("folder") FilePickerFileType.All -> emptyList() else -> - type.value.map { - it - .removeSuffix("/*") - .removeSuffix("/") - .removeSuffix("*") - }.filter { - it.isNotEmpty() - } + type.value + .map { + it + .removeSuffix("/*") + .removeSuffix("/") + .removeSuffix("*") + } + .filter { + it.isNotEmpty() + } } fileDialog.setFilenameFilter { file, name -> if (mimeType.isEmpty()) { diff --git a/calf-geo/build.gradle.kts b/calf-geo/build.gradle.kts index 39d2ab8..cdbfb96 100644 --- a/calf-geo/build.gradle.kts +++ b/calf-geo/build.gradle.kts @@ -1,29 +1,13 @@ plugins { alias(libs.plugins.kotlinMultiplatform) + alias(libs.plugins.composeCompiler) alias(libs.plugins.composeMultiplatform) alias(libs.plugins.androidLibrary) } -kotlin { - kotlin.applyDefaultHierarchyTemplate() - androidTarget { - publishLibraryVariants("release") - compilations.all { - kotlinOptions { - jvmTarget = "11" - } - } - } - jvm("desktop") { - jvmToolchain(11) - } - js(IR) { - browser() - } - iosX64() - iosArm64() - iosSimulatorArm64() +composeMultiplatformSetup() +kotlin { sourceSets.commonMain.dependencies { implementation(compose.runtime) implementation(compose.foundation) @@ -34,15 +18,3 @@ kotlin { implementation(libs.play.services.location) } } - -android { - namespace = "com.mohamedrejeb.calf.geo" - compileSdk = libs.versions.android.compileSdk.get().toInt() - defaultConfig { - minSdk = libs.versions.android.minSdk.get().toInt() - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - } -} diff --git a/calf-maps/build.gradle.kts b/calf-maps/build.gradle.kts index 38bfe9e..7b55ae1 100644 --- a/calf-maps/build.gradle.kts +++ b/calf-maps/build.gradle.kts @@ -1,29 +1,13 @@ plugins { alias(libs.plugins.kotlinMultiplatform) + alias(libs.plugins.composeCompiler) alias(libs.plugins.composeMultiplatform) alias(libs.plugins.androidLibrary) } -kotlin { - kotlin.applyDefaultHierarchyTemplate() - androidTarget { - publishLibraryVariants("release") - compilations.all { - kotlinOptions { - jvmTarget = "11" - } - } - } - jvm("desktop") { - jvmToolchain(11) - } - js(IR) { - browser() - } - iosX64() - iosArm64() - iosSimulatorArm64() +composeMultiplatformSetup() +kotlin { sourceSets.commonMain.dependencies { implementation(compose.runtime) implementation(compose.foundation) @@ -33,15 +17,3 @@ kotlin { implementation(libs.kotlin.test) } } - -android { - namespace = "com.mohamedrejeb.calf.maps" - compileSdk = libs.versions.android.compileSdk.get().toInt() - defaultConfig { - minSdk = libs.versions.android.minSdk.get().toInt() - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - } -} diff --git a/calf-media/build.gradle.kts b/calf-media/build.gradle.kts index 447c199..be34c29 100644 --- a/calf-media/build.gradle.kts +++ b/calf-media/build.gradle.kts @@ -1,5 +1,6 @@ plugins { alias(libs.plugins.kotlinMultiplatform) + alias(libs.plugins.composeCompiler) alias(libs.plugins.composeMultiplatform) alias(libs.plugins.androidLibrary) } diff --git a/calf-navigation/build.gradle.kts b/calf-navigation/build.gradle.kts index f343bd5..15cf1ae 100644 --- a/calf-navigation/build.gradle.kts +++ b/calf-navigation/build.gradle.kts @@ -1,5 +1,6 @@ plugins { alias(libs.plugins.kotlinMultiplatform) + alias(libs.plugins.composeCompiler) alias(libs.plugins.composeMultiplatform) alias(libs.plugins.androidLibrary) } diff --git a/calf-notifications/build.gradle.kts b/calf-notifications/build.gradle.kts index 447c199..be34c29 100644 --- a/calf-notifications/build.gradle.kts +++ b/calf-notifications/build.gradle.kts @@ -1,5 +1,6 @@ plugins { alias(libs.plugins.kotlinMultiplatform) + alias(libs.plugins.composeCompiler) alias(libs.plugins.composeMultiplatform) alias(libs.plugins.androidLibrary) } diff --git a/calf-permissions/build.gradle.kts b/calf-permissions/build.gradle.kts index 8c4800a..7d5c133 100644 --- a/calf-permissions/build.gradle.kts +++ b/calf-permissions/build.gradle.kts @@ -1,5 +1,6 @@ plugins { alias(libs.plugins.kotlinMultiplatform) + alias(libs.plugins.composeCompiler) alias(libs.plugins.composeMultiplatform) alias(libs.plugins.androidLibrary) } diff --git a/calf-permissions/src/commonMain/kotlin/com.mohamedrejeb.calf/permissions/PermissionState.kt b/calf-permissions/src/commonMain/kotlin/com.mohamedrejeb.calf/permissions/PermissionState.kt index 8eb727a..c3e5cfa 100644 --- a/calf-permissions/src/commonMain/kotlin/com.mohamedrejeb.calf/permissions/PermissionState.kt +++ b/calf-permissions/src/commonMain/kotlin/com.mohamedrejeb.calf/permissions/PermissionState.kt @@ -41,7 +41,7 @@ interface PermissionState { /** * [permission]'s status */ - val status: PermissionStatus + var status: PermissionStatus /** * Request the [permission] to the user. diff --git a/calf-permissions/src/iosMain/kotlin/com.mohamedrejeb.calf/permissions/MutablePermissionState.ios.kt b/calf-permissions/src/iosMain/kotlin/com.mohamedrejeb.calf/permissions/MutablePermissionState.ios.kt index c9e450e..98890de 100644 --- a/calf-permissions/src/iosMain/kotlin/com.mohamedrejeb.calf/permissions/MutablePermissionState.ios.kt +++ b/calf-permissions/src/iosMain/kotlin/com.mohamedrejeb.calf/permissions/MutablePermissionState.ios.kt @@ -24,14 +24,15 @@ import platform.UIKit.UIApplicationOpenSettingsURLString @Composable internal actual fun rememberMutablePermissionState( permission: Permission, - onPermissionResult: (Boolean) -> Unit + onPermissionResult: (Boolean) -> Unit, ): MutablePermissionState { - val permissionState = remember(permission) { - MutablePermissionState( - permission = permission, - onPermissionResult = onPermissionResult, - ) - } + val permissionState = + remember(permission) { + MutablePermissionState( + permission = permission, + onPermissionResult = onPermissionResult, + ) + } return permissionState } @@ -47,12 +48,11 @@ internal actual fun rememberMutablePermissionState( @Stable internal actual class MutablePermissionState( override val permission: Permission, - private val onPermissionResult: (Boolean) -> Unit + private val onPermissionResult: (Boolean) -> Unit, ) : PermissionState { - actual constructor( - permission: Permission - ): this(permission, {}) + permission: Permission, + ) : this(permission, {}) private val permissionDelegate = permission.getPermissionDelegate() @@ -67,12 +67,12 @@ internal actual class MutablePermissionState( onPermissionResult = { onPermissionResult(it) refreshPermissionStatus() - } + }, ) } override fun openAppSettings() { - val settingsUrl = NSURL.URLWithString(UIApplicationOpenSettingsURLString)!! + val settingsUrl = NSURL.URLWithString(UIApplicationOpenSettingsURLString) ?: return UIApplication.sharedApplication.openURL(settingsUrl) } @@ -81,4 +81,4 @@ internal actual class MutablePermissionState( this.status = status } } -} \ No newline at end of file +} diff --git a/calf-permissions/src/jsMain/kotlin/com.mohamedrejeb.calf/permissions/MutablePermissionState.js.kt b/calf-permissions/src/jsMain/kotlin/com.mohamedrejeb.calf/permissions/MutablePermissionState.js.kt index 1383040..53a6612 100644 --- a/calf-permissions/src/jsMain/kotlin/com.mohamedrejeb.calf/permissions/MutablePermissionState.js.kt +++ b/calf-permissions/src/jsMain/kotlin/com.mohamedrejeb.calf/permissions/MutablePermissionState.js.kt @@ -21,7 +21,7 @@ import androidx.compose.runtime.setValue @Composable internal actual fun rememberMutablePermissionState( permission: Permission, - onPermissionResult: (Boolean) -> Unit + onPermissionResult: (Boolean) -> Unit, ): MutablePermissionState { return remember(permission) { MutablePermissionState(permission) @@ -40,7 +40,6 @@ internal actual fun rememberMutablePermissionState( internal actual class MutablePermissionState actual constructor( override val permission: Permission, ) : PermissionState { - override var status: PermissionStatus by mutableStateOf(getPermissionStatus()) override fun launchPermissionRequest() {} @@ -52,4 +51,4 @@ internal actual class MutablePermissionState actual constructor( private fun getPermissionStatus(): PermissionStatus { return PermissionStatus.Denied(false) } -} \ No newline at end of file +} diff --git a/calf-sf-symbols/build.gradle.kts b/calf-sf-symbols/build.gradle.kts index c41cf71..9621f82 100644 --- a/calf-sf-symbols/build.gradle.kts +++ b/calf-sf-symbols/build.gradle.kts @@ -1,5 +1,6 @@ plugins { alias(libs.plugins.kotlinMultiplatform) + alias(libs.plugins.composeCompiler) alias(libs.plugins.composeMultiplatform) alias(libs.plugins.androidLibrary) } diff --git a/calf-ui/build.gradle.kts b/calf-ui/build.gradle.kts index aad4251..cf3548a 100644 --- a/calf-ui/build.gradle.kts +++ b/calf-ui/build.gradle.kts @@ -2,6 +2,7 @@ import org.gradle.internal.os.OperatingSystem plugins { alias(libs.plugins.kotlinMultiplatform) + alias(libs.plugins.composeCompiler) alias(libs.plugins.composeMultiplatform) alias(libs.plugins.androidLibrary) } @@ -34,12 +35,12 @@ kotlin { } sourceSets.desktopMain.dependencies { - implementation("org.openjfx:javafx-base:19:$platform") - implementation("org.openjfx:javafx-graphics:19:$platform") - implementation("org.openjfx:javafx-controls:19:$platform") - implementation("org.openjfx:javafx-media:19:$platform") - implementation("org.openjfx:javafx-web:19:$platform") - implementation("org.openjfx:javafx-swing:19:$platform") + implementation("org.openjfx:javafx-base:17:$platform") + implementation("org.openjfx:javafx-graphics:17:$platform") + implementation("org.openjfx:javafx-controls:17:$platform") + implementation("org.openjfx:javafx-media:17:$platform") + implementation("org.openjfx:javafx-web:17:$platform") + implementation("org.openjfx:javafx-swing:17:$platform") implementation(libs.kotlinx.coroutines.javafx) } } diff --git a/calf-ui/src/iosMain/kotlin/com.mohamedrejeb.calf.ui/web/WebView.ios.kt b/calf-ui/src/iosMain/kotlin/com.mohamedrejeb.calf.ui/web/WebView.ios.kt index b1b049b..b25cc23 100644 --- a/calf-ui/src/iosMain/kotlin/com.mohamedrejeb.calf.ui/web/WebView.ios.kt +++ b/calf-ui/src/iosMain/kotlin/com.mohamedrejeb.calf.ui/web/WebView.ios.kt @@ -7,6 +7,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.interop.UIKitView import kotlinx.cinterop.BetaInteropApi import kotlinx.cinterop.ExperimentalForeignApi +import kotlinx.cinterop.ObjCSignatureOverride import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import platform.Foundation.NSString @@ -168,12 +169,14 @@ actual class WebViewState actual constructor( var webView by mutableStateOf(null) internal set - @Suppress("CONFLICTING_OVERLOADS") + @Suppress("PARAMETER_NAME_CHANGED_ON_OVERRIDE") + @ObjCSignatureOverride override fun webView(webView: WKWebView, didFinishNavigation: WKNavigation?) { loadingState = LoadingState.Finished } - @Suppress("CONFLICTING_OVERLOADS") + @Suppress("PARAMETER_NAME_CHANGED_ON_OVERRIDE") + @ObjCSignatureOverride override fun webView(webView: WKWebView, didCommitNavigation: WKNavigation?) { loadingState = LoadingState.Loading(webView.estimatedProgress.toFloat()) } @@ -186,6 +189,7 @@ private fun WKWebView.applySettings(webSettings: WebSettings) { } // Use Dispatchers.Main to ensure that the webview methods are called on UI thread +@OptIn(BetaInteropApi::class) internal suspend fun WebViewNavigator.handleNavigationEvents( webView: WKWebView ): Nothing = withContext(Dispatchers.Main) { diff --git a/convention-plugins/src/main/kotlin/Hirearchy.kt b/convention-plugins/src/main/kotlin/Hirearchy.kt index a2656d2..fe4a9ca 100644 --- a/convention-plugins/src/main/kotlin/Hirearchy.kt +++ b/convention-plugins/src/main/kotlin/Hirearchy.kt @@ -12,14 +12,14 @@ fun KotlinMultiplatformExtension.applyHierarchyTemplate() { withAndroidTarget() withJvm() withJs() - withWasm() + withWasmJs() } group("nonAndroid") { withJvm() withIos() withJs() - withWasm() + withWasmJs() } } } diff --git a/convention-plugins/src/main/kotlin/Targets.kt b/convention-plugins/src/main/kotlin/Targets.kt index f59f9bf..79eae6e 100644 --- a/convention-plugins/src/main/kotlin/Targets.kt +++ b/convention-plugins/src/main/kotlin/Targets.kt @@ -1,19 +1,19 @@ +import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi +import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl +@OptIn(ExperimentalKotlinGradlePluginApi::class) fun KotlinMultiplatformExtension.applyTargets() { androidTarget { publishLibraryVariants("release") - compilations.all { - kotlinOptions { - jvmTarget = "1.8" - } + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) } } - jvm("desktop") { - jvmToolchain(11) - } + jvmToolchain(11) + jvm("desktop") js { browser() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1309a16..9d97fdd 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,9 +1,9 @@ [versions] agp = "8.2.2" -kotlin = "1.9.22" -compose = "1.6.0" -kotlinx-serialization-json = "1.6.2" -nexus-publish = "2.0.0-rc-1" +kotlin = "2.0.0" +compose = "1.6.10" +kotlinx-serialization-json = "1.6.3" +nexus-publish = "2.0.0" documentfile = "1.0.1" conventionPlugin = "0.1.0" @@ -11,14 +11,14 @@ calf = "0.4.0" # For sample compose-compiler = "1.5.4" -activity-compose = "1.8.2" +activity-compose = "1.9.0" navigation-compose = "2.7.7" android-minSdk = "24" android-compileSdk = "34" -kotlinx-coroutines = "1.8.0" +kotlinx-coroutines = "1.8.1" appcompat = "1.6.1" android-lifecycle = "2.2.0" -play-services-location = "21.1.0" +play-services-location = "21.2.0" [libraries] gradlePlugin-android = { module = "com.android.tools.build:gradle", version.ref = "agp" } @@ -54,5 +54,6 @@ kotlinAndroid = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } kotlinJvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } kotlinSerialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } composeMultiplatform = { id = "org.jetbrains.compose", version.ref = "compose" } +composeCompiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } conventionPlugin = { id = "com.mohamedrejeb.gradle.setup", version.ref = "conventionPlugin" } \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c30b486..3499ded 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/sample/android/build.gradle.kts b/sample/android/build.gradle.kts index 1e49553..1a9b37a 100644 --- a/sample/android/build.gradle.kts +++ b/sample/android/build.gradle.kts @@ -1,7 +1,8 @@ plugins { - alias(libs.plugins.composeMultiplatform) alias(libs.plugins.androidApplication) alias(libs.plugins.kotlinAndroid) + alias(libs.plugins.composeCompiler) + alias(libs.plugins.composeMultiplatform) } android { diff --git a/sample/common/build.gradle.kts b/sample/common/build.gradle.kts index 66c51a9..e8b5ba4 100644 --- a/sample/common/build.gradle.kts +++ b/sample/common/build.gradle.kts @@ -2,30 +2,14 @@ import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl plugins { alias(libs.plugins.kotlinMultiplatform) + alias(libs.plugins.composeCompiler) alias(libs.plugins.composeMultiplatform) alias(libs.plugins.androidLibrary) } -kotlin { - applyDefaultHierarchyTemplate() - androidTarget { - compilations.all { - kotlinOptions { - jvmTarget = "11" - } - } - } - jvm("desktop") { - jvmToolchain(11) - } - js { - browser() - } - @OptIn(ExperimentalWasmDsl::class) - wasmJs { - browser() - } +composeMultiplatformSetup() +kotlin { listOf( iosX64(), iosArm64(), @@ -36,7 +20,7 @@ kotlin { isStatic = true // IMPORTANT: Exporting calf-ui is required for some functionalities to work - export(libs.calf.ui) + export(projects.calfUi) } } @@ -50,24 +34,9 @@ kotlin { // Calf // This is possible thanks to `enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")` // in `settings.gradle.kts - api(libs.calf.ui) - implementation(libs.calf.file.picker) - implementation(libs.calf.permissions) + api(projects.calfUi) + implementation(projects.calfFilePicker) + implementation(projects.calfPermissions) implementation(projects.calfNavigation) } } - -android { - namespace = "com.mohamedrejeb.calf.sample.common" - compileSdk = libs.versions.android.compileSdk.get().toInt() - sourceSets["main"].res.srcDirs("src/androidMain/res") - sourceSets["main"].resources.srcDirs("src/commonMain/resources") - - defaultConfig { - minSdk = libs.versions.android.minSdk.get().toInt() - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - } -} diff --git a/sample/common/src/commonMain/kotlin/com.mohamedrejeb.calf.sample/screens/PermissionsScreen.kt b/sample/common/src/commonMain/kotlin/com.mohamedrejeb.calf.sample/screens/PermissionsScreen.kt index 109fe1c..16fff66 100644 --- a/sample/common/src/commonMain/kotlin/com.mohamedrejeb.calf.sample/screens/PermissionsScreen.kt +++ b/sample/common/src/commonMain/kotlin/com.mohamedrejeb.calf.sample/screens/PermissionsScreen.kt @@ -11,12 +11,11 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.systemBars import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.lazy.LazyItemScope import androidx.compose.foundation.lazy.items import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ArrowBackIosNew import androidx.compose.material3.Button -import androidx.compose.material3.Divider +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.IconButtonDefaults @@ -78,16 +77,31 @@ fun PermissionScreen(navigateBack: () -> Unit) { @OptIn(ExperimentalPermissionsApi::class) @Composable -private fun LazyItemScope.PermissionItem(permission: Permission) { +private fun PermissionItem(permission: Permission) { val permissionState = rememberPermissionState(permission = permission) + Spacer(modifier = Modifier.height(16.dp)) - Text(text = permission.name) + + Text( + text = permission.name, + ) + Text( text = "Is permission granted: ${permissionState.status.isGranted}", ) - Button(onClick = { permissionState.launchPermissionRequest() }) { - Text("Request permission") + + Button( + onClick = { + println("Click") + permissionState.launchPermissionRequest() + }, + ) { + Text( + text = "Request permission", + ) } + Spacer(modifier = Modifier.height(16.dp)) - Divider() + + HorizontalDivider() } diff --git a/sample/desktop/build.gradle.kts b/sample/desktop/build.gradle.kts index 7c804b9..a16f4b0 100644 --- a/sample/desktop/build.gradle.kts +++ b/sample/desktop/build.gradle.kts @@ -2,12 +2,14 @@ import org.jetbrains.compose.desktop.application.dsl.TargetFormat plugins { alias(libs.plugins.kotlinMultiplatform) + alias(libs.plugins.composeCompiler) alias(libs.plugins.composeMultiplatform) } kotlin { + jvmToolchain(11) + jvm { - jvmToolchain(11) withJava() } diff --git a/sample/web-js/build.gradle.kts b/sample/web-js/build.gradle.kts index 5aa6380..e1d861a 100644 --- a/sample/web-js/build.gradle.kts +++ b/sample/web-js/build.gradle.kts @@ -1,11 +1,17 @@ plugins { alias(libs.plugins.kotlinMultiplatform) + alias(libs.plugins.composeCompiler) alias(libs.plugins.composeMultiplatform) } kotlin { js { - browser() + moduleName = "web" + browser { + commonWebpackConfig { + outputFileName = "web.js" + } + } binaries.executable() } diff --git a/sample/web-wasm/build.gradle.kts b/sample/web-wasm/build.gradle.kts index 6e136ce..2490fe3 100644 --- a/sample/web-wasm/build.gradle.kts +++ b/sample/web-wasm/build.gradle.kts @@ -2,6 +2,7 @@ import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl plugins { alias(libs.plugins.kotlinMultiplatform) + alias(libs.plugins.composeCompiler) alias(libs.plugins.composeMultiplatform) }