Skip to content

Commit 31faa4a

Browse files
authored
Merge pull request #416 from MohamedRejeb/1.x
Fix auto-detect ordered list start takes only the first digit
2 parents 599134b + cf6c17c commit 31faa4a

File tree

7 files changed

+50
-61
lines changed

7 files changed

+50
-61
lines changed

kotlin-js-store/yarn.lock

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -429,13 +429,6 @@
429429
resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
430430
integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
431431

432-
abort-controller@3.0.0:
433-
version "3.0.0"
434-
resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"
435-
integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==
436-
dependencies:
437-
event-target-shim "^5.0.0"
438-
439432
accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8:
440433
version "1.3.8"
441434
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
@@ -1058,11 +1051,6 @@ etag@~1.8.1:
10581051
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
10591052
integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
10601053

1061-
event-target-shim@^5.0.0:
1062-
version "5.0.1"
1063-
resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
1064-
integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
1065-
10661054
eventemitter3@^4.0.0:
10671055
version "4.0.7"
10681056
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
@@ -1880,13 +1868,6 @@ neo-async@^2.6.2:
18801868
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
18811869
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
18821870

1883-
node-fetch@2.6.7:
1884-
version "2.6.7"
1885-
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
1886-
integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
1887-
dependencies:
1888-
whatwg-url "^5.0.0"
1889-
18901871
node-forge@^1:
18911872
version "1.3.1"
18921873
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3"
@@ -2584,11 +2565,6 @@ toidentifier@1.0.1:
25842565
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
25852566
integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
25862567

2587-
tr46@~0.0.3:
2588-
version "0.0.3"
2589-
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
2590-
integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
2591-
25922568
type-is@~1.6.18:
25932569
version "1.6.18"
25942570
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
@@ -2672,11 +2648,6 @@ wbuf@^1.1.0, wbuf@^1.7.3:
26722648
dependencies:
26732649
minimalistic-assert "^1.0.0"
26742650

2675-
webidl-conversions@^3.0.0:
2676-
version "3.0.1"
2677-
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
2678-
integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
2679-
26802651
webpack-cli@5.1.4:
26812652
version "5.1.4"
26822653
resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.4.tgz#c8e046ba7eaae4911d7e71e2b25b776fcc35759b"
@@ -2807,14 +2778,6 @@ websocket-extensions@>=0.1.1:
28072778
resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42"
28082779
integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==
28092780

2810-
whatwg-url@^5.0.0:
2811-
version "5.0.0"
2812-
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
2813-
integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
2814-
dependencies:
2815-
tr46 "~0.0.3"
2816-
webidl-conversions "^3.0.0"
2817-
28182781
which@^1.2.1:
28192782
version "1.3.1"
28202783
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"

richeditor-compose/src/commonMain/kotlin/com/mohamedrejeb/richeditor/model/RichTextState.kt

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1622,12 +1622,15 @@ public class RichTextState internal constructor(
16221622
)
16231623
richSpan.text = ""
16241624
} else if (richSpan.text.matches(Regex("^\\d+\\. "))) {
1625-
val number = richSpan.text.first().digitToIntOrNull() ?: 1
1626-
richSpan.paragraph.type = OrderedList(
1627-
number = number,
1628-
initialIndent = config.orderedListIndent,
1629-
)
1630-
richSpan.text = ""
1625+
val dotIndex = richSpan.text.indexOf('.')
1626+
if (dotIndex != -1) {
1627+
val number = richSpan.text.substring(0, dotIndex).toIntOrNull() ?: 1
1628+
richSpan.paragraph.type = OrderedList(
1629+
number = number,
1630+
initialIndent = config.orderedListIndent,
1631+
)
1632+
richSpan.text = ""
1633+
}
16311634
}
16321635
}
16331636

richeditor-compose/src/commonTest/kotlin/com.mohamedrejeb.richeditor/model/RichTextStateTest.kt

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1196,4 +1196,45 @@ class RichTextStateTest {
11961196
assertEquals(2, richTextState.richParagraphList.size)
11971197
}
11981198

1199+
fun testAutoRecognizeOrderedListUtil(number: Int) {
1200+
val state = RichTextState()
1201+
val text = "$number. "
1202+
1203+
state.onTextFieldValueChange(
1204+
TextFieldValue(
1205+
text = text,
1206+
selection = TextRange(text.length),
1207+
)
1208+
)
1209+
1210+
val orderedList = state.richParagraphList.first().type
1211+
1212+
assertIs<OrderedList>(orderedList)
1213+
assertEquals(number, orderedList.number)
1214+
assertTrue(state.isOrderedList)
1215+
}
1216+
1217+
@Test
1218+
fun testAutoRecognizeOrderedList() {
1219+
testAutoRecognizeOrderedListUtil(1)
1220+
testAutoRecognizeOrderedListUtil(28)
1221+
}
1222+
1223+
@Test
1224+
fun testAutoRecognizeUnorderedList() {
1225+
val state = RichTextState()
1226+
1227+
state.onTextFieldValueChange(
1228+
TextFieldValue(
1229+
text = "- ",
1230+
selection = TextRange(2),
1231+
)
1232+
)
1233+
1234+
val orderedList = state.richParagraphList.first().type
1235+
1236+
assertIs<UnorderedList>(orderedList)
1237+
assertTrue(state.isUnorderedList)
1238+
}
1239+
11991240
}

richeditor-compose/src/commonTest/kotlin/com.mohamedrejeb.richeditor/parser/markdown/RichTextStateMarkdownParserDecodeTest.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -366,8 +366,6 @@ class RichTextStateMarkdownParserDecodeTest {
366366

367367
state.setMarkdown(markdown)
368368

369-
state.printParagraphs()
370-
371369
assertEquals(
372370
"""
373371
# Prompt

richeditor-compose/src/commonTest/kotlin/com.mohamedrejeb.richeditor/parser/markdown/RichTextStateMarkdownParserEncodeTest.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -415,8 +415,6 @@ class RichTextStateMarkdownParserEncodeTest {
415415

416416
state.setMarkdown(markdown)
417417

418-
state.printParagraphs()
419-
420418
assertEquals(2, state.richParagraphList.size)
421419

422420
val firstParagraph = state.richParagraphList[0]

sample/common/src/commonMain/kotlin/com/mohamedrejeb/richeditor/sample/common/slack/SlackDemoContent.kt

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,13 @@ import androidx.compose.foundation.Image
44
import androidx.compose.foundation.background
55
import androidx.compose.foundation.border
66
import androidx.compose.foundation.clickable
7-
import androidx.compose.foundation.interaction.MutableInteractionSource
87
import androidx.compose.foundation.layout.*
98
import androidx.compose.foundation.lazy.LazyColumn
109
import androidx.compose.foundation.lazy.items
1110
import androidx.compose.foundation.shape.RoundedCornerShape
1211
import androidx.compose.material.icons.Icons
1312
import androidx.compose.material.icons.automirrored.filled.ArrowBack
1413
import androidx.compose.material.icons.automirrored.outlined.Send
15-
import androidx.compose.material.icons.filled.ArrowBack
16-
import androidx.compose.material.icons.outlined.Send
17-
import androidx.compose.material.ripple.rememberRipple
1814
import androidx.compose.material3.*
1915
import androidx.compose.runtime.*
2016
import androidx.compose.ui.Alignment
@@ -188,7 +184,6 @@ fun SlackDemoContent() {
188184
.padding(8.dp)
189185
)
190186

191-
// 1d99ce
192187
Box(
193188
modifier = Modifier
194189
.padding(8.dp)
@@ -201,8 +196,6 @@ fun SlackDemoContent() {
201196
},
202197
enabled = true,
203198
role = Role.Button,
204-
interactionSource = remember { MutableInteractionSource() },
205-
indication = rememberRipple()
206199
),
207200
contentAlignment = Alignment.Center
208201
) {

sample/common/src/commonMain/kotlin/com/mohamedrejeb/richeditor/sample/common/slack/SlackDemoPanelButton.kt

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,11 @@ package com.mohamedrejeb.richeditor.sample.common.slack
22

33
import androidx.compose.foundation.background
44
import androidx.compose.foundation.clickable
5-
import androidx.compose.foundation.interaction.MutableInteractionSource
65
import androidx.compose.foundation.layout.Box
76
import androidx.compose.foundation.layout.padding
8-
import androidx.compose.foundation.shape.CircleShape
97
import androidx.compose.foundation.shape.RoundedCornerShape
10-
import androidx.compose.material.ripple.rememberRipple
118
import androidx.compose.material3.*
129
import androidx.compose.runtime.Composable
13-
import androidx.compose.runtime.remember
1410
import androidx.compose.ui.Alignment
1511
import androidx.compose.ui.Modifier
1612
import androidx.compose.ui.draw.clip
@@ -19,7 +15,6 @@ import androidx.compose.ui.graphics.Color
1915
import androidx.compose.ui.graphics.vector.ImageVector
2016
import androidx.compose.ui.semantics.Role
2117
import androidx.compose.ui.unit.dp
22-
import org.jetbrains.compose.resources.painterResource
2318

2419
@Composable
2520
fun SlackDemoPanelButton(
@@ -40,8 +35,6 @@ fun SlackDemoPanelButton(
4035
onClick = onClick,
4136
enabled = true,
4237
role = Role.Button,
43-
interactionSource = remember { MutableInteractionSource() },
44-
indication = rememberRipple()
4538
),
4639
contentAlignment = Alignment.Center
4740
) {

0 commit comments

Comments
 (0)