package dev.inmo.postssystem.features.content.client import androidx.compose.runtime.* import dev.inmo.postssystem.features.content.common.Content interface ContentClientProvider { fun contentTypeNameForUser(): String interface ContentRenderer { val state: State @Composable fun render() class Default( initValue: T, private val onRender: @Composable (MutableState) -> Unit ) : ContentRenderer { private val mutableState = mutableStateOf(initValue) override val state: State get() = mutableState @Composable override fun render() { onRender(mutableState) } } companion object { fun default(onRender: @Composable (MutableState) -> Unit) = Default( null, onRender ) fun default(initValue: T, onRender: @Composable (MutableState) -> Unit) = Default( initValue, onRender ) } } fun createNewContentRenderer(): ContentRenderer }