EventParams

typealias EventParams = Map<String, <Error class: unknown class>>

Typed accessors over any Map<String, JsonElement> whose values are raw spec JSON — read them through getXxxOrNull / getXxx instead of casting JsonElements by hand.

The same map shape backs three things, so these work uniformly across all of them: a node's custom props (com.j0y.joy.dom.serialization.NodeProps, e.g. node.props.getStringOrNull("src")), a node's own custom keys (com.j0y.joy.dom.layout.ResolvedNode), and an event's EventParams (binding params or runtime payload, e.g. e.params?.getIntOrNull("step")).

val step = node.props.getIntOrNull("step") ?: 1
val amount = e.params?.getInt("amount")