Skip to content

Commit 328ed06

Browse files
committed
fix: rebase with latest main
1 parent 41bd007 commit 328ed06

10 files changed

Lines changed: 375 additions & 185 deletions

File tree

android/src/main/java/com/swmansion/enriched/spans/EnrichedH4Span.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,15 @@ import com.swmansion.enriched.spans.interfaces.EnrichedHeadingSpan
77
import com.swmansion.enriched.styles.HtmlStyle
88

99
class EnrichedH4Span(private val htmlStyle: HtmlStyle) : AbsoluteSizeSpan(htmlStyle.h4FontSize), EnrichedHeadingSpan {
10+
override val dependsOnHtmlStyle: Boolean = true
11+
1012
override fun updateDrawState(tp: TextPaint) {
1113
super.updateDrawState(tp)
1214
val bold = htmlStyle.h4Bold
1315
if (bold) {
1416
tp.typeface = Typeface.create(tp.typeface, Typeface.BOLD)
1517
}
1618
}
19+
20+
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedH4Span = EnrichedH4Span(htmlStyle)
1721
}

android/src/main/java/com/swmansion/enriched/spans/EnrichedH5Span.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,15 @@ import com.swmansion.enriched.spans.interfaces.EnrichedHeadingSpan
77
import com.swmansion.enriched.styles.HtmlStyle
88

99
class EnrichedH5Span(private val htmlStyle: HtmlStyle) : AbsoluteSizeSpan(htmlStyle.h5FontSize), EnrichedHeadingSpan {
10+
override val dependsOnHtmlStyle: Boolean = true
11+
1012
override fun updateDrawState(tp: TextPaint) {
1113
super.updateDrawState(tp)
1214
val bold = htmlStyle.h5Bold
1315
if (bold) {
1416
tp.typeface = Typeface.create(tp.typeface, Typeface.BOLD)
1517
}
1618
}
19+
20+
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedH5Span = EnrichedH5Span(htmlStyle)
1721
}

android/src/main/java/com/swmansion/enriched/spans/EnrichedH6Span.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,15 @@ import com.swmansion.enriched.spans.interfaces.EnrichedHeadingSpan
77
import com.swmansion.enriched.styles.HtmlStyle
88

99
class EnrichedH6Span(private val htmlStyle: HtmlStyle) : AbsoluteSizeSpan(htmlStyle.h6FontSize), EnrichedHeadingSpan {
10+
override val dependsOnHtmlStyle: Boolean = true
11+
1012
override fun updateDrawState(tp: TextPaint) {
1113
super.updateDrawState(tp)
1214
val bold = htmlStyle.h6Bold
1315
if (bold) {
1416
tp.typeface = Typeface.create(tp.typeface, Typeface.BOLD)
1517
}
1618
}
19+
20+
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedH6Span = EnrichedH6Span(htmlStyle)
1721
}

ios/EnrichedTextInputView.mm

Lines changed: 211 additions & 119 deletions
Large diffs are not rendered by default.

ios/inputParser/InputParser.mm

Lines changed: 99 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -217,17 +217,20 @@ - (NSString *)parseToHtmlFromRange:(NSRange)range {
217217
}
218218

219219
// don't add the <p> tag if some paragraph styles are present
220-
if([currentActiveStyles containsObject:@([UnorderedListStyle getStyleType])] ||
221-
[currentActiveStyles containsObject:@([OrderedListStyle getStyleType])] ||
222-
[currentActiveStyles containsObject:@([H1Style getStyleType])] ||
223-
[currentActiveStyles containsObject:@([H2Style getStyleType])] ||
224-
[currentActiveStyles containsObject:@([H3Style getStyleType])] ||
225-
[currentActiveStyles containsObject:@([H4Style getStyleType])] ||
226-
[currentActiveStyles containsObject:@([H5Style getStyleType])] ||
227-
[currentActiveStyles containsObject:@([H6Style getStyleType])] ||
228-
[currentActiveStyles containsObject:@([BlockQuoteStyle getStyleType])] ||
229-
[currentActiveStyles containsObject:@([CodeBlockStyle getStyleType])]
230-
) {
220+
if ([currentActiveStyles
221+
containsObject:@([UnorderedListStyle getStyleType])] ||
222+
[currentActiveStyles
223+
containsObject:@([OrderedListStyle getStyleType])] ||
224+
[currentActiveStyles containsObject:@([H1Style getStyleType])] ||
225+
[currentActiveStyles containsObject:@([H2Style getStyleType])] ||
226+
[currentActiveStyles containsObject:@([H3Style getStyleType])] ||
227+
[currentActiveStyles containsObject:@([H4Style getStyleType])] ||
228+
[currentActiveStyles containsObject:@([H5Style getStyleType])] ||
229+
[currentActiveStyles containsObject:@([H6Style getStyleType])] ||
230+
[currentActiveStyles
231+
containsObject:@([BlockQuoteStyle getStyleType])] ||
232+
[currentActiveStyles
233+
containsObject:@([CodeBlockStyle getStyleType])]) {
231234
[result appendString:@"\n"];
232235
} else {
233236
[result appendString:@"\n<p>"];
@@ -373,14 +376,18 @@ - (NSString *)parseToHtmlFromRange:(NSRange)range {
373376
} else if ([previousActiveStyles
374377
containsObject:@([CodeBlockStyle getStyleType])]) {
375378
[result appendString:@"\n</codeblock>"];
376-
} else if(
377-
[previousActiveStyles containsObject:@([H1Style getStyleType])] ||
378-
[previousActiveStyles containsObject:@([H2Style getStyleType])] ||
379-
[previousActiveStyles containsObject:@([H3Style getStyleType])] ||
380-
[previousActiveStyles containsObject:@([H4Style getStyleType])] ||
381-
[previousActiveStyles containsObject:@([H5Style getStyleType])] ||
382-
[previousActiveStyles containsObject:@([H6Style getStyleType])]
383-
) {
379+
} else if ([previousActiveStyles
380+
containsObject:@([H1Style getStyleType])] ||
381+
[previousActiveStyles
382+
containsObject:@([H2Style getStyleType])] ||
383+
[previousActiveStyles
384+
containsObject:@([H3Style getStyleType])] ||
385+
[previousActiveStyles
386+
containsObject:@([H4Style getStyleType])] ||
387+
[previousActiveStyles
388+
containsObject:@([H5Style getStyleType])] ||
389+
[previousActiveStyles
390+
containsObject:@([H6Style getStyleType])]) {
384391
// do nothing, heading closing tag has already been appended
385392
} else {
386393
[result appendString:@"</p>"];
@@ -515,13 +522,14 @@ - (NSString *)tagContentForStyle:(NSNumber *)style
515522
return @"h2";
516523
} else if ([style isEqualToNumber:@([H3Style getStyleType])]) {
517524
return @"h3";
518-
} else if([style isEqualToNumber:@([H4Style getStyleType])]) {
525+
} else if ([style isEqualToNumber:@([H4Style getStyleType])]) {
519526
return @"h4";
520-
} else if([style isEqualToNumber:@([H5Style getStyleType])]) {
527+
} else if ([style isEqualToNumber:@([H5Style getStyleType])]) {
521528
return @"h5";
522-
} else if([style isEqualToNumber:@([H6Style getStyleType])]) {
529+
} else if ([style isEqualToNumber:@([H6Style getStyleType])]) {
523530
return @"h6";
524-
} else if([style isEqualToNumber:@([UnorderedListStyle getStyleType])] || [style isEqualToNumber:@([OrderedListStyle getStyleType])]) {
531+
} else if ([style isEqualToNumber:@([UnorderedListStyle getStyleType])] ||
532+
[style isEqualToNumber:@([OrderedListStyle getStyleType])]) {
525533
return @"li";
526534
} else if ([style isEqualToNumber:@([BlockQuoteStyle getStyleType])] ||
527535
[style isEqualToNumber:@([CodeBlockStyle getStyleType])]) {
@@ -731,24 +739,72 @@ - (NSString *_Nullable)initiallyProcessHtml:(NSString *_Nonnull)html {
731739
trailing:YES];
732740

733741
// line opening tags
734-
fixedHtml = [self stringByAddingNewlinesToTag:@"<p>" inString:fixedHtml leading:YES trailing:NO];
735-
fixedHtml = [self stringByAddingNewlinesToTag:@"<li>" inString:fixedHtml leading:YES trailing:NO];
736-
fixedHtml = [self stringByAddingNewlinesToTag:@"<h1>" inString:fixedHtml leading:YES trailing:NO];
737-
fixedHtml = [self stringByAddingNewlinesToTag:@"<h2>" inString:fixedHtml leading:YES trailing:NO];
738-
fixedHtml = [self stringByAddingNewlinesToTag:@"<h3>" inString:fixedHtml leading:YES trailing:NO];
739-
fixedHtml = [self stringByAddingNewlinesToTag:@"<h4>" inString:fixedHtml leading:YES trailing:NO];
740-
fixedHtml = [self stringByAddingNewlinesToTag:@"<h5>" inString:fixedHtml leading:YES trailing:NO];
741-
fixedHtml = [self stringByAddingNewlinesToTag:@"<h6>" inString:fixedHtml leading:YES trailing:NO];
742-
742+
fixedHtml = [self stringByAddingNewlinesToTag:@"<p>"
743+
inString:fixedHtml
744+
leading:YES
745+
trailing:NO];
746+
fixedHtml = [self stringByAddingNewlinesToTag:@"<li>"
747+
inString:fixedHtml
748+
leading:YES
749+
trailing:NO];
750+
fixedHtml = [self stringByAddingNewlinesToTag:@"<h1>"
751+
inString:fixedHtml
752+
leading:YES
753+
trailing:NO];
754+
fixedHtml = [self stringByAddingNewlinesToTag:@"<h2>"
755+
inString:fixedHtml
756+
leading:YES
757+
trailing:NO];
758+
fixedHtml = [self stringByAddingNewlinesToTag:@"<h3>"
759+
inString:fixedHtml
760+
leading:YES
761+
trailing:NO];
762+
fixedHtml = [self stringByAddingNewlinesToTag:@"<h4>"
763+
inString:fixedHtml
764+
leading:YES
765+
trailing:NO];
766+
fixedHtml = [self stringByAddingNewlinesToTag:@"<h5>"
767+
inString:fixedHtml
768+
leading:YES
769+
trailing:NO];
770+
fixedHtml = [self stringByAddingNewlinesToTag:@"<h6>"
771+
inString:fixedHtml
772+
leading:YES
773+
trailing:NO];
774+
743775
// line closing tags
744-
fixedHtml = [self stringByAddingNewlinesToTag:@"</p>" inString:fixedHtml leading:NO trailing:YES];
745-
fixedHtml = [self stringByAddingNewlinesToTag:@"</li>" inString:fixedHtml leading:NO trailing:YES];
746-
fixedHtml = [self stringByAddingNewlinesToTag:@"</h1>" inString:fixedHtml leading:NO trailing:YES];
747-
fixedHtml = [self stringByAddingNewlinesToTag:@"</h2>" inString:fixedHtml leading:NO trailing:YES];
748-
fixedHtml = [self stringByAddingNewlinesToTag:@"</h3>" inString:fixedHtml leading:NO trailing:YES];
749-
fixedHtml = [self stringByAddingNewlinesToTag:@"</h4>" inString:fixedHtml leading:NO trailing:YES];
750-
fixedHtml = [self stringByAddingNewlinesToTag:@"</h5>" inString:fixedHtml leading:NO trailing:YES];
751-
fixedHtml = [self stringByAddingNewlinesToTag:@"</h6>" inString:fixedHtml leading:NO trailing:YES];
776+
fixedHtml = [self stringByAddingNewlinesToTag:@"</p>"
777+
inString:fixedHtml
778+
leading:NO
779+
trailing:YES];
780+
fixedHtml = [self stringByAddingNewlinesToTag:@"</li>"
781+
inString:fixedHtml
782+
leading:NO
783+
trailing:YES];
784+
fixedHtml = [self stringByAddingNewlinesToTag:@"</h1>"
785+
inString:fixedHtml
786+
leading:NO
787+
trailing:YES];
788+
fixedHtml = [self stringByAddingNewlinesToTag:@"</h2>"
789+
inString:fixedHtml
790+
leading:NO
791+
trailing:YES];
792+
fixedHtml = [self stringByAddingNewlinesToTag:@"</h3>"
793+
inString:fixedHtml
794+
leading:NO
795+
trailing:YES];
796+
fixedHtml = [self stringByAddingNewlinesToTag:@"</h4>"
797+
inString:fixedHtml
798+
leading:NO
799+
trailing:YES];
800+
fixedHtml = [self stringByAddingNewlinesToTag:@"</h5>"
801+
inString:fixedHtml
802+
leading:NO
803+
trailing:YES];
804+
fixedHtml = [self stringByAddingNewlinesToTag:@"</h6>"
805+
inString:fixedHtml
806+
leading:NO
807+
trailing:YES];
752808
}
753809

754810
return fixedHtml;
@@ -1165,11 +1221,11 @@ - (NSArray *)getTextAndStylesFromHtml:(NSString *)fixedHtml {
11651221
[styleArr addObject:@([H2Style getStyleType])];
11661222
} else if ([tagName isEqualToString:@"h3"]) {
11671223
[styleArr addObject:@([H3Style getStyleType])];
1168-
} else if([tagName isEqualToString:@"h4"]) {
1224+
} else if ([tagName isEqualToString:@"h4"]) {
11691225
[styleArr addObject:@([H4Style getStyleType])];
1170-
} else if([tagName isEqualToString:@"h5"]) {
1226+
} else if ([tagName isEqualToString:@"h5"]) {
11711227
[styleArr addObject:@([H5Style getStyleType])];
1172-
} else if([tagName isEqualToString:@"h6"]) {
1228+
} else if ([tagName isEqualToString:@"h6"]) {
11731229
[styleArr addObject:@([H6Style getStyleType])];
11741230
}
11751231
} else if ([tagName isEqualToString:@"ul"]) {

ios/styles/BoldStyle.mm

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -92,18 +92,30 @@ - (void)removeTypingAttributes {
9292
}
9393

9494
- (BOOL)boldHeadingConflictsInRange:(NSRange)range type:(StyleType)type {
95-
if(type == H1) {
96-
if(![_input->config h1Bold]) { return NO; }
97-
} else if(type == H2) {
98-
if(![_input->config h2Bold]) { return NO; }
99-
} else if(type == H3) {
100-
if(![_input->config h3Bold]) { return NO; }
101-
} else if(type == H4) {
102-
if(![_input->config h4Bold]) { return NO; }
103-
} else if(type == H5) {
104-
if(![_input->config h5Bold]) { return NO; }
105-
} else if(type == H6) {
106-
if(![_input->config h6Bold]) { return NO; }
95+
if (type == H1) {
96+
if (![_input->config h1Bold]) {
97+
return NO;
98+
}
99+
} else if (type == H2) {
100+
if (![_input->config h2Bold]) {
101+
return NO;
102+
}
103+
} else if (type == H3) {
104+
if (![_input->config h3Bold]) {
105+
return NO;
106+
}
107+
} else if (type == H4) {
108+
if (![_input->config h4Bold]) {
109+
return NO;
110+
}
111+
} else if (type == H5) {
112+
if (![_input->config h5Bold]) {
113+
return NO;
114+
}
115+
} else if (type == H6) {
116+
if (![_input->config h6Bold]) {
117+
return NO;
118+
}
107119
}
108120

109121
id<BaseStyleProtocol> headingStyle = _input->stylesDict[@(type)];
@@ -113,7 +125,13 @@ - (BOOL)boldHeadingConflictsInRange:(NSRange)range type:(StyleType)type {
113125

114126
- (BOOL)styleCondition:(id _Nullable)value:(NSRange)range {
115127
UIFont *font = (UIFont *)value;
116-
return font != nullptr && [font isBold] && ![self boldHeadingConflictsInRange:range type:H1] && ![self boldHeadingConflictsInRange:range type:H2] && ![self boldHeadingConflictsInRange:range type:H3] && ![self boldHeadingConflictsInRange:range type:H4] && ![self boldHeadingConflictsInRange:range type:H5] && ![self boldHeadingConflictsInRange:range type:H6];
128+
return font != nullptr && [font isBold] &&
129+
![self boldHeadingConflictsInRange:range type:H1] &&
130+
![self boldHeadingConflictsInRange:range type:H2] &&
131+
![self boldHeadingConflictsInRange:range type:H3] &&
132+
![self boldHeadingConflictsInRange:range type:H4] &&
133+
![self boldHeadingConflictsInRange:range type:H5] &&
134+
![self boldHeadingConflictsInRange:range type:H6];
117135
}
118136

119137
- (BOOL)detectStyle:(NSRange)range {

ios/styles/H4Style.mm

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1-
#import "StyleHeaders.h"
21
#import "EnrichedTextInputView.h"
2+
#import "StyleHeaders.h"
33

44
@implementation H4Style
5-
+ (StyleType)getStyleType { return H4; }
6-
- (CGFloat)getHeadingFontSize { return [((EnrichedTextInputView *)input)->config h4FontSize]; }
5+
+ (StyleType)getStyleType {
6+
return H4;
7+
}
8+
- (CGFloat)getHeadingFontSize {
9+
return [((EnrichedTextInputView *)input)->config h4FontSize];
10+
}
711
- (BOOL)isHeadingBold {
812
return [((EnrichedTextInputView *)input)->config h4Bold];
913
}

ios/styles/H5Style.mm

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1-
#import "StyleHeaders.h"
21
#import "EnrichedTextInputView.h"
2+
#import "StyleHeaders.h"
33

44
@implementation H5Style
5-
+ (StyleType)getStyleType { return H5; }
6-
- (CGFloat)getHeadingFontSize { return [((EnrichedTextInputView *)input)->config h5FontSize]; }
5+
+ (StyleType)getStyleType {
6+
return H5;
7+
}
8+
- (CGFloat)getHeadingFontSize {
9+
return [((EnrichedTextInputView *)input)->config h5FontSize];
10+
}
711
- (BOOL)isHeadingBold {
812
return [((EnrichedTextInputView *)input)->config h5Bold];
913
}

ios/styles/H6Style.mm

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1-
#import "StyleHeaders.h"
21
#import "EnrichedTextInputView.h"
2+
#import "StyleHeaders.h"
33

44
@implementation H6Style
5-
+ (StyleType)getStyleType { return H6; }
6-
- (CGFloat)getHeadingFontSize { return [((EnrichedTextInputView *)input)->config h6FontSize]; }
5+
+ (StyleType)getStyleType {
6+
return H6;
7+
}
8+
- (CGFloat)getHeadingFontSize {
9+
return [((EnrichedTextInputView *)input)->config h6FontSize];
10+
}
711
- (BOOL)isHeadingBold {
812
return [((EnrichedTextInputView *)input)->config h6Bold];
913
}

ios/utils/StyleHeaders.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@
7878
@interface H6Style : HeadingStyleBase
7979
@end
8080

81-
@interface UnorderedListStyle : NSObject<BaseStyleProtocol>
81+
@interface UnorderedListStyle : NSObject <BaseStyleProtocol>
8282
- (BOOL)handleBackspaceInRange:(NSRange)range replacementText:(NSString *)text;
8383
- (BOOL)tryHandlingListShorcutInRange:(NSRange)range
8484
replacementText:(NSString *)text;

0 commit comments

Comments
 (0)