kotlin-web/src/webMain/kotlin/web/events/EventHandler.kt (18 lines of code) (raw):

@file:Suppress( "BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER", ) package web.events import js.reflect.unsafeCast sealed external interface EventHandler<in E : Event, out C : EventTarget, out T : EventTarget> inline fun EventHandler( noinline handler: () -> Unit, ): EventHandler<Event, Nothing, Nothing> { return unsafeCast(handler) } inline fun <E : Event, C : EventTarget, T : EventTarget, D> EventHandler( noinline handler: (D) -> Unit, ): EventHandler<E, C, T> where D : E, D : HasTargets<C, T> { return unsafeCast(handler) }