mirror of
https://github.com/anyproto/anytype-kotlin.git
synced 2025-06-08 05:47:05 +09:00
parent
ecd84e2b38
commit
b04fe251c7
3 changed files with 194 additions and 111 deletions
|
@ -0,0 +1,20 @@
|
|||
package com.agileburo.anytype.core_ui.model
|
||||
|
||||
import com.agileburo.anytype.core_ui.common.Alignment
|
||||
import com.agileburo.anytype.core_ui.common.Markup
|
||||
import com.agileburo.anytype.core_ui.features.page.styling.StylingType
|
||||
|
||||
data class StyleConfig(
|
||||
val visibleTypes: List<StylingType>,
|
||||
val enabledMarkup: List<Markup.Type>,
|
||||
val enabledAlignment: List<Alignment>
|
||||
) {
|
||||
|
||||
companion object {
|
||||
fun emptyState() = StyleConfig(
|
||||
visibleTypes = emptyList(),
|
||||
enabledMarkup = emptyList(),
|
||||
enabledAlignment = emptyList()
|
||||
)
|
||||
}
|
||||
}
|
|
@ -1,24 +1,11 @@
|
|||
package com.agileburo.anytype.presentation.page.editor
|
||||
|
||||
import com.agileburo.anytype.core_ui.common.Alignment
|
||||
import com.agileburo.anytype.core_ui.common.Markup
|
||||
import com.agileburo.anytype.core_ui.features.page.styling.StylingType
|
||||
import com.agileburo.anytype.core_ui.model.StyleConfig
|
||||
import com.agileburo.anytype.domain.block.model.Block
|
||||
|
||||
data class StyleConfig(
|
||||
val visibleTypes: List<StylingType>,
|
||||
val enabledMarkup: List<Block.Content.Text.Mark.Type>,
|
||||
val enabledAlignment: List<Alignment>
|
||||
) {
|
||||
|
||||
companion object {
|
||||
fun emptyState() = StyleConfig(
|
||||
visibleTypes = emptyList(),
|
||||
enabledMarkup = emptyList(),
|
||||
enabledAlignment = emptyList()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fun Block.getStyleConfig(focus: Boolean?, selection: IntRange?): StyleConfig =
|
||||
when (val cnt = content) {
|
||||
is Block.Content.Text -> cnt.getTextStyleConfig(focus, selection)
|
||||
|
@ -81,7 +68,7 @@ fun Block.Content.Text.getTextStyleConfig(focus: Boolean?, selection: IntRange?)
|
|||
}
|
||||
|
||||
fun Block.Content.Text.getStyleConfig(selection: IntRange? = null): StyleConfig {
|
||||
return if (selection == null || selection.first == selection.last) {
|
||||
return if (selection == null || selection.first >= selection.last) {
|
||||
getBlockStyle(style)
|
||||
} else {
|
||||
getMarkupStyle(style)
|
||||
|
@ -97,11 +84,11 @@ fun Block.Content.Text.getBlockStyle(style: Block.Content.Text.Style) = when (st
|
|||
StylingType.BACKGROUND
|
||||
),
|
||||
enabledMarkup = listOf(
|
||||
Block.Content.Text.Mark.Type.BOLD,
|
||||
Block.Content.Text.Mark.Type.ITALIC,
|
||||
Block.Content.Text.Mark.Type.STRIKETHROUGH,
|
||||
Block.Content.Text.Mark.Type.KEYBOARD,
|
||||
Block.Content.Text.Mark.Type.LINK
|
||||
Markup.Type.BOLD,
|
||||
Markup.Type.ITALIC,
|
||||
Markup.Type.STRIKETHROUGH,
|
||||
Markup.Type.KEYBOARD,
|
||||
Markup.Type.LINK
|
||||
),
|
||||
enabledAlignment = listOf(Alignment.START, Alignment.CENTER, Alignment.END)
|
||||
)
|
||||
|
@ -115,10 +102,10 @@ fun Block.Content.Text.getBlockStyle(style: Block.Content.Text.Style) = when (st
|
|||
StylingType.BACKGROUND
|
||||
),
|
||||
enabledMarkup = listOf(
|
||||
Block.Content.Text.Mark.Type.ITALIC,
|
||||
Block.Content.Text.Mark.Type.STRIKETHROUGH,
|
||||
Block.Content.Text.Mark.Type.KEYBOARD,
|
||||
Block.Content.Text.Mark.Type.LINK
|
||||
Markup.Type.ITALIC,
|
||||
Markup.Type.STRIKETHROUGH,
|
||||
Markup.Type.KEYBOARD,
|
||||
Markup.Type.LINK
|
||||
),
|
||||
enabledAlignment = listOf(Alignment.START, Alignment.CENTER, Alignment.END)
|
||||
)
|
||||
|
@ -138,11 +125,11 @@ fun Block.Content.Text.getBlockStyle(style: Block.Content.Text.Style) = when (st
|
|||
StylingType.BACKGROUND
|
||||
),
|
||||
enabledMarkup = listOf(
|
||||
Block.Content.Text.Mark.Type.BOLD,
|
||||
Block.Content.Text.Mark.Type.ITALIC,
|
||||
Block.Content.Text.Mark.Type.STRIKETHROUGH,
|
||||
Block.Content.Text.Mark.Type.KEYBOARD,
|
||||
Block.Content.Text.Mark.Type.LINK
|
||||
Markup.Type.BOLD,
|
||||
Markup.Type.ITALIC,
|
||||
Markup.Type.STRIKETHROUGH,
|
||||
Markup.Type.KEYBOARD,
|
||||
Markup.Type.LINK
|
||||
),
|
||||
enabledAlignment = listOf(Alignment.START, Alignment.END)
|
||||
)
|
||||
|
@ -163,11 +150,11 @@ fun Block.Content.Text.getBlockStyle(style: Block.Content.Text.Style) = when (st
|
|||
StylingType.BACKGROUND
|
||||
),
|
||||
enabledMarkup = listOf(
|
||||
Block.Content.Text.Mark.Type.BOLD,
|
||||
Block.Content.Text.Mark.Type.ITALIC,
|
||||
Block.Content.Text.Mark.Type.STRIKETHROUGH,
|
||||
Block.Content.Text.Mark.Type.KEYBOARD,
|
||||
Block.Content.Text.Mark.Type.LINK
|
||||
Markup.Type.BOLD,
|
||||
Markup.Type.ITALIC,
|
||||
Markup.Type.STRIKETHROUGH,
|
||||
Markup.Type.KEYBOARD,
|
||||
Markup.Type.LINK
|
||||
),
|
||||
enabledAlignment = emptyList()
|
||||
)
|
||||
|
@ -183,11 +170,11 @@ fun Block.Content.Text.getMarkupStyle(style: Block.Content.Text.Style) = when (s
|
|||
StylingType.BACKGROUND
|
||||
),
|
||||
enabledMarkup = listOf(
|
||||
Block.Content.Text.Mark.Type.BOLD,
|
||||
Block.Content.Text.Mark.Type.ITALIC,
|
||||
Block.Content.Text.Mark.Type.STRIKETHROUGH,
|
||||
Block.Content.Text.Mark.Type.KEYBOARD,
|
||||
Block.Content.Text.Mark.Type.LINK
|
||||
Markup.Type.BOLD,
|
||||
Markup.Type.ITALIC,
|
||||
Markup.Type.STRIKETHROUGH,
|
||||
Markup.Type.KEYBOARD,
|
||||
Markup.Type.LINK
|
||||
),
|
||||
enabledAlignment = emptyList()
|
||||
)
|
||||
|
@ -201,10 +188,10 @@ fun Block.Content.Text.getMarkupStyle(style: Block.Content.Text.Style) = when (s
|
|||
StylingType.BACKGROUND
|
||||
),
|
||||
enabledMarkup = listOf(
|
||||
Block.Content.Text.Mark.Type.ITALIC,
|
||||
Block.Content.Text.Mark.Type.STRIKETHROUGH,
|
||||
Block.Content.Text.Mark.Type.KEYBOARD,
|
||||
Block.Content.Text.Mark.Type.LINK
|
||||
Markup.Type.ITALIC,
|
||||
Markup.Type.STRIKETHROUGH,
|
||||
Markup.Type.KEYBOARD,
|
||||
Markup.Type.LINK
|
||||
),
|
||||
enabledAlignment = emptyList()
|
||||
)
|
||||
|
@ -224,11 +211,11 @@ fun Block.Content.Text.getMarkupStyle(style: Block.Content.Text.Style) = when (s
|
|||
StylingType.BACKGROUND
|
||||
),
|
||||
enabledMarkup = listOf(
|
||||
Block.Content.Text.Mark.Type.BOLD,
|
||||
Block.Content.Text.Mark.Type.ITALIC,
|
||||
Block.Content.Text.Mark.Type.STRIKETHROUGH,
|
||||
Block.Content.Text.Mark.Type.KEYBOARD,
|
||||
Block.Content.Text.Mark.Type.LINK
|
||||
Markup.Type.BOLD,
|
||||
Markup.Type.ITALIC,
|
||||
Markup.Type.STRIKETHROUGH,
|
||||
Markup.Type.KEYBOARD,
|
||||
Markup.Type.LINK
|
||||
),
|
||||
enabledAlignment = emptyList()
|
||||
)
|
||||
|
@ -249,11 +236,11 @@ fun Block.Content.Text.getMarkupStyle(style: Block.Content.Text.Style) = when (s
|
|||
StylingType.BACKGROUND
|
||||
),
|
||||
enabledMarkup = listOf(
|
||||
Block.Content.Text.Mark.Type.BOLD,
|
||||
Block.Content.Text.Mark.Type.ITALIC,
|
||||
Block.Content.Text.Mark.Type.STRIKETHROUGH,
|
||||
Block.Content.Text.Mark.Type.KEYBOARD,
|
||||
Block.Content.Text.Mark.Type.LINK
|
||||
Markup.Type.BOLD,
|
||||
Markup.Type.ITALIC,
|
||||
Markup.Type.STRIKETHROUGH,
|
||||
Markup.Type.KEYBOARD,
|
||||
Markup.Type.LINK
|
||||
),
|
||||
enabledAlignment = emptyList()
|
||||
)
|
||||
|
|
|
@ -2,7 +2,9 @@ package com.agileburo.anytype.presentation.page.editor
|
|||
|
||||
import MockDataFactory
|
||||
import com.agileburo.anytype.core_ui.common.Alignment
|
||||
import com.agileburo.anytype.core_ui.common.Markup
|
||||
import com.agileburo.anytype.core_ui.features.page.styling.StylingType
|
||||
import com.agileburo.anytype.core_ui.model.StyleConfig
|
||||
import com.agileburo.anytype.domain.block.model.Block
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Test
|
||||
|
@ -426,11 +428,11 @@ class StyleConfigKtTest {
|
|||
val expected = StyleConfig(
|
||||
visibleTypes = listOf(StylingType.STYLE, StylingType.TEXT_COLOR, StylingType.BACKGROUND),
|
||||
enabledMarkup = listOf(
|
||||
Block.Content.Text.Mark.Type.BOLD,
|
||||
Block.Content.Text.Mark.Type.ITALIC,
|
||||
Block.Content.Text.Mark.Type.STRIKETHROUGH,
|
||||
Block.Content.Text.Mark.Type.KEYBOARD,
|
||||
Block.Content.Text.Mark.Type.LINK
|
||||
Markup.Type.BOLD,
|
||||
Markup.Type.ITALIC,
|
||||
Markup.Type.STRIKETHROUGH,
|
||||
Markup.Type.KEYBOARD,
|
||||
Markup.Type.LINK
|
||||
),
|
||||
enabledAlignment = listOf(Alignment.START, Alignment.CENTER, Alignment.END)
|
||||
)
|
||||
|
@ -463,11 +465,85 @@ class StyleConfigKtTest {
|
|||
val expected = StyleConfig(
|
||||
visibleTypes = listOf(StylingType.STYLE, StylingType.TEXT_COLOR, StylingType.BACKGROUND),
|
||||
enabledMarkup = listOf(
|
||||
Block.Content.Text.Mark.Type.BOLD,
|
||||
Block.Content.Text.Mark.Type.ITALIC,
|
||||
Block.Content.Text.Mark.Type.STRIKETHROUGH,
|
||||
Block.Content.Text.Mark.Type.KEYBOARD,
|
||||
Block.Content.Text.Mark.Type.LINK
|
||||
Markup.Type.BOLD,
|
||||
Markup.Type.ITALIC,
|
||||
Markup.Type.STRIKETHROUGH,
|
||||
Markup.Type.KEYBOARD,
|
||||
Markup.Type.LINK
|
||||
),
|
||||
enabledAlignment = listOf(Alignment.START, Alignment.CENTER, Alignment.END)
|
||||
)
|
||||
|
||||
assertEquals(expected, result)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `should return style config when block type paragraph and range is IntRange EMPTY`() {
|
||||
|
||||
val child = MockDataFactory.randomUuid()
|
||||
|
||||
val given = Block(
|
||||
id = child,
|
||||
fields = Block.Fields(emptyMap()),
|
||||
content = Block.Content.Text(
|
||||
style = Block.Content.Text.Style.P,
|
||||
marks = listOf(),
|
||||
text = "test",
|
||||
isChecked = null,
|
||||
backgroundColor = null,
|
||||
color = null,
|
||||
align = null
|
||||
),
|
||||
children = emptyList()
|
||||
)
|
||||
|
||||
val result = given.getStyleConfig(focus = true, selection = IntRange.EMPTY)
|
||||
|
||||
val expected = StyleConfig(
|
||||
visibleTypes = listOf(StylingType.STYLE, StylingType.TEXT_COLOR, StylingType.BACKGROUND),
|
||||
enabledMarkup = listOf(
|
||||
Markup.Type.BOLD,
|
||||
Markup.Type.ITALIC,
|
||||
Markup.Type.STRIKETHROUGH,
|
||||
Markup.Type.KEYBOARD,
|
||||
Markup.Type.LINK
|
||||
),
|
||||
enabledAlignment = listOf(Alignment.START, Alignment.CENTER, Alignment.END)
|
||||
)
|
||||
|
||||
assertEquals(expected, result)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `should return style config when block type paragraph and range first bigger then last`() {
|
||||
|
||||
val child = MockDataFactory.randomUuid()
|
||||
|
||||
val given = Block(
|
||||
id = child,
|
||||
fields = Block.Fields(emptyMap()),
|
||||
content = Block.Content.Text(
|
||||
style = Block.Content.Text.Style.P,
|
||||
marks = listOf(),
|
||||
text = "test",
|
||||
isChecked = null,
|
||||
backgroundColor = null,
|
||||
color = null,
|
||||
align = null
|
||||
),
|
||||
children = emptyList()
|
||||
)
|
||||
|
||||
val result = given.getStyleConfig(focus = true, selection = IntRange(10, 1))
|
||||
|
||||
val expected = StyleConfig(
|
||||
visibleTypes = listOf(StylingType.STYLE, StylingType.TEXT_COLOR, StylingType.BACKGROUND),
|
||||
enabledMarkup = listOf(
|
||||
Markup.Type.BOLD,
|
||||
Markup.Type.ITALIC,
|
||||
Markup.Type.STRIKETHROUGH,
|
||||
Markup.Type.KEYBOARD,
|
||||
Markup.Type.LINK
|
||||
),
|
||||
enabledAlignment = listOf(Alignment.START, Alignment.CENTER, Alignment.END)
|
||||
)
|
||||
|
@ -500,11 +576,11 @@ class StyleConfigKtTest {
|
|||
val expected = StyleConfig(
|
||||
visibleTypes = listOf(StylingType.STYLE, StylingType.TEXT_COLOR, StylingType.BACKGROUND),
|
||||
enabledMarkup = listOf(
|
||||
Block.Content.Text.Mark.Type.BOLD,
|
||||
Block.Content.Text.Mark.Type.ITALIC,
|
||||
Block.Content.Text.Mark.Type.STRIKETHROUGH,
|
||||
Block.Content.Text.Mark.Type.KEYBOARD,
|
||||
Block.Content.Text.Mark.Type.LINK
|
||||
Markup.Type.BOLD,
|
||||
Markup.Type.ITALIC,
|
||||
Markup.Type.STRIKETHROUGH,
|
||||
Markup.Type.KEYBOARD,
|
||||
Markup.Type.LINK
|
||||
),
|
||||
enabledAlignment = emptyList()
|
||||
)
|
||||
|
@ -537,10 +613,10 @@ class StyleConfigKtTest {
|
|||
val expected = StyleConfig(
|
||||
visibleTypes = listOf(StylingType.STYLE, StylingType.TEXT_COLOR, StylingType.BACKGROUND),
|
||||
enabledMarkup = listOf(
|
||||
Block.Content.Text.Mark.Type.ITALIC,
|
||||
Block.Content.Text.Mark.Type.STRIKETHROUGH,
|
||||
Block.Content.Text.Mark.Type.KEYBOARD,
|
||||
Block.Content.Text.Mark.Type.LINK
|
||||
Markup.Type.ITALIC,
|
||||
Markup.Type.STRIKETHROUGH,
|
||||
Markup.Type.KEYBOARD,
|
||||
Markup.Type.LINK
|
||||
),
|
||||
enabledAlignment = listOf(Alignment.START, Alignment.CENTER, Alignment.END)
|
||||
)
|
||||
|
@ -573,10 +649,10 @@ class StyleConfigKtTest {
|
|||
val expected = StyleConfig(
|
||||
visibleTypes = listOf(StylingType.STYLE, StylingType.TEXT_COLOR, StylingType.BACKGROUND),
|
||||
enabledMarkup = listOf(
|
||||
Block.Content.Text.Mark.Type.ITALIC,
|
||||
Block.Content.Text.Mark.Type.STRIKETHROUGH,
|
||||
Block.Content.Text.Mark.Type.KEYBOARD,
|
||||
Block.Content.Text.Mark.Type.LINK
|
||||
Markup.Type.ITALIC,
|
||||
Markup.Type.STRIKETHROUGH,
|
||||
Markup.Type.KEYBOARD,
|
||||
Markup.Type.LINK
|
||||
),
|
||||
enabledAlignment = listOf(Alignment.START, Alignment.CENTER, Alignment.END)
|
||||
)
|
||||
|
@ -609,10 +685,10 @@ class StyleConfigKtTest {
|
|||
val expected = StyleConfig(
|
||||
visibleTypes = listOf(StylingType.STYLE, StylingType.TEXT_COLOR, StylingType.BACKGROUND),
|
||||
enabledMarkup = listOf(
|
||||
Block.Content.Text.Mark.Type.ITALIC,
|
||||
Block.Content.Text.Mark.Type.STRIKETHROUGH,
|
||||
Block.Content.Text.Mark.Type.KEYBOARD,
|
||||
Block.Content.Text.Mark.Type.LINK
|
||||
Markup.Type.ITALIC,
|
||||
Markup.Type.STRIKETHROUGH,
|
||||
Markup.Type.KEYBOARD,
|
||||
Markup.Type.LINK
|
||||
),
|
||||
enabledAlignment = emptyList()
|
||||
)
|
||||
|
@ -645,11 +721,11 @@ class StyleConfigKtTest {
|
|||
val expected = StyleConfig(
|
||||
visibleTypes = listOf(StylingType.STYLE, StylingType.TEXT_COLOR, StylingType.BACKGROUND),
|
||||
enabledMarkup = listOf(
|
||||
Block.Content.Text.Mark.Type.BOLD,
|
||||
Block.Content.Text.Mark.Type.ITALIC,
|
||||
Block.Content.Text.Mark.Type.STRIKETHROUGH,
|
||||
Block.Content.Text.Mark.Type.KEYBOARD,
|
||||
Block.Content.Text.Mark.Type.LINK
|
||||
Markup.Type.BOLD,
|
||||
Markup.Type.ITALIC,
|
||||
Markup.Type.STRIKETHROUGH,
|
||||
Markup.Type.KEYBOARD,
|
||||
Markup.Type.LINK
|
||||
),
|
||||
enabledAlignment = listOf()
|
||||
)
|
||||
|
@ -682,11 +758,11 @@ class StyleConfigKtTest {
|
|||
val expected = StyleConfig(
|
||||
visibleTypes = listOf(StylingType.STYLE, StylingType.TEXT_COLOR, StylingType.BACKGROUND),
|
||||
enabledMarkup = listOf(
|
||||
Block.Content.Text.Mark.Type.BOLD,
|
||||
Block.Content.Text.Mark.Type.ITALIC,
|
||||
Block.Content.Text.Mark.Type.STRIKETHROUGH,
|
||||
Block.Content.Text.Mark.Type.KEYBOARD,
|
||||
Block.Content.Text.Mark.Type.LINK
|
||||
Markup.Type.BOLD,
|
||||
Markup.Type.ITALIC,
|
||||
Markup.Type.STRIKETHROUGH,
|
||||
Markup.Type.KEYBOARD,
|
||||
Markup.Type.LINK
|
||||
),
|
||||
enabledAlignment = listOf()
|
||||
)
|
||||
|
@ -719,11 +795,11 @@ class StyleConfigKtTest {
|
|||
val expected = StyleConfig(
|
||||
visibleTypes = listOf(StylingType.STYLE, StylingType.TEXT_COLOR, StylingType.BACKGROUND),
|
||||
enabledMarkup = listOf(
|
||||
Block.Content.Text.Mark.Type.BOLD,
|
||||
Block.Content.Text.Mark.Type.ITALIC,
|
||||
Block.Content.Text.Mark.Type.STRIKETHROUGH,
|
||||
Block.Content.Text.Mark.Type.KEYBOARD,
|
||||
Block.Content.Text.Mark.Type.LINK
|
||||
Markup.Type.BOLD,
|
||||
Markup.Type.ITALIC,
|
||||
Markup.Type.STRIKETHROUGH,
|
||||
Markup.Type.KEYBOARD,
|
||||
Markup.Type.LINK
|
||||
),
|
||||
enabledAlignment = emptyList()
|
||||
)
|
||||
|
@ -852,11 +928,11 @@ class StyleConfigKtTest {
|
|||
StylingType.BACKGROUND
|
||||
),
|
||||
enabledMarkup = listOf(
|
||||
Block.Content.Text.Mark.Type.BOLD,
|
||||
Block.Content.Text.Mark.Type.ITALIC,
|
||||
Block.Content.Text.Mark.Type.STRIKETHROUGH,
|
||||
Block.Content.Text.Mark.Type.KEYBOARD,
|
||||
Block.Content.Text.Mark.Type.LINK
|
||||
Markup.Type.BOLD,
|
||||
Markup.Type.ITALIC,
|
||||
Markup.Type.STRIKETHROUGH,
|
||||
Markup.Type.KEYBOARD,
|
||||
Markup.Type.LINK
|
||||
),
|
||||
enabledAlignment = listOf(Alignment.START, Alignment.END)
|
||||
)
|
||||
|
@ -893,11 +969,11 @@ class StyleConfigKtTest {
|
|||
StylingType.BACKGROUND
|
||||
),
|
||||
enabledMarkup = listOf(
|
||||
Block.Content.Text.Mark.Type.BOLD,
|
||||
Block.Content.Text.Mark.Type.ITALIC,
|
||||
Block.Content.Text.Mark.Type.STRIKETHROUGH,
|
||||
Block.Content.Text.Mark.Type.KEYBOARD,
|
||||
Block.Content.Text.Mark.Type.LINK
|
||||
Markup.Type.BOLD,
|
||||
Markup.Type.ITALIC,
|
||||
Markup.Type.STRIKETHROUGH,
|
||||
Markup.Type.KEYBOARD,
|
||||
Markup.Type.LINK
|
||||
),
|
||||
enabledAlignment = listOf(Alignment.START, Alignment.END)
|
||||
)
|
||||
|
@ -933,11 +1009,11 @@ class StyleConfigKtTest {
|
|||
StylingType.BACKGROUND
|
||||
),
|
||||
enabledMarkup = listOf(
|
||||
Block.Content.Text.Mark.Type.BOLD,
|
||||
Block.Content.Text.Mark.Type.ITALIC,
|
||||
Block.Content.Text.Mark.Type.STRIKETHROUGH,
|
||||
Block.Content.Text.Mark.Type.KEYBOARD,
|
||||
Block.Content.Text.Mark.Type.LINK
|
||||
Markup.Type.BOLD,
|
||||
Markup.Type.ITALIC,
|
||||
Markup.Type.STRIKETHROUGH,
|
||||
Markup.Type.KEYBOARD,
|
||||
Markup.Type.LINK
|
||||
),
|
||||
enabledAlignment = listOf()
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue