package dev.inmo.jsuikit.utils import dev.inmo.jsuikit.modifiers.UIKitModifier import dev.inmo.jsuikit.modifiers.include import org.jetbrains.compose.web.attributes.AttrsBuilder import org.jetbrains.compose.web.dom.AttrBuilderContext import org.w3c.dom.Element class AttributesCollection ( private vararg val modifiers: UIKitModifier, private val attrs: AttrBuilderContext = {} ) { val builder: AttrBuilderContext = { include(*modifiers) attrs() } operator fun plus(other: AttributesCollection) = AttributesCollection( *(modifiers + other.modifiers).distinct().toTypedArray() ) { this@AttributesCollection.attrs.invoke(this) other.attrs.invoke(this) } companion object { val Empty = Attrs() @Suppress("UNCHECKED_CAST") fun empty() = Empty as Attrs } } typealias Attrs = AttributesCollection