diff --git a/examples/folio/app/webApp/src/wasmJsMain/kotlin/app/folio/main.kt b/examples/folio/app/webApp/src/wasmJsMain/kotlin/app/folio/main.kt new file mode 100644 index 0000000..54cdadc --- /dev/null +++ b/examples/folio/app/webApp/src/wasmJsMain/kotlin/app/folio/main.kt @@ -0,0 +1,33 @@ +@file:OptIn(ExperimentalComposeUiApi::class, kotlin.js.ExperimentalWasmJsInterop::class) + +package app.folio + +import androidx.compose.ui.ExperimentalComposeUiApi +import androidx.compose.ui.window.ComposeViewport +import app.folio.core.data.DriverFactory +import app.folio.db.LedgerDatabase +import app.folio.di.AppGraph +import app.folio.ui.WebBackGesture +import dev.zacsweers.metro.createGraphFactory +import kotlinx.browser.document +import kotlinx.browser.window +import org.w3c.dom.events.Event + +fun main() { + val driverFactory = DriverFactory() + val graphFactory = createGraphFactory() + + window.history.pushState(null, "", window.location.href) + window.addEventListener("popstate", { _: Event -> + if (WebBackGesture.dispatch()) { + window.history.pushState(null, "", window.location.href) + } + }) + + val target = document.getElementById("app") ?: document.body!! + ComposeViewport(target) { + App(graphBuilder = { + graphFactory.create(LedgerDatabase(driverFactory.create())) + }) + } +} diff --git a/examples/folio/app/webApp/src/wasmJsMain/resources/index.html b/examples/folio/app/webApp/src/wasmJsMain/resources/index.html new file mode 100644 index 0000000..6927ef9 --- /dev/null +++ b/examples/folio/app/webApp/src/wasmJsMain/resources/index.html @@ -0,0 +1,16 @@ + + + + + + Folio + + + +
+ + +