init projects

This commit is contained in:
2026-06-17 18:58:41 +03:00
parent 8543c4e241
commit 21a768edd5
505 changed files with 19998 additions and 93 deletions
+4
View File
@@ -0,0 +1,4 @@
build
videobox.db
cache
bin
+32
View File
@@ -0,0 +1,32 @@
@file:OptIn(ExperimentalWasmDsl::class)
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
plugins {
alias(libs.plugins.convention.kmp)
alias(libs.plugins.convention.compose)
alias(libs.plugins.convention.koin)
}
kotlin {
sourceSets {
val wasmJsMain by getting {
dependencies {
implementation(project(":libs:base"))
implementation(project(":libs:ui"))
implementation(project(":libs:video-player"))
implementation(project(":apps:experimentarium:shared"))
}
}
}
wasmJs {
browser {
commonWebpackConfig {
outputFileName = "composeApp.js"
}
}
binaries.executable()
}
}
@@ -0,0 +1,26 @@
package ru.shadowsparky.experimentarium
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.window.ComposeViewport
import com.arkivanov.essenty.lifecycle.LifecycleRegistry
import com.arkivanov.essenty.lifecycle.doOnResume
import kotlinx.browser.document
import org.koin.core.context.startKoin
import org.koin.ksp.generated.module
import org.w3c.dom.HTMLElement
import ru.shadowsparky.CommonModule
import ru.shadowsparky.experimentarium.shared.TestPlayer
import ru.shadowsparky.ui.hideElementById
import ru.shadowsparky.ui.hookPageVisibility
@OptIn(ExperimentalComposeUiApi::class)
fun main() {
val lifecycle = LifecycleRegistry()
startKoin { modules(CommonModule().module) }
val composeRoot = document.getElementById("compose-root") as HTMLElement
hookPageVisibility(lifecycle)
lifecycle.doOnResume { hideElementById("loader") }
ComposeViewport(viewportContainer = composeRoot) {
TestPlayer()
}
}
@@ -0,0 +1,51 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test Layers</title>
<style>
#loader {
position: fixed;
inset: 0;
display: flex;
justify-content: center;
align-items: center;
background: #111;
z-index: 9999;
}
.spinner {
width: 50px;
height: 50px;
border: 6px solid #ccc;
border-top-color: #09f;
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
html, body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
background: #000;
overflow: hidden;
}
</style>
<script defer src="/composeApp.js"></script>
</head>
<body>
<div id="app-container" style="position:fixed; inset:0; overflow:hidden;">
<div id="loader">
<div class="spinner"></div>
</div>
<div id="video-layer"
style="position:absolute; inset:0; background:#000; visibility: hidden;"></div>
<div id="compose-root" style="position:absolute; inset:0;"></div>
</div>
</body>
</html>