Skip to content

Instantly share code, notes, and snippets.

@MrPowerGamerBR
Created December 31, 2021 18:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MrPowerGamerBR/bba1208e3db6a29b51cd350f9cf904f4 to your computer and use it in GitHub Desktop.
Save MrPowerGamerBR/bba1208e3db6a29b51cd350f9cf904f4 to your computer and use it in GitHub Desktop.
package net.perfectdreams.dreamblog.frontend.components.editor
import androidx.compose.runtime.Composable
import kotlinx.browser.document
import kotlinx.dom.clear
import net.perfectdreams.dreamblog.frontend.screen.MutableI18nContentData
import net.perfectdreams.dreamblog.frontend.utils.EasyMDE
import org.jetbrains.compose.web.dom.Div
import org.jetbrains.compose.web.dom.TextArea
import org.w3c.dom.HTMLElement
import org.w3c.dom.HTMLTextAreaElement
@Composable
fun EditorMarkdownTextArea(
i18nContentDataMap: MutableI18nContentData
) {
Div {
DomSideEffect(i18nContentDataMap) { ref ->
val textArea = document.createElement("textarea") as HTMLTextAreaElement
textArea.value = i18nContentDataMap.content ?: ""
ref.append(textArea)
val easyMDE = EasyMDE(
object : EasyMDE.Options {
override var element: HTMLElement?
get() = textArea
set(value) {}
}
)
val e: () -> (Unit) = {
i18nContentDataMap._content.value = easyMDE.value()
}
easyMDE.codemirror.on("change", e)
onDispose {
println("Should be disposed")
it.clear()
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment