nextgen uses the karax DSL and DOM diffing
This commit is contained in:
parent
7c08c6bb76
commit
bfb9985754
2 changed files with 11 additions and 18 deletions
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
import kdom, jdict, jstrutils
|
import vdom, kdom, vstyles, karax, karaxdsl, jdict, jstrutils
|
||||||
|
|
||||||
type
|
type
|
||||||
Message = enum
|
Message = enum
|
||||||
|
|
@ -155,27 +155,19 @@ type
|
||||||
|
|
||||||
var gu = newReactive(User(firstname: "Some", lastname: "Body"))
|
var gu = newReactive(User(firstname: "Some", lastname: "Body"))
|
||||||
|
|
||||||
proc renderUser(u: Reactive[User]): Node =
|
proc renderUser(u: Reactive[User]): VNode =
|
||||||
result = document.createElement("button")
|
result = buildHtml(button):
|
||||||
result.appendChild document.createTextNode(u.now.firstname & " " & u.now.lastname)
|
text u.now.firstname & " " & u.now.lastname
|
||||||
result.addEventListener "click", proc (ev: Event) =
|
proc onclick(ev: Event; n: VNode) =
|
||||||
gu <- User(firstname: "Another", lastname: "Guy")
|
gu <- User(firstname: "Another", lastname: "Guy")
|
||||||
|
|
||||||
proc replaceById(id: cstring; newTree: Node) =
|
template track(r: ReactiveBase; a, b: VNode) =
|
||||||
let x = document.getElementById(id)
|
|
||||||
x.parentNode.replaceChild(newTree, x)
|
|
||||||
newTree.id = id
|
|
||||||
|
|
||||||
template track(r: ReactiveBase; a, b: Node) =
|
|
||||||
r.addSink proc(m: Message; pos: int) =
|
r.addSink proc(m: Message; pos: int) =
|
||||||
if m == Changed:
|
if m == Changed:
|
||||||
a.parentNode.replaceChild(b, a)
|
runDiff(kxi, a, b)
|
||||||
|
|
||||||
proc main(): Node =
|
proc main(): VNode =
|
||||||
result = renderUser(gu)
|
result = renderUser(gu)
|
||||||
track gu, result, renderUser(gu)
|
track gu, result, renderUser(gu)
|
||||||
|
|
||||||
proc init(ev: Event) =
|
setInitializer(main)
|
||||||
replaceById("ROOT", main())
|
|
||||||
|
|
||||||
window.onload = init
|
|
||||||
|
|
|
||||||
|
|
@ -187,6 +187,7 @@ proc same(n: VNode, e: Node; nesting = 0): bool =
|
||||||
proc replaceById(id: cstring; newTree: Node) =
|
proc replaceById(id: cstring; newTree: Node) =
|
||||||
let x = document.getElementById(id)
|
let x = document.getElementById(id)
|
||||||
x.parentNode.replaceChild(newTree, x)
|
x.parentNode.replaceChild(newTree, x)
|
||||||
|
newTree.id = id
|
||||||
|
|
||||||
type
|
type
|
||||||
EqResult = enum
|
EqResult = enum
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue