feat(labs): fm test screen/-s
Signed-off-by: Infi <infi@infi.sh>
This commit is contained in:
parent
7009c90832
commit
14353c7f7c
|
|
@ -9,6 +9,6 @@ data class FinalMarkdownNodeTest(
|
|||
|
||||
@Suppress("KotlinJniMissingFunction")
|
||||
object FinalMarkdown {
|
||||
external fun init()
|
||||
external fun init(debug: Boolean)
|
||||
external fun process(input: String): FinalMarkdownNodeTest
|
||||
}
|
||||
|
|
@ -1,5 +1,7 @@
|
|||
package chat.revolt.ndk
|
||||
|
||||
import chat.revolt.BuildConfig
|
||||
|
||||
annotation class NativeLibrary(val name: String) {
|
||||
companion object {
|
||||
const val LIB_NAME_NATIVE_MARKDOWN = "stendal"
|
||||
|
|
@ -12,6 +14,6 @@ object NativeLibraries {
|
|||
System.loadLibrary(NativeLibrary.LIB_NAME_NATIVE_MARKDOWN)
|
||||
System.loadLibrary(NativeLibrary.LIB_NAME_NATIVE_MARKDOWN_V2)
|
||||
Stendal.init()
|
||||
FinalMarkdown.init()
|
||||
FinalMarkdown.init(BuildConfig.DEBUG)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -178,6 +178,15 @@ fun LabsHomeScreen(navController: NavController, topNav: NavController) {
|
|||
}
|
||||
)
|
||||
HorizontalDivider()
|
||||
ListItem(
|
||||
headlineContent = {
|
||||
Text("Final Markdown")
|
||||
},
|
||||
modifier = Modifier.clickable {
|
||||
navController.navigate("sandboxes/finalmarkdown")
|
||||
}
|
||||
)
|
||||
HorizontalDivider()
|
||||
ListItem(
|
||||
headlineContent = {
|
||||
Text("Gradient Editor")
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import androidx.navigation.compose.rememberNavController
|
|||
import chat.revolt.api.settings.FeatureFlags
|
||||
import chat.revolt.screens.labs.ui.mockups.NewLoginExperienceMockup
|
||||
import chat.revolt.screens.labs.ui.sandbox.CoreLibSandbox
|
||||
import chat.revolt.screens.labs.ui.sandbox.FinalMarkdownSandbox
|
||||
import chat.revolt.screens.labs.ui.sandbox.GradientEditorSandbox
|
||||
import chat.revolt.screens.labs.ui.sandbox.JBMSandbox
|
||||
import chat.revolt.screens.labs.ui.sandbox.NewCardSandboxScreen
|
||||
|
|
@ -74,13 +75,15 @@ fun LabsRootScreen(topNav: NavController) {
|
|||
composable("sandboxes/jbm") {
|
||||
JBMSandbox(labsNav)
|
||||
}
|
||||
composable("sandboxes/finalmarkdown") {
|
||||
FinalMarkdownSandbox(labsNav)
|
||||
}
|
||||
composable("sandboxes/gradienteditor") {
|
||||
GradientEditorSandbox(labsNav)
|
||||
}
|
||||
composable("sandboxes/librevolt") {
|
||||
CoreLibSandbox(labsNav)
|
||||
}
|
||||
|
||||
composable("sandboxes/newcard") {
|
||||
NewCardSandboxScreen(labsNav)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,87 @@
|
|||
package chat.revolt.screens.labs.ui.sandbox
|
||||
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextButton
|
||||
import androidx.compose.material3.TextField
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.navigation.NavController
|
||||
import chat.revolt.ndk.FinalMarkdown
|
||||
import chat.revolt.settings.dsl.SettingsPage
|
||||
|
||||
@Composable
|
||||
fun FinalMarkdownSandbox(navController: NavController) {
|
||||
var mdSource by remember { mutableStateOf("") }
|
||||
var submitMdSource by remember { mutableStateOf<String?>(null) }
|
||||
|
||||
LaunchedEffect(submitMdSource) {
|
||||
submitMdSource?.let {
|
||||
FinalMarkdown.process(it)
|
||||
}
|
||||
}
|
||||
|
||||
SettingsPage(
|
||||
navController = navController,
|
||||
title = {
|
||||
Text(
|
||||
text = "Final Markdown Sandbox",
|
||||
maxLines = 1,
|
||||
overflow = TextOverflow.Ellipsis,
|
||||
)
|
||||
}
|
||||
) {
|
||||
Subcategory(
|
||||
title = { Text("Source", maxLines = 1, overflow = TextOverflow.Ellipsis) },
|
||||
) {
|
||||
TextField(
|
||||
value = mdSource,
|
||||
onValueChange = { mdSource = it },
|
||||
label = { Text("Markdown source") },
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
)
|
||||
|
||||
TextButton(onClick = {
|
||||
submitMdSource = mdSource
|
||||
}) {
|
||||
Text("Submit")
|
||||
}
|
||||
TextButton(onClick = {
|
||||
submitMdSource = """# Full range of MD now supported!
|
||||
1. Text with **bold**, *italics*, and ***both***!
|
||||
2. You ~~can't see me~~.
|
||||
3. [I'm a link to another website.](<https://revolt.chat>)
|
||||
4. I'm a spoiler with ||**bold text inside it**||
|
||||
- I'm a sub-item on this list...
|
||||
- Let's go even deeper...
|
||||
|
||||
`Inline code`
|
||||
|
||||
```js
|
||||
let x = "I'm a multi-line code block!";
|
||||
```
|
||||
|
||||
> > ${'$'}${'$'}E = mc^2${'$'}${'$'}
|
||||
>
|
||||
> — Albert Einstein
|
||||
|
||||
| Timestamp | Mention | Channel Link | Message Link |
|
||||
|:-:|:-:|:-:|:-:|
|
||||
| <t:1663846662:f> | <@01EX2NCWQ0CHS3QJF0FEQS1GR4> | <#01H73F4RAHTPBHKJ1XBQDXK3NQ> | https://revolt.chat/server/01F7ZSBSFHQ8TA81725KQCSDDP/channel/01F92C5ZXBQWQ8KY7J8KY917NM/01J25XZM9JXVVJDDKFPB7Q48HZ |"""
|
||||
}) {
|
||||
Text("Submit test document")
|
||||
}
|
||||
Subcategory(
|
||||
title = { Text("Output", maxLines = 1, overflow = TextOverflow.Ellipsis) },
|
||||
) {
|
||||
Text("TBD!")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue