Update dependencies, update utils module

Signed-off-by: denis0001-dev <denis0001.dev@ya.ru>
This commit is contained in:
2026-01-22 20:50:42 +03:00
Unverified
parent 25aaf21908
commit c67ee78580
10 changed files with 116 additions and 103 deletions
+7 -9
View File
@@ -1,10 +1,8 @@
import com.android.build.api.dsl.androidLibrary
plugins {
alias(libs.plugins.kotlin.multiplatform)
alias(libs.plugins.compose.multiplatform)
alias(libs.plugins.compose.compiler)
alias(libs.plugins.android.kotlin.multiplatform.library)
alias(libs.plugins.kotlin.multiplatform.library)
}
kotlin {
@@ -31,13 +29,13 @@ kotlin {
sourceSets {
commonMain.dependencies {
implementation(libs.kotlin.stdlib)
implementation(compose.runtime)
implementation(compose.foundation)
implementation(compose.material3)
implementation(compose.ui)
implementation(compose.components.resources)
implementation(libs.compose.runtime)
implementation(libs.compose.foundation)
implementation(libs.compose.material3)
implementation(libs.compose.ui)
implementation(libs.compose.components.resources)
implementation(libs.constraintlayout)
implementation(compose.materialIconsExtended)
implementation(libs.compose.materialIconsExtended)
implementation(libs.jetbrains.kotlinx.coroutines.core)
implementation(libs.navigation.compose)
implementation(libs.kotlinx.serialization.json)
@@ -7,12 +7,11 @@ import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.Typography
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocal
import androidx.compose.runtime.ProvidableCompositionLocal
import androidx.compose.runtime.compositionLocalOf
import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusManager
import androidx.compose.ui.platform.ClipboardManager
import androidx.compose.ui.platform.LocalClipboardManager
import androidx.compose.ui.platform.Clipboard
import androidx.compose.ui.platform.LocalClipboard
import androidx.compose.ui.platform.LocalLayoutDirection
import androidx.compose.ui.platform.SoftwareKeyboardController
import androidx.compose.ui.text.AnnotatedString
@@ -68,13 +67,10 @@ expect fun Modifier.clearFocusOnKeyboardDismiss(): Modifier
operator fun Modifier.plus(other: Modifier) = then(other)
var ClipboardManager.text
get() = getText()
set(value) = setText(value!!)
@Composable
expect fun ToggleNavScrimEffect(enabled: Boolean = false)
// TODO fix implementation
interface SupportClipboardManager {
suspend fun setText(string: String)
suspend fun getText(): String?
@@ -83,21 +79,21 @@ interface SupportClipboardManager {
fun setTextListener(listener: (String) -> Unit)
}
val LocalSupportClipboardManager: ProvidableCompositionLocal<SupportClipboardManager> = compositionLocalOf {
val LocalSupportClipboardManager = compositionLocalOf<SupportClipboardManager> {
throw IllegalStateException("This CompositionLocal hasn't been provided.")
}
val supportClipboardManagerImpl
@Composable get() = LocalClipboardManager().toSupport()
val supportClipboardManagerImpl @Composable get() = LocalClipboard().toSupport()
inline fun ClipboardManager.toSupport() = object : SupportClipboardManager {
inline fun Clipboard.toSupport() = object : SupportClipboardManager {
private var listener: ((String) -> Unit)? = null
override suspend fun setText(string: String) {
setText(string.toAnnotatedString())
setText(string)
listener?.invoke(string)
}
override suspend fun getText() = this@toSupport.getText()?.toString() ?: ""
override suspend fun getText() = this@toSupport.getClipEntry()?.toString() ?: ""
override fun setTextListener(listener: (String) -> Unit) {
this.listener = listener
@@ -109,7 +105,9 @@ fun String.toAnnotatedString() = AnnotatedString(this)
@Composable
inline operator fun <T> CompositionLocal<T>.invoke() = current
val LocalSnackbar: ProvidableCompositionLocal<SnackbarHostState> = compositionLocalOf { throw NullPointerException() }
val LocalSnackbar = compositionLocalOf<SnackbarHostState> {
throw NullPointerException()
}
inline fun resetFocus(
keyboardController: SoftwareKeyboardController?,
@@ -119,8 +117,7 @@ inline fun resetFocus(
focusManager.clearFocus(true)
}
val unsupported: Nothing
get() = throw UnsupportedOperationException()
val unsupported: Nothing get() = throw UnsupportedOperationException()
val WindowWidthSizeClass.rawValue: Int get() =
when (this) {
@@ -145,26 +142,23 @@ val WindowSizeClass.width get() = windowWidthSizeClass
val WindowSizeClass.height get() = windowHeightSizeClass
val WindowAdaptiveInfo.widthSizeClass get() = windowSizeClass.width
@Suppress("unused")
val WindowAdaptiveInfo.heightSizeClass get() = windowSizeClass.height
fun String.encodeJSON(): String {
val out = StringBuilder()
for (i in indices) {
when (val c: Char = get(i)) {
'"', '\\', '/' -> out.append('\\').append(c)
'\t' -> out.append("\\t")
'\b' -> out.append("\\b")
'\n' -> out.append("\\n")
'\r' -> out.append("\\r")
else -> if (c.code <= 0x1F) {
out.append("\\u${c.code.toString(16).padStart(4, '0')}")
} else {
out.append(c)
fun String.encodeJSON() = buildString {
for (i in this@encodeJSON.indices) {
append(
when (val c: Char = get(i)) {
'"', '\\', '/' -> "\\$c"
'\t' -> "\\t"
'\b' -> "\\b"
'\n' -> "\\n"
'\r' -> "\\r"
else -> if (c.code <= 0x1F) {
"\\u${c.code.toString(16).padStart(4, '0')}"
} else c
}
}
)
}
return "$out"
}
@Composable