@expensify/react-native-live-markdown 0.1.13 → 0.1.14
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/android/src/main/java/com/expensify/livemarkdown/MarkdownBlockquoteSpan.java +10 -5
- package/android/src/main/java/com/expensify/livemarkdown/MarkdownUtils.java +5 -3
- package/ios/MarkdownLayoutManager.mm +11 -6
- package/ios/RCTMarkdownUtils.h +1 -1
- package/ios/RCTMarkdownUtils.mm +7 -3
- package/lib/commonjs/web/parserUtils.js +19 -1
- package/lib/commonjs/web/parserUtils.js.map +1 -1
- package/lib/module/web/parserUtils.js +19 -1
- package/lib/module/web/parserUtils.js.map +1 -1
- package/lib/parser/react-native-live-markdown-parser.js +4 -4
- package/lib/typescript/src/web/parserUtils.d.ts.map +1 -1
- package/package.json +1 -1
- package/parser/react-native-live-markdown-parser.js +4 -4
- package/src/web/parserUtils.ts +15 -1
|
@@ -15,17 +15,19 @@ public class MarkdownBlockquoteSpan implements MarkdownSpan, LeadingMarginSpan {
|
|
|
15
15
|
private final float borderWidth;
|
|
16
16
|
private final float marginLeft;
|
|
17
17
|
private final float paddingLeft;
|
|
18
|
+
private final int nestingLevel;
|
|
18
19
|
|
|
19
|
-
public MarkdownBlockquoteSpan(@ColorInt int borderColor, float borderWidth, float marginLeft, float paddingLeft) {
|
|
20
|
+
public MarkdownBlockquoteSpan(@ColorInt int borderColor, float borderWidth, float marginLeft, float paddingLeft, int nestingLevel) {
|
|
20
21
|
this.borderColor = borderColor;
|
|
21
22
|
this.borderWidth = PixelUtil.toPixelFromDIP(borderWidth);
|
|
22
23
|
this.marginLeft = PixelUtil.toPixelFromDIP(marginLeft);
|
|
23
24
|
this.paddingLeft = PixelUtil.toPixelFromDIP(paddingLeft);
|
|
25
|
+
this.nestingLevel = nestingLevel;
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
@Override
|
|
27
29
|
public int getLeadingMargin(boolean first) {
|
|
28
|
-
return (int) (marginLeft + borderWidth + paddingLeft);
|
|
30
|
+
return (int) (marginLeft + borderWidth + paddingLeft) * nestingLevel;
|
|
29
31
|
}
|
|
30
32
|
|
|
31
33
|
@Override
|
|
@@ -37,9 +39,12 @@ public class MarkdownBlockquoteSpan implements MarkdownSpan, LeadingMarginSpan {
|
|
|
37
39
|
p.setStyle(Paint.Style.FILL);
|
|
38
40
|
p.setColor(borderColor);
|
|
39
41
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
42
|
+
for (int level = 0; level < nestingLevel; level++) {
|
|
43
|
+
float shift = (marginLeft + borderWidth + paddingLeft) * level;
|
|
44
|
+
float left = x + dir * (marginLeft + shift);
|
|
45
|
+
float right = x + dir * (marginLeft + borderWidth + shift);
|
|
46
|
+
c.drawRect(left, top, right, bottom, p);
|
|
47
|
+
}
|
|
43
48
|
|
|
44
49
|
p.setStyle(originalStyle);
|
|
45
50
|
p.setColor(originalColor);
|
|
@@ -96,15 +96,16 @@ public class MarkdownUtils {
|
|
|
96
96
|
String type = range.getString("type");
|
|
97
97
|
int start = range.getInt("start");
|
|
98
98
|
int length = range.getInt("length");
|
|
99
|
+
int depth = range.optInt("depth", 1);
|
|
99
100
|
int end = start + length;
|
|
100
|
-
applyRange(ssb, type, start, end);
|
|
101
|
+
applyRange(ssb, type, start, end, depth);
|
|
101
102
|
}
|
|
102
103
|
} catch (JSONException e) {
|
|
103
104
|
// Do nothing
|
|
104
105
|
}
|
|
105
106
|
}
|
|
106
107
|
|
|
107
|
-
private void applyRange(SpannableStringBuilder ssb, String type, int start, int end) {
|
|
108
|
+
private void applyRange(SpannableStringBuilder ssb, String type, int start, int end, int depth) {
|
|
108
109
|
switch (type) {
|
|
109
110
|
case "bold":
|
|
110
111
|
setSpan(ssb, new MarkdownBoldSpan(), start, end);
|
|
@@ -156,7 +157,8 @@ public class MarkdownUtils {
|
|
|
156
157
|
mMarkdownStyle.getBlockquoteBorderColor(),
|
|
157
158
|
mMarkdownStyle.getBlockquoteBorderWidth(),
|
|
158
159
|
mMarkdownStyle.getBlockquoteMarginLeft(),
|
|
159
|
-
mMarkdownStyle.getBlockquotePaddingLeft()
|
|
160
|
+
mMarkdownStyle.getBlockquotePaddingLeft(),
|
|
161
|
+
depth);
|
|
160
162
|
setSpan(ssb, span, start, end);
|
|
161
163
|
break;
|
|
162
164
|
default:
|
|
@@ -7,9 +7,11 @@
|
|
|
7
7
|
|
|
8
8
|
[self enumerateLineFragmentsForGlyphRange:glyphsToShow usingBlock:^(CGRect rect, CGRect usedRect, NSTextContainer * _Nonnull textContainer, NSRange glyphRange, BOOL * _Nonnull stop) {
|
|
9
9
|
__block BOOL isBlockquote = NO;
|
|
10
|
+
__block int currentDepth = 0;
|
|
10
11
|
RCTMarkdownUtils *markdownUtils = [self valueForKey:@"markdownUtils"];
|
|
11
|
-
[markdownUtils.
|
|
12
|
-
NSRange range = [item rangeValue];
|
|
12
|
+
[markdownUtils.blockquoteRangesAndLevels enumerateObjectsUsingBlock:^(NSDictionary *item, NSUInteger idx, BOOL * _Nonnull stop) {
|
|
13
|
+
NSRange range = [[item valueForKey:@"range"] rangeValue];
|
|
14
|
+
currentDepth = [[item valueForKey:@"depth"] unsignedIntegerValue];
|
|
13
15
|
NSUInteger start = range.location;
|
|
14
16
|
NSUInteger end = start + range.length;
|
|
15
17
|
NSUInteger location = glyphRange.location;
|
|
@@ -21,13 +23,16 @@
|
|
|
21
23
|
if (isBlockquote) {
|
|
22
24
|
CGFloat paddingLeft = markdownUtils.backedTextInputView.textContainerInset.left;
|
|
23
25
|
CGFloat paddingTop = markdownUtils.backedTextInputView.textContainerInset.top;
|
|
24
|
-
CGFloat x = paddingLeft + markdownUtils.markdownStyle.blockquoteMarginLeft;
|
|
25
26
|
CGFloat y = paddingTop + rect.origin.y;
|
|
26
27
|
CGFloat width = markdownUtils.markdownStyle.blockquoteBorderWidth;
|
|
27
28
|
CGFloat height = rect.size.height;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
CGFloat shift = markdownUtils.markdownStyle.blockquoteMarginLeft + markdownUtils.markdownStyle.blockquoteBorderWidth + markdownUtils.markdownStyle.blockquotePaddingLeft;
|
|
30
|
+
for (int level = 0; level < currentDepth; level++) {
|
|
31
|
+
CGFloat x = paddingLeft + (level * shift) + markdownUtils.markdownStyle.blockquoteMarginLeft;
|
|
32
|
+
CGRect lineRect = CGRectMake(x, y, width, height);
|
|
33
|
+
[markdownUtils.markdownStyle.blockquoteBorderColor setFill];
|
|
34
|
+
UIRectFill(lineRect);
|
|
35
|
+
}
|
|
31
36
|
}
|
|
32
37
|
}];
|
|
33
38
|
}
|
package/ios/RCTMarkdownUtils.h
CHANGED
|
@@ -6,7 +6,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
6
6
|
@interface RCTMarkdownUtils : NSObject
|
|
7
7
|
|
|
8
8
|
@property (nonatomic) RCTMarkdownStyle *markdownStyle;
|
|
9
|
-
@property (nonatomic) NSMutableArray<
|
|
9
|
+
@property (nonatomic) NSMutableArray<NSDictionary *> *blockquoteRangesAndLevels;
|
|
10
10
|
@property (weak, nonatomic) UIView<RCTBackedTextInputViewProtocol> *backedTextInputView;
|
|
11
11
|
|
|
12
12
|
- (instancetype)initWithBackedTextInputView:(UIView<RCTBackedTextInputViewProtocol> *)backedTextInputView;
|
package/ios/RCTMarkdownUtils.mm
CHANGED
|
@@ -55,13 +55,14 @@
|
|
|
55
55
|
// This is a workaround that applies the NSUnderlineStyleNone to the string before iterating over ranges which resolves this problem.
|
|
56
56
|
[attributedString addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleNone] range:NSMakeRange(0, attributedString.length)];
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
_blockquoteRangesAndLevels = [NSMutableArray new];
|
|
59
59
|
|
|
60
60
|
[ranges enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
|
|
61
61
|
NSDictionary *item = obj;
|
|
62
62
|
NSString *type = [item valueForKey:@"type"];
|
|
63
63
|
NSInteger location = [[item valueForKey:@"start"] unsignedIntegerValue];
|
|
64
64
|
NSInteger length = [[item valueForKey:@"length"] unsignedIntegerValue];
|
|
65
|
+
NSInteger depth = [[item valueForKey:@"depth"] unsignedIntegerValue] ?: 1;
|
|
65
66
|
NSRange range = NSMakeRange(location, length);
|
|
66
67
|
|
|
67
68
|
if ([type isEqualToString:@"bold"] || [type isEqualToString:@"italic"] || [type isEqualToString:@"code"] || [type isEqualToString:@"pre"] || [type isEqualToString:@"h1"]) {
|
|
@@ -103,12 +104,15 @@
|
|
|
103
104
|
[attributedString addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:range];
|
|
104
105
|
[attributedString addAttribute:NSForegroundColorAttributeName value:_markdownStyle.linkColor range:range];
|
|
105
106
|
} else if ([type isEqualToString:@"blockquote"]) {
|
|
106
|
-
CGFloat indent = _markdownStyle.blockquoteMarginLeft + _markdownStyle.blockquoteBorderWidth + _markdownStyle.blockquotePaddingLeft;
|
|
107
|
+
CGFloat indent = (_markdownStyle.blockquoteMarginLeft + _markdownStyle.blockquoteBorderWidth + _markdownStyle.blockquotePaddingLeft) * depth;
|
|
107
108
|
NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new];
|
|
108
109
|
paragraphStyle.firstLineHeadIndent = indent;
|
|
109
110
|
paragraphStyle.headIndent = indent;
|
|
110
111
|
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:range];
|
|
111
|
-
[
|
|
112
|
+
[_blockquoteRangesAndLevels addObject:@{
|
|
113
|
+
@"range": [NSValue valueWithRange:range],
|
|
114
|
+
@"depth": @(depth)
|
|
115
|
+
}];
|
|
112
116
|
} else if ([type isEqualToString:@"pre"]) {
|
|
113
117
|
[attributedString addAttribute:NSForegroundColorAttributeName value:_markdownStyle.preColor range:range];
|
|
114
118
|
NSRange rangeForBackground = [inputString characterAtIndex:range.location] == '\n' ? NSMakeRange(range.location + 1, range.length - 1) : range;
|
|
@@ -66,6 +66,24 @@ function addSubstringAsTextNode(root, text, startIndex, endIndex) {
|
|
|
66
66
|
root.appendChild(document.createTextNode(substring));
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
|
+
function ungroupRanges(ranges) {
|
|
70
|
+
const ungroupedRanges = [];
|
|
71
|
+
ranges.forEach(range => {
|
|
72
|
+
if (!range.depth) {
|
|
73
|
+
ungroupedRanges.push(range);
|
|
74
|
+
}
|
|
75
|
+
const {
|
|
76
|
+
depth,
|
|
77
|
+
...rangeWithoutDepth
|
|
78
|
+
} = range;
|
|
79
|
+
Array.from({
|
|
80
|
+
length: depth
|
|
81
|
+
}).forEach(() => {
|
|
82
|
+
ungroupedRanges.push(rangeWithoutDepth);
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
return ungroupedRanges;
|
|
86
|
+
}
|
|
69
87
|
function parseRangesToHTMLNodes(text, ranges, markdownStyle = {}, disableInlineStyles = false) {
|
|
70
88
|
const root = document.createElement('span');
|
|
71
89
|
root.className = 'root';
|
|
@@ -74,7 +92,7 @@ function parseRangesToHTMLNodes(text, ranges, markdownStyle = {}, disableInlineS
|
|
|
74
92
|
addSubstringAsTextNode(root, text, 0, textLength);
|
|
75
93
|
return root;
|
|
76
94
|
}
|
|
77
|
-
const stack =
|
|
95
|
+
const stack = ungroupRanges(ranges);
|
|
78
96
|
const nestedStack = [{
|
|
79
97
|
node: root,
|
|
80
98
|
endIndex: textLength
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CursorUtils","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","addStyling","targetElement","type","markdownStyle","node","assign","style","syntax","fontWeight","fontStyle","textDecoration","mentionHere","mentionUser","link","code","pre","blockquote","borderLeftStyle","display","maxWidth","boxSizing","h1","addSubstringAsTextNode","root","text","startIndex","endIndex","substring","length","appendChild","document","createTextNode","
|
|
1
|
+
{"version":3,"names":["CursorUtils","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","addStyling","targetElement","type","markdownStyle","node","assign","style","syntax","fontWeight","fontStyle","textDecoration","mentionHere","mentionUser","link","code","pre","blockquote","borderLeftStyle","display","maxWidth","boxSizing","h1","addSubstringAsTextNode","root","text","startIndex","endIndex","substring","length","appendChild","document","createTextNode","ungroupRanges","ranges","ungroupedRanges","forEach","range","depth","push","rangeWithoutDepth","Array","from","parseRangesToHTMLNodes","disableInlineStyles","createElement","className","textLength","stack","nestedStack","lastRangeEndIndex","shift","currentRoot","endOfCurrentRange","start","nextRangeStartIndex","span","prevRoot","pop","lastNestedNode","parseText","target","curosrPositionIndex","disableNewLinesInCursorPositioning","alwaysMoveCursorToTheEnd","cursorPosition","isFocused","activeElement","getCurrentCursorPosition","global","parseExpensiMarkToRanges","markdownRanges","innerHTML","innerText","dom","moveCursorToEnd","setCursorPosition"],"sourceRoot":"../../../src","sources":["web/parserUtils.ts"],"mappings":"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"}
|
|
@@ -57,6 +57,24 @@ function addSubstringAsTextNode(root, text, startIndex, endIndex) {
|
|
|
57
57
|
root.appendChild(document.createTextNode(substring));
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
+
function ungroupRanges(ranges) {
|
|
61
|
+
const ungroupedRanges = [];
|
|
62
|
+
ranges.forEach(range => {
|
|
63
|
+
if (!range.depth) {
|
|
64
|
+
ungroupedRanges.push(range);
|
|
65
|
+
}
|
|
66
|
+
const {
|
|
67
|
+
depth,
|
|
68
|
+
...rangeWithoutDepth
|
|
69
|
+
} = range;
|
|
70
|
+
Array.from({
|
|
71
|
+
length: depth
|
|
72
|
+
}).forEach(() => {
|
|
73
|
+
ungroupedRanges.push(rangeWithoutDepth);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
return ungroupedRanges;
|
|
77
|
+
}
|
|
60
78
|
function parseRangesToHTMLNodes(text, ranges, markdownStyle = {}, disableInlineStyles = false) {
|
|
61
79
|
const root = document.createElement('span');
|
|
62
80
|
root.className = 'root';
|
|
@@ -65,7 +83,7 @@ function parseRangesToHTMLNodes(text, ranges, markdownStyle = {}, disableInlineS
|
|
|
65
83
|
addSubstringAsTextNode(root, text, 0, textLength);
|
|
66
84
|
return root;
|
|
67
85
|
}
|
|
68
|
-
const stack =
|
|
86
|
+
const stack = ungroupRanges(ranges);
|
|
69
87
|
const nestedStack = [{
|
|
70
88
|
node: root,
|
|
71
89
|
endIndex: textLength
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CursorUtils","addStyling","targetElement","type","markdownStyle","node","Object","assign","style","syntax","fontWeight","fontStyle","textDecoration","mentionHere","mentionUser","link","code","pre","blockquote","borderLeftStyle","display","maxWidth","boxSizing","h1","addSubstringAsTextNode","root","text","startIndex","endIndex","substring","length","appendChild","document","createTextNode","
|
|
1
|
+
{"version":3,"names":["CursorUtils","addStyling","targetElement","type","markdownStyle","node","Object","assign","style","syntax","fontWeight","fontStyle","textDecoration","mentionHere","mentionUser","link","code","pre","blockquote","borderLeftStyle","display","maxWidth","boxSizing","h1","addSubstringAsTextNode","root","text","startIndex","endIndex","substring","length","appendChild","document","createTextNode","ungroupRanges","ranges","ungroupedRanges","forEach","range","depth","push","rangeWithoutDepth","Array","from","parseRangesToHTMLNodes","disableInlineStyles","createElement","className","textLength","stack","nestedStack","lastRangeEndIndex","shift","currentRoot","endOfCurrentRange","start","nextRangeStartIndex","span","prevRoot","pop","lastNestedNode","parseText","target","curosrPositionIndex","disableNewLinesInCursorPositioning","alwaysMoveCursorToTheEnd","cursorPosition","isFocused","activeElement","getCurrentCursorPosition","global","parseExpensiMarkToRanges","markdownRanges","innerHTML","innerText","dom","moveCursorToEnd","setCursorPosition"],"sourceRoot":"../../../src","sources":["web/parserUtils.ts"],"mappings":"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"}
|