in html/core/src/jsMain/kotlin/org/jetbrains/compose/web/dom/Elements.kt [1076:1105]
fun <K> Input(
type: InputType<K>,
attrs: InputAttrsScope<K>.() -> Unit
) {
// changes to this key trigger [inputRestoreControlledStateEffect]
val keyForRestoringControlledState: MutableState<Int> = remember { mutableStateOf(0) }
TagElement(
elementBuilder = Input,
applyAttrs = {
val inputAttrsBuilder = InputAttrsScope(type, this)
inputAttrsBuilder.type(type)
inputAttrsBuilder.onInput {
// controlled state needs to be restored after every input
keyForRestoringControlledState.value = keyForRestoringControlledState.value + 1
}
inputAttrsBuilder.attrs()
},
content = {
if (type == InputType.Radio) {
DisposeRadioGroupEffect()
}
DisposableEffect(keyForRestoringControlledState.value) {
restoreControlledInputState(inputElement = scopeElement)
onDispose { }
}
}
)
}