Browse Source

Make DomElementWrapper private (#1749)

pull/1636/merge
Shagen Ogandzhanian 3 years ago committed by GitHub
parent
commit
4bf01cf5e0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      web/core/src/jsMain/kotlin/org/jetbrains/compose/web/css/StyleBuilder.kt
  2. 28
      web/core/src/jsMain/kotlin/org/jetbrains/compose/web/elements/Base.kt
  3. 17
      web/internal-web-core-runtime/src/jsMain/kotlin/org/jetbrains/compose/web/internal/runtime/DomApplier.kt

2
web/core/src/jsMain/kotlin/org/jetbrains/compose/web/css/StyleBuilder.kt

@ -7,9 +7,7 @@
package org.jetbrains.compose.web.css
import org.jetbrains.compose.web.internal.runtime.DomElementWrapper
import org.jetbrains.compose.web.internal.runtime.ComposeWebInternalApi
import org.w3c.dom.css.CSSStyleDeclaration
import kotlin.properties.ReadOnlyProperty
/**

28
web/core/src/jsMain/kotlin/org/jetbrains/compose/web/elements/Base.kt

@ -4,8 +4,9 @@ import androidx.compose.runtime.*
import org.jetbrains.compose.web.attributes.AttrsBuilder
import org.jetbrains.compose.web.ExperimentalComposeWebApi
import org.jetbrains.compose.web.css.StyleHolder
import org.jetbrains.compose.web.internal.runtime.DomElementWrapper
import org.jetbrains.compose.web.internal.runtime.ComposeWebInternalApi
import org.jetbrains.compose.web.internal.runtime.DomNodeWrapper
import org.jetbrains.compose.web.internal.runtime.NamedEventListener
import org.w3c.dom.Element
import org.w3c.dom.HTMLElement
import org.w3c.dom.css.ElementCSSInlineStyle
@ -35,9 +36,23 @@ private inline fun <TScope, T> ComposeDomNode(
currentComposer.endNode()
}
@ComposeWebInternalApi
private class DomElementWrapper(override val node: Element): DomNodeWrapper(node) {
private var currentListeners = emptyList<NamedEventListener>()
@OptIn(ComposeWebInternalApi::class)
private fun DomElementWrapper.updateProperties(applicators: List<Pair<(Element, Any) -> Unit, Any>>) {
fun updateEventListeners(list: List<NamedEventListener>) {
currentListeners.forEach {
node.removeEventListener(it.name, it)
}
currentListeners = list
currentListeners.forEach {
node.addEventListener(it.name, it)
}
}
fun updateProperties(applicators: List<Pair<(Element, Any) -> Unit, Any>>) {
node.removeAttribute("class")
applicators.forEach { (applicator, item) ->
@ -45,8 +60,7 @@ private fun DomElementWrapper.updateProperties(applicators: List<Pair<(Element,
}
}
@OptIn(ComposeWebInternalApi::class)
private fun DomElementWrapper.updateStyleDeclarations(styleApplier: StyleHolder) {
fun updateStyleDeclarations(styleApplier: StyleHolder) {
when (node) {
is HTMLElement, is SVGElement -> {
node.removeAttribute("style")
@ -64,8 +78,7 @@ private fun DomElementWrapper.updateStyleDeclarations(styleApplier: StyleHolder)
}
}
@OptIn(ComposeWebInternalApi::class)
fun DomElementWrapper.updateAttrs(attrs: Map<String, String>) {
fun updateAttrs(attrs: Map<String, String>) {
node.getAttributeNames().forEach { name ->
if (name == "style") return@forEach
node.removeAttribute(name)
@ -75,6 +88,7 @@ fun DomElementWrapper.updateAttrs(attrs: Map<String, String>) {
node.setAttribute(it.key, it.value)
}
}
}
@OptIn(ComposeWebInternalApi::class)

17
web/internal-web-core-runtime/src/jsMain/kotlin/org/jetbrains/compose/web/internal/runtime/DomApplier.kt

@ -72,20 +72,3 @@ open class DomNodeWrapper(open val node: Node) {
}
}
}
@ComposeWebInternalApi
class DomElementWrapper(override val node: Element): DomNodeWrapper(node) {
private var currentListeners = emptyList<NamedEventListener>()
fun updateEventListeners(list: List<NamedEventListener>) {
currentListeners.forEach {
node.removeEventListener(it.name, it)
}
currentListeners = list
currentListeners.forEach {
node.addEventListener(it.name, it)
}
}
}

Loading…
Cancel
Save