diff options
author | Robert Jaros <rjaros@finn.pl> | 2017-09-01 16:15:38 +0200 |
---|---|---|
committer | Robert Jaros <rjaros@finn.pl> | 2017-09-01 16:15:38 +0200 |
commit | 79a1a1573051649b7b2d7b3fcd57d8506eb26bcb (patch) | |
tree | 5943cb30d71ccfaa0591edd2ce6204a181fd15e3 /src/main/kotlin/pl/treksoft/kvision/snabbdom | |
parent | fce6a5dcd7804b4ef618484182f8e8ebc053c761 (diff) | |
download | kvision-79a1a1573051649b7b2d7b3fcd57d8506eb26bcb.tar.gz kvision-79a1a1573051649b7b2d7b3fcd57d8506eb26bcb.tar.bz2 kvision-79a1a1573051649b7b2d7b3fcd57d8506eb26bcb.zip |
Testing framework
Diffstat (limited to 'src/main/kotlin/pl/treksoft/kvision/snabbdom')
-rw-r--r-- | src/main/kotlin/pl/treksoft/kvision/snabbdom/Types.kt | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/main/kotlin/pl/treksoft/kvision/snabbdom/Types.kt b/src/main/kotlin/pl/treksoft/kvision/snabbdom/Types.kt new file mode 100644 index 00000000..789417e6 --- /dev/null +++ b/src/main/kotlin/pl/treksoft/kvision/snabbdom/Types.kt @@ -0,0 +1,57 @@ +package pl.treksoft.kvision.snabbdom + +import com.github.snabbdom.* +import pl.treksoft.kvision.core.Widget + +external class Object + +fun obj(init: dynamic.() -> Unit): dynamic { + return (Object()).apply(init) +} + +@Suppress("UnsafeCastFromDynamic") +private fun VNodeData(): VNodeData = js("({})") + +interface SnOn<T> : On { + var self: T +} + +fun snOpt(block: VNodeData.() -> Unit) = (VNodeData()::apply)(block) + +@Suppress("UnsafeCastFromDynamic") +internal fun On(widget: Widget): SnOn<Widget> { + val obj = js("({})") + obj["self"] = widget + return obj +} + +typealias StringPair = Pair<String, String> +typealias StringBoolPair = Pair<String, Boolean> + +@Suppress("UnsafeCastFromDynamic") +fun snStyle(vararg pairs: StringPair): VNodeStyle { + return obj { + pairs.forEach { (key, value) -> this[key] = value } + } +} + +@Suppress("UnsafeCastFromDynamic") +fun snProps(vararg pairs: StringPair): Props { + return obj { + pairs.forEach { (key, value) -> this[key] = value } + } +} + +@Suppress("UnsafeCastFromDynamic") +fun snClasses(vararg pairs: StringBoolPair): Classes { + return obj { + pairs.forEach { (key, value) -> this[key] = value } + } +} + +@Suppress("UnsafeCastFromDynamic") +fun snAttrs(vararg pairs: StringPair): Attrs { + return obj { + pairs.forEach { (key, value) -> this[key] = value } + } +} |