Coverage Summary for Class: OnImmediateReceiverKt (kweb.html.events)

Class Method, % Branch, % Line, % Instruction, %
OnImmediateReceiverKt 0% (0/1) 0% (0/1) 0% (0/13)
OnImmediateReceiverKt$main$server$1 0% (0/1) 0% (0/1) 0% (0/6)
OnImmediateReceiverKt$main$server$1$1 0% (0/1) 0% (0/1) 0% (0/8)
OnImmediateReceiverKt$main$server$1$1$1 0% (0/1) 0% (0/3) 0% (0/22)
OnImmediateReceiverKt$main$server$1$1$1$1 0% (0/1) 0% (0/1) 0% (0/5)
Total 0% (0/5) 0% (0/7) 0% (0/54)


 package kweb.html.events
 
 import kweb.*
 import kweb.plugins.fomanticUI.fomantic
 import kweb.state.KVar
 import kweb.state.render
 import kweb.util.KWebDSL
 
 @KWebDSL
 class OnImmediateReceiver<T: EventGenerator<T>>(internal val source: T) {
     fun event(eventName: String, callback: () -> Unit): T {
         val caughtJsFunctions = source.browser.catchOutbound(WebBrowser.CatcherType.IMMEDIATE_EVENT) {
             callback()
         }
         val immediateJs = mutableListOf<String>()
         for (jsFunction in caughtJsFunctions.first) {
             if (jsFunction.arguments.isNotEmpty()) {
                 val argStrings = mutableListOf<String>()
                 for (arg in jsFunction.arguments) {
                     argStrings.add(arg.toString())
                 }
                 immediateJs.add("cachedFunctions[${jsFunction.jsId}](${argStrings.joinToString(",")})")
             } else {
                 immediateJs.add("cachedFunctions[${jsFunction.jsId}]()")
             }
 
         }
 
         source.addImmediateEventCode(eventName, immediateJs.joinToString(separator = ""))
         return source
     }
 
     // Mouse events
     fun click(callback: () -> Unit) = event("click", callback)
     fun contextmenu(callback: () -> Unit) = event("contextmenu", callback)
     fun dblclick(callback: () -> Unit) = event("dblclick", callback)
     fun mousedown(callback: () -> Unit) = event("mousedown", callback)
     fun mouseenter(callback: () -> Unit) = event("mouseenter", callback)
     fun mouseleave(callback: () -> Unit) = event("mouseleave", callback)
     fun mousemove(callback: () -> Unit) = event("mousemove", callback)
     fun mouseover(callback: () -> Unit) = event("mouseover", callback)
     fun mouseout(callback: () -> Unit) = event("mouseout", callback)
     fun mouseup(callback: () -> Unit) = event("mouseup", callback)
 
     // Keyboard events
     fun keydown(callback: () -> Unit) = event("keydown", callback)
     fun keypress(callback: () -> Unit) = event("keypress", callback)
     fun keyup(callback: () -> Unit) = event("keyup", callback)
 
     // Focus Events
     // https://www.w3schools.com/jsref/obj_focusevent.asp
     fun blur(callback: () -> Unit) = event("blur", callback)
     fun focus(callback: () -> Unit) = event("focus", callback)
     fun focusin(callback: () -> Unit) = event("focusin", callback)
     fun focusout(callback: () -> Unit) = event("focusout", callback)
 
     // Frame / Object Events
     fun abort(callback: () -> Unit) = event("abort", callback)
     fun beforeunload(callback: () -> Unit) = event("beforeunload", callback)
     fun error(callback: () -> Unit) = event("error", callback)
     fun hashchange(callback: () -> Unit) = event("hashchange", callback)
     fun load(callback: () -> Unit) = event("load", callback)
     fun pageshow(callback: () -> Unit) = event("blur", callback)
     fun pagehide(callback: () -> Unit) = event("pagehide", callback)
     fun resize(callback: () -> Unit) = event("resize", callback)
     fun scroll(callback: () -> Unit) = event("scroll", callback)
     fun unload(callback: () -> Unit) = event("unload", callback)
 
     // Form Events
     fun change(callback: () -> Unit) = event("change", callback)
     fun input(callback: () -> Unit) = event("input", callback)
     fun invalid(callback: () -> Unit) = event("invalid", callback)
     fun reset(callback: () -> Unit) = event("reset", callback)
     fun search(callback: () -> Unit) = event("search", callback)
     fun select(callback: () -> Unit) = event("select", callback)
     fun submit(callback: () -> Unit) = event("submit", callback)
 
     // Drag Events
     fun drag(callback: () -> Unit) = event("drag", callback)
     fun dragend(callback: () -> Unit) = event("dragend", callback)
     fun dragenter(callback: () -> Unit) = event("dragenter", callback)
     fun dragleave(callback: () -> Unit) = event("dragleave", callback)
     fun dragover(callback: () -> Unit) = event("dragover", callback)
     fun dragstart(callback: () -> Unit) = event("dragstart", callback)
     fun drop(callback: () -> Unit) = event("drop", callback)
 
     // Clipboard Events
     fun copy(callback: () -> Unit) = event("copy", callback)
     fun cut(callback: () -> Unit) = event("cut", callback)
     fun paste(callback: () -> Unit) = event("paste", callback)
 
     // Print Events
     fun afterprint(callback: () -> Unit) = event("afterprint", callback)
     fun beforeprint(callback: () -> Unit) = event("beforeprint", callback)
 
     // Selection Events
     fun selectstart(callback: () -> Unit) = event("selectstart", callback = callback)
     fun selectionchange(callback: () -> Unit) = event("selectionchange",  callback = callback)
 
     // Media events
     /*
     fun abort(callback: () -> Unit) = event("abort", callback)
     fun canplay(callback: () -> Unit) = event("canplay", callback)
     fun canplaythrough(callback: () -> Unit) = event("canplaythrough", callback)
     fun durationchange(callback: () -> Unit) = event("durationchange", callback)
     fun emptied(callback: () -> Unit) = event("emptied", callback)
     fun ended(callback: () -> Unit) = event("ended", callback)
     fun message(callback: () -> Unit) = event("message", callback)
     fun loadeddata(callback: () -> Unit) = event("loadeddata", callback)
     fun loadedmetadata(callback: () -> Unit) = event("loadedmetadata", callback)
     fun loadstart(callback: () -> Unit) = event("loadstart", callback)
     fun pause(callback: () -> Unit) = event("pause", callback)
     fun play(callback: () -> Unit) = event("play", callback)
     fun playing(callback: () -> Unit) = event("playing", callback)
     fun progress(callback: () -> Unit) = event("progress", callback)
     fun ratechange(callback: () -> Unit) = event("ratechange", callback)
     fun seeked(callback: () -> Unit) = event("seeked", callback)
     fun seeking(callback: () -> Unit) = event("seeking", callback)
     fun stalled(callback: () -> Unit) = event("stalled", callback)
     fun suspend(callback: () -> Unit) = event("suspend", callback)
     fun timeupdate(callback: () -> Unit) = event("timeupdate", callback)
     fun volumechange(callback: () -> Unit) = event("volumechange", callback)
     fun waiting(callback: () -> Unit) = event("waiting", callback)
     fun animationend(callback: () -> Unit) = event("animationend", callback)
     fun animationiteration(callback: () -> Unit) = event("animationiteration", callback)
     fun animationstart(callback: () -> Unit) = event("animationstart", callback)
     fun transitionend(callback: () -> Unit) = event("transitionend", callback)
      */
 }
 
 fun main() {
     val server: Kweb = Kweb(port= 7660) {
         doc.body {
             div(fomantic.content) {
                 val label = h1(fomantic.ui)
                 label.text("Click Me")
                 label.onImmediate.click {
                     label.text("Clicked!")
                 }
             }
         }
     }
 }