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) } } }