diff --git a/korge-core/src@js/korlibs/render/DefaultGameWindowJs.kt b/korge-core/src@js/korlibs/render/DefaultGameWindowJs.kt index c001ba3112..6d8acccf4c 100644 --- a/korge-core/src@js/korlibs/render/DefaultGameWindowJs.kt +++ b/korge-core/src@js/korlibs/render/DefaultGameWindowJs.kt @@ -14,8 +14,10 @@ import kotlinx.browser.* import kotlinx.coroutines.* import org.w3c.dom.* import org.w3c.dom.TouchEvent +import org.w3c.dom.clipboard.* import org.w3c.dom.events.* import org.w3c.dom.events.MouseEvent +import kotlin.js.* private external val navigator: dynamic @@ -495,6 +497,23 @@ open class BrowserCanvasJsGameWindow( } } + private val navigatorClipboard get() = navigator.clipboard.unsafeCast() + + override suspend fun clipboardWrite(data: ClipboardData) { + try { + navigatorClipboard.writeText((data as TextClipboardData).text) + } catch (e: Throwable) { + console.error("Failed to write to clipboard: ${e.message}") + } + } + + override suspend fun clipboardRead(): ClipboardData? { + //navigatorClipboard.read().await() + //navigator.clipboard.unsafeCast().read().unsafeCast>() + val text = navigatorClipboard.readText().await() + return if (text.isNotEmpty()) TextClipboardData(text) else null + } + override fun setInputRectangle(windowRect: Rectangle) { ensureSoftKeyboardInput() softKeyboardInput?.style?.let { style ->