mirror of
				https://github.com/InsanusMokrassar/MicroUtils.git
				synced 2025-11-04 14:14:51 +00:00 
			
		
		
		
	@@ -1,5 +1,13 @@
 | 
			
		||||
# Changelog
 | 
			
		||||
 | 
			
		||||
## 0.10.6
 | 
			
		||||
 | 
			
		||||
* `Versions`
 | 
			
		||||
    * `Ktor`: `2.0.1` -> `2.0.2`
 | 
			
		||||
* `Common`
 | 
			
		||||
    * `JS`:
 | 
			
		||||
        * Add `ResizeObserver` functionality
 | 
			
		||||
 | 
			
		||||
## 0.10.5
 | 
			
		||||
 | 
			
		||||
* `Versions`
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,58 @@
 | 
			
		||||
package dev.inmo.micro_utils.common
 | 
			
		||||
 | 
			
		||||
import org.w3c.dom.*
 | 
			
		||||
import kotlin.js.Json
 | 
			
		||||
import kotlin.js.json
 | 
			
		||||
 | 
			
		||||
external class ResizeObserver(
 | 
			
		||||
    callback: (Array<ResizeObserverEntry>, ResizeObserver) -> Unit
 | 
			
		||||
) {
 | 
			
		||||
    fun observe(target: Element, options: Json = definedExternally)
 | 
			
		||||
 | 
			
		||||
    fun unobserve(target: Element)
 | 
			
		||||
 | 
			
		||||
    fun disconnect()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
external interface ResizeObserverSize {
 | 
			
		||||
    val blockSize: Float
 | 
			
		||||
    val inlineSize: Float
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
external interface ResizeObserverEntry {
 | 
			
		||||
    val borderBoxSize: Array<ResizeObserverSize>
 | 
			
		||||
    val contentBoxSize: Array<ResizeObserverSize>
 | 
			
		||||
    val devicePixelContentBoxSize: Array<ResizeObserverSize>
 | 
			
		||||
    val contentRect: DOMRectReadOnly
 | 
			
		||||
    val target: Element
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fun ResizeObserver.observe(target: Element, options: ResizeObserverObserveOptions) = observe(
 | 
			
		||||
    target,
 | 
			
		||||
    json(
 | 
			
		||||
        "box" to options.box ?.name
 | 
			
		||||
    )
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
class ResizeObserverObserveOptions(
 | 
			
		||||
    val box: Box? = null
 | 
			
		||||
) {
 | 
			
		||||
    sealed interface Box {
 | 
			
		||||
        val name: String
 | 
			
		||||
 | 
			
		||||
        object Content : Box {
 | 
			
		||||
            override val name: String
 | 
			
		||||
                get() = "content-box"
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        object Border : Box {
 | 
			
		||||
            override val name: String
 | 
			
		||||
                get() = "border-box"
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        object DevicePixelContent : Box {
 | 
			
		||||
            override val name: String
 | 
			
		||||
                get() = "device-pixel-content-box"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -14,5 +14,5 @@ crypto_js_version=4.1.1
 | 
			
		||||
# Project data
 | 
			
		||||
 | 
			
		||||
group=dev.inmo
 | 
			
		||||
version=0.10.5
 | 
			
		||||
android_code_version=120
 | 
			
		||||
version=0.10.6
 | 
			
		||||
android_code_version=121
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ jb-dokka = "1.6.21"
 | 
			
		||||
klock = "2.7.0"
 | 
			
		||||
uuid = "0.4.0"
 | 
			
		||||
 | 
			
		||||
ktor = "2.0.1"
 | 
			
		||||
ktor = "2.0.2"
 | 
			
		||||
 | 
			
		||||
gh-release = "2.3.7"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user