import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl import java.util.Base64 plugins { alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.android.library) alias(libs.plugins.kotlin.compose) alias(libs.plugins.compose.multiplatform) } group = "net.kukuri" version = "0.1.0" kotlin { jvm() androidTarget { compilations.all { kotlinOptions { jvmTarget = "17" } } } @OptIn(ExperimentalWasmDsl::class) wasmJs { browser(); binaries.executable() } sourceSets { commonMain.dependencies { implementation(compose.runtime) implementation(compose.foundation) implementation(compose.material) implementation(compose.ui) implementation(compose.components.resources) // Calendar month/week/year grid used by the Calendar frame (2.22). // kizitonwose/Calendar 2.7.0 is built against kotlinx-datetime 0.6.2, but this // project uses 0.7.1 (where YearMonth was introduced). Gradle's default conflict // resolution picks 0.6.2, which has no YearMonth, so the UI fails to compile. // The resolutionStrategy below forces the whole graph to 0.7.1. implementation(libs.calendar) implementation(libs.datetime) } commonTest.dependencies { implementation(libs.kotlin.test) implementation(libs.coroutines.test) } wasmJsMain { resources.srcDir(layout.buildDirectory.dir("webfontExtra")) } } } android { namespace = "net.kukuri.orgflow.ui" compileSdk = 35 defaultConfig { minSdk = 24 } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } lint { checkReleaseBuilds = false abortOnError = false } } // The deploy server's FTP forbids MKD, so nested composeResources never reach // the web root. Bundle the Japanese font as a flat webfont.js served from // memory via the fetch shim in index.html. val generateWebFontJs by tasks.registering { val src = file("src/commonMain/composeResources/font/zenkakugothicnew_regular.ttf") val out = layout.buildDirectory.file("webfontExtra/webfont.js") inputs.file(src) outputs.file(out) doLast { val b64 = Base64.getEncoder().encodeToString(src.readBytes()) val target = out.get().asFile target.parentFile.mkdirs() target.writeText( "window.__orgflowFontB64=\"" + b64 + "\";" + "window.__orgflowFontBlobs=(function(){" + "var bin=atob(window.__orgflowFontB64);" + "var u8=new Uint8Array(bin.length);" + "for(var i=0;i