react-native-enriched 0.1.6 → 0.2.0

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.
Files changed (68) hide show
  1. package/README.md +3 -9
  2. package/android/generated/java/com/facebook/react/viewmanagers/EnrichedTextInputViewManagerDelegate.java +1 -1
  3. package/android/generated/java/com/facebook/react/viewmanagers/EnrichedTextInputViewManagerInterface.java +1 -1
  4. package/android/generated/jni/react/renderer/components/RNEnrichedTextInputViewSpec/Props.h +0 -45
  5. package/android/src/main/java/com/swmansion/enriched/EnrichedTextInputView.kt +19 -2
  6. package/android/src/main/java/com/swmansion/enriched/EnrichedTextInputViewManager.kt +3 -3
  7. package/android/src/main/java/com/swmansion/enriched/EnrichedTextInputViewPackage.kt +2 -0
  8. package/android/src/main/java/com/swmansion/enriched/spans/EnrichedCodeBlockSpan.kt +36 -1
  9. package/android/src/main/java/com/swmansion/enriched/spans/EnrichedImageSpan.kt +132 -11
  10. package/android/src/main/java/com/swmansion/enriched/spans/EnrichedSpans.kt +4 -0
  11. package/android/src/main/java/com/swmansion/enriched/spans/utils/ForceRedrawSpan.kt +13 -0
  12. package/android/src/main/java/com/swmansion/enriched/styles/HtmlStyle.kt +2 -9
  13. package/android/src/main/java/com/swmansion/enriched/styles/InlineStyles.kt +1 -0
  14. package/android/src/main/java/com/swmansion/enriched/styles/ParagraphStyles.kt +110 -3
  15. package/android/src/main/java/com/swmansion/enriched/styles/ParametrizedStyles.kt +57 -30
  16. package/android/src/main/java/com/swmansion/enriched/utils/AsyncDrawable.kt +91 -0
  17. package/android/src/main/java/com/swmansion/enriched/utils/EnrichedParser.java +16 -13
  18. package/android/src/main/java/com/swmansion/enriched/utils/ResourceManager.kt +26 -0
  19. package/android/src/main/java/com/swmansion/enriched/watchers/EnrichedSpanWatcher.kt +3 -0
  20. package/android/src/main/res/drawable/broken_image.xml +10 -0
  21. package/ios/EnrichedTextInputView.h +3 -0
  22. package/ios/EnrichedTextInputView.mm +97 -29
  23. package/ios/config/InputConfig.h +6 -0
  24. package/ios/config/InputConfig.mm +32 -0
  25. package/ios/generated/RNEnrichedTextInputViewSpec/Props.h +0 -45
  26. package/ios/generated/RNEnrichedTextInputViewSpec/RCTComponentViewHelpers.h +20 -4
  27. package/ios/inputParser/InputParser.mm +147 -24
  28. package/ios/internals/EnrichedTextInputViewShadowNode.h +1 -0
  29. package/ios/internals/EnrichedTextInputViewShadowNode.mm +29 -17
  30. package/ios/styles/BlockQuoteStyle.mm +5 -26
  31. package/ios/styles/BoldStyle.mm +2 -0
  32. package/ios/styles/CodeBlockStyle.mm +228 -0
  33. package/ios/styles/H1Style.mm +1 -0
  34. package/ios/styles/H2Style.mm +1 -0
  35. package/ios/styles/H3Style.mm +1 -0
  36. package/ios/styles/ImageStyle.mm +158 -0
  37. package/ios/styles/InlineCodeStyle.mm +2 -0
  38. package/ios/styles/ItalicStyle.mm +2 -0
  39. package/ios/styles/LinkStyle.mm +8 -0
  40. package/ios/styles/MentionStyle.mm +133 -36
  41. package/ios/styles/OrderedListStyle.mm +2 -0
  42. package/ios/styles/StrikethroughStyle.mm +2 -0
  43. package/ios/styles/UnderlineStyle.mm +2 -0
  44. package/ios/styles/UnorderedListStyle.mm +2 -0
  45. package/ios/utils/BaseStyleProtocol.h +1 -0
  46. package/ios/utils/ImageData.h +10 -0
  47. package/ios/utils/ImageData.mm +4 -0
  48. package/ios/utils/LayoutManagerExtension.mm +118 -3
  49. package/ios/utils/OccurenceUtils.h +4 -0
  50. package/ios/utils/OccurenceUtils.mm +47 -0
  51. package/ios/utils/ParagraphAttributesUtils.h +1 -0
  52. package/ios/utils/ParagraphAttributesUtils.mm +87 -20
  53. package/ios/utils/StyleHeaders.h +12 -0
  54. package/ios/utils/ZeroWidthSpaceUtils.mm +22 -10
  55. package/lib/module/EnrichedTextInput.js +2 -2
  56. package/lib/module/EnrichedTextInput.js.map +1 -1
  57. package/lib/module/EnrichedTextInputNativeComponent.ts +6 -5
  58. package/lib/module/normalizeHtmlStyle.js +0 -4
  59. package/lib/module/normalizeHtmlStyle.js.map +1 -1
  60. package/lib/typescript/src/EnrichedTextInput.d.ts +1 -5
  61. package/lib/typescript/src/EnrichedTextInput.d.ts.map +1 -1
  62. package/lib/typescript/src/EnrichedTextInputNativeComponent.d.ts +1 -5
  63. package/lib/typescript/src/EnrichedTextInputNativeComponent.d.ts.map +1 -1
  64. package/lib/typescript/src/normalizeHtmlStyle.d.ts.map +1 -1
  65. package/package.json +1 -1
  66. package/src/EnrichedTextInput.tsx +3 -7
  67. package/src/EnrichedTextInputNativeComponent.ts +6 -5
  68. package/src/normalizeHtmlStyle.ts +0 -4
@@ -8,6 +8,8 @@
8
8
 
9
9
  + (StyleType)getStyleType { return Underline; }
10
10
 
11
+ + (BOOL)isParagraphStyle { return NO; }
12
+
11
13
  - (instancetype)initWithInput:(id)input {
12
14
  self = [super init];
13
15
  _input = (EnrichedTextInputView *)input;
@@ -11,6 +11,8 @@
11
11
 
12
12
  + (StyleType)getStyleType { return UnorderedList; }
13
13
 
14
+ + (BOOL)isParagraphStyle { return YES; }
15
+
14
16
  - (CGFloat)getHeadIndent {
15
17
  // lists are drawn manually
16
18
  // margin before bullet + gap between bullet and paragraph
@@ -4,6 +4,7 @@
4
4
 
5
5
  @protocol BaseStyleProtocol <NSObject>
6
6
  + (StyleType)getStyleType;
7
+ + (BOOL)isParagraphStyle;
7
8
  - (instancetype _Nonnull)initWithInput:(id _Nonnull)input;
8
9
  - (void)applyStyle:(NSRange)range;
9
10
  - (void)addAttributes:(NSRange)range;
@@ -0,0 +1,10 @@
1
+ #pragma once
2
+ #import <UIKit/UIKit.h>
3
+
4
+ @interface ImageData : NSObject
5
+
6
+ @property NSString *uri;
7
+ @property CGFloat width;
8
+ @property CGFloat height;
9
+
10
+ @end
@@ -0,0 +1,4 @@
1
+ #import "ImageData.h"
2
+
3
+ @implementation ImageData
4
+ @end
@@ -3,6 +3,7 @@
3
3
  #import "EnrichedTextInputView.h"
4
4
  #import "StyleHeaders.h"
5
5
  #import "ParagraphsUtils.h"
6
+ #import "ColorExtension.h"
6
7
 
7
8
  @implementation NSLayoutManager (LayoutManagerExtension)
8
9
 
@@ -52,11 +53,122 @@ static void const *kInputKey = &kInputKey;
52
53
  EnrichedTextInputView *typedInput = (EnrichedTextInputView *)self.input;
53
54
  if(typedInput == nullptr) { return; }
54
55
 
56
+ NSRange inputRange = NSMakeRange(0, typedInput->textView.textStorage.length);
57
+
58
+ [self drawBlockQuotes:typedInput origin:origin inputRange:inputRange];
59
+ [self drawLists:typedInput origin:origin inputRange:inputRange];
60
+ [self drawCodeBlocks:typedInput origin:origin inputRange:inputRange];
61
+ }
62
+
63
+ - (void)drawCodeBlocks:(EnrichedTextInputView *)typedInput origin:(CGPoint)origin inputRange:(NSRange)inputRange
64
+ {
65
+ CodeBlockStyle *codeBlockStyle = typedInput->stylesDict[@([CodeBlockStyle getStyleType])];
66
+ if(codeBlockStyle == nullptr) { return; }
67
+
68
+ NSArray<StylePair *> *allCodeBlocks = [codeBlockStyle findAllOccurences:inputRange];
69
+ NSArray<StylePair *> *mergedCodeBlocks = [self mergeContiguousStylePairs:allCodeBlocks];
70
+ UIColor *bgColor = [[typedInput->config codeBlockBgColor] colorWithAlphaIfNotTransparent:0.4];
71
+ CGFloat radius = [typedInput->config codeBlockBorderRadius];
72
+ [bgColor setFill];
73
+
74
+ for (StylePair *pair in mergedCodeBlocks) {
75
+ NSRange blockCharacterRange = [pair.rangeValue rangeValue];
76
+ if (blockCharacterRange.length == 0) continue;
77
+
78
+ NSArray *paragraphs = [ParagraphsUtils getSeparateParagraphsRangesIn:typedInput->textView range:blockCharacterRange];
79
+ if (paragraphs.count == 0) continue;
80
+
81
+ NSRange firstParagraphRange = [((NSValue *)[paragraphs firstObject]) rangeValue];
82
+ NSRange lastParagraphRange = [((NSValue *)[paragraphs lastObject]) rangeValue];
83
+
84
+ for (NSValue *paragraphValue in paragraphs) {
85
+ NSRange paragraphCharacterRange = [paragraphValue rangeValue];
86
+
87
+ BOOL isFirstParagraph = NSEqualRanges(paragraphCharacterRange, firstParagraphRange);
88
+ BOOL isLastParagraph = NSEqualRanges(paragraphCharacterRange, lastParagraphRange);
89
+
90
+ NSRange paragraphGlyphRange = [self glyphRangeForCharacterRange:paragraphCharacterRange actualCharacterRange:NULL];
91
+
92
+ __block BOOL isFirstLineOfParagraph = YES;
93
+
94
+ [self enumerateLineFragmentsForGlyphRange:paragraphGlyphRange
95
+ usingBlock:^(CGRect rect, CGRect usedRect, NSTextContainer * _Nonnull textContainer, NSRange glyphRange, BOOL * _Nonnull stop) {
96
+
97
+ CGRect lineBgRect = rect;
98
+ lineBgRect.origin.x = origin.x;
99
+ lineBgRect.origin.y += origin.y;
100
+ lineBgRect.size.width = textContainer.size.width;
101
+
102
+ UIRectCorner cornersForThisLine = 0;
103
+
104
+ if (isFirstParagraph && isFirstLineOfParagraph) {
105
+ cornersForThisLine = UIRectCornerTopLeft | UIRectCornerTopRight;
106
+ }
107
+
108
+ BOOL isLastLineOfParagraph = (NSMaxRange(glyphRange) >= NSMaxRange(paragraphGlyphRange));
109
+
110
+ if (isLastParagraph && isLastLineOfParagraph) {
111
+ cornersForThisLine = cornersForThisLine | UIRectCornerBottomLeft | UIRectCornerBottomRight;
112
+ }
113
+
114
+ UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:lineBgRect
115
+ byRoundingCorners:cornersForThisLine
116
+ cornerRadii:CGSizeMake(radius, radius)];
117
+ [path fill];
118
+
119
+ isFirstLineOfParagraph = NO;
120
+ }];
121
+ }
122
+ }
123
+ }
124
+
125
+ - (NSArray<StylePair *> *)mergeContiguousStylePairs:(NSArray<StylePair *> *)pairs
126
+ {
127
+ if (pairs.count == 0) {
128
+ return @[];
129
+ }
130
+
131
+ NSMutableArray<StylePair *> *mergedPairs = [[NSMutableArray alloc] init];
132
+ StylePair *currentPair = pairs[0];
133
+ NSRange currentRange = [currentPair.rangeValue rangeValue];
134
+ for (NSUInteger i = 1; i < pairs.count; i++) {
135
+ StylePair *nextPair = pairs[i];
136
+ NSRange nextRange = [nextPair.rangeValue rangeValue];
137
+
138
+ // The Gap Check:
139
+ // NSMaxRange(currentRange) is where the current block ends.
140
+ // nextRange.location is where the next block starts.
141
+ if (NSMaxRange(currentRange) == nextRange.location) {
142
+ // They touch perfectly (no gap). Merge them.
143
+ currentRange.length += nextRange.length;
144
+ } else {
145
+ // There is a gap (indices don't match).
146
+ // 1. Save the finished block.
147
+ StylePair *mergedPair = [[StylePair alloc] init];
148
+ mergedPair.rangeValue = [NSValue valueWithRange:currentRange];
149
+ mergedPair.styleValue = currentPair.styleValue;
150
+ [mergedPairs addObject:mergedPair];
151
+
152
+ // 2. Start a brand new block.
153
+ currentPair = nextPair;
154
+ currentRange = nextRange;
155
+ }
156
+ }
157
+
158
+ // Add the final block
159
+ StylePair *lastPair = [[StylePair alloc] init];
160
+ lastPair.rangeValue = [NSValue valueWithRange:currentRange];
161
+ lastPair.styleValue = currentPair.styleValue;
162
+ [mergedPairs addObject:lastPair];
163
+
164
+ return mergedPairs;
165
+ }
166
+
167
+ - (void)drawBlockQuotes:(EnrichedTextInputView *)typedInput origin:(CGPoint)origin inputRange:(NSRange)inputRange
168
+ {
55
169
  BlockQuoteStyle *bqStyle = typedInput->stylesDict[@([BlockQuoteStyle getStyleType])];
56
170
  if(bqStyle == nullptr) { return; }
57
171
 
58
- NSRange inputRange = NSMakeRange(0, typedInput->textView.textStorage.length);
59
-
60
172
  // it isn't the most performant but we have to check for all the blockquotes each time and redraw them
61
173
  NSArray *allBlockquotes = [bqStyle findAllOccurences:inputRange];
62
174
 
@@ -78,7 +190,10 @@ static void const *kInputKey = &kInputKey;
78
190
  }
79
191
  ];
80
192
  }
81
-
193
+ }
194
+
195
+ - (void)drawLists:(EnrichedTextInputView *)typedInput origin:(CGPoint)origin inputRange:(NSRange)inputRange
196
+ {
82
197
  UnorderedListStyle *ulStyle = typedInput->stylesDict[@([UnorderedListStyle getStyleType])];
83
198
  OrderedListStyle *olStyle = typedInput->stylesDict[@([OrderedListStyle getStyleType])];
84
199
  if(ulStyle == nullptr || olStyle == nullptr) { return; }
@@ -40,4 +40,8 @@
40
40
  withInput:(EnrichedTextInputView* _Nonnull)input
41
41
  inRange:(NSRange)range
42
42
  withCondition:(BOOL (NS_NOESCAPE ^_Nonnull)(id _Nullable value, NSRange range))condition;
43
+ + (NSArray *_Nonnull)getRangesWithout
44
+ :(NSArray<NSNumber *> *_Nonnull)types
45
+ withInput:(EnrichedTextInputView* _Nonnull)input
46
+ inRange:(NSRange)range;
43
47
  @end
@@ -152,4 +152,51 @@
152
152
  return occurences;
153
153
  }
154
154
 
155
+ + (NSArray *_Nonnull)getRangesWithout
156
+ :(NSArray<NSNumber *> *_Nonnull)types
157
+ withInput:(EnrichedTextInputView* _Nonnull)input
158
+ inRange:(NSRange)range
159
+ {
160
+ NSMutableArray<id> *activeStyleObjects = [[NSMutableArray alloc] init];
161
+ for(NSNumber *type in types) {
162
+ id<BaseStyleProtocol> styleClass = input->stylesDict[type];
163
+ [activeStyleObjects addObject:styleClass];
164
+ }
165
+
166
+ if (activeStyleObjects.count == 0) {
167
+ return @[[NSValue valueWithRange:range]];
168
+ }
169
+
170
+ NSMutableArray<NSValue *> *newRanges = [[NSMutableArray alloc] init];
171
+ NSUInteger lastRangeLocation = range.location;
172
+ NSUInteger endLocation = range.location + range.length;
173
+
174
+ for (NSUInteger i = range.location; i < endLocation; i++) {
175
+ NSRange currentRange = NSMakeRange(i, 1);
176
+ BOOL forbiddenStyleFound = NO;
177
+
178
+ for (id style in activeStyleObjects) {
179
+ if ([style detectStyle:currentRange]) {
180
+ forbiddenStyleFound = YES;
181
+ break;
182
+ }
183
+ }
184
+
185
+ if (forbiddenStyleFound) {
186
+ if (i > lastRangeLocation) {
187
+ NSRange cleanRange = NSMakeRange(lastRangeLocation, i - lastRangeLocation);
188
+ [newRanges addObject:[NSValue valueWithRange:cleanRange]];
189
+ }
190
+ lastRangeLocation = i + 1;
191
+ }
192
+ }
193
+
194
+ if (lastRangeLocation < endLocation) {
195
+ NSRange remainingRange = NSMakeRange(lastRangeLocation, endLocation - lastRangeLocation);
196
+ [newRanges addObject:[NSValue valueWithRange:remainingRange]];
197
+ }
198
+
199
+ return newRanges;
200
+ }
201
+
155
202
  @end
@@ -3,4 +3,5 @@
3
3
 
4
4
  @interface ParagraphAttributesUtils : NSObject
5
5
  + (BOOL)handleBackspaceInRange:(NSRange)range replacementText:(NSString *)text input:(id)input;
6
+ + (BOOL)handleNewlineBackspaceInRange:(NSRange)range replacementText:(NSString *)text input:(id)input;
6
7
  @end
@@ -8,12 +8,13 @@
8
8
 
9
9
  // if the user backspaces the last character in a line, the iOS applies typing attributes from the previous line
10
10
  // in the case of some paragraph styles it works especially bad when a list point just appears
11
- // hence the solution - reset typing attributes
11
+ // this method handles that case differently with or without present paragraph styles
12
12
  + (BOOL)handleBackspaceInRange:(NSRange)range replacementText:(NSString *)text input:(id)input {
13
13
  EnrichedTextInputView *typedInput = (EnrichedTextInputView *)input;
14
14
  UnorderedListStyle *ulStyle = typedInput->stylesDict[@([UnorderedListStyle getStyleType])];
15
15
  OrderedListStyle *olStyle = typedInput->stylesDict[@([OrderedListStyle getStyleType])];
16
16
  BlockQuoteStyle *bqStyle = typedInput->stylesDict[@([BlockQuoteStyle getStyleType])];
17
+ CodeBlockStyle *cbStyle = typedInput->stylesDict[@([CodeBlockStyle getStyleType])];
17
18
 
18
19
  if(typedInput == nullptr) {
19
20
  return NO;
@@ -34,29 +35,25 @@
34
35
 
35
36
  NSRange nonNewlineRange = [(NSValue *)paragraphs.firstObject rangeValue];
36
37
 
37
- // if the backspace removes the whole content of a paragraph (possibly more but has to start where the paragraph starts), we remove the typing attributes
38
+ // the backspace removes the whole content of a paragraph (possibly more but has to start where the paragraph starts)
38
39
  if(range.location == nonNewlineRange.location && range.length >= nonNewlineRange.length) {
39
- // for lists and quotes we want to remove the characters but keep attribtues so that a zero width space appears here
40
- // so we do the removing manually and reapply attributes
41
- if([ulStyle detectStyle:nonNewlineRange]) {
42
- [TextInsertionUtils replaceText:text at:range additionalAttributes:nullptr input:typedInput withSelection:YES];
43
- [ulStyle addAttributes:NSMakeRange(range.location, 0)];
44
- return YES;
45
- }
46
- if([olStyle detectStyle:nonNewlineRange]) {
47
- [TextInsertionUtils replaceText:text at:range additionalAttributes:nullptr input:typedInput withSelection:YES];
48
- [olStyle addAttributes:NSMakeRange(range.location, 0)];
49
- return YES;
50
- }
51
- if([bqStyle detectStyle:nonNewlineRange]) {
52
- [TextInsertionUtils replaceText:text at:range additionalAttributes:nullptr input:typedInput withSelection:YES];
53
- [bqStyle addAttributes:NSMakeRange(range.location, 0)];
54
- return YES;
40
+
41
+ // for lists, quotes and codeblocks present we do the following:
42
+ // - manually do the removing
43
+ // - reset typing attribtues so that the previous line styles don't get applied
44
+ // - reapply the paragraph style that was present so that a zero width space appears here
45
+ NSArray *handledStyles = @[ulStyle, olStyle, bqStyle, cbStyle];
46
+ for(id<BaseStyleProtocol> style in handledStyles) {
47
+ if([style detectStyle:nonNewlineRange]) {
48
+ [TextInsertionUtils replaceText:text at:range additionalAttributes:nullptr input:typedInput withSelection:YES];
49
+ typedInput->textView.typingAttributes = typedInput->defaultTypingAttributes;
50
+ [style addAttributes:NSMakeRange(range.location, 0)];
51
+ return YES;
52
+ }
55
53
  }
56
54
 
57
- // do the replacement manually
55
+ // otherwise (no paragraph styles present), we just do the replacement manually and reset typing attribtues
58
56
  [TextInsertionUtils replaceText:text at:range additionalAttributes:nullptr input:typedInput withSelection:YES];
59
- // reset typing attribtues
60
57
  typedInput->textView.typingAttributes = typedInput->defaultTypingAttributes;
61
58
  return YES;
62
59
  }
@@ -64,4 +61,74 @@
64
61
  return NO;
65
62
  }
66
63
 
64
+ /**
65
+ * Handles the specific case of backspacing a newline character, which results in merging two paragraphs.
66
+ *
67
+ * THE PROBLEM:
68
+ * When merging a bottom paragraph (Source) into a top paragraph (Destination), the bottom paragraph
69
+ * normally brings all its attributes with it. If the top paragraph is a restrictive style (like a CodeBlock),
70
+ * and the bottom paragraph contains a conflicting style (like an H1 Header), a standard merge would
71
+ * create an invalid state (e.g., a CodeBlock that is also a Header).
72
+ *
73
+ * THE SOLUTION:
74
+ * 1. Identifies the dominant style of the paragraph ABOVE the deleted newline (`leftParagraphStyle`).
75
+ * 2. Checks the paragraph BELOW the newline (`rightRange`) for any styles that conflict with or are blocked by the top style.
76
+ * 3. Explicitly removes those forbidden styles from the bottom paragraph *before* the merge occurs.
77
+ * 4. Performs the merge (deletes the newline).
78
+ *
79
+ * @return YES if the newline backspace was handled and sanitized; NO otherwise.
80
+ */
81
+ + (BOOL)handleNewlineBackspaceInRange:(NSRange)range replacementText:(NSString *)text input:(id)input {
82
+ EnrichedTextInputView *typedInput = (EnrichedTextInputView *)input;
83
+ if(typedInput == nullptr) {
84
+ return NO;
85
+ }
86
+
87
+ if(text.length == 0 && range.length == 1 &&
88
+ [[NSCharacterSet newlineCharacterSet] characterIsMember:[typedInput->textView.textStorage.string characterAtIndex:range.location]]) {
89
+ NSRange leftRange = [typedInput->textView.textStorage.string paragraphRangeForRange:range];
90
+
91
+ id<BaseStyleProtocol> leftParagraphStyle = nullptr;
92
+ for (NSNumber *key in typedInput->stylesDict) {
93
+ id<BaseStyleProtocol> style = typedInput->stylesDict[key];
94
+ if([[style class] isParagraphStyle] && [style detectStyle:leftRange]) {
95
+ leftParagraphStyle = style;
96
+ }
97
+ }
98
+
99
+ if(leftParagraphStyle == nullptr) {
100
+ return NO;
101
+ }
102
+
103
+ // index out of bounds
104
+ if(range.location + 1 >= typedInput->textView.textStorage.string.length) {
105
+ return NO;
106
+ }
107
+
108
+ NSRange rightRange = [typedInput->textView.textStorage.string paragraphRangeForRange:NSMakeRange(range.location + 1, 1)];
109
+
110
+ StyleType type = [[leftParagraphStyle class] getStyleType];
111
+
112
+ NSArray *conflictingStyles = [typedInput getPresentStyleTypesFrom:typedInput->conflictingStyles[@(type)] range:rightRange];
113
+ NSArray *blockingStyles = [typedInput getPresentStyleTypesFrom:typedInput->blockingStyles[@(type)] range:rightRange];
114
+ NSArray *allToBeRemoved = [conflictingStyles arrayByAddingObjectsFromArray:blockingStyles];
115
+
116
+ for(NSNumber *style in allToBeRemoved) {
117
+ id<BaseStyleProtocol> styleClass = typedInput->stylesDict[style];
118
+
119
+ // for ranges, we need to remove each occurence
120
+ NSArray<StylePair *> *allOccurences = [styleClass findAllOccurences:rightRange];
121
+
122
+ for(StylePair* pair in allOccurences) {
123
+ [styleClass removeAttributes: [pair.rangeValue rangeValue]];
124
+ }
125
+ }
126
+
127
+ [TextInsertionUtils replaceText:text at:range additionalAttributes:nullptr input:typedInput withSelection:YES];
128
+ return YES;
129
+ }
130
+
131
+ return NO;
132
+ }
133
+
67
134
  @end
@@ -2,6 +2,7 @@
2
2
  #import "BaseStyleProtocol.h"
3
3
  #import "LinkData.h"
4
4
  #import "MentionParams.h"
5
+ #import "ImageData.h"
5
6
 
6
7
  @interface BoldStyle : NSObject <BaseStyleProtocol>
7
8
  @end
@@ -74,3 +75,14 @@
74
75
  - (BOOL)handleBackspaceInRange:(NSRange)range replacementText:(NSString *)text;
75
76
  - (void)manageBlockquoteColor;
76
77
  @end
78
+
79
+ @interface CodeBlockStyle : NSObject<BaseStyleProtocol>
80
+ - (void)manageCodeBlockFontAndColor;
81
+ - (BOOL)handleBackspaceInRange:(NSRange)range replacementText:(NSString *)text;
82
+ @end
83
+
84
+ @interface ImageStyle : NSObject<BaseStyleProtocol>
85
+ - (void)addImage:(NSString *)uri width:(CGFloat)width height:(CGFloat)height;
86
+ - (void)addImageAtRange:(NSRange)range imageData:(ImageData *)imageData withSelection:(BOOL)withSelection;
87
+ - (ImageData *)getImageDataAt:(NSUInteger)location;
88
+ @end
@@ -42,9 +42,10 @@
42
42
  UnorderedListStyle *ulStyle = input->stylesDict[@([UnorderedListStyle getStyleType])];
43
43
  OrderedListStyle *olStyle = input->stylesDict[@([OrderedListStyle getStyleType])];
44
44
  BlockQuoteStyle *bqStyle = input->stylesDict[@([BlockQuoteStyle getStyleType])];
45
+ CodeBlockStyle *cbStyle = input->stylesDict[@([CodeBlockStyle getStyleType])];
45
46
 
46
- // zero width spaces with no lists/blockquote styles on them get removed
47
- if(![ulStyle detectStyle:characterRange] && ![olStyle detectStyle:characterRange] && ![bqStyle detectStyle:characterRange]) {
47
+ // zero width spaces with no lists/blockquotes/codeblocks on them get removed
48
+ if(![ulStyle detectStyle:characterRange] && ![olStyle detectStyle:characterRange] && ![bqStyle detectStyle:characterRange] && ![cbStyle detectStyle:characterRange]) {
48
49
  [indexesToBeRemoved addObject:@(characterRange.location)];
49
50
  }
50
51
  }
@@ -76,6 +77,7 @@
76
77
  UnorderedListStyle *ulStyle = input->stylesDict[@([UnorderedListStyle getStyleType])];
77
78
  OrderedListStyle *olStyle = input->stylesDict[@([OrderedListStyle getStyleType])];
78
79
  BlockQuoteStyle *bqStyle = input->stylesDict[@([BlockQuoteStyle getStyleType])];
80
+ CodeBlockStyle *cbStyle = input->stylesDict[@([CodeBlockStyle getStyleType])];
79
81
  NSMutableArray *indexesToBeInserted = [[NSMutableArray alloc] init];
80
82
  NSRange preAddSelection = input->textView.selectedRange;
81
83
 
@@ -87,7 +89,7 @@
87
89
  NSRange paragraphRange = [input->textView.textStorage.string paragraphRangeForRange:characterRange];
88
90
 
89
91
  if(paragraphRange.length == 1) {
90
- if([ulStyle detectStyle:characterRange] || [olStyle detectStyle:characterRange] || [bqStyle detectStyle:characterRange]) {
92
+ if([ulStyle detectStyle:characterRange] || [olStyle detectStyle:characterRange] || [bqStyle detectStyle:characterRange] || [cbStyle detectStyle:characterRange]) {
91
93
  // we have an empty list or quote item with no space: add it!
92
94
  [indexesToBeInserted addObject:@(paragraphRange.location)];
93
95
  }
@@ -114,7 +116,7 @@
114
116
  // additional check for last index of the input
115
117
  NSRange lastRange = NSMakeRange(input->textView.textStorage.string.length, 0);
116
118
  NSRange lastParagraphRange = [input->textView.textStorage.string paragraphRangeForRange:lastRange];
117
- if(lastParagraphRange.length == 0 && ([ulStyle detectStyle:lastRange] || [olStyle detectStyle:lastRange] || [bqStyle detectStyle:lastRange])) {
119
+ if(lastParagraphRange.length == 0 && ([ulStyle detectStyle:lastRange] || [olStyle detectStyle:lastRange] || [bqStyle detectStyle:lastRange] || [cbStyle detectStyle:lastRange])) {
118
120
  [TextInsertionUtils insertText:@"\u200B" at:lastRange.location additionalAttributes:nullptr input:input withSelection:NO];
119
121
  }
120
122
 
@@ -146,19 +148,29 @@
146
148
  styleRemovalRange = NSMakeRange(paragraphRange.location, 1);
147
149
  }
148
150
 
149
- [TextInsertionUtils replaceText:@"" at:removalRange additionalAttributes:nullptr input:typedInput withSelection:YES];
150
-
151
151
  // and then remove associated styling
152
152
 
153
153
  UnorderedListStyle *ulStyle = typedInput->stylesDict[@([UnorderedListStyle getStyleType])];
154
154
  OrderedListStyle *olStyle = typedInput->stylesDict[@([OrderedListStyle getStyleType])];
155
155
  BlockQuoteStyle *bqStyle = typedInput->stylesDict[@([BlockQuoteStyle getStyleType])];
156
+ CodeBlockStyle *cbStyle = typedInput->stylesDict[@([CodeBlockStyle getStyleType])];
157
+
158
+ if([cbStyle detectStyle:removalRange]) {
159
+ // code blocks are being handled differently; we want to remove previous newline if there is a one
160
+ if(range.location > 0) {
161
+ removalRange = NSMakeRange(removalRange.location - 1, removalRange.length + 1);
162
+ }
163
+ [TextInsertionUtils replaceText:@"" at:removalRange additionalAttributes:nullptr input:typedInput withSelection:YES];
164
+ return YES;
165
+ }
156
166
 
157
- if([ulStyle detectStyle:styleRemovalRange]) {
167
+ [TextInsertionUtils replaceText:@"" at:removalRange additionalAttributes:nullptr input:typedInput withSelection:YES];
168
+
169
+ if ([ulStyle detectStyle:styleRemovalRange]) {
158
170
  [ulStyle removeAttributes:styleRemovalRange];
159
- } else if([olStyle detectStyle:styleRemovalRange]) {
171
+ } else if ([olStyle detectStyle:styleRemovalRange]) {
160
172
  [olStyle removeAttributes:styleRemovalRange];
161
- } else if([bqStyle detectStyle:styleRemovalRange]) {
173
+ } else if ([bqStyle detectStyle:styleRemovalRange]) {
162
174
  [bqStyle removeAttributes:styleRemovalRange];
163
175
  }
164
176
 
@@ -166,5 +178,5 @@
166
178
  }
167
179
  return NO;
168
180
  }
169
- @end
170
181
 
182
+ @end
@@ -104,8 +104,8 @@ export const EnrichedTextInput = ({
104
104
  setLink: (start, end, text, url) => {
105
105
  Commands.addLink(nullthrows(nativeRef.current), start, end, text, url);
106
106
  },
107
- setImage: uri => {
108
- Commands.addImage(nullthrows(nativeRef.current), uri);
107
+ setImage: (uri, width, height) => {
108
+ Commands.addImage(nullthrows(nativeRef.current), uri, width, height);
109
109
  },
110
110
  setMention: (indicator, text, attributes) => {
111
111
  // Codegen does not support objects as Commands parameters, so we stringify attributes
@@ -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","normalizedHtmlStyle","measureInWindow","callback","current","measure","measureLayout","relativeToNativeComponentRef","onSuccess","onFail","setNativeProps","nativeProps","focus","blur","setValue","toggleBold","toggleItalic","toggleUnderline","toggleStrikeThrough","toggleInlineCode","toggleH1","toggleH2","toggleH3","toggleCodeBlock","toggleBlockQuote","toggleOrderedList","toggleUnorderedList","setLink","start","end","text","url","addLink","setImage","uri","addImage","setMention","attributes","parsedAttributes","JSON","stringify","addMention","startMention","includes","handleMentionEvent","e","mentionText","nativeEvent","mentionIndicator","handleLinkDetected","handleMentionDetected","payload","parse","onInputFocus","onInputBlur","isOnChangeHtmlSet","undefined","onMention"],"sourceRoot":"../../src","sources":["EnrichedTextInput.tsx"],"mappings":"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","ignoreList":[]}
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","normalizedHtmlStyle","measureInWindow","callback","current","measure","measureLayout","relativeToNativeComponentRef","onSuccess","onFail","setNativeProps","nativeProps","focus","blur","setValue","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","onInputFocus","onInputBlur","isOnChangeHtmlSet","undefined","onMention"],"sourceRoot":"../../src","sources":["EnrichedTextInput.tsx"],"mappings":"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","ignoreList":[]}
@@ -105,10 +105,6 @@ export interface HtmlStyleInternal {
105
105
  // This is a workaround for the fact that codegen does not support Records.
106
106
  // On native Android side this will become a ReadableMap, on native iOS we can work with a folly::dynamic object.
107
107
  mention?: UnsafeMixed;
108
- img?: {
109
- width?: Float;
110
- height?: Float;
111
- };
112
108
  ol?: {
113
109
  gapWidth?: Float;
114
110
  marginLeft?: Float;
@@ -191,7 +187,12 @@ interface NativeCommands {
191
187
  text: string,
192
188
  url: string
193
189
  ) => void;
194
- addImage: (viewRef: React.ElementRef<ComponentType>, uri: string) => void;
190
+ addImage: (
191
+ viewRef: React.ElementRef<ComponentType>,
192
+ uri: string,
193
+ width: Float,
194
+ height: Float
195
+ ) => void;
195
196
  startMention: (
196
197
  viewRef: React.ElementRef<ComponentType>,
197
198
  indicator: string
@@ -38,10 +38,6 @@ const defaultStyle = {
38
38
  backgroundColor: 'yellow',
39
39
  textDecorationLine: 'underline'
40
40
  },
41
- img: {
42
- width: 80,
43
- height: 80
44
- },
45
41
  ol: {
46
42
  gapWidth: 16,
47
43
  marginLeft: 16,
@@ -1 +1 @@
1
- {"version":3,"names":["processColor","defaultStyle","h1","fontSize","bold","h2","h3","blockquote","borderColor","borderWidth","gapWidth","color","undefined","codeblock","borderRadius","backgroundColor","code","a","textDecorationLine","mention","img","width","height","ol","marginLeft","markerFontWeight","markerColor","ul","bulletColor","bulletSize","isMentionStyleRecord","mentionStyle","Array","isArray","keys","Object","length","every","key","convertToHtmlStyleInternal","style","mentionIndicators","mentionStyles","forEach","indicator","default","String","olStyles","assignDefaultValues","merged","parseStyle","name","value","endsWith","parseColors","finalStyle","tagName","tagStyle","entries","tagStyles","styleName","styleValue","normalizeHtmlStyle","converted","withDefaults"],"sourceRoot":"../../src","sources":["normalizeHtmlStyle.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["processColor","defaultStyle","h1","fontSize","bold","h2","h3","blockquote","borderColor","borderWidth","gapWidth","color","undefined","codeblock","borderRadius","backgroundColor","code","a","textDecorationLine","mention","ol","marginLeft","markerFontWeight","markerColor","ul","bulletColor","bulletSize","isMentionStyleRecord","mentionStyle","Array","isArray","keys","Object","length","every","key","convertToHtmlStyleInternal","style","mentionIndicators","mentionStyles","forEach","indicator","default","String","olStyles","assignDefaultValues","merged","parseStyle","name","value","endsWith","parseColors","finalStyle","tagName","tagStyle","entries","tagStyles","styleName","styleValue","normalizeHtmlStyle","converted","withDefaults"],"sourceRoot":"../../src","sources":["normalizeHtmlStyle.ts"],"mappings":"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","ignoreList":[]}
@@ -18,7 +18,7 @@ export interface EnrichedTextInputInstance extends NativeMethods {
18
18
  toggleOrderedList: () => void;
19
19
  toggleUnorderedList: () => void;
20
20
  setLink: (start: number, end: number, text: string, url: string) => void;
21
- setImage: (src: string) => void;
21
+ setImage: (src: string, width: number, height: number) => void;
22
22
  startMention: (indicator: string) => void;
23
23
  setMention: (indicator: string, text: string, attributes?: Record<string, string>) => void;
24
24
  }
@@ -59,10 +59,6 @@ export interface HtmlStyle {
59
59
  textDecorationLine?: 'underline' | 'none';
60
60
  };
61
61
  mention?: Record<string, MentionStyleProperties> | MentionStyleProperties;
62
- img?: {
63
- width?: number;
64
- height?: number;
65
- };
66
62
  ol?: {
67
63
  gapWidth?: number;
68
64
  marginLeft?: number;