react-native-nitro-markdown 0.4.3 → 0.5.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.
Files changed (175) hide show
  1. package/README.md +417 -25
  2. package/android/src/main/java/com/margelo/nitro/com/nitromarkdown/HybridMarkdownSession.kt +46 -8
  3. package/android/src/main/java/com/nitromarkdown/NitroMarkdownPackage.kt +2 -1
  4. package/cpp/bindings/HybridMarkdownParser.cpp +216 -66
  5. package/cpp/bindings/HybridMarkdownParser.hpp +2 -0
  6. package/ios/HybridMarkdownSession.swift +51 -7
  7. package/lib/commonjs/MarkdownContext.js.map +1 -1
  8. package/lib/commonjs/headless.js +61 -5
  9. package/lib/commonjs/headless.js.map +1 -1
  10. package/lib/commonjs/index.js +9 -1
  11. package/lib/commonjs/index.js.map +1 -1
  12. package/lib/commonjs/markdown-stream.js +107 -13
  13. package/lib/commonjs/markdown-stream.js.map +1 -1
  14. package/lib/commonjs/markdown.js +191 -26
  15. package/lib/commonjs/markdown.js.map +1 -1
  16. package/lib/commonjs/renderers/code.js +21 -2
  17. package/lib/commonjs/renderers/code.js.map +1 -1
  18. package/lib/commonjs/renderers/table/cell-content.js +32 -0
  19. package/lib/commonjs/renderers/table/cell-content.js.map +1 -0
  20. package/lib/commonjs/renderers/table/index.js +310 -0
  21. package/lib/commonjs/renderers/table/index.js.map +1 -0
  22. package/lib/commonjs/renderers/table/table-reducer.js +29 -0
  23. package/lib/commonjs/renderers/table/table-reducer.js.map +1 -0
  24. package/lib/commonjs/renderers/table/table-utils.js +68 -0
  25. package/lib/commonjs/renderers/table/table-utils.js.map +1 -0
  26. package/lib/commonjs/renderers/table/types.js +6 -0
  27. package/lib/commonjs/renderers/table/types.js.map +1 -0
  28. package/lib/commonjs/renderers/table.js +6 -306
  29. package/lib/commonjs/renderers/table.js.map +1 -1
  30. package/lib/commonjs/theme.js +10 -1
  31. package/lib/commonjs/theme.js.map +1 -1
  32. package/lib/commonjs/use-markdown-stream.js +9 -1
  33. package/lib/commonjs/use-markdown-stream.js.map +1 -1
  34. package/lib/commonjs/utils/code-highlight.js +101 -0
  35. package/lib/commonjs/utils/code-highlight.js.map +1 -0
  36. package/lib/commonjs/utils/incremental-ast.js +153 -0
  37. package/lib/commonjs/utils/incremental-ast.js.map +1 -0
  38. package/lib/module/MarkdownContext.js.map +1 -1
  39. package/lib/module/headless.js +56 -4
  40. package/lib/module/headless.js.map +1 -1
  41. package/lib/module/index.js +1 -0
  42. package/lib/module/index.js.map +1 -1
  43. package/lib/module/markdown-stream.js +108 -14
  44. package/lib/module/markdown-stream.js.map +1 -1
  45. package/lib/module/markdown.js +193 -28
  46. package/lib/module/markdown.js.map +1 -1
  47. package/lib/module/renderers/code.js +21 -2
  48. package/lib/module/renderers/code.js.map +1 -1
  49. package/lib/module/renderers/table/cell-content.js +27 -0
  50. package/lib/module/renderers/table/cell-content.js.map +1 -0
  51. package/lib/module/renderers/table/index.js +305 -0
  52. package/lib/module/renderers/table/index.js.map +1 -0
  53. package/lib/module/renderers/table/table-reducer.js +24 -0
  54. package/lib/module/renderers/table/table-reducer.js.map +1 -0
  55. package/lib/module/renderers/table/table-utils.js +62 -0
  56. package/lib/module/renderers/table/table-utils.js.map +1 -0
  57. package/lib/module/renderers/table/types.js +4 -0
  58. package/lib/module/renderers/table/types.js.map +1 -0
  59. package/lib/module/renderers/table.js +1 -305
  60. package/lib/module/renderers/table.js.map +1 -1
  61. package/lib/module/theme.js +10 -1
  62. package/lib/module/theme.js.map +1 -1
  63. package/lib/module/use-markdown-stream.js +9 -1
  64. package/lib/module/use-markdown-stream.js.map +1 -1
  65. package/lib/module/utils/code-highlight.js +97 -0
  66. package/lib/module/utils/code-highlight.js.map +1 -0
  67. package/lib/module/utils/incremental-ast.js +147 -0
  68. package/lib/module/utils/incremental-ast.js.map +1 -0
  69. package/lib/typescript/commonjs/Markdown.nitro.d.ts +2 -0
  70. package/lib/typescript/commonjs/Markdown.nitro.d.ts.map +1 -1
  71. package/lib/typescript/commonjs/MarkdownContext.d.ts +6 -0
  72. package/lib/typescript/commonjs/MarkdownContext.d.ts.map +1 -1
  73. package/lib/typescript/commonjs/headless.d.ts +18 -0
  74. package/lib/typescript/commonjs/headless.d.ts.map +1 -1
  75. package/lib/typescript/commonjs/index.d.ts +4 -0
  76. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  77. package/lib/typescript/commonjs/markdown-stream.d.ts +6 -1
  78. package/lib/typescript/commonjs/markdown-stream.d.ts.map +1 -1
  79. package/lib/typescript/commonjs/markdown.d.ts +77 -1
  80. package/lib/typescript/commonjs/markdown.d.ts.map +1 -1
  81. package/lib/typescript/commonjs/renderers/code.d.ts.map +1 -1
  82. package/lib/typescript/commonjs/renderers/table/cell-content.d.ts +15 -0
  83. package/lib/typescript/commonjs/renderers/table/cell-content.d.ts.map +1 -0
  84. package/lib/typescript/commonjs/renderers/table/index.d.ts +11 -0
  85. package/lib/typescript/commonjs/renderers/table/index.d.ts.map +1 -0
  86. package/lib/typescript/commonjs/renderers/table/table-reducer.d.ts +5 -0
  87. package/lib/typescript/commonjs/renderers/table/table-reducer.d.ts.map +1 -0
  88. package/lib/typescript/commonjs/renderers/table/table-utils.d.ts +10 -0
  89. package/lib/typescript/commonjs/renderers/table/table-utils.d.ts.map +1 -0
  90. package/lib/typescript/commonjs/renderers/table/types.d.ts +24 -0
  91. package/lib/typescript/commonjs/renderers/table/types.d.ts.map +1 -0
  92. package/lib/typescript/commonjs/renderers/table.d.ts +1 -11
  93. package/lib/typescript/commonjs/renderers/table.d.ts.map +1 -1
  94. package/lib/typescript/commonjs/specs/MarkdownSession.nitro.d.ts +14 -2
  95. package/lib/typescript/commonjs/specs/MarkdownSession.nitro.d.ts.map +1 -1
  96. package/lib/typescript/commonjs/theme.d.ts +18 -2
  97. package/lib/typescript/commonjs/theme.d.ts.map +1 -1
  98. package/lib/typescript/commonjs/use-markdown-stream.d.ts +4 -0
  99. package/lib/typescript/commonjs/use-markdown-stream.d.ts.map +1 -1
  100. package/lib/typescript/commonjs/utils/code-highlight.d.ts +8 -0
  101. package/lib/typescript/commonjs/utils/code-highlight.d.ts.map +1 -0
  102. package/lib/typescript/commonjs/utils/incremental-ast.d.ts +12 -0
  103. package/lib/typescript/commonjs/utils/incremental-ast.d.ts.map +1 -0
  104. package/lib/typescript/module/Markdown.nitro.d.ts +2 -0
  105. package/lib/typescript/module/Markdown.nitro.d.ts.map +1 -1
  106. package/lib/typescript/module/MarkdownContext.d.ts +6 -0
  107. package/lib/typescript/module/MarkdownContext.d.ts.map +1 -1
  108. package/lib/typescript/module/headless.d.ts +18 -0
  109. package/lib/typescript/module/headless.d.ts.map +1 -1
  110. package/lib/typescript/module/index.d.ts +4 -0
  111. package/lib/typescript/module/index.d.ts.map +1 -1
  112. package/lib/typescript/module/markdown-stream.d.ts +6 -1
  113. package/lib/typescript/module/markdown-stream.d.ts.map +1 -1
  114. package/lib/typescript/module/markdown.d.ts +77 -1
  115. package/lib/typescript/module/markdown.d.ts.map +1 -1
  116. package/lib/typescript/module/renderers/code.d.ts.map +1 -1
  117. package/lib/typescript/module/renderers/table/cell-content.d.ts +15 -0
  118. package/lib/typescript/module/renderers/table/cell-content.d.ts.map +1 -0
  119. package/lib/typescript/module/renderers/table/index.d.ts +11 -0
  120. package/lib/typescript/module/renderers/table/index.d.ts.map +1 -0
  121. package/lib/typescript/module/renderers/table/table-reducer.d.ts +5 -0
  122. package/lib/typescript/module/renderers/table/table-reducer.d.ts.map +1 -0
  123. package/lib/typescript/module/renderers/table/table-utils.d.ts +10 -0
  124. package/lib/typescript/module/renderers/table/table-utils.d.ts.map +1 -0
  125. package/lib/typescript/module/renderers/table/types.d.ts +24 -0
  126. package/lib/typescript/module/renderers/table/types.d.ts.map +1 -0
  127. package/lib/typescript/module/renderers/table.d.ts +1 -11
  128. package/lib/typescript/module/renderers/table.d.ts.map +1 -1
  129. package/lib/typescript/module/specs/MarkdownSession.nitro.d.ts +14 -2
  130. package/lib/typescript/module/specs/MarkdownSession.nitro.d.ts.map +1 -1
  131. package/lib/typescript/module/theme.d.ts +18 -2
  132. package/lib/typescript/module/theme.d.ts.map +1 -1
  133. package/lib/typescript/module/use-markdown-stream.d.ts +4 -0
  134. package/lib/typescript/module/use-markdown-stream.d.ts.map +1 -1
  135. package/lib/typescript/module/utils/code-highlight.d.ts +8 -0
  136. package/lib/typescript/module/utils/code-highlight.d.ts.map +1 -0
  137. package/lib/typescript/module/utils/incremental-ast.d.ts +12 -0
  138. package/lib/typescript/module/utils/incremental-ast.d.ts.map +1 -0
  139. package/nitrogen/generated/android/NitroMarkdownOnLoad.cpp +38 -26
  140. package/nitrogen/generated/android/NitroMarkdownOnLoad.hpp +13 -4
  141. package/nitrogen/generated/android/c++/JFunc_void_double_double.hpp +75 -0
  142. package/nitrogen/generated/android/c++/JHybridMarkdownSessionSpec.cpp +49 -34
  143. package/nitrogen/generated/android/c++/JHybridMarkdownSessionSpec.hpp +25 -24
  144. package/nitrogen/generated/android/kotlin/com/margelo/nitro/com/nitromarkdown/Func_void_double_double.kt +80 -0
  145. package/nitrogen/generated/android/kotlin/com/margelo/nitro/com/nitromarkdown/HybridMarkdownSessionSpec.kt +34 -21
  146. package/nitrogen/generated/ios/NitroMarkdown-Swift-Cxx-Bridge.cpp +8 -0
  147. package/nitrogen/generated/ios/NitroMarkdown-Swift-Cxx-Bridge.hpp +31 -0
  148. package/nitrogen/generated/ios/c++/HybridMarkdownSessionSpecSwift.hpp +34 -2
  149. package/nitrogen/generated/ios/swift/Func_void_double_double.swift +46 -0
  150. package/nitrogen/generated/ios/swift/HybridMarkdownSessionSpec.swift +6 -2
  151. package/nitrogen/generated/ios/swift/HybridMarkdownSessionSpec_cxx.swift +57 -9
  152. package/nitrogen/generated/shared/c++/HybridMarkdownParserSpec.cpp +2 -0
  153. package/nitrogen/generated/shared/c++/HybridMarkdownParserSpec.hpp +2 -0
  154. package/nitrogen/generated/shared/c++/HybridMarkdownSessionSpec.cpp +4 -0
  155. package/nitrogen/generated/shared/c++/HybridMarkdownSessionSpec.hpp +6 -2
  156. package/package.json +9 -5
  157. package/react-native-nitro-markdown.podspec +1 -1
  158. package/src/Markdown.nitro.ts +2 -0
  159. package/src/MarkdownContext.ts +6 -0
  160. package/src/headless.ts +54 -4
  161. package/src/index.ts +10 -0
  162. package/src/markdown-stream.tsx +163 -15
  163. package/src/markdown.tsx +381 -26
  164. package/src/renderers/code.tsx +32 -3
  165. package/src/renderers/table/cell-content.tsx +38 -0
  166. package/src/renderers/table/index.tsx +419 -0
  167. package/src/renderers/table/table-reducer.ts +36 -0
  168. package/src/renderers/table/table-utils.ts +81 -0
  169. package/src/renderers/table/types.ts +24 -0
  170. package/src/renderers/table.tsx +1 -401
  171. package/src/specs/MarkdownSession.nitro.ts +16 -2
  172. package/src/theme.ts +29 -1
  173. package/src/use-markdown-stream.ts +10 -0
  174. package/src/utils/code-highlight.ts +102 -0
  175. package/src/utils/incremental-ast.ts +224 -0
@@ -5,11 +5,12 @@ import com.facebook.react.bridge.NativeModule
5
5
  import com.facebook.react.bridge.ReactApplicationContext
6
6
  import com.facebook.react.module.model.ReactModuleInfoProvider
7
7
  import com.facebook.react.uimanager.ViewManager
8
+ import com.margelo.nitro.com.nitromarkdown.NitroMarkdownOnLoad
8
9
 
9
10
  class NitroMarkdownPackage : TurboReactPackage() {
10
11
  companion object {
11
12
  init {
12
- System.loadLibrary("NitroMarkdown")
13
+ NitroMarkdownOnLoad.initializeNative()
13
14
  }
14
15
  }
15
16
 
@@ -1,114 +1,264 @@
1
1
  #include "HybridMarkdownParser.hpp"
2
- #include <sstream>
3
- #include <iomanip>
2
+ #include <cctype>
3
+ #include <string>
4
4
 
5
5
  namespace margelo::nitro::Markdown {
6
6
 
7
- std::string HybridMarkdownParser::parse(const std::string& text) {
8
- InternalParserOptions opts;
9
- opts.gfm = true;
10
- opts.math = true;
11
-
12
- auto ast = parser_->parse(text, opts);
13
- return nodeToJson(ast);
14
- }
7
+ namespace {
15
8
 
16
- std::string HybridMarkdownParser::parseWithOptions(const std::string& text, const ParserOptions& options) {
17
- InternalParserOptions internalOpts;
18
- internalOpts.gfm = options.gfm.value_or(true);
19
- internalOpts.math = options.math.value_or(true);
20
-
21
- auto ast = parser_->parse(text, internalOpts);
22
- return nodeToJson(ast);
23
- }
9
+ inline void appendEscapedJsonString(std::string& output, const std::string& input) {
10
+ static constexpr char kHex[] = "0123456789abcdef";
24
11
 
25
- static std::string escapeJson(const std::string& s) {
26
- std::ostringstream o;
27
- for (char c : s) {
12
+ for (unsigned char c : input) {
28
13
  switch (c) {
29
- case '"': o << "\\\""; break;
30
- case '\\': o << "\\\\"; break;
31
- case '\b': o << "\\b"; break;
32
- case '\f': o << "\\f"; break;
33
- case '\n': o << "\\n"; break;
34
- case '\r': o << "\\r"; break;
35
- case '\t': o << "\\t"; break;
36
- default:
37
- if ('\x00' <= c && c <= '\x1f') {
38
- o << "\\u" << std::hex << std::setw(4) << std::setfill('0') << (int)(unsigned char)c;
14
+ case '"':
15
+ output += "\\\"";
16
+ break;
17
+ case '\\':
18
+ output += "\\\\";
19
+ break;
20
+ case '\b':
21
+ output += "\\b";
22
+ break;
23
+ case '\f':
24
+ output += "\\f";
25
+ break;
26
+ case '\n':
27
+ output += "\\n";
28
+ break;
29
+ case '\r':
30
+ output += "\\r";
31
+ break;
32
+ case '\t':
33
+ output += "\\t";
34
+ break;
35
+ default: {
36
+ if (c <= 0x1f) {
37
+ output += "\\u00";
38
+ output.push_back(kHex[(c >> 4) & 0x0f]);
39
+ output.push_back(kHex[c & 0x0f]);
39
40
  } else {
40
- o << c;
41
+ output.push_back(static_cast<char>(c));
41
42
  }
43
+ break;
44
+ }
42
45
  }
43
46
  }
44
- return o.str();
45
47
  }
46
48
 
47
- std::string HybridMarkdownParser::nodeToJson(const std::shared_ptr<InternalMarkdownNode>& node) {
48
- std::ostringstream json;
49
- json << "{";
50
- json << "\"type\":\"" << ::NitroMarkdown::nodeTypeToString(node->type) << "\"";
51
- json << ",\"beg\":" << node->beg;
52
- json << ",\"end\":" << node->end;
49
+ inline void appendStringField(std::string& output, const char* key, const std::string& value) {
50
+ output.push_back(',');
51
+ output.push_back('"');
52
+ output += key;
53
+ output += "\":\"";
54
+ appendEscapedJsonString(output, value);
55
+ output.push_back('"');
56
+ }
57
+
58
+ inline void appendIntField(std::string& output, const char* key, int value) {
59
+ output.push_back(',');
60
+ output.push_back('"');
61
+ output += key;
62
+ output += "\":";
63
+ output += std::to_string(value);
64
+ }
65
+
66
+ inline void appendOffsetField(std::string& output, const char* key, unsigned int value) {
67
+ output.push_back(',');
68
+ output.push_back('"');
69
+ output += key;
70
+ output += "\":";
71
+ output += std::to_string(value);
72
+ }
73
+
74
+ inline void appendBoolField(std::string& output, const char* key, bool value) {
75
+ output.push_back(',');
76
+ output.push_back('"');
77
+ output += key;
78
+ output += "\":";
79
+ output += value ? "true" : "false";
80
+ }
81
+
82
+ void appendNodeJson(std::string& output, const std::shared_ptr<InternalMarkdownNode>& node) {
83
+ output.push_back('{');
84
+
85
+ output += "\"type\":\"";
86
+ output += ::NitroMarkdown::nodeTypeToString(node->type);
87
+ output.push_back('"');
88
+
89
+ appendOffsetField(output, "beg", node->beg);
90
+ appendOffsetField(output, "end", node->end);
53
91
 
54
92
  if (node->content.has_value()) {
55
- json << ",\"content\":\"" << escapeJson(node->content.value()) << "\"";
93
+ appendStringField(output, "content", node->content.value());
56
94
  }
57
-
95
+
58
96
  if (node->level.has_value()) {
59
- json << ",\"level\":" << node->level.value();
97
+ appendIntField(output, "level", node->level.value());
60
98
  }
61
-
99
+
62
100
  if (node->href.has_value()) {
63
- json << ",\"href\":\"" << escapeJson(node->href.value()) << "\"";
101
+ appendStringField(output, "href", node->href.value());
64
102
  }
65
-
103
+
66
104
  if (node->title.has_value()) {
67
- json << ",\"title\":\"" << escapeJson(node->title.value()) << "\"";
105
+ appendStringField(output, "title", node->title.value());
68
106
  }
69
-
107
+
70
108
  if (node->alt.has_value()) {
71
- json << ",\"alt\":\"" << escapeJson(node->alt.value()) << "\"";
109
+ appendStringField(output, "alt", node->alt.value());
72
110
  }
73
-
111
+
74
112
  if (node->language.has_value()) {
75
- json << ",\"language\":\"" << escapeJson(node->language.value()) << "\"";
113
+ appendStringField(output, "language", node->language.value());
76
114
  }
77
-
115
+
78
116
  if (node->ordered.has_value()) {
79
- json << ",\"ordered\":" << (node->ordered.value() ? "true" : "false");
117
+ appendBoolField(output, "ordered", node->ordered.value());
80
118
  }
81
-
119
+
82
120
  if (node->start.has_value()) {
83
- json << ",\"start\":" << node->start.value();
121
+ appendIntField(output, "start", node->start.value());
84
122
  }
85
-
123
+
86
124
  if (node->checked.has_value()) {
87
- json << ",\"checked\":" << (node->checked.value() ? "true" : "false");
125
+ appendBoolField(output, "checked", node->checked.value());
88
126
  }
89
-
127
+
90
128
  if (node->isHeader.has_value()) {
91
- json << ",\"isHeader\":" << (node->isHeader.value() ? "true" : "false");
129
+ appendBoolField(output, "isHeader", node->isHeader.value());
92
130
  }
93
-
131
+
94
132
  if (node->align.has_value()) {
95
133
  std::string alignStr = ::NitroMarkdown::textAlignToString(node->align.value());
96
134
  if (!alignStr.empty()) {
97
- json << ",\"align\":\"" << alignStr << "\"";
135
+ appendStringField(output, "align", alignStr);
98
136
  }
99
137
  }
100
138
 
101
139
  if (!node->children.empty()) {
102
- json << ",\"children\":[";
140
+ output += ",\"children\":[";
103
141
  for (size_t i = 0; i < node->children.size(); ++i) {
104
- if (i > 0) json << ",";
105
- json << nodeToJson(node->children[i]);
142
+ if (i > 0) {
143
+ output.push_back(',');
144
+ }
145
+ appendNodeJson(output, node->children[i]);
106
146
  }
107
- json << "]";
147
+ output.push_back(']');
148
+ }
149
+
150
+ output.push_back('}');
151
+ }
152
+
153
+ std::string trimCopy(const std::string& input) {
154
+ size_t start = 0;
155
+ while (start < input.size() && std::isspace(static_cast<unsigned char>(input[start]))) {
156
+ start++;
157
+ }
158
+
159
+ size_t end = input.size();
160
+ while (end > start && std::isspace(static_cast<unsigned char>(input[end - 1]))) {
161
+ end--;
108
162
  }
163
+
164
+ return input.substr(start, end - start);
165
+ }
166
+
167
+ std::string flattenNodeText(const std::shared_ptr<InternalMarkdownNode>& node) {
168
+ using ::NitroMarkdown::NodeType;
169
+
170
+ if (!node) return "";
171
+
172
+ switch (node->type) {
173
+ case NodeType::Text:
174
+ case NodeType::CodeInline:
175
+ case NodeType::MathInline:
176
+ case NodeType::HtmlInline:
177
+ return node->content.value_or("");
178
+ case NodeType::CodeBlock:
179
+ case NodeType::MathBlock:
180
+ case NodeType::HtmlBlock:
181
+ return trimCopy(node->content.value_or("")) + "\n\n";
182
+ case NodeType::LineBreak:
183
+ return "\n";
184
+ case NodeType::SoftBreak:
185
+ return " ";
186
+ case NodeType::HorizontalRule:
187
+ return "---\n\n";
188
+ case NodeType::Image:
189
+ return node->alt.value_or(node->title.value_or(""));
190
+ default:
191
+ break;
192
+ }
193
+
194
+ std::string childrenText;
195
+ childrenText.reserve(128);
196
+ for (const auto& child : node->children) {
197
+ childrenText += flattenNodeText(child);
198
+ }
199
+
200
+ switch (node->type) {
201
+ case NodeType::Paragraph:
202
+ case NodeType::Heading:
203
+ case NodeType::Blockquote:
204
+ return trimCopy(childrenText) + "\n\n";
205
+ case NodeType::ListItem:
206
+ case NodeType::TaskListItem:
207
+ return trimCopy(childrenText) + "\n";
208
+ case NodeType::List:
209
+ return childrenText + "\n";
210
+ case NodeType::TableRow:
211
+ return childrenText + "\n";
212
+ case NodeType::TableCell:
213
+ return childrenText + " | ";
214
+ default:
215
+ return childrenText;
216
+ }
217
+ }
218
+
219
+ } // namespace
220
+
221
+ std::string HybridMarkdownParser::parse(const std::string& text) {
222
+ InternalParserOptions opts;
223
+ opts.gfm = true;
224
+ opts.math = true;
109
225
 
110
- json << "}";
111
- return json.str();
226
+ auto ast = parser_->parse(text, opts);
227
+ return nodeToJson(ast);
228
+ }
229
+
230
+ std::string HybridMarkdownParser::parseWithOptions(const std::string& text, const ParserOptions& options) {
231
+ InternalParserOptions internalOpts;
232
+ internalOpts.gfm = options.gfm.value_or(true);
233
+ internalOpts.math = options.math.value_or(true);
234
+
235
+ auto ast = parser_->parse(text, internalOpts);
236
+ return nodeToJson(ast);
237
+ }
238
+
239
+ std::string HybridMarkdownParser::extractPlainText(const std::string& text) {
240
+ InternalParserOptions opts;
241
+ opts.gfm = true;
242
+ opts.math = true;
243
+
244
+ auto ast = parser_->parse(text, opts);
245
+ return flattenNodeText(ast);
246
+ }
247
+
248
+ std::string HybridMarkdownParser::extractPlainTextWithOptions(const std::string& text, const ParserOptions& options) {
249
+ InternalParserOptions internalOpts;
250
+ internalOpts.gfm = options.gfm.value_or(true);
251
+ internalOpts.math = options.math.value_or(true);
252
+
253
+ auto ast = parser_->parse(text, internalOpts);
254
+ return flattenNodeText(ast);
255
+ }
256
+
257
+ std::string HybridMarkdownParser::nodeToJson(const std::shared_ptr<InternalMarkdownNode>& node) {
258
+ std::string json;
259
+ json.reserve(1024);
260
+ appendNodeJson(json, node);
261
+ return json;
112
262
  }
113
263
 
114
264
  } // namespace margelo::nitro::Markdown
@@ -19,6 +19,8 @@ public:
19
19
 
20
20
  std::string parse(const std::string& text) override;
21
21
  std::string parseWithOptions(const std::string& text, const ParserOptions& options) override;
22
+ std::string extractPlainText(const std::string& text) override;
23
+ std::string extractPlainTextWithOptions(const std::string& text, const ParserOptions& options) override;
22
24
 
23
25
  private:
24
26
  std::unique_ptr<::NitroMarkdown::MD4CParser> parser_;
@@ -3,7 +3,7 @@ import NitroModules
3
3
 
4
4
  class HybridMarkdownSession: HybridMarkdownSessionSpec {
5
5
  private var buffer = ""
6
- private var listeners: [UUID: () -> Void] = [:]
6
+ private var listeners: [UUID: (Double, Double) -> Void] = [:]
7
7
  private let lock = NSLock()
8
8
 
9
9
  private(set) var version: Int = 0
@@ -15,13 +15,22 @@ class HybridMarkdownSession: HybridMarkdownSessionSpec {
15
15
  var memorySize: Int {
16
16
  return buffer.utf8.count + MemoryLayout<HybridMarkdownSession>.size
17
17
  }
18
+
19
+ private func utf16Length(_ value: String) -> Int {
20
+ return (value as NSString).length
21
+ }
18
22
 
19
- func append(chunk: String) throws {
23
+ func append(chunk: String) throws -> Double {
24
+ let from: Int
25
+ let to: Int
20
26
  lock.lock()
27
+ from = utf16Length(buffer)
21
28
  buffer += chunk
29
+ to = utf16Length(buffer)
22
30
  version += 1
23
31
  lock.unlock()
24
- notifyListeners()
32
+ notifyListeners(from: Double(from), to: Double(to))
33
+ return Double(to)
25
34
  }
26
35
 
27
36
  func clear() throws {
@@ -30,7 +39,7 @@ class HybridMarkdownSession: HybridMarkdownSessionSpec {
30
39
  highlightPosition = 0
31
40
  version += 1
32
41
  lock.unlock()
33
- notifyListeners()
42
+ notifyListeners(from: 0, to: 0)
34
43
  }
35
44
 
36
45
  func getAllText() throws -> String {
@@ -38,8 +47,25 @@ class HybridMarkdownSession: HybridMarkdownSessionSpec {
38
47
  defer { lock.unlock() }
39
48
  return buffer
40
49
  }
50
+
51
+ func getLength() throws -> Double {
52
+ lock.lock()
53
+ defer { lock.unlock() }
54
+ return Double(utf16Length(buffer))
55
+ }
56
+
57
+ func getTextRange(from: Double, to: Double) throws -> String {
58
+ lock.lock()
59
+ defer { lock.unlock() }
60
+
61
+ let text = buffer as NSString
62
+ let length = text.length
63
+ let start = max(0, min(Int(from), length))
64
+ let end = max(start, min(Int(to), length))
65
+ return text.substring(with: NSRange(location: start, length: end - start))
66
+ }
41
67
 
42
- func addListener(listener: @escaping () -> Void) throws -> () -> Void {
68
+ func addListener(listener: @escaping (Double, Double) -> Void) throws -> () -> Void {
43
69
  let id = UUID()
44
70
  lock.lock()
45
71
  listeners[id] = listener
@@ -52,13 +78,31 @@ class HybridMarkdownSession: HybridMarkdownSessionSpec {
52
78
  }
53
79
  }
54
80
 
55
- private func notifyListeners() {
81
+ func reset(text: String) -> Void {
82
+ lock.lock()
83
+ buffer = text
84
+ lock.unlock()
85
+ notifyListeners(from: 0, to: Double((text as NSString).length))
86
+ }
87
+
88
+ func replace(from: Double, to: Double, text: String) -> Double {
89
+ lock.lock()
90
+ let startIdx = buffer.index(buffer.startIndex, offsetBy: Int(from), limitedBy: buffer.endIndex) ?? buffer.endIndex
91
+ let endIdx = buffer.index(buffer.startIndex, offsetBy: Int(to), limitedBy: buffer.endIndex) ?? buffer.endIndex
92
+ buffer.replaceSubrange(startIdx..<endIdx, with: text)
93
+ let newLength = Double((buffer as NSString).length)
94
+ lock.unlock()
95
+ notifyListeners(from: from, to: from + Double((text as NSString).length))
96
+ return newLength
97
+ }
98
+
99
+ private func notifyListeners(from: Double, to: Double) {
56
100
  lock.lock()
57
101
  let currentListeners = Array(listeners.values)
58
102
  lock.unlock()
59
103
 
60
104
  for listener in currentListeners {
61
- listener()
105
+ listener(from, to)
62
106
  }
63
107
  }
64
108
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_theme","MarkdownContext","exports","createContext","renderers","theme","defaultMarkdownTheme","styles","undefined","stylingStrategy","onLinkPress","useMarkdownContext","useContext"],"sourceRoot":"../../src","sources":["MarkdownContext.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAOA,IAAAC,MAAA,GAAAD,OAAA;AAwFO,MAAME,eAAe,GAAAC,OAAA,CAAAD,eAAA,gBAAG,IAAAE,oBAAa,EAAuB;EACjEC,SAAS,EAAE,CAAC,CAAC;EACbC,KAAK,EAAEC,2BAAoB;EAC3BC,MAAM,EAAEC,SAAS;EACjBC,eAAe,EAAE,aAAa;EAC9BC,WAAW,EAAEF;AACf,CAAC,CAAC;AAEK,MAAMG,kBAAkB,GAAGA,CAAA,KAAM,IAAAC,iBAAU,EAACX,eAAe,CAAC;AAACC,OAAA,CAAAS,kBAAA,GAAAA,kBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_theme","MarkdownContext","exports","createContext","renderers","theme","defaultMarkdownTheme","styles","undefined","stylingStrategy","onLinkPress","useMarkdownContext","useContext"],"sourceRoot":"../../src","sources":["MarkdownContext.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAOA,IAAAC,MAAA,GAAAD,OAAA;AA8FO,MAAME,eAAe,GAAAC,OAAA,CAAAD,eAAA,gBAAG,IAAAE,oBAAa,EAAuB;EACjEC,SAAS,EAAE,CAAC,CAAC;EACbC,KAAK,EAAEC,2BAAoB;EAC3BC,MAAM,EAAEC,SAAS;EACjBC,eAAe,EAAE,aAAa;EAC9BC,WAAW,EAAEF;AACf,CAAC,CAAC;AAEK,MAAMG,kBAAkB,GAAGA,CAAA,KAAM,IAAAC,iBAAU,EAACX,eAAe,CAAC;AAACC,OAAA,CAAAS,kBAAA,GAAAA,kBAAA","ignoreList":[]}
@@ -3,9 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getTextContent = exports.getFlattenedText = exports.MarkdownParserModule = void 0;
6
+ exports.MarkdownParserModule = void 0;
7
+ exports.extractPlainText = extractPlainText;
8
+ exports.extractPlainTextWithOptions = extractPlainTextWithOptions;
9
+ exports.getTextContent = exports.getFlattenedText = void 0;
7
10
  exports.parseMarkdown = parseMarkdown;
8
11
  exports.parseMarkdownWithOptions = parseMarkdownWithOptions;
12
+ exports.stripSourceOffsets = stripSourceOffsets;
9
13
  var _reactNativeNitroModules = require("react-native-nitro-modules");
10
14
  /**
11
15
  * Headless entry point for react-native-nitro-markdown.
@@ -33,8 +37,14 @@ const MarkdownParserModule = exports.MarkdownParserModule = _reactNativeNitroMod
33
37
  * @returns The root node of the parsed AST
34
38
  */
35
39
  function parseMarkdown(text) {
36
- const jsonStr = MarkdownParserModule.parse(text);
37
- return JSON.parse(jsonStr);
40
+ if (typeof MarkdownParserModule.parse === "function") {
41
+ const jsonStr = MarkdownParserModule.parse(text);
42
+ return JSON.parse(jsonStr);
43
+ }
44
+ return {
45
+ type: "document",
46
+ children: []
47
+ };
38
48
  }
39
49
 
40
50
  /**
@@ -44,8 +54,35 @@ function parseMarkdown(text) {
44
54
  * @returns The root node of the parsed AST
45
55
  */
46
56
  function parseMarkdownWithOptions(text, options) {
47
- const jsonStr = MarkdownParserModule.parseWithOptions(text, options);
48
- return JSON.parse(jsonStr);
57
+ if (typeof MarkdownParserModule.parseWithOptions === "function") {
58
+ const jsonStr = MarkdownParserModule.parseWithOptions(text, options);
59
+ return JSON.parse(jsonStr);
60
+ }
61
+ return {
62
+ type: "document",
63
+ children: []
64
+ };
65
+ }
66
+
67
+ /**
68
+ * Parse markdown and return flattened plain text directly from native parser.
69
+ * Useful for search/indexing flows that don't need full AST rendering.
70
+ */
71
+ function extractPlainText(text) {
72
+ if (typeof MarkdownParserModule.extractPlainText === "function") {
73
+ return MarkdownParserModule.extractPlainText(text);
74
+ }
75
+ return getFlattenedText(parseMarkdown(text));
76
+ }
77
+
78
+ /**
79
+ * Parse markdown with options and return flattened plain text from native parser.
80
+ */
81
+ function extractPlainTextWithOptions(text, options) {
82
+ if (typeof MarkdownParserModule.extractPlainTextWithOptions === "function") {
83
+ return MarkdownParserModule.extractPlainTextWithOptions(text, options);
84
+ }
85
+ return getFlattenedText(parseMarkdownWithOptions(text, options));
49
86
  }
50
87
  /**
51
88
  * Extract text content from a markdown node recursively.
@@ -94,5 +131,24 @@ const getFlattenedText = node => {
94
131
  return childrenText;
95
132
  }
96
133
  };
134
+
135
+ /**
136
+ * Recursively removes `beg`/`end` source offset fields from an AST.
137
+ * Useful to reduce memory in environments that don't need source mapping.
138
+ */
97
139
  exports.getFlattenedText = getFlattenedText;
140
+ function stripSourceOffsets(node) {
141
+ const {
142
+ beg: _beg,
143
+ end: _end,
144
+ children,
145
+ ...rest
146
+ } = node;
147
+ return {
148
+ ...rest,
149
+ ...(children ? {
150
+ children: children.map(stripSourceOffsets)
151
+ } : {})
152
+ };
153
+ }
98
154
  //# sourceMappingURL=headless.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeNitroModules","require","MarkdownParserModule","exports","NitroModules","createHybridObject","parseMarkdown","text","jsonStr","parse","JSON","parseMarkdownWithOptions","options","parseWithOptions","getTextContent","node","content","children","map","join","getFlattenedText","type","trim","alt","title","childrenText"],"sourceRoot":"../../src","sources":["headless.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeNitroModules","require","MarkdownParserModule","exports","NitroModules","createHybridObject","parseMarkdown","text","parse","jsonStr","JSON","type","children","parseMarkdownWithOptions","options","parseWithOptions","extractPlainText","getFlattenedText","extractPlainTextWithOptions","getTextContent","node","content","map","join","trim","alt","title","childrenText","stripSourceOffsets","beg","_beg","end","_end","rest"],"sourceRoot":"../../src","sources":["headless.ts"],"mappings":"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","ignoreList":[]}
@@ -27,7 +27,8 @@ var _exportNames = {
27
27
  MathBlock: true,
28
28
  createMarkdownSession: true,
29
29
  useMarkdownSession: true,
30
- useStream: true
30
+ useStream: true,
31
+ defaultHighlighter: true
31
32
  };
32
33
  Object.defineProperty(exports, "Blockquote", {
33
34
  enumerable: true,
@@ -137,6 +138,12 @@ Object.defineProperty(exports, "createMarkdownSession", {
137
138
  return _MarkdownSession.createMarkdownSession;
138
139
  }
139
140
  });
141
+ Object.defineProperty(exports, "defaultHighlighter", {
142
+ enumerable: true,
143
+ get: function () {
144
+ return _codeHighlight.defaultHighlighter;
145
+ }
146
+ });
140
147
  Object.defineProperty(exports, "defaultMarkdownTheme", {
141
148
  enumerable: true,
142
149
  get: function () {
@@ -201,4 +208,5 @@ var _image = require("./renderers/image.js");
201
208
  var _math = require("./renderers/math.js");
202
209
  var _MarkdownSession = require("./MarkdownSession.js");
203
210
  var _useMarkdownStream = require("./use-markdown-stream.js");
211
+ var _codeHighlight = require("./utils/code-highlight.js");
204
212
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_headless","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_markdown","_markdownStream","_MarkdownContext","_theme","_heading","_paragraph","_link","_blockquote","_horizontalRule","_code","_list","_table","_image","_math","_MarkdownSession","_useMarkdownStream"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,SAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAL,SAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,SAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AAEA,IAAAS,SAAA,GAAAb,OAAA;AACA,IAAAc,eAAA,GAAAd,OAAA;AAEA,IAAAe,gBAAA,GAAAf,OAAA;AAmBA,IAAAgB,MAAA,GAAAhB,OAAA;AAYA,IAAAiB,QAAA,GAAAjB,OAAA;AACA,IAAAkB,UAAA,GAAAlB,OAAA;AACA,IAAAmB,KAAA,GAAAnB,OAAA;AACA,IAAAoB,WAAA,GAAApB,OAAA;AACA,IAAAqB,eAAA,GAAArB,OAAA;AACA,IAAAsB,KAAA,GAAAtB,OAAA;AACA,IAAAuB,KAAA,GAAAvB,OAAA;AACA,IAAAwB,MAAA,GAAAxB,OAAA;AACA,IAAAyB,MAAA,GAAAzB,OAAA;AACA,IAAA0B,KAAA,GAAA1B,OAAA;AAEA,IAAA2B,gBAAA,GAAA3B,OAAA;AAEA,IAAA4B,kBAAA,GAAA5B,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_headless","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_markdown","_markdownStream","_MarkdownContext","_theme","_heading","_paragraph","_link","_blockquote","_horizontalRule","_code","_list","_table","_image","_math","_MarkdownSession","_useMarkdownStream","_codeHighlight"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,SAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAL,SAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,SAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AAEA,IAAAS,SAAA,GAAAb,OAAA;AAOA,IAAAc,eAAA,GAAAd,OAAA;AAGA,IAAAe,gBAAA,GAAAf,OAAA;AAmBA,IAAAgB,MAAA,GAAAhB,OAAA;AAYA,IAAAiB,QAAA,GAAAjB,OAAA;AACA,IAAAkB,UAAA,GAAAlB,OAAA;AACA,IAAAmB,KAAA,GAAAnB,OAAA;AACA,IAAAoB,WAAA,GAAApB,OAAA;AACA,IAAAqB,eAAA,GAAArB,OAAA;AACA,IAAAsB,KAAA,GAAAtB,OAAA;AACA,IAAAuB,KAAA,GAAAvB,OAAA;AACA,IAAAwB,MAAA,GAAAxB,OAAA;AACA,IAAAyB,MAAA,GAAAzB,OAAA;AACA,IAAA0B,KAAA,GAAA1B,OAAA;AAEA,IAAA2B,gBAAA,GAAA3B,OAAA;AAEA,IAAA4B,kBAAA,GAAA5B,OAAA;AAGA,IAAA6B,cAAA,GAAA7B,OAAA","ignoreList":[]}