aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/pl/treksoft/kvision/snabbdom
diff options
context:
space:
mode:
authorRobert Jaros <rjaros@finn.pl>2017-09-01 16:15:38 +0200
committerRobert Jaros <rjaros@finn.pl>2017-09-01 16:15:38 +0200
commit79a1a1573051649b7b2d7b3fcd57d8506eb26bcb (patch)
tree5943cb30d71ccfaa0591edd2ce6204a181fd15e3 /src/main/kotlin/pl/treksoft/kvision/snabbdom
parentfce6a5dcd7804b4ef618484182f8e8ebc053c761 (diff)
downloadkvision-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.kt57
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 }
+ }
+}