react-native-marked 1.6.11 → 1.6.13
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/dist/commonjs/lib/Markdown.js +6 -7
- package/dist/commonjs/lib/Markdown.js.map +1 -1
- package/dist/commonjs/lib/Parser.js +123 -125
- package/dist/commonjs/lib/Parser.js.map +1 -1
- package/dist/commonjs/lib/Renderer.js +2 -2
- package/dist/commonjs/lib/Renderer.js.map +1 -1
- package/dist/module/lib/Markdown.js +6 -6
- package/dist/module/lib/Markdown.js.map +1 -1
- package/dist/module/lib/Parser.js +123 -125
- package/dist/module/lib/Parser.js.map +1 -1
- package/dist/module/lib/Renderer.js +2 -2
- package/dist/module/lib/Renderer.js.map +1 -1
- package/dist/typescript/src/lib/Markdown.d.ts.map +1 -1
- package/dist/typescript/src/lib/Parser.d.ts +2 -2
- package/dist/typescript/src/lib/Parser.d.ts.map +1 -1
- package/package.json +14 -14
- package/src/lib/Markdown.tsx +14 -4
- package/src/lib/Parser.tsx +158 -157
- package/src/lib/Renderer.tsx +1 -1
|
@@ -24,7 +24,7 @@ class Parser {
|
|
|
24
24
|
*/
|
|
25
25
|
if (t.type === "image" || t.type === "link" && t.tokens && t.tokens[0] && t.tokens[0].type === "image") {
|
|
26
26
|
// Render existing inline tokens in the queue
|
|
27
|
-
const parsed = this.
|
|
27
|
+
const parsed = this._parse(tokenRenderQueue);
|
|
28
28
|
|
|
29
29
|
if (parsed.length > 0) {
|
|
30
30
|
siblingNodes.push(this.renderer.getTextNode(parsed, textStyle));
|
|
@@ -32,7 +32,7 @@ class Parser {
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
if (t.type === "image") {
|
|
35
|
-
siblingNodes.push(this.
|
|
35
|
+
siblingNodes.push(this._parseToken(t));
|
|
36
36
|
} else if (t.type === "link") {
|
|
37
37
|
const imageToken = t.tokens[0];
|
|
38
38
|
const href = getValidURL(this.baseUrl, t.href);
|
|
@@ -48,7 +48,7 @@ class Parser {
|
|
|
48
48
|
/* Remaining temp tokens if any */
|
|
49
49
|
|
|
50
50
|
if (tokenRenderQueue.length > 0) {
|
|
51
|
-
siblingNodes.push(this.renderer.getTextNode(this.
|
|
51
|
+
siblingNodes.push(this.renderer.getTextNode(this._parse(tokenRenderQueue), {}));
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
return siblingNodes;
|
|
@@ -69,150 +69,148 @@ class Parser {
|
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
parse(tokens) {
|
|
72
|
+
return this._parse(tokens);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
_parse(tokens, styles) {
|
|
72
76
|
const elements = tokens.map(token => {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}
|
|
77
|
+
return this._parseToken(token, styles);
|
|
78
|
+
});
|
|
79
|
+
return elements.filter(element => element !== null);
|
|
80
|
+
}
|
|
78
81
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
_parseToken(token, styles) {
|
|
83
|
+
switch (token.type) {
|
|
84
|
+
case "space":
|
|
85
|
+
{
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
84
88
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
+
case "paragraph":
|
|
90
|
+
{
|
|
91
|
+
const paragraphChildren = this.getNormalizedSiblingNodesForBlockAndInlineTokens(token.tokens, this.styles.text);
|
|
92
|
+
return this.renderer.getViewNode(paragraphChildren, this.styles.paragraph);
|
|
93
|
+
}
|
|
89
94
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
+
case "blockquote":
|
|
96
|
+
{
|
|
97
|
+
return this.renderer.getBlockquoteNode(this._parse(token.tokens), this.styles.blockquote);
|
|
98
|
+
}
|
|
95
99
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
+
case "heading":
|
|
101
|
+
{
|
|
102
|
+
const styles = this.headingStylesMap[token.depth];
|
|
103
|
+
return this.renderer.getTextNode(this._parse(token.tokens, styles), styles);
|
|
104
|
+
}
|
|
100
105
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
106
|
+
case "code":
|
|
107
|
+
{
|
|
108
|
+
return this.renderer.getCodeBlockNode(token.text, this.styles.code, this.styles.em);
|
|
109
|
+
}
|
|
105
110
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
if (cItem.type === "text") {
|
|
111
|
-
/* getViewNode since tokens could contain a block like elements (i.e. img) */
|
|
112
|
-
const childTokens = cItem.tokens || [];
|
|
113
|
-
const listChildren = this.getNormalizedSiblingNodesForBlockAndInlineTokens(childTokens, this.styles.li);
|
|
114
|
-
return this.renderer.getViewNode(listChildren, this.styles.li);
|
|
115
|
-
}
|
|
116
|
-
/* Parse the nested token */
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
return this.parse([cItem]);
|
|
120
|
-
});
|
|
121
|
-
return this.renderer.getViewNode(children, this.styles.li);
|
|
122
|
-
});
|
|
123
|
-
return this.renderer.getListNode(token.ordered, li, this.styles.list, this.styles.li);
|
|
124
|
-
}
|
|
111
|
+
case "hr":
|
|
112
|
+
{
|
|
113
|
+
return this.renderer.getViewNode(null, this.styles.hr);
|
|
114
|
+
}
|
|
125
115
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
116
|
+
case "list":
|
|
117
|
+
{
|
|
118
|
+
const li = token.items.map(item => {
|
|
119
|
+
const children = item.tokens.map(cItem => {
|
|
120
|
+
if (cItem.type === "text") {
|
|
121
|
+
/* getViewNode since tokens could contain a block like elements (i.e. img) */
|
|
122
|
+
const childTokens = cItem.tokens || [];
|
|
123
|
+
const listChildren = this.getNormalizedSiblingNodesForBlockAndInlineTokens(childTokens, this.styles.li);
|
|
124
|
+
return this.renderer.getViewNode(listChildren, this.styles.li);
|
|
125
|
+
}
|
|
126
|
+
/* Parse the nested token */
|
|
132
127
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
switch (token.type) {
|
|
136
|
-
case "escape":
|
|
137
|
-
{
|
|
138
|
-
return this.renderer.getTextNode(token.text, { ...this.styles.text,
|
|
139
|
-
...styles
|
|
128
|
+
|
|
129
|
+
return this._parseToken(cItem);
|
|
140
130
|
});
|
|
141
|
-
|
|
131
|
+
return this.renderer.getViewNode(children, this.styles.li);
|
|
132
|
+
});
|
|
133
|
+
return this.renderer.getListNode(token.ordered, li, this.styles.list, this.styles.li);
|
|
134
|
+
}
|
|
142
135
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
136
|
+
case "escape":
|
|
137
|
+
{
|
|
138
|
+
return this.renderer.getTextNode(token.text, { ...this.styles.text,
|
|
139
|
+
...styles
|
|
140
|
+
});
|
|
141
|
+
}
|
|
149
142
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
143
|
+
case "link":
|
|
144
|
+
{
|
|
145
|
+
// Note: Linking Images (https://www.markdownguide.org/basic-syntax/#linking-images) are wrapped
|
|
146
|
+
// in paragraph token, so will be handled via `getNormalizedSiblingNodesForBlockAndInlineTokens`
|
|
147
|
+
const linkStyle = { ...styles,
|
|
148
|
+
...this.styles.link // To override color property
|
|
154
149
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
150
|
+
};
|
|
151
|
+
const href = getValidURL(this.baseUrl, token.href);
|
|
152
|
+
return this.renderer.getTextLinkNode(this._parse(token.tokens, linkStyle), href, linkStyle);
|
|
153
|
+
}
|
|
159
154
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
};
|
|
165
|
-
return this.renderer.getTextNode(this.parseInline(token.tokens, boldStyle), boldStyle);
|
|
166
|
-
}
|
|
155
|
+
case "image":
|
|
156
|
+
{
|
|
157
|
+
return this.renderer.getImageNode(token.href, token.text || token.title, this.styles.image);
|
|
158
|
+
}
|
|
167
159
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
160
|
+
case "strong":
|
|
161
|
+
{
|
|
162
|
+
const boldStyle = { ...this.styles.strong,
|
|
163
|
+
...styles
|
|
164
|
+
};
|
|
165
|
+
return this.renderer.getTextNode(this._parse(token.tokens, boldStyle), boldStyle);
|
|
166
|
+
}
|
|
175
167
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
168
|
+
case "em":
|
|
169
|
+
{
|
|
170
|
+
const italicStyle = { ...this.styles.em,
|
|
171
|
+
...styles
|
|
172
|
+
};
|
|
173
|
+
return this.renderer.getTextNode(this._parse(token.tokens, italicStyle), italicStyle);
|
|
174
|
+
}
|
|
182
175
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
176
|
+
case "codespan":
|
|
177
|
+
{
|
|
178
|
+
return this.renderer.getTextNode(token.text, { ...this.styles.codespan,
|
|
179
|
+
...styles
|
|
180
|
+
});
|
|
181
|
+
}
|
|
187
182
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
};
|
|
193
|
-
return this.renderer.getTextNode(this.parseInline(token.tokens, strikethroughStyle), strikethroughStyle);
|
|
194
|
-
}
|
|
183
|
+
case "br":
|
|
184
|
+
{
|
|
185
|
+
return this.renderer.getTextNode("\n", {});
|
|
186
|
+
}
|
|
195
187
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
{
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
188
|
+
case "del":
|
|
189
|
+
{
|
|
190
|
+
const strikethroughStyle = { ...this.styles.strikethrough,
|
|
191
|
+
...styles
|
|
192
|
+
};
|
|
193
|
+
return this.renderer.getTextNode(this._parse(token.tokens, strikethroughStyle), strikethroughStyle);
|
|
194
|
+
}
|
|
202
195
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
196
|
+
case "text":
|
|
197
|
+
case "html":
|
|
198
|
+
{
|
|
199
|
+
if (token.type === "html") {
|
|
200
|
+
console.warn("react-native-marked: rendering html from markdown is not supported");
|
|
206
201
|
}
|
|
207
202
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
203
|
+
return this.renderer.getTextNode(token.raw, { ...this.styles.text,
|
|
204
|
+
...styles
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
default:
|
|
209
|
+
{
|
|
210
|
+
console.warn(`react-native-marked: token with '${token.type}' type was not found.`);
|
|
211
|
+
return null;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
216
214
|
}
|
|
217
215
|
|
|
218
216
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Renderer","getValidURL","Parser","constructor","options","tokens","textStyle","tokenRenderQueue","siblingNodes","forEach","t","type","parsed","
|
|
1
|
+
{"version":3,"names":["Renderer","getValidURL","Parser","constructor","options","tokens","textStyle","tokenRenderQueue","siblingNodes","forEach","t","type","parsed","_parse","length","push","renderer","getTextNode","_parseToken","imageToken","href","baseUrl","getImageLinkNode","text","title","styles","image","headingStylesMap","h1","h2","h3","h4","h5","h6","parse","elements","map","token","filter","element","paragraphChildren","getNormalizedSiblingNodesForBlockAndInlineTokens","getViewNode","paragraph","getBlockquoteNode","blockquote","depth","getCodeBlockNode","code","em","hr","li","items","item","children","cItem","childTokens","listChildren","getListNode","ordered","list","linkStyle","link","getTextLinkNode","getImageNode","boldStyle","strong","italicStyle","codespan","strikethroughStyle","strikethrough","console","warn","raw"],"sourceRoot":"../../src","sources":["Parser.tsx"],"mappings":"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"}
|
|
@@ -48,9 +48,9 @@ class Renderer {
|
|
|
48
48
|
|
|
49
49
|
getCodeBlockNode(text, containerStyle, textStyle) {
|
|
50
50
|
return /*#__PURE__*/React.createElement(ScrollView, {
|
|
51
|
+
horizontal: true,
|
|
51
52
|
key: generateRandomString(),
|
|
52
|
-
contentContainerStyle: containerStyle
|
|
53
|
-
horizontal: true
|
|
53
|
+
contentContainerStyle: containerStyle
|
|
54
54
|
}, /*#__PURE__*/React.createElement(Text, {
|
|
55
55
|
style: textStyle
|
|
56
56
|
}, text));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","ScrollView","View","Text","TouchableHighlight","MarkedList","Disc","Decimal","MDImage","generateRandomString","onLinkPress","Renderer","children","styles","href","imageUrl","alt","style","imageNode","getImageNode","getViewNode","getCodeBlockNode","text","containerStyle","textStyle","getBlockquoteNode","uri","getListNode","ordered","li","listStyle","map","node"],"sourceRoot":"../../src","sources":["Renderer.tsx"],"mappings":";;AAAA,OAAOA,KAAP,MAAiC,OAAjC;AACA,SACCC,UADD,EAECC,IAFD,EAGCC,IAHD,EAICC,kBAJD,QAQO,cARP;AASA,OAAOC,UAAP,MAAuB,wBAAvB;AACA,OAAOC,IAAP,MAAiB,mCAAjB;AACA,OAAOC,OAAP,MAAoB,sCAApB;AACA,OAAOC,OAAP,MAAoB,yBAApB;AACA,SAASC,oBAAT,QAAqC,iBAArC;AACA,SAASC,WAAT,QAA4B,mBAA5B;;AAEA,MAAMC,QAAN,CAAe;EAAA;IAAA,qCACA,CAACC,QAAD,EAAiCC,MAAjC,KAAwD;MACrE,oBACC,oBAAC,IAAD;QAAM,GAAG,EAAEJ,oBAAoB,EAA/B;QAAmC,KAAK,EAAEI;MAA1C,GACED,QADF,CADD;IAKA,CAPa;;IAAA,yCASI,CACjBA,QADiB,EAEjBE,IAFiB,EAGjBD,MAHiB,KAIb;MACJ,oBACC,oBAAC,IAAD;QACC,iBAAiB,EAAC,MADnB;QAEC,iBAAiB,EAAC,uBAFnB;QAGC,GAAG,EAAEJ,oBAAoB,EAH1B;QAIC,OAAO,EAAEC,WAAW,CAACI,IAAD,CAJrB;QAKC,KAAK,EAAED;MALR,GAOED,QAPF,CADD;IAWA,CAzBa;;IAAA,0CA2BK,CAClBE,IADkB,EAElBC,QAFkB,EAGlBC,GAHkB,EAIlBC,KAJkB,KAKd;MACJ,MAAMC,SAAS,GAAG,KAAKC,YAAL,CAAkBJ,QAAlB,EAA4BC,GAA5B,EAAiCC,KAAjC,CAAlB;MACA,oBACC,oBAAC,kBAAD;QACC,iBAAiB,EAAC,MADnB;QAEC,iBAAiB,EAAC,uBAFnB;QAGC,OAAO,EAAEP,WAAW,CAACI,IAAD,CAHrB;QAIC,GAAG,EAAEL,oBAAoB;MAJ1B,GAMES,SANF,CADD;IAUA,CA5Ca;EAAA;;EA8CdE,WAAW,CAACR,QAAD,EAA+BC,MAA/B,EAAmD;IAC7D,oBACC,oBAAC,IAAD;MAAM,GAAG,EAAEJ,oBAAoB,EAA/B;MAAmC,KAAK,EAAEI;IAA1C,GACED,QADF,CADD;EAKA;;EAEDS,gBAAgB,CACfC,IADe,EAEfC,cAFe,EAGfC,SAHe,EAId;IACD,oBACC,oBAAC,UAAD;MACC,GAAG,EAAEf,oBAAoB,
|
|
1
|
+
{"version":3,"names":["React","ScrollView","View","Text","TouchableHighlight","MarkedList","Disc","Decimal","MDImage","generateRandomString","onLinkPress","Renderer","children","styles","href","imageUrl","alt","style","imageNode","getImageNode","getViewNode","getCodeBlockNode","text","containerStyle","textStyle","getBlockquoteNode","uri","getListNode","ordered","li","listStyle","map","node"],"sourceRoot":"../../src","sources":["Renderer.tsx"],"mappings":";;AAAA,OAAOA,KAAP,MAAiC,OAAjC;AACA,SACCC,UADD,EAECC,IAFD,EAGCC,IAHD,EAICC,kBAJD,QAQO,cARP;AASA,OAAOC,UAAP,MAAuB,wBAAvB;AACA,OAAOC,IAAP,MAAiB,mCAAjB;AACA,OAAOC,OAAP,MAAoB,sCAApB;AACA,OAAOC,OAAP,MAAoB,yBAApB;AACA,SAASC,oBAAT,QAAqC,iBAArC;AACA,SAASC,WAAT,QAA4B,mBAA5B;;AAEA,MAAMC,QAAN,CAAe;EAAA;IAAA,qCACA,CAACC,QAAD,EAAiCC,MAAjC,KAAwD;MACrE,oBACC,oBAAC,IAAD;QAAM,GAAG,EAAEJ,oBAAoB,EAA/B;QAAmC,KAAK,EAAEI;MAA1C,GACED,QADF,CADD;IAKA,CAPa;;IAAA,yCASI,CACjBA,QADiB,EAEjBE,IAFiB,EAGjBD,MAHiB,KAIb;MACJ,oBACC,oBAAC,IAAD;QACC,iBAAiB,EAAC,MADnB;QAEC,iBAAiB,EAAC,uBAFnB;QAGC,GAAG,EAAEJ,oBAAoB,EAH1B;QAIC,OAAO,EAAEC,WAAW,CAACI,IAAD,CAJrB;QAKC,KAAK,EAAED;MALR,GAOED,QAPF,CADD;IAWA,CAzBa;;IAAA,0CA2BK,CAClBE,IADkB,EAElBC,QAFkB,EAGlBC,GAHkB,EAIlBC,KAJkB,KAKd;MACJ,MAAMC,SAAS,GAAG,KAAKC,YAAL,CAAkBJ,QAAlB,EAA4BC,GAA5B,EAAiCC,KAAjC,CAAlB;MACA,oBACC,oBAAC,kBAAD;QACC,iBAAiB,EAAC,MADnB;QAEC,iBAAiB,EAAC,uBAFnB;QAGC,OAAO,EAAEP,WAAW,CAACI,IAAD,CAHrB;QAIC,GAAG,EAAEL,oBAAoB;MAJ1B,GAMES,SANF,CADD;IAUA,CA5Ca;EAAA;;EA8CdE,WAAW,CAACR,QAAD,EAA+BC,MAA/B,EAAmD;IAC7D,oBACC,oBAAC,IAAD;MAAM,GAAG,EAAEJ,oBAAoB,EAA/B;MAAmC,KAAK,EAAEI;IAA1C,GACED,QADF,CADD;EAKA;;EAEDS,gBAAgB,CACfC,IADe,EAEfC,cAFe,EAGfC,SAHe,EAId;IACD,oBACC,oBAAC,UAAD;MACC,UAAU,MADX;MAEC,GAAG,EAAEf,oBAAoB,EAF1B;MAGC,qBAAqB,EAAEc;IAHxB,gBAKC,oBAAC,IAAD;MAAM,KAAK,EAAEC;IAAb,GAAyBF,IAAzB,CALD,CADD;EASA;;EAEDG,iBAAiB,CAACb,QAAD,EAAwBC,MAAxB,EAA4C;IAC5D,oBACC,oBAAC,IAAD;MAAM,GAAG,EAAEJ,oBAAoB,EAA/B;MAAmC,KAAK,EAAEI;IAA1C,GACED,QADF,CADD;EAKA;;EAEDO,YAAY,CAACO,GAAD,EAAcV,GAAd,EAA4BC,KAA5B,EAAgD;IAC3D,oBACC,oBAAC,OAAD;MAAS,GAAG,EAAER,oBAAoB,EAAlC;MAAsC,GAAG,EAAEiB,GAA3C;MAAgD,GAAG,EAAEV,GAArD;MAA0D,KAAK,EAAEC;IAAjE,EADD;EAGA;;EAEDU,WAAW,CACVC,OADU,EAEVC,EAFU,EAGVC,SAHU,EAIVN,SAJU,EAKT;IACD,oBACC,oBAAC,UAAD;MACC,eAAe,EAAEI,OAAO,GAAGrB,OAAH,GAAaD,IADtC;MAEC,eAAe,EAAEkB,SAFlB;MAGC,cAAc,EAAEM,SAHjB;MAIC,GAAG,EAAErB,oBAAoB;IAJ1B,GAMEoB,EAAE,CAACE,GAAH,CAAQC,IAAD,IAAUA,IAAjB,CANF,CADD;EAUA;;AApGa;;AAuGf,eAAerB,QAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Markdown.d.ts","sourceRoot":"","sources":["../../../../src/lib/Markdown.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Markdown.d.ts","sourceRoot":"","sources":["../../../../src/lib/Markdown.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;;AAgD7C,wBAA8B"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
|
-
import type { TextStyle, ViewStyle, ImageStyle } from "react-native";
|
|
3
2
|
import type { marked } from "marked";
|
|
4
3
|
import type { ParserOptions } from "./types";
|
|
5
4
|
declare class Parser {
|
|
@@ -9,7 +8,8 @@ declare class Parser {
|
|
|
9
8
|
private baseUrl;
|
|
10
9
|
constructor(options: ParserOptions);
|
|
11
10
|
parse(tokens: marked.Token[]): ReactNode[];
|
|
12
|
-
|
|
11
|
+
private _parse;
|
|
12
|
+
private _parseToken;
|
|
13
13
|
private getNormalizedSiblingNodesForBlockAndInlineTokens;
|
|
14
14
|
}
|
|
15
15
|
export default Parser;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Parser.d.ts","sourceRoot":"","sources":["../../../../src/lib/Parser.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Parser.d.ts","sourceRoot":"","sources":["../../../../src/lib/Parser.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGrC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG7C,cAAM,MAAM;IACX,OAAO,CAAC,QAAQ,CAAC;IACjB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,gBAAgB,CAAwC;IAChE,OAAO,CAAC,OAAO,CAAS;gBACZ,OAAO,EAAE,aAAa;IAclC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE;IAI5B,OAAO,CAAC,MAAM;IAUd,OAAO,CAAC,WAAW;IA6JnB,OAAO,CAAC,gDAAgD,CAuDtD;CACF;AAED,eAAe,MAAM,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-marked",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.13",
|
|
4
4
|
"description": "Markdown renderer for React Native powered by marked.js",
|
|
5
5
|
"main": "dist/commonjs/index",
|
|
6
6
|
"module": "dist/module/index",
|
|
@@ -50,30 +50,30 @@
|
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@babel/core": "7.20.12",
|
|
52
52
|
"@babel/preset-env": "7.20.2",
|
|
53
|
-
"@commitlint/config-conventional": "17.4.
|
|
54
|
-
"@evilmartians/lefthook": "1.2.
|
|
53
|
+
"@commitlint/config-conventional": "17.4.4",
|
|
54
|
+
"@evilmartians/lefthook": "1.2.9",
|
|
55
55
|
"@release-it/conventional-changelog": "5.1.1",
|
|
56
56
|
"@testing-library/jest-native": "5.4.1",
|
|
57
|
-
"@testing-library/react-native": "11.5.
|
|
58
|
-
"@types/jest": "29.
|
|
57
|
+
"@testing-library/react-native": "11.5.2",
|
|
58
|
+
"@types/jest": "29.4.0",
|
|
59
59
|
"@types/marked": "4.0.8",
|
|
60
60
|
"@types/node": "^18.11.18",
|
|
61
|
-
"@types/react": "18.0.
|
|
61
|
+
"@types/react": "18.0.28",
|
|
62
62
|
"@types/react-native": "0.70.8",
|
|
63
|
-
"commitlint": "17.4.
|
|
64
|
-
"danger": "11.2.
|
|
65
|
-
"jest": "29.3
|
|
66
|
-
"jest-environment-jsdom": "29.3
|
|
67
|
-
"metro-react-native-babel-preset": "0.
|
|
63
|
+
"commitlint": "17.4.4",
|
|
64
|
+
"danger": "11.2.3",
|
|
65
|
+
"jest": "29.4.3",
|
|
66
|
+
"jest-environment-jsdom": "29.4.3",
|
|
67
|
+
"metro-react-native-babel-preset": "0.75.0",
|
|
68
68
|
"pod-install": "0.1.38",
|
|
69
69
|
"react": "18.1.0",
|
|
70
70
|
"react-native": "0.70.6",
|
|
71
71
|
"react-native-builder-bob": "0.20.3",
|
|
72
72
|
"react-test-renderer": "18.1.0",
|
|
73
|
-
"reassure": "0.
|
|
73
|
+
"reassure": "0.7.1",
|
|
74
74
|
"release-it": "15.6.0",
|
|
75
75
|
"rome": "11.0.0",
|
|
76
|
-
"typescript": "4.9.
|
|
76
|
+
"typescript": "4.9.5"
|
|
77
77
|
},
|
|
78
78
|
"peerDependencies": {
|
|
79
79
|
"react": "^16.8.6 || ^17.0.0 || ^18.0.0",
|
|
@@ -151,7 +151,7 @@
|
|
|
151
151
|
"dependencies": {
|
|
152
152
|
"@jsamr/counter-style": "2.0.2",
|
|
153
153
|
"@jsamr/react-native-li": "2.3.1",
|
|
154
|
-
"marked": "4.2.
|
|
154
|
+
"marked": "4.2.12",
|
|
155
155
|
"react-native-fit-image": "1.5.5"
|
|
156
156
|
}
|
|
157
157
|
}
|
package/src/lib/Markdown.tsx
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, {
|
|
2
|
+
memo,
|
|
3
|
+
ReactElement,
|
|
4
|
+
ReactNode,
|
|
5
|
+
useCallback,
|
|
6
|
+
useMemo,
|
|
7
|
+
} from "react";
|
|
2
8
|
import { FlatList, useColorScheme } from "react-native";
|
|
3
9
|
import { marked } from "marked";
|
|
4
10
|
import Parser from "./Parser";
|
|
@@ -18,14 +24,18 @@ const Markdown = ({
|
|
|
18
24
|
[userStyles, colorScheme, theme],
|
|
19
25
|
);
|
|
20
26
|
|
|
27
|
+
const parser = useMemo(
|
|
28
|
+
() => new Parser({ styles, baseUrl }),
|
|
29
|
+
[styles, baseUrl],
|
|
30
|
+
);
|
|
31
|
+
|
|
21
32
|
const rnElements = useMemo(() => {
|
|
22
|
-
const parser = new Parser({ styles, baseUrl });
|
|
23
33
|
const tokens = marked.lexer(value, { mangle: false, gfm: true });
|
|
24
34
|
return parser.parse(tokens);
|
|
25
35
|
}, [value, styles, baseUrl]);
|
|
26
36
|
|
|
27
37
|
const renderItem = useCallback(({ item }: { item: ReactNode }) => {
|
|
28
|
-
return
|
|
38
|
+
return item as ReactElement;
|
|
29
39
|
}, []);
|
|
30
40
|
|
|
31
41
|
const keyExtractor = useCallback(
|
|
@@ -35,10 +45,10 @@ const Markdown = ({
|
|
|
35
45
|
|
|
36
46
|
return (
|
|
37
47
|
<FlatList
|
|
48
|
+
removeClippedSubviews
|
|
38
49
|
keyExtractor={keyExtractor}
|
|
39
50
|
maxToRenderPerBatch={8}
|
|
40
51
|
initialNumToRender={8}
|
|
41
|
-
removeClippedSubviews={true}
|
|
42
52
|
style={styles.container}
|
|
43
53
|
{...flatListProps}
|
|
44
54
|
data={rnElements}
|