mirror of
https://github.com/InsanusMokrassar/MicroUtils.git
synced 2024-11-22 16:23:50 +00:00
commit
16463d0eb9
17
CHANGELOG.md
17
CHANGELOG.md
@ -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`:
|
||||||
|
@ -12,7 +12,7 @@ kotlin {
|
|||||||
sourceSets {
|
sourceSets {
|
||||||
androidMain {
|
androidMain {
|
||||||
dependencies {
|
dependencies {
|
||||||
api libs.android.compose.material3
|
api libs.jb.compose.material3
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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)
|
||||||
|
}
|
||||||
|
}
|
@ -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)
|
||||||
|
}
|
@ -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
|
||||||
|
}
|
@ -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
|
||||||
|
}
|
@ -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
|
||||||
|
@ -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" }
|
||||||
|
Loading…
Reference in New Issue
Block a user