diff --git a/src/karax.nim b/src/karax.nim index ed956d8..45056c5 100644 --- a/src/karax.nim +++ b/src/karax.nim @@ -256,6 +256,8 @@ proc redraw*() = else: dodraw() +proc redrawForce*() = dodraw() + proc init(ev: Event) = reqFrame(dodraw) @@ -263,6 +265,12 @@ proc setRenderer*(renderer: proc (): VNode) = dorender = renderer window.onload = init +proc setRendererOnly*(renderer: proc (): VNode) = + dorender = renderer + +proc setOnloadOnly*() = + window.onload = init + proc addEventHandler*(n: VNode; k: EventKind; action: EventHandler) = ## Implements the foundation of Karax's event management. ## Karax DSL transforms ``tag(onEvent = handler)`` to diff --git a/uibench/index.html b/uibench/index.html index bc77eb5..4d0e517 100644 --- a/uibench/index.html +++ b/uibench/index.html @@ -7,10 +7,11 @@
- -
+ + + \ No newline at end of file diff --git a/uibench/nim_uibench.nim b/uibench/nim_uibench.nim index 4c2b467..b8e453e 100644 --- a/uibench/nim_uibench.nim +++ b/uibench/nim_uibench.nim @@ -26,11 +26,6 @@ type anim: AnimState tree: TreeState -proc init*(a: cstring, b: cstring) {.importc: "uibench.init", nodecl.} -proc run*(a: proc(state: AppState), b: proc(samples: RootRef)) {.importc: "uibench.run", nodecl.} - -init(cstring"Nim-karax", cstring"0.6.1") - var container = document.getElementById("#App") var appState: AppState @@ -98,7 +93,9 @@ proc treeCreateVNode(data: TreeState): VNode = proc update(): VNode = - if appState == nil: return newVNode(VNodeKind.tdiv) + if appState == nil: + kout cstring"stupid fuck" + return newVNode(VNodeKind.tdiv) let location = appState.location var children: VNode = nil if location == cstring"table": @@ -113,15 +110,22 @@ proc update(): VNode = children proc a(state: AppState) = + kout cstring"setting state here" appState = state - redraw() + redrawForce() proc b(samples: RootRef) = + kout cstring"end called" #document.body.innerHTML = cstring"
" & toJson(samples) & cstring"
" #redraw() discard -kout cstring"updating" -setRenderer update +proc init*(a: cstring, b: cstring) {.importc: "uibench.init", nodecl.} +proc run*(a: proc(state: AppState), b: proc(samples: RootRef)) {.importc: "uibench.run", nodecl.} + +init(cstring"Nim-karax", cstring"0.6.1") + +setRendererOnly update kout cstring"running" + run(a, b) \ No newline at end of file