Merge pull request #487 from InsanusMokrassar/0.22.3

0.22.3
This commit is contained in:
InsanusMokrassar 2024-09-20 13:27:16 +06:00 committed by GitHub
commit 16463d0eb9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 123 additions and 12 deletions

View File

@ -1,5 +1,22 @@
# Changelog # Changelog
## 0.22.3
* `Versions`:
* `Serialization`: `1.7.2` -> `1.7.3`
* `Coroutines`: `1.8.1` -> `1.9.0`
* `Compose`: `1.7.0-alpha03` -> `1.7.0-beta02`
* `Koin`: `3.5.6` -> `4.0.0`
* `Okio`: `3.9.0` -> `3.9.1`
* `AndroidFragment`: `1.8.2` -> `1.8.3`
* `androidx.compose.material3:material3` has been replaced with `org.jetbrains.compose.material3:material3`
* `Common`:
* `JS`:
* Add several useful extensions
* `Compose`:
* `JS`:
* Add several useful extensions
## 0.22.2 ## 0.22.2
* `Versions`: * `Versions`:

View File

@ -12,7 +12,7 @@ kotlin {
sourceSets { sourceSets {
androidMain { androidMain {
dependencies { dependencies {
api libs.android.compose.material3 api libs.jb.compose.material3
} }
} }
} }

View File

@ -0,0 +1,19 @@
package dev.inmo.micro_utils.common.compose
import org.jetbrains.compose.web.dom.AttrBuilderContext
import org.w3c.dom.Element
operator fun <T : Element> AttrBuilderContext<T>?.plus(
other: AttrBuilderContext<T>?
) = when (this) {
null -> other ?: {}
else -> when (other) {
null -> this ?: {}
else -> {
{
invoke(this)
other(this)
}
}
}
}

View File

@ -0,0 +1,22 @@
package dev.inmo.micro_utils.common.compose
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.DisposableEffectResult
import androidx.compose.runtime.DisposableEffectScope
import org.jetbrains.compose.web.attributes.AttrsScope
import org.jetbrains.compose.web.dom.ElementScope
import org.w3c.dom.Element
/**
* This function must be called in the context of your tag content. It works like default [AttrsScope.ref],
* but able to be used several times. Uses [DisposableEffect] under the hood
*/
@Composable
fun <T : Element> ElementScope<T>.ref(
block: DisposableEffectScope.(T) -> DisposableEffectResult
) {
DisposableEffect(0) {
block(scopeElement)
}
}

View File

@ -0,0 +1,11 @@
package dev.inmo.micro_utils.common.compose
import org.jetbrains.compose.web.dom.AttrBuilderContext
fun tagClasses(vararg classnames: String): AttrBuilderContext<*> = {
classes(*classnames)
}
fun tagId(id: String): AttrBuilderContext<*> = {
id(id)
}

View File

@ -0,0 +1,13 @@
package dev.inmo.micro_utils.common
import kotlinx.browser.window
fun copyToClipboard(text: String): Boolean {
return runCatching {
window.navigator.clipboard.writeText(
text
)
}.onFailure {
it.printStackTrace()
}.isSuccess
}

View File

@ -0,0 +1,29 @@
package dev.inmo.micro_utils.common
import kotlinx.browser.window
import org.w3c.files.Blob
import org.w3c.files.BlobPropertyBag
import kotlin.js.json
external class ClipboardItem(data: dynamic)
inline fun Blob.convertToClipboardItem(): ClipboardItem {
val itemData: dynamic = json(this.type to this)
return ClipboardItem(itemData)
}
suspend fun copyImageURLToClipboard(imageUrl: String): Boolean {
return runCatching {
val response = window.fetch(imageUrl).await()
val blob = response.blob().await()
val data = arrayOf(
Blob(
arrayOf(blob),
BlobPropertyBag("image/png")
).convertToClipboardItem()
).asDynamic()
window.navigator.clipboard.write(data)
}.onFailure {
it.printStackTrace()
}.isSuccess
}

View File

@ -15,5 +15,5 @@ crypto_js_version=4.1.1
# Project data # Project data
group=dev.inmo group=dev.inmo
version=0.22.2 version=0.22.3
android_code_version=268 android_code_version=269

View File

@ -1,12 +1,12 @@
[versions] [versions]
kt = "2.0.20" kt = "2.0.20"
kt-serialization = "1.7.2" kt-serialization = "1.7.3"
kt-coroutines = "1.8.1" kt-coroutines = "1.9.0"
kslog = "1.3.6" kslog = "1.3.6"
jb-compose = "1.7.0-alpha03" jb-compose = "1.7.0-beta02"
jb-exposed = "0.54.0" jb-exposed = "0.54.0"
jb-dokka = "1.9.20" jb-dokka = "1.9.20"
@ -19,11 +19,11 @@ ktor = "2.3.12"
gh-release = "2.5.2" gh-release = "2.5.2"
koin = "3.5.6" koin = "4.0.0"
okio = "3.9.0" okio = "3.9.1"
ksp = "2.0.20-1.0.24" ksp = "2.0.20-1.0.25"
kotlin-poet = "1.18.1" kotlin-poet = "1.18.1"
versions = "0.51.0" versions = "0.51.0"
@ -34,10 +34,10 @@ dexcount = "4.0.0"
android-coreKtx = "1.13.1" android-coreKtx = "1.13.1"
android-recyclerView = "1.3.2" android-recyclerView = "1.3.2"
android-appCompat = "1.7.0" android-appCompat = "1.7.0"
android-fragment = "1.8.2" android-fragment = "1.8.3"
android-espresso = "3.6.1" android-espresso = "3.6.1"
android-test = "1.2.1" android-test = "1.2.1"
android-compose-material3 = "1.2.1" android-compose-material3 = "1.3.0"
android-props-minSdk = "21" android-props-minSdk = "21"
android-props-compileSdk = "35" android-props-compileSdk = "35"
@ -85,11 +85,11 @@ jb-exposed = { module = "org.jetbrains.exposed:exposed-core", version.ref = "jb-
jb-exposed-jdbc = { module = "org.jetbrains.exposed:exposed-jdbc", version.ref = "jb-exposed" } jb-exposed-jdbc = { module = "org.jetbrains.exposed:exposed-jdbc", version.ref = "jb-exposed" }
sqlite = { module = "org.xerial:sqlite-jdbc", version.ref = "sqlite" } sqlite = { module = "org.xerial:sqlite-jdbc", version.ref = "sqlite" }
jb-compose-material3 = { module = "org.jetbrains.compose.material3:material3", version.ref = "jb-compose" }
android-coreKtx = { module = "androidx.core:core-ktx", version.ref = "android-coreKtx" } android-coreKtx = { module = "androidx.core:core-ktx", version.ref = "android-coreKtx" }
android-recyclerView = { module = "androidx.recyclerview:recyclerview", version.ref = "android-recyclerView" } android-recyclerView = { module = "androidx.recyclerview:recyclerview", version.ref = "android-recyclerView" }
android-appCompat-resources = { module = "androidx.appcompat:appcompat-resources", version.ref = "android-appCompat" } android-appCompat-resources = { module = "androidx.appcompat:appcompat-resources", version.ref = "android-appCompat" }
android-compose-material3 = { module = "androidx.compose.material3:material3", version.ref = "android-compose-material3" }
android-fragment = { module = "androidx.fragment:fragment", version.ref = "android-fragment" } android-fragment = { module = "androidx.fragment:fragment", version.ref = "android-fragment" }
android-espresso = { module = "androidx.test.espresso:espresso-core", version.ref = "android-espresso" } android-espresso = { module = "androidx.test.espresso:espresso-core", version.ref = "android-espresso" }
android-test-junit = { module = "androidx.test.ext:junit", version.ref = "android-test" } android-test-junit = { module = "androidx.test.ext:junit", version.ref = "android-test" }