react-native-enriched 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -5
- package/android/generated/java/com/facebook/react/viewmanagers/EnrichedTextInputViewManagerDelegate.java +3 -0
- package/android/generated/java/com/facebook/react/viewmanagers/EnrichedTextInputViewManagerInterface.java +1 -0
- package/android/generated/jni/react/renderer/components/RNEnrichedTextInputViewSpec/EventEmitters.cpp +10 -0
- package/android/generated/jni/react/renderer/components/RNEnrichedTextInputViewSpec/EventEmitters.h +7 -0
- package/android/src/main/java/com/swmansion/enriched/EnrichedTextInputView.kt +92 -0
- package/android/src/main/java/com/swmansion/enriched/EnrichedTextInputViewManager.kt +6 -0
- package/android/src/main/java/com/swmansion/enriched/events/MentionHandler.kt +1 -1
- package/android/src/main/java/com/swmansion/enriched/events/OnRequestHtmlResultEvent.kt +33 -0
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedBlockQuoteSpan.kt +6 -0
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedBoldSpan.kt +6 -0
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedCodeBlockSpan.kt +6 -0
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedH1Span.kt +6 -0
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedH2Span.kt +6 -0
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedH3Span.kt +6 -0
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedImageSpan.kt +5 -0
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedInlineCodeSpan.kt +6 -0
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedItalicSpan.kt +5 -0
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedLinkSpan.kt +6 -0
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedMentionSpan.kt +6 -0
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedOrderedListSpan.kt +6 -0
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedSpans.kt +9 -3
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedStrikeThroughSpan.kt +5 -0
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedUnderlineSpan.kt +5 -0
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedUnorderedListSpan.kt +6 -0
- package/android/src/main/java/com/swmansion/enriched/spans/interfaces/EnrichedSpan.kt +4 -0
- package/android/src/main/java/com/swmansion/enriched/styles/HtmlStyle.kt +78 -0
- package/android/src/main/java/com/swmansion/enriched/styles/ParagraphStyles.kt +80 -4
- package/android/src/main/java/com/swmansion/enriched/utils/EnrichedParser.java +8 -0
- package/android/src/main/new_arch/RNEnrichedTextInputViewSpec.cpp +6 -6
- package/android/src/main/new_arch/RNEnrichedTextInputViewSpec.h +6 -6
- package/android/src/main/new_arch/react/renderer/components/RNEnrichedTextInputViewSpec/EnrichedTextInputComponentDescriptor.h +19 -19
- package/android/src/main/new_arch/react/renderer/components/RNEnrichedTextInputViewSpec/EnrichedTextInputMeasurementManager.cpp +40 -51
- package/android/src/main/new_arch/react/renderer/components/RNEnrichedTextInputViewSpec/EnrichedTextInputMeasurementManager.h +13 -15
- package/android/src/main/new_arch/react/renderer/components/RNEnrichedTextInputViewSpec/EnrichedTextInputShadowNode.cpp +23 -21
- package/android/src/main/new_arch/react/renderer/components/RNEnrichedTextInputViewSpec/EnrichedTextInputShadowNode.h +35 -36
- package/android/src/main/new_arch/react/renderer/components/RNEnrichedTextInputViewSpec/EnrichedTextInputState.cpp +4 -4
- package/android/src/main/new_arch/react/renderer/components/RNEnrichedTextInputViewSpec/EnrichedTextInputState.h +13 -14
- package/android/src/main/new_arch/react/renderer/components/RNEnrichedTextInputViewSpec/conversions.h +12 -13
- package/ios/EnrichedTextInputView.h +25 -13
- package/ios/EnrichedTextInputView.mm +872 -581
- package/ios/attachments/ImageAttachment.h +10 -0
- package/ios/attachments/ImageAttachment.mm +34 -0
- package/ios/attachments/MediaAttachment.h +23 -0
- package/ios/attachments/MediaAttachment.mm +31 -0
- package/ios/config/InputConfig.h +6 -6
- package/ios/config/InputConfig.mm +39 -33
- package/ios/generated/RNEnrichedTextInputViewSpec/EventEmitters.cpp +10 -0
- package/ios/generated/RNEnrichedTextInputViewSpec/EventEmitters.h +7 -0
- package/ios/generated/RNEnrichedTextInputViewSpec/RCTComponentViewHelpers.h +21 -0
- package/ios/inputParser/InputParser.h +5 -5
- package/ios/inputParser/InputParser.mm +789 -378
- package/ios/inputTextView/InputTextView.h +1 -1
- package/ios/inputTextView/InputTextView.mm +100 -59
- package/ios/internals/EnrichedTextInputViewComponentDescriptor.h +11 -9
- package/ios/internals/EnrichedTextInputViewShadowNode.h +28 -25
- package/ios/internals/EnrichedTextInputViewShadowNode.mm +45 -40
- package/ios/internals/EnrichedTextInputViewState.h +3 -1
- package/ios/styles/BlockQuoteStyle.mm +189 -118
- package/ios/styles/BoldStyle.mm +95 -63
- package/ios/styles/CodeBlockStyle.mm +204 -128
- package/ios/styles/H1Style.mm +10 -4
- package/ios/styles/H2Style.mm +10 -4
- package/ios/styles/H3Style.mm +10 -4
- package/ios/styles/HeadingStyleBase.mm +129 -84
- package/ios/styles/ImageStyle.mm +75 -73
- package/ios/styles/InlineCodeStyle.mm +148 -85
- package/ios/styles/ItalicStyle.mm +76 -52
- package/ios/styles/LinkStyle.mm +348 -227
- package/ios/styles/MentionStyle.mm +363 -246
- package/ios/styles/OrderedListStyle.mm +171 -106
- package/ios/styles/StrikethroughStyle.mm +52 -35
- package/ios/styles/UnderlineStyle.mm +68 -46
- package/ios/styles/UnorderedListStyle.mm +169 -106
- package/ios/utils/BaseStyleProtocol.h +2 -2
- package/ios/utils/ColorExtension.mm +7 -5
- package/ios/utils/FontExtension.mm +42 -27
- package/ios/utils/LayoutManagerExtension.h +1 -1
- package/ios/utils/LayoutManagerExtension.mm +280 -170
- package/ios/utils/MentionParams.h +0 -1
- package/ios/utils/MentionStyleProps.h +1 -1
- package/ios/utils/MentionStyleProps.mm +27 -20
- package/ios/utils/OccurenceUtils.h +42 -42
- package/ios/utils/OccurenceUtils.mm +142 -119
- package/ios/utils/ParagraphAttributesUtils.h +6 -2
- package/ios/utils/ParagraphAttributesUtils.mm +115 -71
- package/ios/utils/ParagraphsUtils.h +2 -1
- package/ios/utils/ParagraphsUtils.mm +40 -26
- package/ios/utils/StringExtension.h +1 -1
- package/ios/utils/StringExtension.mm +19 -16
- package/ios/utils/StyleHeaders.h +27 -15
- package/ios/utils/TextInsertionUtils.h +13 -2
- package/ios/utils/TextInsertionUtils.mm +38 -20
- package/ios/utils/WordsUtils.h +2 -1
- package/ios/utils/WordsUtils.mm +32 -22
- package/ios/utils/ZeroWidthSpaceUtils.h +3 -1
- package/ios/utils/ZeroWidthSpaceUtils.mm +145 -79
- package/lib/module/EnrichedTextInput.js +39 -1
- package/lib/module/EnrichedTextInput.js.map +1 -1
- package/lib/module/EnrichedTextInputNativeComponent.ts +11 -0
- package/lib/typescript/src/EnrichedTextInput.d.ts +1 -0
- package/lib/typescript/src/EnrichedTextInput.d.ts.map +1 -1
- package/lib/typescript/src/EnrichedTextInputNativeComponent.d.ts +6 -0
- package/lib/typescript/src/EnrichedTextInputNativeComponent.d.ts.map +1 -1
- package/package.json +8 -1
- package/src/EnrichedTextInput.tsx +45 -0
- package/src/EnrichedTextInputNativeComponent.ts +11 -0
package/ios/utils/WordsUtils.mm
CHANGED
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
@implementation WordsUtils
|
|
4
4
|
|
|
5
|
-
+ (NSArray<NSDictionary *> *)getAffectedWordsFromText:(NSString *)text
|
|
6
|
-
|
|
5
|
+
+ (NSArray<NSDictionary *> *)getAffectedWordsFromText:(NSString *)text
|
|
6
|
+
modificationRange:(NSRange)range {
|
|
7
|
+
if (text.length == 0) {
|
|
7
8
|
return [[NSArray alloc] init];
|
|
8
9
|
}
|
|
9
10
|
|
|
@@ -12,7 +13,8 @@
|
|
|
12
13
|
if (leftIt > 0) {
|
|
13
14
|
while (leftIt >= 0) {
|
|
14
15
|
unichar charAtIndex = [text characterAtIndex:leftIt];
|
|
15
|
-
if ([[NSCharacterSet whitespaceAndNewlineCharacterSet]
|
|
16
|
+
if ([[NSCharacterSet whitespaceAndNewlineCharacterSet]
|
|
17
|
+
characterIsMember:charAtIndex]) {
|
|
16
18
|
leftIt += 1;
|
|
17
19
|
break;
|
|
18
20
|
}
|
|
@@ -21,12 +23,13 @@
|
|
|
21
23
|
}
|
|
22
24
|
leftIt = MAX(0, leftIt);
|
|
23
25
|
leftIt = MIN(NSInteger(text.length - 1), leftIt);
|
|
24
|
-
|
|
26
|
+
|
|
25
27
|
NSInteger rightIt = range.location + range.length;
|
|
26
28
|
if (rightIt < text.length - 1) {
|
|
27
29
|
while (rightIt <= text.length - 1) {
|
|
28
30
|
unichar charAtIndex = [text characterAtIndex:rightIt];
|
|
29
|
-
if ([[NSCharacterSet whitespaceAndNewlineCharacterSet]
|
|
31
|
+
if ([[NSCharacterSet whitespaceAndNewlineCharacterSet]
|
|
32
|
+
characterIsMember:charAtIndex]) {
|
|
30
33
|
rightIt -= 1;
|
|
31
34
|
break;
|
|
32
35
|
}
|
|
@@ -34,23 +37,26 @@
|
|
|
34
37
|
}
|
|
35
38
|
}
|
|
36
39
|
rightIt = MIN(NSInteger(text.length - 1), rightIt);
|
|
37
|
-
|
|
38
|
-
if(leftIt > rightIt) {
|
|
40
|
+
|
|
41
|
+
if (leftIt > rightIt) {
|
|
39
42
|
return [[NSArray alloc] init];
|
|
40
43
|
}
|
|
41
|
-
|
|
42
|
-
NSMutableArray<NSDictionary *> *separatedWords =
|
|
44
|
+
|
|
45
|
+
NSMutableArray<NSDictionary *> *separatedWords =
|
|
46
|
+
[[NSMutableArray<NSDictionary *> alloc] init];
|
|
43
47
|
NSMutableString *currentWord = [[NSMutableString alloc] init];
|
|
44
48
|
NSInteger currentRangeStart = leftIt;
|
|
45
49
|
NSInteger currentIdx = leftIt;
|
|
46
|
-
|
|
50
|
+
|
|
47
51
|
while (currentIdx <= rightIt) {
|
|
48
52
|
unichar charAtIndex = [text characterAtIndex:currentIdx];
|
|
49
|
-
if ([[NSCharacterSet whitespaceAndNewlineCharacterSet]
|
|
53
|
+
if ([[NSCharacterSet whitespaceAndNewlineCharacterSet]
|
|
54
|
+
characterIsMember:charAtIndex]) {
|
|
50
55
|
if (currentWord.length > 0) {
|
|
51
56
|
[separatedWords addObject:@{
|
|
52
|
-
@"word": [currentWord copy],
|
|
53
|
-
@"range": [NSValue
|
|
57
|
+
@"word" : [currentWord copy],
|
|
58
|
+
@"range" : [NSValue
|
|
59
|
+
valueWithRange:NSMakeRange(currentRangeStart, currentWord.length)]
|
|
54
60
|
}];
|
|
55
61
|
[currentWord setString:@""];
|
|
56
62
|
}
|
|
@@ -60,28 +66,32 @@
|
|
|
60
66
|
}
|
|
61
67
|
currentIdx += 1;
|
|
62
68
|
}
|
|
63
|
-
|
|
69
|
+
|
|
64
70
|
if (currentWord.length > 0) {
|
|
65
71
|
[separatedWords addObject:@{
|
|
66
|
-
@"word": [currentWord copy],
|
|
67
|
-
@"range"
|
|
72
|
+
@"word" : [currentWord copy],
|
|
73
|
+
@"range" :
|
|
74
|
+
[NSValue valueWithRange:NSMakeRange(currentRangeStart,
|
|
75
|
+
rightIt - currentRangeStart + 1)]
|
|
68
76
|
}];
|
|
69
77
|
}
|
|
70
|
-
|
|
78
|
+
|
|
71
79
|
return separatedWords;
|
|
72
80
|
}
|
|
73
81
|
|
|
74
82
|
+ (NSDictionary *)getCurrentWord:(NSString *)text range:(NSRange)range {
|
|
75
83
|
// we just get current word at the cursor
|
|
76
|
-
if(range.length > 0) {
|
|
84
|
+
if (range.length > 0) {
|
|
77
85
|
return nullptr;
|
|
78
86
|
}
|
|
79
|
-
|
|
80
|
-
NSArray<NSDictionary *> *words = [WordsUtils getAffectedWordsFromText:text
|
|
81
|
-
|
|
87
|
+
|
|
88
|
+
NSArray<NSDictionary *> *words = [WordsUtils getAffectedWordsFromText:text
|
|
89
|
+
modificationRange:range];
|
|
90
|
+
if (words != nullptr && [words count] == 1 &&
|
|
91
|
+
[words firstObject] != nullptr) {
|
|
82
92
|
return [words firstObject];
|
|
83
93
|
}
|
|
84
|
-
|
|
94
|
+
|
|
85
95
|
return nullptr;
|
|
86
96
|
}
|
|
87
97
|
|
|
@@ -3,5 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
@interface ZeroWidthSpaceUtils : NSObject
|
|
5
5
|
+ (void)handleZeroWidthSpacesInInput:(id)input;
|
|
6
|
-
+ (BOOL)handleBackspaceInRange:(NSRange)range
|
|
6
|
+
+ (BOOL)handleBackspaceInRange:(NSRange)range
|
|
7
|
+
replacementText:(NSString *)text
|
|
8
|
+
input:(id)input;
|
|
7
9
|
@end
|
|
@@ -7,8 +7,10 @@
|
|
|
7
7
|
@implementation ZeroWidthSpaceUtils
|
|
8
8
|
+ (void)handleZeroWidthSpacesInInput:(id)input {
|
|
9
9
|
EnrichedTextInputView *typedInput = (EnrichedTextInputView *)input;
|
|
10
|
-
if(typedInput == nullptr) {
|
|
11
|
-
|
|
10
|
+
if (typedInput == nullptr) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
|
|
12
14
|
[self removeSpacesIfNeededinInput:typedInput];
|
|
13
15
|
[self addSpacesIfNeededinInput:typedInput];
|
|
14
16
|
}
|
|
@@ -17,155 +19,219 @@
|
|
|
17
19
|
NSMutableArray *indexesToBeRemoved = [[NSMutableArray alloc] init];
|
|
18
20
|
NSRange preRemoveSelection = input->textView.selectedRange;
|
|
19
21
|
|
|
20
|
-
for(int i = 0; i < input->textView.textStorage.string.length; i++) {
|
|
22
|
+
for (int i = 0; i < input->textView.textStorage.string.length; i++) {
|
|
21
23
|
unichar character = [input->textView.textStorage.string characterAtIndex:i];
|
|
22
|
-
if(character == 0x200B) {
|
|
24
|
+
if (character == 0x200B) {
|
|
23
25
|
NSRange characterRange = NSMakeRange(i, 1);
|
|
24
|
-
|
|
25
|
-
NSRange paragraphRange = [input->textView.textStorage.string
|
|
26
|
-
|
|
26
|
+
|
|
27
|
+
NSRange paragraphRange = [input->textView.textStorage.string
|
|
28
|
+
paragraphRangeForRange:characterRange];
|
|
29
|
+
// having paragraph longer than 1 character means someone most likely
|
|
30
|
+
// added something and we probably can remove the space
|
|
27
31
|
BOOL removeSpace = paragraphRange.length > 1;
|
|
28
32
|
// exception; 2 characters paragraph with zero width space + newline
|
|
29
33
|
// here, we still need zero width space to keep the empty list items
|
|
30
|
-
if(paragraphRange.length == 2 &&
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
+
if (paragraphRange.length == 2 && paragraphRange.location == i &&
|
|
35
|
+
[[NSCharacterSet newlineCharacterSet]
|
|
36
|
+
characterIsMember:[input->textView.textStorage.string
|
|
37
|
+
characterAtIndex:i + 1]]) {
|
|
34
38
|
removeSpace = NO;
|
|
35
39
|
}
|
|
36
|
-
|
|
37
|
-
if(removeSpace) {
|
|
40
|
+
|
|
41
|
+
if (removeSpace) {
|
|
38
42
|
[indexesToBeRemoved addObject:@(characterRange.location)];
|
|
39
43
|
continue;
|
|
40
44
|
}
|
|
41
|
-
|
|
42
|
-
UnorderedListStyle *ulStyle =
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
|
|
46
|
+
UnorderedListStyle *ulStyle =
|
|
47
|
+
input->stylesDict[@([UnorderedListStyle getStyleType])];
|
|
48
|
+
OrderedListStyle *olStyle =
|
|
49
|
+
input->stylesDict[@([OrderedListStyle getStyleType])];
|
|
50
|
+
BlockQuoteStyle *bqStyle =
|
|
51
|
+
input->stylesDict[@([BlockQuoteStyle getStyleType])];
|
|
52
|
+
CodeBlockStyle *cbStyle =
|
|
53
|
+
input->stylesDict[@([CodeBlockStyle getStyleType])];
|
|
54
|
+
|
|
55
|
+
// zero width spaces with no lists/blockquotes/codeblocks on them get
|
|
56
|
+
// removed
|
|
57
|
+
if (![ulStyle detectStyle:characterRange] &&
|
|
58
|
+
![olStyle detectStyle:characterRange] &&
|
|
59
|
+
![bqStyle detectStyle:characterRange] &&
|
|
60
|
+
![cbStyle detectStyle:characterRange]) {
|
|
49
61
|
[indexesToBeRemoved addObject:@(characterRange.location)];
|
|
50
62
|
}
|
|
51
63
|
}
|
|
52
64
|
}
|
|
53
|
-
|
|
65
|
+
|
|
54
66
|
// do the removing
|
|
55
67
|
NSInteger offset = 0;
|
|
56
68
|
NSInteger postRemoveLocationOffset = 0;
|
|
57
69
|
NSInteger postRemoveLengthOffset = 0;
|
|
58
|
-
for(NSNumber *index in indexesToBeRemoved) {
|
|
70
|
+
for (NSNumber *index in indexesToBeRemoved) {
|
|
59
71
|
NSRange replaceRange = NSMakeRange([index integerValue] + offset, 1);
|
|
60
|
-
[TextInsertionUtils replaceText:@""
|
|
72
|
+
[TextInsertionUtils replaceText:@""
|
|
73
|
+
at:replaceRange
|
|
74
|
+
additionalAttributes:nullptr
|
|
75
|
+
input:input
|
|
76
|
+
withSelection:NO];
|
|
61
77
|
offset -= 1;
|
|
62
|
-
if([index integerValue] < preRemoveSelection.location) {
|
|
78
|
+
if ([index integerValue] < preRemoveSelection.location) {
|
|
63
79
|
postRemoveLocationOffset -= 1;
|
|
64
80
|
}
|
|
65
|
-
if([index integerValue] >= preRemoveSelection.location &&
|
|
81
|
+
if ([index integerValue] >= preRemoveSelection.location &&
|
|
82
|
+
[index integerValue] < NSMaxRange(preRemoveSelection)) {
|
|
66
83
|
postRemoveLengthOffset -= 1;
|
|
67
84
|
}
|
|
68
85
|
}
|
|
69
|
-
|
|
86
|
+
|
|
70
87
|
// fix the selection if needed
|
|
71
|
-
if([input->textView isFirstResponder]) {
|
|
72
|
-
input->textView.selectedRange =
|
|
88
|
+
if ([input->textView isFirstResponder]) {
|
|
89
|
+
input->textView.selectedRange =
|
|
90
|
+
NSMakeRange(preRemoveSelection.location + postRemoveLocationOffset,
|
|
91
|
+
preRemoveSelection.length + postRemoveLengthOffset);
|
|
73
92
|
}
|
|
74
93
|
}
|
|
75
94
|
|
|
76
95
|
+ (void)addSpacesIfNeededinInput:(EnrichedTextInputView *)input {
|
|
77
|
-
UnorderedListStyle *ulStyle =
|
|
78
|
-
|
|
79
|
-
|
|
96
|
+
UnorderedListStyle *ulStyle =
|
|
97
|
+
input->stylesDict[@([UnorderedListStyle getStyleType])];
|
|
98
|
+
OrderedListStyle *olStyle =
|
|
99
|
+
input->stylesDict[@([OrderedListStyle getStyleType])];
|
|
100
|
+
BlockQuoteStyle *bqStyle =
|
|
101
|
+
input->stylesDict[@([BlockQuoteStyle getStyleType])];
|
|
80
102
|
CodeBlockStyle *cbStyle = input->stylesDict[@([CodeBlockStyle getStyleType])];
|
|
81
103
|
NSMutableArray *indexesToBeInserted = [[NSMutableArray alloc] init];
|
|
82
104
|
NSRange preAddSelection = input->textView.selectedRange;
|
|
83
|
-
|
|
84
|
-
for(int i = 0; i < input->textView.textStorage.string.length; i++) {
|
|
105
|
+
|
|
106
|
+
for (int i = 0; i < input->textView.textStorage.string.length; i++) {
|
|
85
107
|
unichar character = [input->textView.textStorage.string characterAtIndex:i];
|
|
86
|
-
|
|
87
|
-
if([[NSCharacterSet newlineCharacterSet] characterIsMember:character]) {
|
|
108
|
+
|
|
109
|
+
if ([[NSCharacterSet newlineCharacterSet] characterIsMember:character]) {
|
|
88
110
|
NSRange characterRange = NSMakeRange(i, 1);
|
|
89
|
-
NSRange paragraphRange = [input->textView.textStorage.string
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
111
|
+
NSRange paragraphRange = [input->textView.textStorage.string
|
|
112
|
+
paragraphRangeForRange:characterRange];
|
|
113
|
+
|
|
114
|
+
if (paragraphRange.length == 1) {
|
|
115
|
+
if ([ulStyle detectStyle:characterRange] ||
|
|
116
|
+
[olStyle detectStyle:characterRange] ||
|
|
117
|
+
[bqStyle detectStyle:characterRange] ||
|
|
118
|
+
[cbStyle detectStyle:characterRange]) {
|
|
93
119
|
// we have an empty list or quote item with no space: add it!
|
|
94
120
|
[indexesToBeInserted addObject:@(paragraphRange.location)];
|
|
95
121
|
}
|
|
96
122
|
}
|
|
97
123
|
}
|
|
98
124
|
}
|
|
99
|
-
|
|
125
|
+
|
|
100
126
|
// do the replacing
|
|
101
127
|
NSInteger offset = 0;
|
|
102
128
|
NSInteger postAddLocationOffset = 0;
|
|
103
129
|
NSInteger postAddLengthOffset = 0;
|
|
104
|
-
for(NSNumber *index in indexesToBeInserted) {
|
|
130
|
+
for (NSNumber *index in indexesToBeInserted) {
|
|
105
131
|
NSRange replaceRange = NSMakeRange([index integerValue] + offset, 1);
|
|
106
|
-
[TextInsertionUtils replaceText:@"\u200B\n"
|
|
132
|
+
[TextInsertionUtils replaceText:@"\u200B\n"
|
|
133
|
+
at:replaceRange
|
|
134
|
+
additionalAttributes:nullptr
|
|
135
|
+
input:input
|
|
136
|
+
withSelection:NO];
|
|
107
137
|
offset += 1;
|
|
108
|
-
if([index integerValue] < preAddSelection.location) {
|
|
138
|
+
if ([index integerValue] < preAddSelection.location) {
|
|
109
139
|
postAddLocationOffset += 1;
|
|
110
140
|
}
|
|
111
|
-
if([index integerValue] >= preAddSelection.location &&
|
|
141
|
+
if ([index integerValue] >= preAddSelection.location &&
|
|
142
|
+
[index integerValue] < NSMaxRange(preAddSelection)) {
|
|
112
143
|
postAddLengthOffset += 1;
|
|
113
144
|
}
|
|
114
145
|
}
|
|
115
|
-
|
|
146
|
+
|
|
116
147
|
// additional check for last index of the input
|
|
117
148
|
NSRange lastRange = NSMakeRange(input->textView.textStorage.string.length, 0);
|
|
118
|
-
NSRange lastParagraphRange =
|
|
119
|
-
|
|
120
|
-
|
|
149
|
+
NSRange lastParagraphRange =
|
|
150
|
+
[input->textView.textStorage.string paragraphRangeForRange:lastRange];
|
|
151
|
+
if (lastParagraphRange.length == 0 &&
|
|
152
|
+
([ulStyle detectStyle:lastRange] || [olStyle detectStyle:lastRange] ||
|
|
153
|
+
[bqStyle detectStyle:lastRange] || [cbStyle detectStyle:lastRange])) {
|
|
154
|
+
[TextInsertionUtils insertText:@"\u200B"
|
|
155
|
+
at:lastRange.location
|
|
156
|
+
additionalAttributes:nullptr
|
|
157
|
+
input:input
|
|
158
|
+
withSelection:NO];
|
|
121
159
|
}
|
|
122
|
-
|
|
160
|
+
|
|
123
161
|
// fix the selection if needed
|
|
124
|
-
if([input->textView isFirstResponder]) {
|
|
125
|
-
input->textView.selectedRange =
|
|
162
|
+
if ([input->textView isFirstResponder]) {
|
|
163
|
+
input->textView.selectedRange =
|
|
164
|
+
NSMakeRange(preAddSelection.location + postAddLocationOffset,
|
|
165
|
+
preAddSelection.length + postAddLengthOffset);
|
|
126
166
|
}
|
|
127
167
|
}
|
|
128
168
|
|
|
129
|
-
+ (BOOL)handleBackspaceInRange:(NSRange)range
|
|
130
|
-
|
|
169
|
+
+ (BOOL)handleBackspaceInRange:(NSRange)range
|
|
170
|
+
replacementText:(NSString *)text
|
|
171
|
+
input:(id)input {
|
|
172
|
+
if (range.length != 1 || ![text isEqualToString:@""]) {
|
|
173
|
+
return NO;
|
|
174
|
+
}
|
|
131
175
|
EnrichedTextInputView *typedInput = (EnrichedTextInputView *)input;
|
|
132
|
-
if(typedInput == nullptr) {
|
|
133
|
-
|
|
134
|
-
|
|
176
|
+
if (typedInput == nullptr) {
|
|
177
|
+
return NO;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
unichar character =
|
|
181
|
+
[typedInput->textView.textStorage.string characterAtIndex:range.location];
|
|
135
182
|
// zero-width space got backspaced
|
|
136
|
-
if(character == 0x200B) {
|
|
183
|
+
if (character == 0x200B) {
|
|
137
184
|
// in such case: remove the whole line without the endline if there is one
|
|
138
|
-
|
|
139
|
-
NSRange paragraphRange =
|
|
185
|
+
|
|
186
|
+
NSRange paragraphRange =
|
|
187
|
+
[typedInput->textView.textStorage.string paragraphRangeForRange:range];
|
|
140
188
|
NSRange removalRange = paragraphRange;
|
|
141
189
|
// if whole paragraph gets removed then 0 length for style removal
|
|
142
190
|
NSRange styleRemovalRange = NSMakeRange(paragraphRange.location, 0);
|
|
143
|
-
|
|
144
|
-
if([[NSCharacterSet newlineCharacterSet]
|
|
191
|
+
|
|
192
|
+
if ([[NSCharacterSet newlineCharacterSet]
|
|
193
|
+
characterIsMember:[typedInput->textView.textStorage.string
|
|
194
|
+
characterAtIndex:NSMaxRange(paragraphRange) -
|
|
195
|
+
1]]) {
|
|
145
196
|
// if endline is there, don't remove it
|
|
146
|
-
removalRange =
|
|
197
|
+
removalRange =
|
|
198
|
+
NSMakeRange(paragraphRange.location, paragraphRange.length - 1);
|
|
147
199
|
// if endline is left then 1 length for style removal
|
|
148
200
|
styleRemovalRange = NSMakeRange(paragraphRange.location, 1);
|
|
149
201
|
}
|
|
150
|
-
|
|
202
|
+
|
|
151
203
|
// and then remove associated styling
|
|
152
|
-
|
|
153
|
-
UnorderedListStyle *ulStyle =
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
204
|
+
|
|
205
|
+
UnorderedListStyle *ulStyle =
|
|
206
|
+
typedInput->stylesDict[@([UnorderedListStyle getStyleType])];
|
|
207
|
+
OrderedListStyle *olStyle =
|
|
208
|
+
typedInput->stylesDict[@([OrderedListStyle getStyleType])];
|
|
209
|
+
BlockQuoteStyle *bqStyle =
|
|
210
|
+
typedInput->stylesDict[@([BlockQuoteStyle getStyleType])];
|
|
211
|
+
CodeBlockStyle *cbStyle =
|
|
212
|
+
typedInput->stylesDict[@([CodeBlockStyle getStyleType])];
|
|
213
|
+
|
|
214
|
+
if ([cbStyle detectStyle:removalRange]) {
|
|
215
|
+
// code blocks are being handled differently; we want to remove previous
|
|
216
|
+
// newline if there is a one
|
|
217
|
+
if (range.location > 0) {
|
|
218
|
+
removalRange =
|
|
219
|
+
NSMakeRange(removalRange.location - 1, removalRange.length + 1);
|
|
162
220
|
}
|
|
163
|
-
[TextInsertionUtils replaceText:@""
|
|
221
|
+
[TextInsertionUtils replaceText:@""
|
|
222
|
+
at:removalRange
|
|
223
|
+
additionalAttributes:nullptr
|
|
224
|
+
input:typedInput
|
|
225
|
+
withSelection:YES];
|
|
164
226
|
return YES;
|
|
165
227
|
}
|
|
166
|
-
|
|
167
|
-
[TextInsertionUtils replaceText:@""
|
|
168
|
-
|
|
228
|
+
|
|
229
|
+
[TextInsertionUtils replaceText:@""
|
|
230
|
+
at:removalRange
|
|
231
|
+
additionalAttributes:nullptr
|
|
232
|
+
input:typedInput
|
|
233
|
+
withSelection:YES];
|
|
234
|
+
|
|
169
235
|
if ([ulStyle detectStyle:styleRemovalRange]) {
|
|
170
236
|
[ulStyle removeAttributes:styleRemovalRange];
|
|
171
237
|
} else if ([olStyle detectStyle:styleRemovalRange]) {
|
|
@@ -173,7 +239,7 @@
|
|
|
173
239
|
} else if ([bqStyle detectStyle:styleRemovalRange]) {
|
|
174
240
|
[bqStyle removeAttributes:styleRemovalRange];
|
|
175
241
|
}
|
|
176
|
-
|
|
242
|
+
|
|
177
243
|
return YES;
|
|
178
244
|
}
|
|
179
245
|
return NO;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { useImperativeHandle, useMemo, useRef } from 'react';
|
|
3
|
+
import { useEffect, useImperativeHandle, useMemo, useRef } from 'react';
|
|
4
4
|
import EnrichedTextInputNativeComponent, { Commands } from './EnrichedTextInputNativeComponent';
|
|
5
5
|
import { normalizeHtmlStyle } from "./normalizeHtmlStyle.js";
|
|
6
6
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -42,6 +42,19 @@ export const EnrichedTextInput = ({
|
|
|
42
42
|
...rest
|
|
43
43
|
}) => {
|
|
44
44
|
const nativeRef = useRef(null);
|
|
45
|
+
const nextHtmlRequestId = useRef(1);
|
|
46
|
+
const pendingHtmlRequests = useRef(new Map());
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
const pendingRequests = pendingHtmlRequests.current;
|
|
49
|
+
return () => {
|
|
50
|
+
pendingRequests.forEach(({
|
|
51
|
+
reject
|
|
52
|
+
}) => {
|
|
53
|
+
reject(new Error('Component unmounted'));
|
|
54
|
+
});
|
|
55
|
+
pendingRequests.clear();
|
|
56
|
+
};
|
|
57
|
+
}, []);
|
|
45
58
|
const normalizedHtmlStyle = useMemo(() => normalizeHtmlStyle(htmlStyle, mentionIndicators), [htmlStyle, mentionIndicators]);
|
|
46
59
|
useImperativeHandle(ref, () => ({
|
|
47
60
|
measureInWindow: callback => {
|
|
@@ -65,6 +78,16 @@ export const EnrichedTextInput = ({
|
|
|
65
78
|
setValue: value => {
|
|
66
79
|
Commands.setValue(nullthrows(nativeRef.current), value);
|
|
67
80
|
},
|
|
81
|
+
getHTML: () => {
|
|
82
|
+
return new Promise((resolve, reject) => {
|
|
83
|
+
const requestId = nextHtmlRequestId.current++;
|
|
84
|
+
pendingHtmlRequests.current.set(requestId, {
|
|
85
|
+
resolve,
|
|
86
|
+
reject
|
|
87
|
+
});
|
|
88
|
+
Commands.requestHTML(nullthrows(nativeRef.current), requestId);
|
|
89
|
+
});
|
|
90
|
+
},
|
|
68
91
|
toggleBold: () => {
|
|
69
92
|
Commands.toggleBold(nullthrows(nativeRef.current));
|
|
70
93
|
},
|
|
@@ -162,6 +185,20 @@ export const EnrichedTextInput = ({
|
|
|
162
185
|
attributes
|
|
163
186
|
});
|
|
164
187
|
};
|
|
188
|
+
const handleRequestHtmlResult = e => {
|
|
189
|
+
const {
|
|
190
|
+
requestId,
|
|
191
|
+
html
|
|
192
|
+
} = e.nativeEvent;
|
|
193
|
+
const pending = pendingHtmlRequests.current.get(requestId);
|
|
194
|
+
if (!pending) return;
|
|
195
|
+
if (html === null || typeof html !== 'string') {
|
|
196
|
+
pending.reject(new Error('Failed to parse HTML'));
|
|
197
|
+
} else {
|
|
198
|
+
pending.resolve(html);
|
|
199
|
+
}
|
|
200
|
+
pendingHtmlRequests.current.delete(requestId);
|
|
201
|
+
};
|
|
165
202
|
return /*#__PURE__*/_jsx(EnrichedTextInputNativeComponent, {
|
|
166
203
|
ref: nativeRef,
|
|
167
204
|
mentionIndicators: mentionIndicators,
|
|
@@ -185,6 +222,7 @@ export const EnrichedTextInput = ({
|
|
|
185
222
|
onMentionDetected: handleMentionDetected,
|
|
186
223
|
onMention: handleMentionEvent,
|
|
187
224
|
onChangeSelection: onChangeSelection,
|
|
225
|
+
onRequestHtmlResult: handleRequestHtmlResult,
|
|
188
226
|
androidExperimentalSynchronousEvents: androidExperimentalSynchronousEvents,
|
|
189
227
|
scrollEnabled: scrollEnabled,
|
|
190
228
|
...rest
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useImperativeHandle","useMemo","useRef","EnrichedTextInputNativeComponent","Commands","normalizeHtmlStyle","jsx","_jsx","nullthrows","value","Error","warnAboutMissconfiguredMentions","indicator","console","warn","EnrichedTextInput","ref","autoFocus","editable","mentionIndicators","defaultValue","placeholder","placeholderTextColor","cursorColor","selectionColor","style","autoCapitalize","htmlStyle","onFocus","onBlur","onChangeText","onChangeHtml","onChangeState","onLinkDetected","onMentionDetected","onStartMention","onChangeMention","onEndMention","onChangeSelection","androidExperimentalSynchronousEvents","scrollEnabled","rest","nativeRef","
|
|
1
|
+
{"version":3,"names":["useEffect","useImperativeHandle","useMemo","useRef","EnrichedTextInputNativeComponent","Commands","normalizeHtmlStyle","jsx","_jsx","nullthrows","value","Error","warnAboutMissconfiguredMentions","indicator","console","warn","EnrichedTextInput","ref","autoFocus","editable","mentionIndicators","defaultValue","placeholder","placeholderTextColor","cursorColor","selectionColor","style","autoCapitalize","htmlStyle","onFocus","onBlur","onChangeText","onChangeHtml","onChangeState","onLinkDetected","onMentionDetected","onStartMention","onChangeMention","onEndMention","onChangeSelection","androidExperimentalSynchronousEvents","scrollEnabled","rest","nativeRef","nextHtmlRequestId","pendingHtmlRequests","Map","pendingRequests","current","forEach","reject","clear","normalizedHtmlStyle","measureInWindow","callback","measure","measureLayout","relativeToNativeComponentRef","onSuccess","onFail","setNativeProps","nativeProps","focus","blur","setValue","getHTML","Promise","resolve","requestId","set","requestHTML","toggleBold","toggleItalic","toggleUnderline","toggleStrikeThrough","toggleInlineCode","toggleH1","toggleH2","toggleH3","toggleCodeBlock","toggleBlockQuote","toggleOrderedList","toggleUnorderedList","setLink","start","end","text","url","addLink","setImage","uri","width","height","addImage","setMention","attributes","parsedAttributes","JSON","stringify","addMention","startMention","includes","handleMentionEvent","e","mentionText","nativeEvent","mentionIndicator","handleLinkDetected","handleMentionDetected","payload","parse","handleRequestHtmlResult","html","pending","get","delete","onInputFocus","onInputBlur","isOnChangeHtmlSet","undefined","onMention","onRequestHtmlResult"],"sourceRoot":"../../src","sources":["EnrichedTextInput.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -64,6 +64,11 @@ export interface OnChangeSelectionEvent {
|
|
|
64
64
|
text: string;
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
+
export interface OnRequestHtmlResultEvent {
|
|
68
|
+
requestId: Int32;
|
|
69
|
+
html: UnsafeMixed;
|
|
70
|
+
}
|
|
71
|
+
|
|
67
72
|
export interface MentionStyleProperties {
|
|
68
73
|
color?: ColorValue;
|
|
69
74
|
backgroundColor?: ColorValue;
|
|
@@ -143,6 +148,7 @@ export interface NativeProps extends ViewProps {
|
|
|
143
148
|
onMentionDetected?: DirectEventHandler<OnMentionDetectedInternal>;
|
|
144
149
|
onMention?: DirectEventHandler<OnMentionEvent>;
|
|
145
150
|
onChangeSelection?: DirectEventHandler<OnChangeSelectionEvent>;
|
|
151
|
+
onRequestHtmlResult?: DirectEventHandler<OnRequestHtmlResultEvent>;
|
|
146
152
|
|
|
147
153
|
// Style related props - used for generating proper setters in component's manager
|
|
148
154
|
// These should not be passed as regular props
|
|
@@ -203,6 +209,10 @@ interface NativeCommands {
|
|
|
203
209
|
text: string,
|
|
204
210
|
payload: string
|
|
205
211
|
) => void;
|
|
212
|
+
requestHTML: (
|
|
213
|
+
viewRef: React.ElementRef<ComponentType>,
|
|
214
|
+
requestId: Int32
|
|
215
|
+
) => void;
|
|
206
216
|
}
|
|
207
217
|
|
|
208
218
|
export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
|
|
@@ -229,6 +239,7 @@ export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
|
|
|
229
239
|
'addImage',
|
|
230
240
|
'startMention',
|
|
231
241
|
'addMention',
|
|
242
|
+
'requestHTML',
|
|
232
243
|
],
|
|
233
244
|
});
|
|
234
245
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnrichedTextInput.d.ts","sourceRoot":"","sources":["../../../src/EnrichedTextInput.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"EnrichedTextInput.d.ts","sourceRoot":"","sources":["../../../src/EnrichedTextInput.tsx"],"names":[],"mappings":"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"}
|