@expensify/react-native-live-markdown 0.1.94 → 0.1.96

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.
@@ -18,6 +18,8 @@ Pod::Spec.new do |s|
18
18
 
19
19
  s.resources = "parser/react-native-live-markdown-parser.js"
20
20
 
21
+ s.dependency "hermes-engine"
22
+
21
23
  install_modules_dependencies(s)
22
24
 
23
25
  if ENV['USE_FRAMEWORKS'] && ENV['RCT_NEW_ARCH_ENABLED']
@@ -2,7 +2,11 @@
2
2
  #import "react_native_assert.h"
3
3
  #import <React/RCTAssert.h>
4
4
  #import <React/RCTFont.h>
5
- #import <JavaScriptCore/JavaScriptCore.h>
5
+
6
+ #include <jsi/jsi.h>
7
+ #include <hermes/hermes.h>
8
+
9
+ using namespace facebook;
6
10
 
7
11
  @implementation RCTMarkdownUtils {
8
12
  NSString *_prevInputString;
@@ -23,20 +27,26 @@
23
27
  return _prevAttributedString;
24
28
  }
25
29
 
26
- static JSContext *ctx = nil;
27
- static JSValue *function = nil;
28
- if (ctx == nil) {
30
+ static std::shared_ptr<jsi::Runtime> runtime;
31
+ if (runtime == nullptr) {
29
32
  NSString *path = [[NSBundle mainBundle] pathForResource:@"react-native-live-markdown-parser" ofType:@"js"];
30
33
  assert(path != nil && "[react-native-live-markdown] Markdown parser bundle not found");
31
34
  NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL];
32
35
  assert(content != nil && "[react-native-live-markdown] Markdown parser bundle is empty");
33
- ctx = [[JSContext alloc] init];
34
- [ctx evaluateScript:content];
35
- function = ctx[@"parseExpensiMarkToRanges"];
36
+ runtime = facebook::hermes::makeHermesRuntime();
37
+ auto codeBuffer = std::make_shared<const jsi::StringBuffer>([content UTF8String]);
38
+ runtime->evaluateJavaScript(codeBuffer, "evaluateJavaScript");
36
39
  }
37
40
 
38
- JSValue *result = [function callWithArguments:@[inputString]];
39
- NSArray *ranges = [result toArray];
41
+ jsi::Runtime &rt = *runtime;
42
+ auto text = jsi::String::createFromUtf8(rt, [inputString UTF8String]);
43
+
44
+ auto func = rt.global().getPropertyAsFunction(rt, "parseExpensiMarkToRanges");
45
+ auto output = func.call(rt, text);
46
+ if (output.isUndefined()) {
47
+ return input;
48
+ }
49
+ const auto &ranges = output.asObject(rt).asArray(rt);
40
50
 
41
51
  NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:inputString attributes:attributes];
42
52
  [attributedString beginEditing];
@@ -48,42 +58,43 @@
48
58
 
49
59
  _blockquoteRangesAndLevels = [NSMutableArray new];
50
60
 
51
- [ranges enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
52
- NSDictionary *item = obj;
53
- NSString *type = [item valueForKey:@"type"];
54
- NSInteger location = [[item valueForKey:@"start"] unsignedIntegerValue];
55
- NSInteger length = [[item valueForKey:@"length"] unsignedIntegerValue];
56
- NSInteger depth = [[item valueForKey:@"depth"] unsignedIntegerValue] ?: 1;
61
+ for (size_t i = 0, n = ranges.size(rt); i < n; ++i) {
62
+ const auto &item = ranges.getValueAtIndex(rt, i).asObject(rt);
63
+ const auto &type = item.getProperty(rt, "type").asString(rt).utf8(rt);
64
+ const auto &location = static_cast<int>(item.getProperty(rt, "start").asNumber());
65
+ const auto &length = static_cast<int>(item.getProperty(rt, "length").asNumber());
66
+ const auto &depth = item.hasProperty(rt, "depth") ? static_cast<int>(item.getProperty(rt, "depth").asNumber()) : 1;
67
+
57
68
  NSRange range = NSMakeRange(location, length);
58
69
 
59
- if ([type isEqualToString:@"bold"] || [type isEqualToString:@"italic"] || [type isEqualToString:@"code"] || [type isEqualToString:@"pre"] || [type isEqualToString:@"h1"] || [type isEqualToString:@"emoji"]) {
70
+ if (type == "bold" || type == "italic" || type == "code" || type == "pre" || type == "h1" || type == "emoji") {
60
71
  UIFont *font = [attributedString attribute:NSFontAttributeName atIndex:location effectiveRange:NULL];
61
- if ([type isEqualToString:@"bold"]) {
72
+ if (type == "bold") {
62
73
  font = [RCTFont updateFont:font withWeight:@"bold"];
63
- } else if ([type isEqualToString:@"italic"]) {
74
+ } else if (type == "italic") {
64
75
  font = [RCTFont updateFont:font withStyle:@"italic"];
65
- } else if ([type isEqualToString:@"code"]) {
76
+ } else if (type == "code") {
66
77
  font = [RCTFont updateFont:font withFamily:_markdownStyle.codeFontFamily
67
78
  size:[NSNumber numberWithFloat:_markdownStyle.codeFontSize]
68
79
  weight:nil
69
80
  style:nil
70
81
  variant:nil
71
82
  scaleMultiplier:0];
72
- } else if ([type isEqualToString:@"pre"]) {
83
+ } else if (type == "pre") {
73
84
  font = [RCTFont updateFont:font withFamily:_markdownStyle.preFontFamily
74
85
  size:[NSNumber numberWithFloat:_markdownStyle.preFontSize]
75
86
  weight:nil
76
87
  style:nil
77
88
  variant:nil
78
89
  scaleMultiplier:0];
79
- } else if ([type isEqualToString:@"h1"]) {
90
+ } else if (type == "h1") {
80
91
  font = [RCTFont updateFont:font withFamily:nil
81
92
  size:[NSNumber numberWithFloat:_markdownStyle.h1FontSize]
82
93
  weight:@"bold"
83
94
  style:nil
84
95
  variant:nil
85
96
  scaleMultiplier:0];
86
- } else if ([type isEqualToString:@"emoji"]) {
97
+ } else if (type == "emoji") {
87
98
  font = [RCTFont updateFont:font withFamily:nil
88
99
  size:[NSNumber numberWithFloat:_markdownStyle.emojiFontSize]
89
100
  weight:nil
@@ -94,27 +105,27 @@
94
105
  [attributedString addAttribute:NSFontAttributeName value:font range:range];
95
106
  }
96
107
 
97
- if ([type isEqualToString:@"syntax"]) {
108
+ if (type == "syntax") {
98
109
  [attributedString addAttribute:NSForegroundColorAttributeName value:_markdownStyle.syntaxColor range:range];
99
- } else if ([type isEqualToString:@"strikethrough"]) {
110
+ } else if (type == "strikethrough") {
100
111
  [attributedString addAttribute:NSStrikethroughStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:range];
101
- } else if ([type isEqualToString:@"code"]) {
112
+ } else if (type == "code") {
102
113
  [attributedString addAttribute:NSForegroundColorAttributeName value:_markdownStyle.codeColor range:range];
103
114
  [attributedString addAttribute:NSBackgroundColorAttributeName value:_markdownStyle.codeBackgroundColor range:range];
104
- } else if ([type isEqualToString:@"mention-here"]) {
115
+ } else if (type == "mention-here") {
105
116
  [attributedString addAttribute:NSForegroundColorAttributeName value:_markdownStyle.mentionHereColor range:range];
106
117
  [attributedString addAttribute:NSBackgroundColorAttributeName value:_markdownStyle.mentionHereBackgroundColor range:range];
107
- } else if ([type isEqualToString:@"mention-user"]) {
118
+ } else if (type == "mention-user") {
108
119
  // TODO: change mention color when it mentions current user
109
120
  [attributedString addAttribute:NSForegroundColorAttributeName value:_markdownStyle.mentionUserColor range:range];
110
121
  [attributedString addAttribute:NSBackgroundColorAttributeName value:_markdownStyle.mentionUserBackgroundColor range:range];
111
- } else if ([type isEqualToString:@"mention-report"]) {
122
+ } else if (type == "mention-report") {
112
123
  [attributedString addAttribute:NSForegroundColorAttributeName value:_markdownStyle.mentionReportColor range:range];
113
124
  [attributedString addAttribute:NSBackgroundColorAttributeName value:_markdownStyle.mentionReportBackgroundColor range:range];
114
- } else if ([type isEqualToString:@"link"]) {
125
+ } else if (type == "link") {
115
126
  [attributedString addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:range];
116
127
  [attributedString addAttribute:NSForegroundColorAttributeName value:_markdownStyle.linkColor range:range];
117
- } else if ([type isEqualToString:@"blockquote"]) {
128
+ } else if (type == "blockquote") {
118
129
  CGFloat indent = (_markdownStyle.blockquoteMarginLeft + _markdownStyle.blockquoteBorderWidth + _markdownStyle.blockquotePaddingLeft) * depth;
119
130
  NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new];
120
131
  paragraphStyle.firstLineHeadIndent = indent;
@@ -124,17 +135,17 @@
124
135
  @"range": [NSValue valueWithRange:range],
125
136
  @"depth": @(depth)
126
137
  }];
127
- } else if ([type isEqualToString:@"pre"]) {
138
+ } else if (type == "pre") {
128
139
  [attributedString addAttribute:NSForegroundColorAttributeName value:_markdownStyle.preColor range:range];
129
140
  NSRange rangeForBackground = [inputString characterAtIndex:range.location] == '\n' ? NSMakeRange(range.location + 1, range.length - 1) : range;
130
141
  [attributedString addAttribute:NSBackgroundColorAttributeName value:_markdownStyle.preBackgroundColor range:rangeForBackground];
131
142
  // TODO: pass background color and ranges to layout manager
132
- } else if ([type isEqualToString:@"h1"]) {
143
+ } else if (type == "h1") {
133
144
  NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new];
134
145
  NSRange rangeWithHashAndSpace = NSMakeRange(range.location - 2, range.length + 2); // we also need to include prepending "# "
135
146
  [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:rangeWithHashAndSpace];
136
147
  }
137
- }];
148
+ }
138
149
 
139
150
  RCTApplyBaselineOffset(attributedString);
140
151
 
@@ -66,7 +66,7 @@ function setCursorPosition(target, start, end = null) {
66
66
  // 3. Caret at the end of whole input, when pressing enter
67
67
  // 4. All other placements
68
68
  if (prevChar === '\n' && prevTextLength !== undefined && prevTextLength < textCharacters.length) {
69
- if (nextChar !== '\n') {
69
+ if (nextChar && nextChar !== '\n' && i !== n - 1) {
70
70
  range.setStart(textNodes[i + 1], 0);
71
71
  } else if (i !== textNodes.length - 1) {
72
72
  range.setStart(textNodes[i], 1);
@@ -1 +1 @@
1
- {"version":3,"names":["BrowserUtils","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","prevTextLength","findTextNodes","textNodes","node","nodeType","Node","TEXT_NODE","push","length","childNodes","childNode","setPrevText","target","_textNodes$map","text","map","nodeValue","join","split","setCursorPosition","start","end","_textNodes$map2","document","activeElement","range","createRange","selectNodeContents","textCharacters","prevChar","nextChar","charCount","startNode","endNode","textNode","nextCharCount","undefined","setStart","setEnd","collapse","selection","window","getSelection","setBaseAndExtent","startContainer","startOffset","endContainer","endOffset","scrollCursorIntoView","moveCursorToEnd","getCurrentCursorPosition","rangeCount","getRangeAt","preSelectionRange","cloneRange","toString","removeSelection","removeAllRanges","selectionStart","value","isFirefox","caretRect","getClientRects","editableRect","getBoundingClientRect","paddingTop","parseFloat","getComputedStyle","borderTop","borderTopWidth","top","bottom","topToCaret","inputHeight","height","inputOffset","isChromium","scrollTo","scrollTop"],"sourceRoot":"../../../src","sources":["web/cursorUtils.ts"],"mappings":"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"}
1
+ {"version":3,"names":["BrowserUtils","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","prevTextLength","findTextNodes","textNodes","node","nodeType","Node","TEXT_NODE","push","length","childNodes","childNode","setPrevText","target","_textNodes$map","text","map","nodeValue","join","split","setCursorPosition","start","end","_textNodes$map2","document","activeElement","range","createRange","selectNodeContents","textCharacters","prevChar","nextChar","charCount","startNode","endNode","textNode","nextCharCount","undefined","setStart","setEnd","collapse","selection","window","getSelection","setBaseAndExtent","startContainer","startOffset","endContainer","endOffset","scrollCursorIntoView","moveCursorToEnd","getCurrentCursorPosition","rangeCount","getRangeAt","preSelectionRange","cloneRange","toString","removeSelection","removeAllRanges","selectionStart","value","isFirefox","caretRect","getClientRects","editableRect","getBoundingClientRect","paddingTop","parseFloat","getComputedStyle","borderTop","borderTopWidth","top","bottom","topToCaret","inputHeight","height","inputOffset","isChromium","scrollTo","scrollTop"],"sourceRoot":"../../../src","sources":["web/cursorUtils.ts"],"mappings":"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"}
@@ -53,7 +53,7 @@ function setCursorPosition(target, start, end = null) {
53
53
  // 3. Caret at the end of whole input, when pressing enter
54
54
  // 4. All other placements
55
55
  if (prevChar === '\n' && prevTextLength !== undefined && prevTextLength < textCharacters.length) {
56
- if (nextChar !== '\n') {
56
+ if (nextChar && nextChar !== '\n' && i !== n - 1) {
57
57
  range.setStart(textNodes[i + 1], 0);
58
58
  } else if (i !== textNodes.length - 1) {
59
59
  range.setStart(textNodes[i], 1);
@@ -1 +1 @@
1
- {"version":3,"names":["BrowserUtils","prevTextLength","findTextNodes","textNodes","node","nodeType","Node","TEXT_NODE","push","i","length","childNodes","childNode","setPrevText","target","_textNodes$map","text","map","e","nodeValue","join","split","setCursorPosition","start","end","_textNodes$map2","document","activeElement","range","createRange","selectNodeContents","textCharacters","prevChar","nextChar","charCount","startNode","endNode","n","textNode","nextCharCount","undefined","setStart","setEnd","collapse","selection","window","getSelection","setBaseAndExtent","startContainer","startOffset","endContainer","endOffset","scrollCursorIntoView","moveCursorToEnd","getCurrentCursorPosition","rangeCount","getRangeAt","preSelectionRange","cloneRange","toString","removeSelection","removeAllRanges","selectionStart","value","isFirefox","caretRect","getClientRects","editableRect","getBoundingClientRect","paddingTop","parseFloat","getComputedStyle","borderTop","borderTopWidth","top","bottom","topToCaret","inputHeight","height","inputOffset","isChromium","scrollTo","scrollTop"],"sourceRoot":"../../../src","sources":["web/cursorUtils.ts"],"mappings":"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"}
1
+ {"version":3,"names":["BrowserUtils","prevTextLength","findTextNodes","textNodes","node","nodeType","Node","TEXT_NODE","push","i","length","childNodes","childNode","setPrevText","target","_textNodes$map","text","map","e","nodeValue","join","split","setCursorPosition","start","end","_textNodes$map2","document","activeElement","range","createRange","selectNodeContents","textCharacters","prevChar","nextChar","charCount","startNode","endNode","n","textNode","nextCharCount","undefined","setStart","setEnd","collapse","selection","window","getSelection","setBaseAndExtent","startContainer","startOffset","endContainer","endOffset","scrollCursorIntoView","moveCursorToEnd","getCurrentCursorPosition","rangeCount","getRangeAt","preSelectionRange","cloneRange","toString","removeSelection","removeAllRanges","selectionStart","value","isFirefox","caretRect","getClientRects","editableRect","getBoundingClientRect","paddingTop","parseFloat","getComputedStyle","borderTop","borderTopWidth","top","bottom","topToCaret","inputHeight","height","inputOffset","isChromium","scrollTo","scrollTop"],"sourceRoot":"../../../src","sources":["web/cursorUtils.ts"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expensify/react-native-live-markdown",
3
- "version": "0.1.94",
3
+ "version": "0.1.96",
4
4
  "description": "Drop-in replacement for React Native's TextInput component with Markdown formatting.",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -66,7 +66,7 @@ function setCursorPosition(target: HTMLElement, start: number, end: number | nul
66
66
  // 3. Caret at the end of whole input, when pressing enter
67
67
  // 4. All other placements
68
68
  if (prevChar === '\n' && prevTextLength !== undefined && prevTextLength < textCharacters.length) {
69
- if (nextChar !== '\n') {
69
+ if (nextChar && nextChar !== '\n' && i !== n - 1) {
70
70
  range.setStart(textNodes[i + 1] as Node, 0);
71
71
  } else if (i !== textNodes.length - 1) {
72
72
  range.setStart(textNodes[i] as Node, 1);