From a8012656ff6dadf6bd33f97639d32b22662f48db Mon Sep 17 00:00:00 2001 From: Islam Rustamov Date: Sun, 1 Feb 2026 16:36:13 +0300 Subject: [PATCH 01/13] feat: add insertValue method --- .../textinput/EnrichedTextInputView.kt | 30 ++++++++++++++ .../textinput/EnrichedTextInputViewManager.kt | 9 ++++ ios/EnrichedTextInputView.mm | 41 +++++++++++++++++++ src/EnrichedTextInput.tsx | 4 ++ src/spec/EnrichedTextInputNativeComponent.ts | 7 ++++ 5 files changed, 91 insertions(+) diff --git a/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputView.kt b/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputView.kt index f9e1cb6cb..a1be8185f 100644 --- a/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputView.kt +++ b/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputView.kt @@ -9,6 +9,7 @@ import android.graphics.Color import android.graphics.Rect import android.graphics.text.LineBreaker import android.os.Build +import android.text.Editable import android.text.InputType import android.text.Spannable import android.util.AttributeSet @@ -332,6 +333,35 @@ class EnrichedTextInputView : AppCompatEditText { setSelection(actualStart, actualEnd) } + fun insertValue( + value: String, + start: Int, + end: Int, + ) { + val currentText = text as Editable + + if (currentText.isEmpty()) { + setValue(value) + + return + } + + runAsATransaction { + val newText = parseText(value) + + currentText.replace( + if (currentText.length < start) currentText.length else start, + if (currentText.length < end) currentText.length else end, + newText, + ) + + observeAsyncImages() + + // Scroll to the last char of inserted text + setSelection(start + newText.length) + } + } + // Helper: Walks through the string skipping ZWSPs to find the Nth visible character private fun getActualIndex(visibleIndex: Int): Int { val currentText = text as Spannable diff --git a/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputViewManager.kt b/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputViewManager.kt index 1418f48d3..283e299ab 100644 --- a/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputViewManager.kt +++ b/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputViewManager.kt @@ -278,6 +278,15 @@ class EnrichedTextInputViewManager : view?.setCustomSelection(start, end) } + override fun insertValue( + view: EnrichedTextInputView?, + text: String, + start: Int, + end: Int, + ) { + view?.insertValue(text, start, end) + } + override fun toggleBold(view: EnrichedTextInputView?) { view?.verifyAndToggleStyle(EnrichedSpans.BOLD) } diff --git a/ios/EnrichedTextInputView.mm b/ios/EnrichedTextInputView.mm index c60fc182c..206891dff 100644 --- a/ios/EnrichedTextInputView.mm +++ b/ios/EnrichedTextInputView.mm @@ -1156,6 +1156,12 @@ - (void)handleCommand:(const NSString *)commandName args:(const NSArray *)args { } else if ([commandName isEqualToString:@"requestHTML"]) { NSInteger requestId = [((NSNumber *)args[0]) integerValue]; [self requestHTML:requestId]; + } else if ([commandName isEqualToString:@"insertValue"]) { + NSString *text = (NSString *)args[0]; + NSInteger start = [((NSNumber *)args[1]) integerValue]; + NSInteger end = [((NSNumber *)args[2]) integerValue]; + + [self insertValue:text start:start end:end]; } } @@ -1202,6 +1208,41 @@ - (void)setCustomSelection:(NSInteger)visibleStart end:(NSInteger)visibleEnd { textView.selectedRange = NSMakeRange(actualStart, actualEnd - actualStart); } +- (void)insertValue:(NSString *)value + start:(NSInteger)visibleStart + end:(NSInteger)visibleEnd { + if (textView.text.length == 0) { + [self setValue:value]; + + return; + } + + if (textView.text.length < visibleStart) { + visibleStart = textView.text.length; + } + + if (textView.text.length < visibleEnd) { + visibleEnd = textView.text.length; + } + + NSRange range = NSMakeRange(visibleStart, visibleEnd - visibleStart); + + NSString *initiallyProcessedHtml = [parser initiallyProcessHtml:value]; + if (initiallyProcessedHtml == nullptr) { + // just plain text + [textView.textStorage replaceCharactersInRange:range withString:value]; + + recentlyChangedRange = range; + textView.selectedRange = NSRange(range.location + value.length, 0); + } else { + // we've got some seemingly proper html + [parser replaceFromHtml:initiallyProcessedHtml range:range]; + } + + // set recentlyChangedRange and check for changes + [self anyTextMayHaveBeenModified]; +} + // Helper: Walks through the string skipping ZWSPs to find the Nth visible // character - (NSUInteger)getActualIndex:(NSInteger)visibleIndex text:(NSString *)text { diff --git a/src/EnrichedTextInput.tsx b/src/EnrichedTextInput.tsx index 32d849d75..a4d3c19f2 100644 --- a/src/EnrichedTextInput.tsx +++ b/src/EnrichedTextInput.tsx @@ -49,6 +49,7 @@ export interface EnrichedTextInputInstance extends NativeMethods { setValue: (value: string) => void; setSelection: (start: number, end: number) => void; getHTML: () => Promise; + insertValue: (text: string, start: number, end: number) => void; // Text formatting commands toggleBold: () => void; @@ -310,6 +311,9 @@ export const EnrichedTextInput = ({ setSelection: (start: number, end: number) => { Commands.setSelection(nullthrows(nativeRef.current), start, end); }, + insertValue: (text, start, end) => { + Commands.insertValue(nullthrows(nativeRef.current), text, start, end); + }, })); const handleMentionEvent = (e: NativeSyntheticEvent) => { diff --git a/src/spec/EnrichedTextInputNativeComponent.ts b/src/spec/EnrichedTextInputNativeComponent.ts index f7ce7b833..7debe541b 100644 --- a/src/spec/EnrichedTextInputNativeComponent.ts +++ b/src/spec/EnrichedTextInputNativeComponent.ts @@ -300,6 +300,12 @@ interface NativeCommands { start: Int32, end: Int32 ) => void; + insertValue: ( + viewRef: React.ElementRef, + text: string, + start: Int32, + end: Int32 + ) => void; // Text formatting commands toggleBold: (viewRef: React.ElementRef) => void; @@ -357,6 +363,7 @@ export const Commands: NativeCommands = codegenNativeCommands({ 'blur', 'setValue', 'setSelection', + 'insertValue', // Text formatting commands 'toggleBold', From 7151d8dab99f507d726d7a0f5ed8be0b5b409324 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20=C5=BB=C3=B3=C5=82kiewski?= Date: Tue, 10 Feb 2026 21:32:45 +0100 Subject: [PATCH 02/13] fix: clamp start and end in insertValue --- ios/EnrichedTextInputView.mm | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/ios/EnrichedTextInputView.mm b/ios/EnrichedTextInputView.mm index 206891dff..b9f6dc454 100644 --- a/ios/EnrichedTextInputView.mm +++ b/ios/EnrichedTextInputView.mm @@ -1211,18 +1211,35 @@ - (void)setCustomSelection:(NSInteger)visibleStart end:(NSInteger)visibleEnd { - (void)insertValue:(NSString *)value start:(NSInteger)visibleStart end:(NSInteger)visibleEnd { - if (textView.text.length == 0) { + if (value == nil) { + return; + } + + NSString *currentText = textView.text; + NSInteger textLength = currentText.length; + + if (textLength == 0) { [self setValue:value]; return; } - if (textView.text.length < visibleStart) { - visibleStart = textView.text.length; + if (visibleStart < 0) { + visibleStart = 0; + } + if (visibleEnd < 0) { + visibleEnd = 0; } - if (textView.text.length < visibleEnd) { - visibleEnd = textView.text.length; + if (visibleStart > textLength) { + visibleStart = textLength; + } + if (visibleEnd > textLength) { + visibleEnd = textLength; + } + + if (visibleEnd < visibleStart) { + return; } NSRange range = NSMakeRange(visibleStart, visibleEnd - visibleStart); From d54ccd56108260a4c9c9274e26e1a3b82b7a354e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20=C5=BB=C3=B3=C5=82kiewski?= Date: Tue, 10 Feb 2026 21:40:55 +0100 Subject: [PATCH 03/13] fix: clamp start and end in insertValue on Android --- .../enriched/textinput/EnrichedTextInputView.kt | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputView.kt b/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputView.kt index a1be8185f..043a486d7 100644 --- a/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputView.kt +++ b/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputView.kt @@ -342,7 +342,17 @@ class EnrichedTextInputView : AppCompatEditText { if (currentText.isEmpty()) { setValue(value) + return + } + + var safeStart = start.coerceAtLeast(0) + var safeEnd = end.coerceAtLeast(0) + + val textLength = currentText.length + safeStart = safeStart.coerceAtMost(textLength) + safeEnd = safeEnd.coerceAtMost(textLength) + if (safeEnd < safeStart) { return } @@ -350,15 +360,16 @@ class EnrichedTextInputView : AppCompatEditText { val newText = parseText(value) currentText.replace( - if (currentText.length < start) currentText.length else start, - if (currentText.length < end) currentText.length else end, + safeStart, + safeEnd, newText, ) observeAsyncImages() // Scroll to the last char of inserted text - setSelection(start + newText.length) + val newCursorPos = (safeStart + newText.length).coerceAtMost(currentText.length) + setSelection(newCursorPos) } } From 8b6487bd7adb3ceae82134f88ecd7e2a9926ab5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20=C5=BB=C3=B3=C5=82kiewski?= Date: Thu, 2 Apr 2026 08:41:07 +0200 Subject: [PATCH 04/13] fix: refactor inserting value --- .../textinput/EnrichedTextInputView.kt | 35 ++++++--------- ios/EnrichedTextInputView.mm | 44 +++++++++---------- 2 files changed, 34 insertions(+), 45 deletions(-) diff --git a/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputView.kt b/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputView.kt index 449c117b0..e457afa28 100644 --- a/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputView.kt +++ b/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputView.kt @@ -442,37 +442,30 @@ class EnrichedTextInputView : end: Int, ) { val currentText = text as Editable + val textLength = currentText.length - if (currentText.isEmpty()) { + if (textLength == 0) { setValue(value) return } - var safeStart = start.coerceAtLeast(0) - var safeEnd = end.coerceAtLeast(0) + val actualStart = getActualIndex(start) + val actualEnd = getActualIndex(end) - val textLength = currentText.length - safeStart = safeStart.coerceAtMost(textLength) - safeEnd = safeEnd.coerceAtMost(textLength) - - if (safeEnd < safeStart) { - return - } + // Use coerceIn to ensure indices are within [0, textLength] and that start <= end + val safeStart = actualStart.coerceIn(0, textLength) + val safeEnd = actualEnd.coerceIn(safeStart, textLength) runAsATransaction { - val newText = parseText(value) - - currentText.replace( - safeStart, - safeEnd, - newText, - ) + val newText = parseText(value) as Spannable - observeAsyncImages() + val finalText = currentText.mergeSpannables(safeStart, safeEnd, newText) + setValue(finalText, false) - // Scroll to the last char of inserted text - val newCursorPos = (safeStart + newText.length).coerceAtMost(currentText.length) - setSelection(newCursorPos) + // replacement-safe: oldLength - removed + inserted + val insertedLength = finalText.length - (textLength - (safeEnd - safeStart)) + val insertedEnd = (safeStart + insertedLength).coerceIn(0, finalText.length) + setSelection(insertedEnd) } } diff --git a/ios/EnrichedTextInputView.mm b/ios/EnrichedTextInputView.mm index 0e2f4c1d8..f28e17412 100644 --- a/ios/EnrichedTextInputView.mm +++ b/ios/EnrichedTextInputView.mm @@ -9,6 +9,7 @@ #import "StringExtension.h" #import "StyleHeaders.h" #import "TextBlockTapGestureRecognizer.h" +#import "TextInsertionUtils.h" #import "UIView+React.h" #import "WordsUtils.h" #import "ZeroWidthSpaceUtils.h" @@ -1406,36 +1407,31 @@ - (void)insertValue:(NSString *)value return; } - if (visibleStart < 0) { - visibleStart = 0; - } - if (visibleEnd < 0) { - visibleEnd = 0; - } - - if (visibleStart > textLength) { - visibleStart = textLength; - } - if (visibleEnd > textLength) { - visibleEnd = textLength; - } - - if (visibleEnd < visibleStart) { - return; - } - - NSRange range = NSMakeRange(visibleStart, visibleEnd - visibleStart); + // Use MIN/MAX to ensure indices are within [0, textLength] + // and that start <= end. + NSUInteger start = MIN(MAX(0, (NSUInteger)visibleStart), textLength); + NSUInteger end = MIN(MAX(start, (NSUInteger)visibleEnd), textLength); + NSRange range = NSMakeRange(start, end - start); NSString *initiallyProcessedHtml = [parser initiallyProcessHtml:value]; if (initiallyProcessedHtml == nullptr) { // just plain text - [textView.textStorage replaceCharactersInRange:range withString:value]; - - recentlyChangedRange = range; - textView.selectedRange = NSRange(range.location + value.length, 0); + range.length > 0 ? [TextInsertionUtils replaceText:value + at:range + additionalAttributes:nil + input:self + withSelection:YES] + : [TextInsertionUtils insertText:value + at:range.location + additionalAttributes:nil + input:self + withSelection:YES]; } else { // we've got some seemingly proper html - [parser replaceFromHtml:initiallyProcessedHtml range:range]; + range.length > 0 + ? [parser replaceFromHtml:initiallyProcessedHtml range:range] + : [parser insertFromHtml:initiallyProcessedHtml + location:range.location]; } // set recentlyChangedRange and check for changes From 375e0f413253a95aa2f0a2be841e4fb668e67b8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20=C5=BB=C3=B3=C5=82kiewski?= Date: Mon, 27 Jul 2026 10:42:34 +0200 Subject: [PATCH 05/13] fix: inserting text into empty paragraph styled line --- .../textinput/EnrichedTextInputView.kt | 30 ++++++++++--------- ios/EnrichedTextInputView.mm | 4 +-- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputView.kt b/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputView.kt index e772d2217..e10b43469 100644 --- a/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputView.kt +++ b/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputView.kt @@ -482,24 +482,26 @@ class EnrichedTextInputView : return } - val actualStart = getActualIndex(start) - val actualEnd = getActualIndex(end) - // Use coerceIn to ensure indices are within [0, textLength] and that start <= end - val safeStart = actualStart.coerceIn(0, textLength) - val safeEnd = actualEnd.coerceIn(safeStart, textLength) + val safeStart = getActualIndex(start).coerceIn(0, textLength) + val safeEnd = getActualIndex(end).coerceIn(safeStart, textLength) - runAsATransaction { - val newText = parseText(value) as Spannable + // Skip past ZWS anchors so inserted text lands inside paragraph spans rather than before them. + var adjustedStart = safeStart + while (adjustedStart < currentText.length && currentText[adjustedStart] == EnrichedConstants.ZWS) { + adjustedStart++ + } + val adjustedEnd = safeEnd + (adjustedStart - safeStart) - val finalText = currentText.mergeSpannables(safeStart, safeEnd, newText) - setValue(finalText, false) + val newText = parseText(value) as Spannable - // replacement-safe: oldLength - removed + inserted - val insertedLength = finalText.length - (textLength - (safeEnd - safeStart)) - val insertedEnd = (safeStart + insertedLength).coerceIn(0, finalText.length) - setSelection(insertedEnd) - } + val finalText = currentText.mergeSpannables(adjustedStart, adjustedEnd, newText) + setValue(finalText, false) + + // replacement-safe: oldLength - removed + inserted + val insertedLength = finalText.length - (textLength - (adjustedEnd - adjustedStart)) + val insertedEnd = (adjustedStart + insertedLength).coerceIn(0, finalText.length) + setSelection(insertedEnd) } // Helper: Walks through the string skipping ZWSPs to find the Nth visible character diff --git a/ios/EnrichedTextInputView.mm b/ios/EnrichedTextInputView.mm index 932f4aafb..e542a0fee 100644 --- a/ios/EnrichedTextInputView.mm +++ b/ios/EnrichedTextInputView.mm @@ -1378,12 +1378,12 @@ - (void)insertValue:(NSString *)value range.length > 0 ? [TextInsertionUtils replaceText:value at:range additionalAttributes:nil - input:self + host:self withSelection:YES] : [TextInsertionUtils insertText:value at:range.location additionalAttributes:nil - input:self + host:self withSelection:YES]; } else { // we've got some seemingly proper html From 1aee6c3de39c2bfe6d57072dc5ad2a0bdfaf5ba8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20=C5=BB=C3=B3=C5=82kiewski?= Date: Wed, 29 Jul 2026 11:43:47 +0200 Subject: [PATCH 06/13] fix(android): inserting paragraph styles --- .../textinput/EnrichedTextInputView.kt | 34 +++- .../textinput/utils/EnrichedSpannable.kt | 166 ++++++++++++++---- 2 files changed, 162 insertions(+), 38 deletions(-) diff --git a/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputView.kt b/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputView.kt index e10b43469..b39f4e134 100644 --- a/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputView.kt +++ b/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputView.kt @@ -70,6 +70,7 @@ import com.swmansion.enriched.textinput.utils.EnrichedSelection import com.swmansion.enriched.textinput.utils.EnrichedSpanState import com.swmansion.enriched.textinput.utils.RichContentReceiver import com.swmansion.enriched.textinput.utils.ShortcutsHandler +import com.swmansion.enriched.textinput.utils.isStyleBlockedOnRange import com.swmansion.enriched.textinput.utils.mergeSpannables import com.swmansion.enriched.textinput.utils.setCheckboxClickListener import com.swmansion.enriched.textinput.utils.zwsCountBefore @@ -477,8 +478,13 @@ class EnrichedTextInputView : val currentText = text as Editable val textLength = currentText.length + // Capture active inline styles before setValue, which runs as a transaction and skips the + // text watcher style pass that would otherwise materialise them. + val activeInlineStyles = EnrichedSpans.inlineSpans.keys.filter { spanState?.getStart(it) != null } + if (textLength == 0) { setValue(value) + applyActiveInlineStyles(activeInlineStyles, 0, text?.length ?: 0) return } @@ -488,20 +494,42 @@ class EnrichedTextInputView : // Skip past ZWS anchors so inserted text lands inside paragraph spans rather than before them. var adjustedStart = safeStart - while (adjustedStart < currentText.length && currentText[adjustedStart] == EnrichedConstants.ZWS) { + while (adjustedStart < textLength && currentText[adjustedStart] == EnrichedConstants.ZWS) { adjustedStart++ } - val adjustedEnd = safeEnd + (adjustedStart - safeStart) + val adjustedEnd = safeEnd.coerceAtLeast(adjustedStart) val newText = parseText(value) as Spannable - val finalText = currentText.mergeSpannables(adjustedStart, adjustedEnd, newText) + val finalText = currentText.mergeSpannables(adjustedStart, adjustedEnd, newText, htmlStyle) setValue(finalText, false) // replacement-safe: oldLength - removed + inserted val insertedLength = finalText.length - (textLength - (adjustedEnd - adjustedStart)) val insertedEnd = (adjustedStart + insertedLength).coerceIn(0, finalText.length) setSelection(insertedEnd) + + applyActiveInlineStyles(activeInlineStyles, adjustedStart, insertedEnd) + } + + /** + * Re-applies inline styles that were active before an insertion onto the inserted range, + * mirroring what InlineStyles.afterTextChanged does for regularly typed text. + */ + private fun applyActiveInlineStyles( + styles: List, + start: Int, + end: Int, + ) { + if (styles.isEmpty() || start >= end) return + val spannable = text as? Spannable ?: return + + for (style in styles) { + if (isStyleBlockedOnRange(style, start, end, spannable, htmlStyle)) continue + inlineStyles?.applyStyleOnRange(style, start, end) + } + + selection?.validateStyles() } // Helper: Walks through the string skipping ZWSPs to find the Nth visible character diff --git a/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSpannable.kt b/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSpannable.kt index 576e10218..abeda6eb3 100644 --- a/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSpannable.kt +++ b/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSpannable.kt @@ -3,11 +3,15 @@ package com.swmansion.enriched.textinput.utils import android.text.Spannable import android.text.SpannableString import android.text.SpannableStringBuilder +import com.swmansion.enriched.common.EnrichedConstants import com.swmansion.enriched.common.EnrichedSpanFlags +import com.swmansion.enriched.common.spans.EnrichedImageSpan +import com.swmansion.enriched.common.spans.EnrichedMentionSpan import com.swmansion.enriched.common.spans.interfaces.EnrichedBlockSpan import com.swmansion.enriched.common.spans.interfaces.EnrichedParagraphSpan import com.swmansion.enriched.common.spans.interfaces.EnrichedSpan import com.swmansion.enriched.textinput.spans.EnrichedSpans +import com.swmansion.enriched.textinput.spans.interfaces.EnrichedInputSpan import com.swmansion.enriched.textinput.styles.HtmlStyle fun Spannable.getSafeSpanBoundaries( @@ -62,25 +66,25 @@ private fun getStyleForSpan(span: EnrichedSpan): String? = config.clazz.isInstance(span) }?.key -private fun Spannable.removeBlockedPasteStyles( - start: Int, - pastedSpannable: Spannable, +private fun Spannable.removeBlockedIncomingStyles( + insertStart: Int, + incomingSpannable: Spannable, htmlStyle: HtmlStyle, ): Spannable { - val pastedSpans = pastedSpannable.getSpans(0, pastedSpannable.length, EnrichedSpan::class.java) + val incomingSpans = incomingSpannable.getSpans(0, incomingSpannable.length, EnrichedSpan::class.java) - for (span in pastedSpans) { + for (span in incomingSpans) { val style = getStyleForSpan(span) ?: continue val blockingStyles = EnrichedSpans.getMergingConfigForStyle(style, htmlStyle)?.blockingStyles ?: continue if (blockingStyles.isEmpty()) continue - val spanStart = pastedSpannable.getSpanStart(span) - val spanEnd = pastedSpannable.getSpanEnd(span) + val spanStart = incomingSpannable.getSpanStart(span) + val spanEnd = incomingSpannable.getSpanEnd(span) if (spanStart == -1 || spanEnd == -1 || spanStart == spanEnd) continue - val pastedStart = start + spanStart - val pastedEnd = start + spanEnd - if (blockingStyles.any { hasStyleInRange(it, pastedStart, pastedEnd) }) { + val absoluteStart = insertStart + spanStart + val absoluteEnd = insertStart + spanEnd + if (blockingStyles.any { hasStyleInRange(it, absoluteStart, absoluteEnd) }) { removeSpan(span) } } @@ -88,50 +92,142 @@ private fun Spannable.removeBlockedPasteStyles( return this } +private fun isBlockLevel(span: Any): Boolean = span is EnrichedParagraphSpan || span is EnrichedBlockSpan + +/** + * Clears a conflicting span over [rangeStart, rangeEnd), keeping whatever falls outside it so that + * untouched text does not lose its styling. A continuous block style spanning several paragraphs + * therefore only loses the affected ones. Mentions and images carry a single entity and cannot be + * split, so they are dropped as a whole. + */ +private fun SpannableStringBuilder.clearConflictingSpan( + span: EnrichedSpan, + rangeStart: Int, + rangeEnd: Int, + htmlStyle: HtmlStyle, +) { + val spanStart = getSpanStart(span) + val spanEnd = getSpanEnd(span) + val flags = getSpanFlags(span) + removeSpan(span) + + if (span !is EnrichedInputSpan || span is EnrichedMentionSpan || span is EnrichedImageSpan) return + + // Block level styles own whole lines, so their leftovers must not swallow the separating newline + val isBlock = isBlockLevel(span) + val leftEnd = if (isBlock && rangeStart > 0 && this[rangeStart - 1] == '\n') rangeStart - 1 else rangeStart + val rightStart = if (isBlock && rangeEnd < length && this[rangeEnd] == '\n') rangeEnd + 1 else rangeEnd + + if (spanStart < leftEnd) { + val left = span.rebuildWithStyle(htmlStyle) + setSpan(left, spanStart, leftEnd, EnrichedSpanFlags.forSpan(left, flags)) + } + + if (rightStart < spanEnd) { + val right = span.rebuildWithStyle(htmlStyle) + setSpan(right, rightStart, spanEnd, EnrichedSpanFlags.forSpan(right, flags)) + } +} + +/** + * Drops the document styles that the merged in content conflicts with, mirroring how toggling a + * style clears its conflicts: block level styles resolve over the whole paragraph, inline ones only + * over the range they cover. Spans that arrived with [mergedSpannable] are left alone. + */ +private fun SpannableStringBuilder.removeConflictingStyles( + mergedSpannable: Spannable, + htmlStyle: HtmlStyle, +) { + val mergedSpans = mergedSpannable.getSpans(0, mergedSpannable.length, EnrichedSpan::class.java) + + for (span in mergedSpans) { + val spanStart = getSpanStart(span) + val spanEnd = getSpanEnd(span) + + if (spanStart == -1 || spanEnd == -1 || spanStart == spanEnd) continue + + val style = getStyleForSpan(span) ?: continue + val conflictingStyles = EnrichedSpans.getMergingConfigForStyle(style, htmlStyle)?.conflictingStyles ?: continue + if (conflictingStyles.isEmpty()) continue + + val (rangeStart, rangeEnd) = + if (isBlockLevel(span)) getParagraphBounds(spanStart, spanEnd) else Pair(spanStart, spanEnd) + + for (conflictingStyle in conflictingStyles) { + val type = EnrichedSpans.allSpans[conflictingStyle]?.clazz ?: continue + + for (existing in getSpans(rangeStart, rangeEnd, type)) { + if (existing !is EnrichedSpan || mergedSpans.any { it === existing }) { + continue + } + clearConflictingSpan(existing, rangeStart, rangeEnd, htmlStyle) + } + } + } +} + fun Spannable.mergeSpannables( start: Int, end: Int, string: String, - htmlStyle: HtmlStyle? = null, + htmlStyle: HtmlStyle, ): Spannable = this.mergeSpannables(start, end, SpannableString(string), htmlStyle) fun Spannable.mergeSpannables( start: Int, end: Int, spannable: Spannable, - htmlStyle: HtmlStyle? = null, + htmlStyle: HtmlStyle, ): Spannable { var finalStart = start var finalEnd = end - val builder = SpannableStringBuilder(this) - val startBlockSpans = spannable.getSpans(0, 0, EnrichedBlockSpan::class.java) - val startParagraphSpans = spannable.getSpans(0, 0, EnrichedParagraphSpan::class.java) - val endBlockSpans = spannable.getSpans(this.length, this.length, EnrichedBlockSpan::class.java) - val endParagraphSpans = spannable.getSpans(this.length, this.length, EnrichedParagraphSpan::class.java) val (paragraphStart, paragraphEnd) = this.getParagraphBounds(start, end) - val isNewLineStart = startBlockSpans.isNotEmpty() || startParagraphSpans.isNotEmpty() - val isNewLineEnd = endBlockSpans.isNotEmpty() || endParagraphSpans.isNotEmpty() - val pastedHasOwnStyles = + val incomingHasOwnBlockStyles = spannable.getSpans(0, spannable.length, EnrichedBlockSpan::class.java).isNotEmpty() || spannable.getSpans(0, spannable.length, EnrichedParagraphSpan::class.java).isNotEmpty() - if (isNewLineStart && start != paragraphStart) { - builder.insert(start, "\n") - finalStart = start + 1 - finalEnd = end + 1 - } + // ZWS anchors are not content, so a line holding nothing else still counts as empty + val hasContentBefore = (paragraphStart until start).any { this[it] != EnrichedConstants.ZWS } + val hasContentAfter = (end until paragraphEnd).any { this[it] != EnrichedConstants.ZWS } - if (isNewLineEnd && end != paragraphEnd) { - builder.insert(finalEnd, "\n") + if (incomingHasOwnBlockStyles && !hasContentBefore && !hasContentAfter) { + finalStart = paragraphStart + finalEnd = paragraphEnd } builder.replace(finalStart, finalEnd, spannable) - // Manually extend existing paragraph/block spans to cover the pasted text. - if (!pastedHasOwnStyles) { - val pasteEnd = finalStart + spannable.length + if (incomingHasOwnBlockStyles) { + // Extend each incoming block/paragraph span to cover its own paragraph so the style applies + // to existing text on the same line, matching toggle semantics + val insertEnd = finalStart + spannable.length + + val incomingBlockSpans = builder.getSpans(finalStart, insertEnd, EnrichedBlockSpan::class.java) + val incomingParagraphSpans = builder.getSpans(finalStart, insertEnd, EnrichedParagraphSpan::class.java) + val incomingSpans = incomingBlockSpans.toList() + incomingParagraphSpans.toList() + + for (span in incomingSpans) { + val spanStart = builder.getSpanStart(span) + val spanEnd = builder.getSpanEnd(span) + if (spanStart == -1) continue + + val (spanParaStart, spanParaEnd) = builder.getParagraphBounds(spanStart, spanEnd) + if (spanStart <= spanParaStart && spanEnd >= spanParaEnd) continue + + val flags = builder.getSpanFlags(span) + builder.removeSpan(span) + builder.setSpan( + span, + spanParaStart.coerceAtMost(spanStart), + spanParaEnd.coerceAtLeast(spanEnd), + EnrichedSpanFlags.forSpan(span, flags), + ) + } + } else { + // No own styles - extend existing paragraph/block spans to cover the inserted text + val insertEnd = finalStart + spannable.length val affectedParagraphSpans = builder.getSpans(finalStart, finalStart, EnrichedParagraphSpan::class.java) val affectedBlockSpans = builder.getSpans(finalStart, finalStart, EnrichedBlockSpan::class.java) @@ -140,18 +236,18 @@ fun Spannable.mergeSpannables( for (span in affectedSpans) { val spanStart = builder.getSpanStart(span) val spanEnd = builder.getSpanEnd(span) - if (spanStart == -1 || spanEnd >= pasteEnd) continue + if (spanStart == -1 || spanEnd >= insertEnd) continue - val (_, newParagraphEnd) = builder.getParagraphBounds(spanStart, pasteEnd) + val (_, newParagraphEnd) = builder.getParagraphBounds(spanStart, insertEnd) val flags = builder.getSpanFlags(span) builder.removeSpan(span) builder.setSpan(span, spanStart, newParagraphEnd, EnrichedSpanFlags.forSpan(span, flags)) } } - htmlStyle?.let { - builder.removeBlockedPasteStyles(finalStart, spannable, it) - } + // Blocking runs first so styles that never made it in are not treated as conflict winners + builder.removeBlockedIncomingStyles(finalStart, spannable, htmlStyle) + builder.removeConflictingStyles(spannable, htmlStyle) return builder } From 34fc2f1f0159cdef731877198244066def622630 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20=C5=BB=C3=B3=C5=82kiewski?= Date: Wed, 29 Jul 2026 12:00:12 +0200 Subject: [PATCH 07/13] fix: code review fixes --- ios/EnrichedTextInputView.mm | 10 ++++++---- src/types.ts | 8 +++++++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/ios/EnrichedTextInputView.mm b/ios/EnrichedTextInputView.mm index e542a0fee..ede51019b 100644 --- a/ios/EnrichedTextInputView.mm +++ b/ios/EnrichedTextInputView.mm @@ -1357,19 +1357,21 @@ - (void)insertValue:(NSString *)value return; } - NSString *currentText = textView.text; + NSString *currentText = textView.textStorage.string; NSInteger textLength = currentText.length; if (textLength == 0) { [self setValue:value]; - return; } + NSUInteger actualStart = [self getActualIndex:visibleStart text:currentText]; + NSUInteger actualEnd = [self getActualIndex:visibleEnd text:currentText]; + // Use MIN/MAX to ensure indices are within [0, textLength] // and that start <= end. - NSUInteger start = MIN(MAX(0, (NSUInteger)visibleStart), textLength); - NSUInteger end = MIN(MAX(start, (NSUInteger)visibleEnd), textLength); + NSUInteger start = MIN(actualStart, textLength); + NSUInteger end = MIN(MAX(start, actualEnd), textLength); NSRange range = NSMakeRange(start, end - start); NSString *initiallyProcessedHtml = [parser initiallyProcessHtml:value]; diff --git a/src/types.ts b/src/types.ts index 2abe60e59..45edd3042 100644 --- a/src/types.ts +++ b/src/types.ts @@ -448,7 +448,6 @@ export interface EnrichedTextInputInstance extends NativeMethods { * The promise resolves once the native layer has completed HTML parsing. */ getHTML: () => Promise; - insertValue: (value: string, start: number, end: number) => void; /** Toggles bold on the current selection (or toggles it for future typing if nothing is selected). */ toggleBold: () => void; @@ -565,6 +564,13 @@ export interface EnrichedTextInputInstance extends NativeMethods { setTextAlignment: ( alignment: 'left' | 'center' | 'right' | 'justify' | 'auto' ) => void; + + /** Inserts (or replaces) content at the visible character range `[start, end)`. + * @param value - Content to insert. + * @param start - Start index of the range to insert the content at. + * @param end - End index of the range to insert the content at. + */ + insertValue: (value: string, start: number, end: number) => void; } export interface ContextMenuItem { From 5b46a8aad7760079dbb5aaaad54a1d2698aa7556 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20=C5=BB=C3=B3=C5=82kiewski?= Date: Wed, 29 Jul 2026 13:11:17 +0200 Subject: [PATCH 08/13] test: add e2e tests for insertValue --- .../enrichedInput/flows/insert_value.yaml | 134 ++++++++++++++++++ ...insert_value_bold_blocked_in_codeblock.png | Bin 0 -> 4805 bytes .../insert_value_heading_into_empty_line.png | Bin 0 -> 8178 bytes ...nsert_value_heading_into_nonempty_line.png | Bin 0 -> 14429 bytes .../insert_value_inherits_inline_style.png | Bin 0 -> 5419 bytes ...nsert_value_into_empty_paragraph_style.png | Bin 0 -> 18748 bytes .../android/insert_value_multi_paragraph.png | Bin 0 -> 13885 bytes .../android/insert_value_plain_into_empty.png | Bin 0 -> 4695 bytes ...insert_value_bold_blocked_in_codeblock.png | Bin 0 -> 5910 bytes .../insert_value_heading_into_empty_line.png | Bin 0 -> 9729 bytes ...nsert_value_heading_into_nonempty_line.png | Bin 0 -> 17156 bytes .../insert_value_inherits_inline_style.png | Bin 0 -> 6521 bytes ...nsert_value_into_empty_paragraph_style.png | Bin 0 -> 19274 bytes .../ios/insert_value_multi_paragraph.png | Bin 0 -> 16891 bytes .../ios/insert_value_plain_into_empty.png | Bin 0 -> 5627 bytes .../subflows/insert_editor_value.yaml | 18 +++ apps/example/src/components/ModalShell.tsx | 2 + apps/example/src/hooks/useEditorState.ts | 12 ++ apps/example/src/screens/TestScreen.tsx | 14 ++ 19 files changed, 180 insertions(+) create mode 100644 .maestro/enrichedInput/flows/insert_value.yaml create mode 100644 .maestro/enrichedInput/screenshots/android/insert_value_bold_blocked_in_codeblock.png create mode 100644 .maestro/enrichedInput/screenshots/android/insert_value_heading_into_empty_line.png create mode 100644 .maestro/enrichedInput/screenshots/android/insert_value_heading_into_nonempty_line.png create mode 100644 .maestro/enrichedInput/screenshots/android/insert_value_inherits_inline_style.png create mode 100644 .maestro/enrichedInput/screenshots/android/insert_value_into_empty_paragraph_style.png create mode 100644 .maestro/enrichedInput/screenshots/android/insert_value_multi_paragraph.png create mode 100644 .maestro/enrichedInput/screenshots/android/insert_value_plain_into_empty.png create mode 100644 .maestro/enrichedInput/screenshots/ios/insert_value_bold_blocked_in_codeblock.png create mode 100644 .maestro/enrichedInput/screenshots/ios/insert_value_heading_into_empty_line.png create mode 100644 .maestro/enrichedInput/screenshots/ios/insert_value_heading_into_nonempty_line.png create mode 100644 .maestro/enrichedInput/screenshots/ios/insert_value_inherits_inline_style.png create mode 100644 .maestro/enrichedInput/screenshots/ios/insert_value_into_empty_paragraph_style.png create mode 100644 .maestro/enrichedInput/screenshots/ios/insert_value_multi_paragraph.png create mode 100644 .maestro/enrichedInput/screenshots/ios/insert_value_plain_into_empty.png create mode 100644 .maestro/enrichedInput/subflows/insert_editor_value.yaml diff --git a/.maestro/enrichedInput/flows/insert_value.yaml b/.maestro/enrichedInput/flows/insert_value.yaml new file mode 100644 index 000000000..bf7caefaa --- /dev/null +++ b/.maestro/enrichedInput/flows/insert_value.yaml @@ -0,0 +1,134 @@ +appId: swmansion.enriched.example +--- +# Verifies insertValue behaviour for different scenarios + +- launchApp + +- tapOn: + id: 'toggle-screen-button' + +# ── Scenario 1: plain text into empty editor ───────────────────────────────── +- tapOn: + id: 'focus-button' + +- runFlow: + file: '../subflows/insert_editor_value.yaml' + env: + VALUE: 'Hello, world!' + +- runFlow: + file: '../subflows/capture_or_assert_screenshot.yaml' + env: + SCREENSHOT_NAME: 'insert_value_plain_into_empty' + +# ── Scenario 2: plain text inherits active inline style ─────────────────────── +- tapOn: + id: 'clear-button' +- tapOn: + id: 'focus-button' + +- inputText: 'before' +- tapOn: + id: 'toolbar-bold' + +- runFlow: + file: '../subflows/insert_editor_value.yaml' + env: + VALUE: 'BOLD' + +- runFlow: + file: '../subflows/capture_or_assert_screenshot.yaml' + env: + SCREENSHOT_NAME: 'insert_value_inherits_inline_style' + +# ── Scenario 3: plain text into empty paragraph-styled line ─────────────────── +- tapOn: + id: 'clear-button' +- tapOn: + id: 'focus-button' + +- tapOn: + id: 'toolbar-heading-1' + +- runFlow: + file: '../subflows/insert_editor_value.yaml' + env: + VALUE: 'Heading' + +- runFlow: + file: '../subflows/capture_or_assert_screenshot.yaml' + env: + SCREENSHOT_NAME: 'insert_value_into_empty_paragraph_style' + +# ── Scenario 4: heading HTML into empty line ────────────────────────────────── +- tapOn: + id: 'clear-button' +- tapOn: + id: 'focus-button' + +- runFlow: + file: '../subflows/insert_editor_value.yaml' + env: + VALUE: '

Hello

' + +- runFlow: + file: '../subflows/capture_or_assert_screenshot.yaml' + env: + SCREENSHOT_NAME: 'insert_value_heading_into_empty_line' + +# ── Scenario 5: heading HTML into line with existing content ────────────────── +- tapOn: + id: 'clear-button' +- tapOn: + id: 'focus-button' + +- inputText: 'before' + +- runFlow: + file: '../subflows/insert_editor_value.yaml' + env: + VALUE: '

inserted

' + +- runFlow: + file: '../subflows/capture_or_assert_screenshot.yaml' + env: + SCREENSHOT_NAME: 'insert_value_heading_into_nonempty_line' + +# ── Scenario 6: bold HTML blocked inside code block ─────────────────────────── +- tapOn: + id: 'clear-button' +- tapOn: + id: 'focus-button' + +- tapOn: + id: 'toolbar-code-block' + +- inputText: 'code' + +- runFlow: + file: '../subflows/insert_editor_value.yaml' + env: + VALUE: 'bold' + +- runFlow: + file: '../subflows/capture_or_assert_screenshot.yaml' + env: + SCREENSHOT_NAME: 'insert_value_bold_blocked_in_codeblock' + +# ── Scenario 7: multi-paragraph HTML at caret ───────────────────────────────── +- tapOn: + id: 'clear-button' +- tapOn: + id: 'focus-button' + +- inputText: 'One' + +- runFlow: + file: '../subflows/insert_editor_value.yaml' + env: + VALUE: '

heading

normal

' + +- runFlow: + file: '../subflows/capture_or_assert_screenshot.yaml' + env: + SCREENSHOT_NAME: 'insert_value_multi_paragraph' diff --git a/.maestro/enrichedInput/screenshots/android/insert_value_bold_blocked_in_codeblock.png b/.maestro/enrichedInput/screenshots/android/insert_value_bold_blocked_in_codeblock.png new file mode 100644 index 0000000000000000000000000000000000000000..6e2e9f2a58de66f4c6b087960401c8f4f87ee33f GIT binary patch literal 4805 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 COdf0i literal 0 HcmV?d00001 diff --git a/.maestro/enrichedInput/screenshots/android/insert_value_heading_into_empty_line.png b/.maestro/enrichedInput/screenshots/android/insert_value_heading_into_empty_line.png new file mode 100644 index 0000000000000000000000000000000000000000..bbc8db6e72b8ae31bae7bc7f79233721711e99b8 GIT binary patch literal 8178 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 literal 0 HcmV?d00001 diff --git a/.maestro/enrichedInput/screenshots/android/insert_value_heading_into_nonempty_line.png b/.maestro/enrichedInput/screenshots/android/insert_value_heading_into_nonempty_line.png new file mode 100644 index 0000000000000000000000000000000000000000..4b2bfd539e532c4aaa7f22449ef662d249399041 GIT binary patch literal 14429 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 M(N@M>F@OAj05n3st^fc4 literal 0 HcmV?d00001 diff --git a/.maestro/enrichedInput/screenshots/android/insert_value_inherits_inline_style.png b/.maestro/enrichedInput/screenshots/android/insert_value_inherits_inline_style.png new file mode 100644 index 0000000000000000000000000000000000000000..775e4f288b3b9be1831b1fc7fdb015bae59f95b1 GIT binary patch literal 5419 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 literal 0 HcmV?d00001 diff --git a/.maestro/enrichedInput/screenshots/android/insert_value_into_empty_paragraph_style.png b/.maestro/enrichedInput/screenshots/android/insert_value_into_empty_paragraph_style.png new file mode 100644 index 0000000000000000000000000000000000000000..9c8f0add7fab8bc41c09b0e74fd73603494d4701 GIT binary patch literal 18748 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 T+@6HP3m}x`)#Y+zA3py-?z;#f literal 0 HcmV?d00001 diff --git a/.maestro/enrichedInput/screenshots/android/insert_value_multi_paragraph.png b/.maestro/enrichedInput/screenshots/android/insert_value_multi_paragraph.png new file mode 100644 index 0000000000000000000000000000000000000000..30b45e7450a4c28915b2bce43586983f43707a66 GIT binary patch literal 13885 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 AQUCw| literal 0 HcmV?d00001 diff --git a/.maestro/enrichedInput/screenshots/android/insert_value_plain_into_empty.png b/.maestro/enrichedInput/screenshots/android/insert_value_plain_into_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..38ded58b84d2c266de1e0eb8f6454c1bc80dd7e6 GIT binary patch literal 4695 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 literal 0 HcmV?d00001 diff --git a/.maestro/enrichedInput/screenshots/ios/insert_value_bold_blocked_in_codeblock.png b/.maestro/enrichedInput/screenshots/ios/insert_value_bold_blocked_in_codeblock.png new file mode 100644 index 0000000000000000000000000000000000000000..a8c341ddcdf6eb2976a9ed4022e52ed37ce19959 GIT binary patch literal 5910 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%0Ae*?{-=> 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 literal 0 HcmV?d00001 diff --git a/.maestro/enrichedInput/screenshots/ios/insert_value_multi_paragraph.png b/.maestro/enrichedInput/screenshots/ios/insert_value_multi_paragraph.png new file mode 100644 index 0000000000000000000000000000000000000000..d89f574c2022234655e73dbc8e3198b2485accde GIT binary patch literal 16891 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 literal 0 HcmV?d00001 diff --git a/.maestro/enrichedInput/subflows/insert_editor_value.yaml b/.maestro/enrichedInput/subflows/insert_editor_value.yaml new file mode 100644 index 000000000..c91c205f0 --- /dev/null +++ b/.maestro/enrichedInput/subflows/insert_editor_value.yaml @@ -0,0 +1,18 @@ +appId: swmansion.enriched.example +--- +- tapOn: + id: 'insert-value-button' + +- waitForAnimationToEnd +- extendedWaitUntil: + visible: + id: 'value-modal-input' + timeout: 10000 + +- tapOn: + id: 'value-modal-input' + +- inputText: ${VALUE} + +- tapOn: + id: 'value-modal-submit-button' diff --git a/apps/example/src/components/ModalShell.tsx b/apps/example/src/components/ModalShell.tsx index 748b44827..69befc8aa 100644 --- a/apps/example/src/components/ModalShell.tsx +++ b/apps/example/src/components/ModalShell.tsx @@ -36,5 +36,7 @@ const styles = StyleSheet.create({ justifyContent: 'center', alignItems: 'center', backgroundColor: 'rgba(0, 0, 0, 0.5)', + // without that during iOS e2e tests the modal is not visible when opened for the second time + zIndex: 2, }, }); diff --git a/apps/example/src/hooks/useEditorState.ts b/apps/example/src/hooks/useEditorState.ts index 69dcc3048..b16dc230b 100644 --- a/apps/example/src/hooks/useEditorState.ts +++ b/apps/example/src/hooks/useEditorState.ts @@ -43,6 +43,7 @@ export function useEditorState() { const [isLinkModalOpen, setIsLinkModalOpen] = useState(false); const [isImageModalOpen, setIsImageModalOpen] = useState(false); const [isValueModalOpen, setIsValueModalOpen] = useState(false); + const [isInsertValueModalOpen, setIsInsertValueModalOpen] = useState(false); const [currentHtml, setCurrentHtml] = useState(''); const [selection, setSelection] = useState(); const [stylesState, setStylesState] = useState(DEFAULT_STYLES); @@ -91,6 +92,8 @@ export function useEditorState() { const closeImageModal = () => setIsImageModalOpen(false); const openValueModal = () => setIsValueModalOpen(true); const closeValueModal = () => setIsValueModalOpen(false); + const openInsertValueModal = () => setIsInsertValueModalOpen(true); + const closeInsertValueModal = () => setIsInsertValueModalOpen(false); const openUserMentionPopup = () => setIsUserPopupOpen(true); const closeUserMentionPopup = () => { @@ -198,6 +201,11 @@ export function useEditorState() { closeValueModal(); }; + const submitInsertValue = (value: string) => { + ref.current?.insertValue(value, selection?.start ?? 0, selection?.end ?? 0); + closeInsertValueModal(); + }; + const selectImage = async ( width: number | undefined, height: number | undefined, @@ -247,6 +255,7 @@ export function useEditorState() { isLinkModalOpen, isImageModalOpen, isValueModalOpen, + isInsertValueModalOpen, isUserPopupOpen, isChannelPopupOpen, userMention, @@ -257,6 +266,8 @@ export function useEditorState() { closeImageModal, openValueModal, closeValueModal, + openInsertValueModal, + closeInsertValueModal, handleFocus, handleBlur, handleClear, @@ -277,6 +288,7 @@ export function useEditorState() { handleSubmitEditingEvent, submitLink, submitSetValue, + submitInsertValue, selectImage, }; } diff --git a/apps/example/src/screens/TestScreen.tsx b/apps/example/src/screens/TestScreen.tsx index 160fda327..89d4c8f03 100644 --- a/apps/example/src/screens/TestScreen.tsx +++ b/apps/example/src/screens/TestScreen.tsx @@ -113,6 +113,14 @@ export function TestScreen({ style={styles.rowButton} testID="set-value-button" /> + + + + + +