22 lines
781 B
Kotlin
22 lines
781 B
Kotlin
package dev.inmo.postssystem.client.fsm.ui
|
|
|
|
import dev.inmo.postssystem.client.ui.fsm.UIFSMHandler
|
|
import dev.inmo.postssystem.client.ui.fsm.UIFSMState
|
|
import dev.inmo.postssystem.client.utils.HTMLViewContainer
|
|
import dev.inmo.micro_utils.fsm.common.StatesMachine
|
|
import org.w3c.dom.HTMLElement
|
|
|
|
abstract class JSView<T : UIFSMState> : UIFSMHandler<T> {
|
|
open suspend fun StatesMachine<in UIFSMState>.safeHandleState(
|
|
htmlElement: HTMLElement,
|
|
container: HTMLViewContainer,
|
|
state: T
|
|
): UIFSMState? = null
|
|
|
|
override suspend fun StatesMachine<in UIFSMState>.safeHandleState(state: T): UIFSMState? {
|
|
return HTMLViewContainer.from(state.context) ?.let {
|
|
safeHandleState(it.htmlElement ?: return null, it, state)
|
|
}
|
|
}
|
|
}
|