react-native-marked 1.6.14 → 2.0.0-rc.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 (78) hide show
  1. package/README.md +64 -8
  2. package/dist/commonjs/index.js +8 -0
  3. package/dist/commonjs/index.js.map +1 -1
  4. package/dist/commonjs/lib/Markdown.js +5 -1
  5. package/dist/commonjs/lib/Markdown.js.map +1 -1
  6. package/dist/commonjs/lib/Parser.js +50 -35
  7. package/dist/commonjs/lib/Parser.js.map +1 -1
  8. package/dist/commonjs/lib/Renderer.js +113 -45
  9. package/dist/commonjs/lib/Renderer.js.map +1 -1
  10. package/dist/commonjs/lib/__perf__/Markdown.perf-test.js +196 -0
  11. package/dist/commonjs/lib/__perf__/Markdown.perf-test.js.map +1 -0
  12. package/dist/module/index.js +2 -0
  13. package/dist/module/index.js.map +1 -1
  14. package/dist/module/lib/Markdown.js +4 -1
  15. package/dist/module/lib/Markdown.js.map +1 -1
  16. package/dist/module/lib/Parser.js +50 -32
  17. package/dist/module/lib/Parser.js.map +1 -1
  18. package/dist/module/lib/Renderer.js +112 -44
  19. package/dist/module/lib/Renderer.js.map +1 -1
  20. package/dist/module/lib/__perf__/Markdown.perf-test.js +188 -0
  21. package/dist/module/lib/__perf__/Markdown.perf-test.js.map +1 -0
  22. package/dist/typescript/components/MDImage.d.ts.map +1 -0
  23. package/dist/typescript/index.d.ts +7 -0
  24. package/dist/typescript/index.d.ts.map +1 -0
  25. package/dist/typescript/{src/lib → lib}/Markdown.d.ts +1 -1
  26. package/dist/typescript/lib/Markdown.d.ts.map +1 -0
  27. package/dist/typescript/lib/Parser.d.ts.map +1 -0
  28. package/dist/typescript/lib/Renderer.d.ts +32 -0
  29. package/dist/typescript/lib/Renderer.d.ts.map +1 -0
  30. package/dist/typescript/lib/__perf__/Markdown.perf-test.d.ts +2 -0
  31. package/dist/typescript/lib/__perf__/Markdown.perf-test.d.ts.map +1 -0
  32. package/dist/typescript/lib/types.d.ts +34 -0
  33. package/dist/typescript/lib/types.d.ts.map +1 -0
  34. package/dist/typescript/theme/colors.d.ts.map +1 -0
  35. package/dist/typescript/theme/spacing.d.ts.map +1 -0
  36. package/dist/typescript/theme/styles.d.ts.map +1 -0
  37. package/dist/typescript/theme/types.d.ts.map +1 -0
  38. package/dist/typescript/utils/handlers.d.ts.map +1 -0
  39. package/dist/typescript/utils/url.d.ts.map +1 -0
  40. package/package.json +2 -2
  41. package/src/index.ts +8 -0
  42. package/src/lib/Markdown.tsx +8 -1
  43. package/src/lib/Parser.tsx +50 -64
  44. package/src/lib/Renderer.tsx +135 -60
  45. package/src/lib/__perf__/Markdown.perf-test.tsx +186 -0
  46. package/src/lib/types.ts +48 -2
  47. package/dist/commonjs/utils/string.js +0 -17
  48. package/dist/commonjs/utils/string.js.map +0 -1
  49. package/dist/module/utils/string.js +0 -8
  50. package/dist/module/utils/string.js.map +0 -1
  51. package/dist/typescript/dangerfile.d.ts +0 -2
  52. package/dist/typescript/dangerfile.d.ts.map +0 -1
  53. package/dist/typescript/src/components/MDImage.d.ts.map +0 -1
  54. package/dist/typescript/src/index.d.ts +0 -3
  55. package/dist/typescript/src/index.d.ts.map +0 -1
  56. package/dist/typescript/src/lib/Markdown.d.ts.map +0 -1
  57. package/dist/typescript/src/lib/Parser.d.ts.map +0 -1
  58. package/dist/typescript/src/lib/Renderer.d.ts +0 -14
  59. package/dist/typescript/src/lib/Renderer.d.ts.map +0 -1
  60. package/dist/typescript/src/lib/types.d.ts +0 -13
  61. package/dist/typescript/src/lib/types.d.ts.map +0 -1
  62. package/dist/typescript/src/theme/colors.d.ts.map +0 -1
  63. package/dist/typescript/src/theme/spacing.d.ts.map +0 -1
  64. package/dist/typescript/src/theme/styles.d.ts.map +0 -1
  65. package/dist/typescript/src/theme/types.d.ts.map +0 -1
  66. package/dist/typescript/src/utils/handlers.d.ts.map +0 -1
  67. package/dist/typescript/src/utils/string.d.ts +0 -6
  68. package/dist/typescript/src/utils/string.d.ts.map +0 -1
  69. package/dist/typescript/src/utils/url.d.ts.map +0 -1
  70. package/src/utils/string.ts +0 -7
  71. /package/dist/typescript/{src/components → components}/MDImage.d.ts +0 -0
  72. /package/dist/typescript/{src/lib → lib}/Parser.d.ts +0 -0
  73. /package/dist/typescript/{src/theme → theme}/colors.d.ts +0 -0
  74. /package/dist/typescript/{src/theme → theme}/spacing.d.ts +0 -0
  75. /package/dist/typescript/{src/theme → theme}/styles.d.ts +0 -0
  76. /package/dist/typescript/{src/theme → theme}/types.d.ts +0 -0
  77. /package/dist/typescript/{src/utils → utils}/handlers.d.ts +0 -0
  78. /package/dist/typescript/{src/utils → utils}/url.d.ts +0 -0
package/README.md CHANGED
@@ -6,7 +6,8 @@
6
6
  [![npm](https://img.shields.io/npm/v/react-native-marked)](https://www.npmjs.com/package/react-native-marked)
7
7
  [![npm](https://img.shields.io/npm/dw/react-native-marked)](https://www.npmjs.com/package/react-native-marked)
8
8
 
9
- Markdown renderer for React Native powered by [marked.js](https://marked.js.org/) with built-in theming support
9
+ Markdown renderer for React Native powered by
10
+ [marked.js](https://marked.js.org/) with built-in theming support
10
11
 
11
12
  ## Installation
12
13
 
@@ -16,9 +17,9 @@ yarn add react-native-marked
16
17
 
17
18
  ## Usage
18
19
 
19
- ```jsx
20
- import * as React from 'react';
21
- import Markdown from 'react-native-marked';
20
+ ```tsx
21
+ import * as React from "react";
22
+ import Markdown from "react-native-marked";
22
23
 
23
24
  const ExampleComponent = () => {
24
25
  return (
@@ -45,9 +46,10 @@ export default ExampleComponent;
45
46
  | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------- |
46
47
  | value | Markdown value | string | false |
47
48
  | flatListProps | Props for customizing the underlying FlatList used | `Omit<FlatListProps<ReactNode>, 'data' \| 'renderItem' \| 'horizontal'>`<br><br><br>(`'data'`, `'renderItem'`, and `'horizontal'` props are omitted and cannot be overridden.) | true |
48
- | styles | Styles for parsed components | [MarkedStyles](https://github.com/gmsgowtham/react-native-marked/blob/4ef070931b7d309a7490c41e45129e12525d12d9/src/theme/types.ts#L3) | true |
49
- | theme | Props for customizing colors and spacing for all components,and it will get overridden with custom component style applied via 'styles' prop | [UserTheme](https://github.com/gmsgowtham/react-native-marked/blob/6eba804c617099ffb574aa97c57a71ea3e0184fb/src/theme/types.ts#L28) | true |
49
+ | styles | Styles for parsed components | [MarkedStyles](https://github.com/gmsgowtham/react-native-marked/blob/main/src/theme/types.ts#L5) | true |
50
+ | theme | Props for customizing colors and spacing for all components,and it will get overridden with custom component style applied via 'styles' prop | [UserTheme](https://github.com/gmsgowtham/react-native-marked/blob/main/src/theme/types.ts#L28) | true |
50
51
  | baseUrl | A prefix url for any relative link | string | true |
52
+ | renderer | Custom component Renderer | [RendererInterface](https://github.com/gmsgowtham/react-native-marked/blob/main/src/lib/types.ts#L25) | true |
51
53
 
52
54
  ## Supported elements
53
55
 
@@ -68,6 +70,58 @@ Ref: [CommonMark](https://commonmark.org/help/)
68
70
 
69
71
  > HTML will be treated as plain text
70
72
 
73
+ ## Using custom components
74
+
75
+ ```tsx
76
+ import React, { ReactNode } from "react";
77
+ import { Text } from "react-native";
78
+ import type { ImageStyle, TextStyle } from "react-native";
79
+ import Markdown, { Renderer } from "react-native-marked";
80
+ import type { RendererInterface } from "react-native-marked";
81
+ import FastImage from "react-native-fast-image";
82
+
83
+ class CustomRenderer extends Renderer implements RendererInterface {
84
+ constructor() {
85
+ super();
86
+ }
87
+
88
+ codespan(text: string, _styles?: TextStyle): ReactNode {
89
+ return (
90
+ <Text key={this.getKey()} style={{ backgroundColor: "#ff0000" }}>
91
+ {text}
92
+ </Text>
93
+ );
94
+ }
95
+
96
+ image(uri: string, _alt?: string, _style?: ImageStyle): ReactNode {
97
+ return (
98
+ <FastImage
99
+ key={this.getKey()}
100
+ style={{ width: 200, height: 200 }}
101
+ source={{ uri: uri }}
102
+ resizeMode={FastImage.resizeMode.contain}
103
+ />
104
+ );
105
+ }
106
+ }
107
+
108
+ const renderer = new CustomRenderer();
109
+
110
+ const ExampleComponent = () => {
111
+ return (
112
+ <Markdown
113
+ value={"`Hello world`"}
114
+ flatListProps={{
115
+ initialNumToRender: 8,
116
+ }}
117
+ renderer={renderer}
118
+ />
119
+ );
120
+ };
121
+
122
+ export default ExampleComponent;
123
+ ```
124
+
71
125
  ## Screenshots
72
126
 
73
127
  | Dark Theme | Light Theme |
@@ -76,7 +130,8 @@ Ref: [CommonMark](https://commonmark.org/help/)
76
130
 
77
131
  ## Contributing
78
132
 
79
- See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.
133
+ See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the
134
+ repository and the development workflow.
80
135
 
81
136
  ## License
82
137
 
@@ -84,7 +139,8 @@ MIT
84
139
 
85
140
  ---
86
141
 
87
- Made with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)
142
+ Made with
143
+ [create-react-native-library](https://github.com/callstack/react-native-builder-bob)
88
144
 
89
145
  ## Built with
90
146
 
@@ -3,10 +3,18 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "Renderer", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _Renderer.default;
10
+ }
11
+ });
6
12
  exports.default = void 0;
7
13
 
8
14
  var _Markdown = _interopRequireDefault(require("./lib/Markdown"));
9
15
 
16
+ var _Renderer = _interopRequireDefault(require("./lib/Renderer"));
17
+
10
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
19
 
12
20
  var _default = _Markdown.default;
@@ -1 +1 @@
1
- {"version":3,"names":["Markdown"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;AAAA;;;;eAEeA,iB"}
1
+ {"version":3,"names":["Markdown"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;;;eASeA,iB"}
@@ -13,6 +13,8 @@ var _marked = require("marked");
13
13
 
14
14
  var _Parser = _interopRequireDefault(require("./Parser"));
15
15
 
16
+ var _Renderer = _interopRequireDefault(require("./Renderer"));
17
+
16
18
  var _styles = _interopRequireDefault(require("../theme/styles"));
17
19
 
18
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -29,13 +31,15 @@ const Markdown = _ref => {
29
31
  flatListProps,
30
32
  theme,
31
33
  baseUrl,
34
+ renderer,
32
35
  styles: userStyles
33
36
  } = _ref;
34
37
  const colorScheme = (0, _reactNative.useColorScheme)();
35
38
  const styles = (0, _react.useMemo)(() => (0, _styles.default)(userStyles, colorScheme, theme), [userStyles, colorScheme, theme]);
36
39
  const parser = (0, _react.useMemo)(() => new _Parser.default({
37
40
  styles,
38
- baseUrl
41
+ baseUrl,
42
+ renderer: renderer ?? new _Renderer.default()
39
43
  }), [styles, baseUrl]);
40
44
  const rnElements = (0, _react.useMemo)(() => {
41
45
  const tokens = _marked.marked.lexer(value, {
@@ -1 +1 @@
1
- {"version":3,"names":["Markdown","value","flatListProps","theme","baseUrl","styles","userStyles","colorScheme","useColorScheme","useMemo","getStyles","parser","Parser","rnElements","tokens","marked","lexer","mangle","gfm","parse","renderItem","useCallback","item","keyExtractor","_","index","toString","container","memo"],"sourceRoot":"../../../src","sources":["lib/Markdown.tsx"],"mappings":";;;;;;;AAAA;;AAOA;;AACA;;AACA;;AACA;;;;;;;;;;AAGA,MAAMA,QAAQ,GAAG,QAMI;EAAA,IANH;IACjBC,KADiB;IAEjBC,aAFiB;IAGjBC,KAHiB;IAIjBC,OAJiB;IAKjBC,MAAM,EAAEC;EALS,CAMG;EACpB,MAAMC,WAAW,GAAG,IAAAC,2BAAA,GAApB;EACA,MAAMH,MAAM,GAAG,IAAAI,cAAA,EACd,MAAM,IAAAC,eAAA,EAAUJ,UAAV,EAAsBC,WAAtB,EAAmCJ,KAAnC,CADQ,EAEd,CAACG,UAAD,EAAaC,WAAb,EAA0BJ,KAA1B,CAFc,CAAf;EAKA,MAAMQ,MAAM,GAAG,IAAAF,cAAA,EACd,MAAM,IAAIG,eAAJ,CAAW;IAAEP,MAAF;IAAUD;EAAV,CAAX,CADQ,EAEd,CAACC,MAAD,EAASD,OAAT,CAFc,CAAf;EAKA,MAAMS,UAAU,GAAG,IAAAJ,cAAA,EAAQ,MAAM;IAChC,MAAMK,MAAM,GAAGC,cAAA,CAAOC,KAAP,CAAaf,KAAb,EAAoB;MAAEgB,MAAM,EAAE,KAAV;MAAiBC,GAAG,EAAE;IAAtB,CAApB,CAAf;;IACA,OAAOP,MAAM,CAACQ,KAAP,CAAaL,MAAb,CAAP;EACA,CAHkB,EAGhB,CAACb,KAAD,EAAQI,MAAR,EAAgBD,OAAhB,CAHgB,CAAnB;EAKA,MAAMgB,UAAU,GAAG,IAAAC,kBAAA,EAAY,SAAmC;IAAA,IAAlC;MAAEC;IAAF,CAAkC;IACjE,OAAOA,IAAP;EACA,CAFkB,EAEhB,EAFgB,CAAnB;EAIA,MAAMC,YAAY,GAAG,IAAAF,kBAAA,EACpB,CAACG,CAAD,EAAeC,KAAf,KAAiCA,KAAK,CAACC,QAAN,EADb,EAEpB,EAFoB,CAArB;EAKA,oBACC,6BAAC,qBAAD;IACC,qBAAqB,MADtB;IAEC,YAAY,EAAEH,YAFf;IAGC,mBAAmB,EAAE,CAHtB;IAIC,kBAAkB,EAAE,CAJrB;IAKC,KAAK,EAAElB,MAAM,CAACsB;EALf,GAMKzB,aANL;IAOC,IAAI,EAAEW,UAPP;IAQC,UAAU,EAAEO;EARb,GADD;AAYA,CA5CD;;4BA8Ce,IAAAQ,WAAA,EAAK5B,QAAL,C"}
1
+ {"version":3,"names":["Markdown","value","flatListProps","theme","baseUrl","renderer","styles","userStyles","colorScheme","useColorScheme","useMemo","getStyles","parser","Parser","Renderer","rnElements","tokens","marked","lexer","mangle","gfm","parse","renderItem","useCallback","item","keyExtractor","_","index","toString","container","memo"],"sourceRoot":"../../../src","sources":["lib/Markdown.tsx"],"mappings":";;;;;;;AAAA;;AAOA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAGA,MAAMA,QAAQ,GAAG,QAOI;EAAA,IAPH;IACjBC,KADiB;IAEjBC,aAFiB;IAGjBC,KAHiB;IAIjBC,OAJiB;IAKjBC,QALiB;IAMjBC,MAAM,EAAEC;EANS,CAOG;EACpB,MAAMC,WAAW,GAAG,IAAAC,2BAAA,GAApB;EACA,MAAMH,MAAM,GAAG,IAAAI,cAAA,EACd,MAAM,IAAAC,eAAA,EAAUJ,UAAV,EAAsBC,WAAtB,EAAmCL,KAAnC,CADQ,EAEd,CAACI,UAAD,EAAaC,WAAb,EAA0BL,KAA1B,CAFc,CAAf;EAKA,MAAMS,MAAM,GAAG,IAAAF,cAAA,EACd,MACC,IAAIG,eAAJ,CAAW;IACVP,MADU;IAEVF,OAFU;IAGVC,QAAQ,EAAEA,QAAQ,IAAI,IAAIS,iBAAJ;EAHZ,CAAX,CAFa,EAOd,CAACR,MAAD,EAASF,OAAT,CAPc,CAAf;EAUA,MAAMW,UAAU,GAAG,IAAAL,cAAA,EAAQ,MAAM;IAChC,MAAMM,MAAM,GAAGC,cAAA,CAAOC,KAAP,CAAajB,KAAb,EAAoB;MAAEkB,MAAM,EAAE,KAAV;MAAiBC,GAAG,EAAE;IAAtB,CAApB,CAAf;;IACA,OAAOR,MAAM,CAACS,KAAP,CAAaL,MAAb,CAAP;EACA,CAHkB,EAGhB,CAACf,KAAD,EAAQK,MAAR,EAAgBF,OAAhB,CAHgB,CAAnB;EAKA,MAAMkB,UAAU,GAAG,IAAAC,kBAAA,EAAY,SAAmC;IAAA,IAAlC;MAAEC;IAAF,CAAkC;IACjE,OAAOA,IAAP;EACA,CAFkB,EAEhB,EAFgB,CAAnB;EAIA,MAAMC,YAAY,GAAG,IAAAF,kBAAA,EACpB,CAACG,CAAD,EAAeC,KAAf,KAAiCA,KAAK,CAACC,QAAN,EADb,EAEpB,EAFoB,CAArB;EAKA,oBACC,6BAAC,qBAAD;IACC,qBAAqB,MADtB;IAEC,YAAY,EAAEH,YAFf;IAGC,mBAAmB,EAAE,CAHtB;IAIC,kBAAkB,EAAE,CAJrB;IAKC,KAAK,EAAEnB,MAAM,CAACuB;EALf,GAMK3B,aANL;IAOC,IAAI,EAAEa,UAPP;IAQC,UAAU,EAAEO;EARb,GADD;AAYA,CAlDD;;4BAoDe,IAAAQ,WAAA,EAAK9B,QAAL,C"}
@@ -5,18 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _Renderer = _interopRequireDefault(require("./Renderer"));
9
-
10
8
  var _url = require("./../utils/url");
11
9
 
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
10
  class Parser {
15
11
  constructor(options) {
16
12
  this.styles = { ...options.styles
17
13
  };
18
14
  this.baseUrl = options.baseUrl ?? "";
19
- this.renderer = new _Renderer.default();
15
+ this.renderer = options.renderer;
20
16
  this.headingStylesMap = {
21
17
  1: this.styles.h1,
22
18
  2: this.styles.h2,
@@ -47,54 +43,59 @@ class Parser {
47
43
 
48
44
  case "paragraph":
49
45
  {
50
- const paragraphChildren = this.getNormalizedSiblingNodesForBlockAndInlineTokens(token.tokens, this.styles.text);
51
- return this.renderer.getViewNode(paragraphChildren, this.styles.paragraph);
46
+ const children = this.getNormalizedSiblingNodesForBlockAndInlineTokens(token.tokens, this.styles.text);
47
+ return this.renderer.paragraph(children, this.styles.paragraph);
52
48
  }
53
49
 
54
50
  case "blockquote":
55
51
  {
56
- return this.renderer.getBlockquoteNode(this._parse(token.tokens), this.styles.blockquote);
52
+ const children = this.parse(token.tokens);
53
+ return this.renderer.blockquote(children, this.styles.blockquote);
57
54
  }
58
55
 
59
56
  case "heading":
60
57
  {
61
58
  const styles = this.headingStylesMap[token.depth];
62
- return this.renderer.getTextNode(this._parse(token.tokens, styles), styles);
59
+
60
+ const children = this._parse(token.tokens, styles);
61
+
62
+ return this.renderer.heading(children, styles);
63
63
  }
64
64
 
65
65
  case "code":
66
66
  {
67
- return this.renderer.getCodeBlockNode(token.text, this.styles.code, this.styles.em);
67
+ return this.renderer.code(token.text, token.lang, this.styles.code, this.styles.em);
68
68
  }
69
69
 
70
70
  case "hr":
71
71
  {
72
- return this.renderer.getViewNode(null, this.styles.hr);
72
+ return this.renderer.hr(this.styles.hr);
73
73
  }
74
74
 
75
75
  case "list":
76
76
  {
77
77
  const li = token.items.map(item => {
78
- const children = item.tokens.map(cItem => {
78
+ const children = item.tokens.flatMap(cItem => {
79
79
  if (cItem.type === "text") {
80
80
  /* getViewNode since tokens could contain a block like elements (i.e. img) */
81
81
  const childTokens = cItem.tokens || [];
82
- const listChildren = this.getNormalizedSiblingNodesForBlockAndInlineTokens(childTokens, this.styles.li);
83
- return this.renderer.getViewNode(listChildren, this.styles.li);
82
+ const listChildren = this.getNormalizedSiblingNodesForBlockAndInlineTokens(childTokens, this.styles.li); // return this.renderer.listItem(listChildren, this.styles.li);
83
+
84
+ return listChildren;
84
85
  }
85
86
  /* Parse the nested token */
86
87
 
87
88
 
88
89
  return this._parseToken(cItem);
89
90
  });
90
- return this.renderer.getViewNode(children, this.styles.li);
91
+ return this.renderer.listItem(children, this.styles.li);
91
92
  });
92
- return this.renderer.getListNode(token.ordered, li, this.styles.list, this.styles.li);
93
+ return this.renderer.list(token.ordered, li, this.styles.list, this.styles.li);
93
94
  }
94
95
 
95
96
  case "escape":
96
97
  {
97
- return this.renderer.getTextNode(token.text, { ...this.styles.text,
98
+ return this.renderer.escape(token.text, { ...this.styles.text,
98
99
  ...styles
99
100
  });
100
101
  }
@@ -108,12 +109,15 @@ class Parser {
108
109
 
109
110
  };
110
111
  const href = (0, _url.getValidURL)(this.baseUrl, token.href);
111
- return this.renderer.getTextLinkNode(this._parse(token.tokens, linkStyle), href, linkStyle);
112
+
113
+ const children = this._parse(token.tokens, linkStyle);
114
+
115
+ return this.renderer.link(children, href, linkStyle);
112
116
  }
113
117
 
114
118
  case "image":
115
119
  {
116
- return this.renderer.getImageNode(token.href, token.text || token.title, this.styles.image);
120
+ return this.renderer.image(token.href, token.text || token.title, this.styles.image);
117
121
  }
118
122
 
119
123
  case "strong":
@@ -121,7 +125,10 @@ class Parser {
121
125
  const boldStyle = { ...this.styles.strong,
122
126
  ...styles
123
127
  };
124
- return this.renderer.getTextNode(this._parse(token.tokens, boldStyle), boldStyle);
128
+
129
+ const children = this._parse(token.tokens, boldStyle);
130
+
131
+ return this.renderer.strong(children, boldStyle);
125
132
  }
126
133
 
127
134
  case "em":
@@ -129,19 +136,22 @@ class Parser {
129
136
  const italicStyle = { ...this.styles.em,
130
137
  ...styles
131
138
  };
132
- return this.renderer.getTextNode(this._parse(token.tokens, italicStyle), italicStyle);
139
+
140
+ const children = this._parse(token.tokens, italicStyle);
141
+
142
+ return this.renderer.em(children, italicStyle);
133
143
  }
134
144
 
135
145
  case "codespan":
136
146
  {
137
- return this.renderer.getTextNode(token.text, { ...this.styles.codespan,
147
+ return this.renderer.codespan(token.text, { ...this.styles.codespan,
138
148
  ...styles
139
149
  });
140
150
  }
141
151
 
142
152
  case "br":
143
153
  {
144
- return this.renderer.getTextNode("\n", {});
154
+ return this.renderer.br();
145
155
  }
146
156
 
147
157
  case "del":
@@ -149,17 +159,21 @@ class Parser {
149
159
  const strikethroughStyle = { ...this.styles.strikethrough,
150
160
  ...styles
151
161
  };
152
- return this.renderer.getTextNode(this._parse(token.tokens, strikethroughStyle), strikethroughStyle);
162
+
163
+ const children = this._parse(token.tokens, strikethroughStyle);
164
+
165
+ return this.renderer.del(children, strikethroughStyle);
153
166
  }
154
167
 
155
168
  case "text":
169
+ return this.renderer.text(token.raw, { ...this.styles.text,
170
+ ...styles
171
+ });
172
+
156
173
  case "html":
157
174
  {
158
- if (token.type === "html") {
159
- console.warn("react-native-marked: rendering html from markdown is not supported");
160
- }
161
-
162
- return this.renderer.getTextNode(token.raw, { ...this.styles.text,
175
+ console.warn("react-native-marked: rendering html from markdown is not supported");
176
+ return this.renderer.html(token.raw, { ...this.styles.text,
163
177
  ...styles
164
178
  });
165
179
  }
@@ -172,7 +186,7 @@ class Parser {
172
186
  }
173
187
  }
174
188
 
175
- getNormalizedSiblingNodesForBlockAndInlineTokens = (tokens, textStyle) => {
189
+ getNormalizedSiblingNodesForBlockAndInlineTokens(tokens, textStyle) {
176
190
  let tokenRenderQueue = [];
177
191
  const siblingNodes = [];
178
192
  tokens.forEach(t => {
@@ -183,10 +197,10 @@ class Parser {
183
197
  */
184
198
  if (t.type === "image" || t.type === "link" && t.tokens && t.tokens[0] && t.tokens[0].type === "image") {
185
199
  // Render existing inline tokens in the queue
186
- const parsed = this._parse(tokenRenderQueue);
200
+ const parsed = this.parse(tokenRenderQueue);
187
201
 
188
202
  if (parsed.length > 0) {
189
- siblingNodes.push(this.renderer.getTextNode(parsed, textStyle));
203
+ siblingNodes.push(this.renderer.text(parsed, textStyle));
190
204
  } // Render the current block token
191
205
 
192
206
 
@@ -195,7 +209,7 @@ class Parser {
195
209
  } else if (t.type === "link") {
196
210
  const imageToken = t.tokens[0];
197
211
  const href = (0, _url.getValidURL)(this.baseUrl, t.href);
198
- siblingNodes.push(this.renderer.getImageLinkNode(href, imageToken.href, imageToken.text || imageToken.title, this.styles.image));
212
+ siblingNodes.push(this.renderer.linkImage(href, imageToken.href, imageToken.text || imageToken.title, this.styles.image));
199
213
  }
200
214
 
201
215
  tokenRenderQueue = [];
@@ -207,11 +221,12 @@ class Parser {
207
221
  /* Remaining temp tokens if any */
208
222
 
209
223
  if (tokenRenderQueue.length > 0) {
210
- siblingNodes.push(this.renderer.getTextNode(this._parse(tokenRenderQueue), {}));
224
+ siblingNodes.push(this.renderer.text(this.parse(tokenRenderQueue), {}));
211
225
  }
212
226
 
213
227
  return siblingNodes;
214
- };
228
+ }
229
+
215
230
  }
216
231
 
217
232
  var _default = Parser;
@@ -1 +1 @@
1
- {"version":3,"names":["Parser","constructor","options","styles","baseUrl","renderer","Renderer","headingStylesMap","h1","h2","h3","h4","h5","h6","parse","tokens","_parse","elements","map","token","_parseToken","filter","element","type","paragraphChildren","getNormalizedSiblingNodesForBlockAndInlineTokens","text","getViewNode","paragraph","getBlockquoteNode","blockquote","depth","getTextNode","getCodeBlockNode","code","em","hr","li","items","item","children","cItem","childTokens","listChildren","getListNode","ordered","list","linkStyle","link","href","getValidURL","getTextLinkNode","getImageNode","title","image","boldStyle","strong","italicStyle","codespan","strikethroughStyle","strikethrough","console","warn","raw","textStyle","tokenRenderQueue","siblingNodes","forEach","t","parsed","length","push","imageToken","getImageLinkNode"],"sourceRoot":"../../../src","sources":["lib/Parser.tsx"],"mappings":";;;;;;;AAGA;;AAGA;;;;AAEA,MAAMA,MAAN,CAAa;EAKZC,WAAW,CAACC,OAAD,EAAyB;IACnC,KAAKC,MAAL,GAAc,EAAE,GAAGD,OAAO,CAACC;IAAb,CAAd;IACA,KAAKC,OAAL,GAAeF,OAAO,CAACE,OAAR,IAAmB,EAAlC;IACA,KAAKC,QAAL,GAAgB,IAAIC,iBAAJ,EAAhB;IACA,KAAKC,gBAAL,GAAwB;MACvB,GAAG,KAAKJ,MAAL,CAAYK,EADQ;MAEvB,GAAG,KAAKL,MAAL,CAAYM,EAFQ;MAGvB,GAAG,KAAKN,MAAL,CAAYO,EAHQ;MAIvB,GAAG,KAAKP,MAAL,CAAYQ,EAJQ;MAKvB,GAAG,KAAKR,MAAL,CAAYS,EALQ;MAMvB,GAAG,KAAKT,MAAL,CAAYU;IANQ,CAAxB;EAQA;;EAEDC,KAAK,CAACC,MAAD,EAAyB;IAC7B,OAAO,KAAKC,MAAL,CAAYD,MAAZ,CAAP;EACA;;EAEOC,MAAM,CACbD,MADa,EAEbZ,MAFa,EAGZ;IACD,MAAMc,QAAqB,GAAGF,MAAM,CAACG,GAAP,CAAYC,KAAD,IAAW;MACnD,OAAO,KAAKC,WAAL,CAAiBD,KAAjB,EAAwBhB,MAAxB,CAAP;IACA,CAF6B,CAA9B;IAGA,OAAOc,QAAQ,CAACI,MAAT,CAAiBC,OAAD,IAAaA,OAAO,KAAK,IAAzC,CAAP;EACA;;EAEOF,WAAW,CAClBD,KADkB,EAElBhB,MAFkB,EAGN;IACZ,QAAQgB,KAAK,CAACI,IAAd;MACC,KAAK,OAAL;QAAc;UACb,OAAO,IAAP;QACA;;MACD,KAAK,WAAL;QAAkB;UACjB,MAAMC,iBAAiB,GACtB,KAAKC,gDAAL,CACCN,KAAK,CAACJ,MADP,EAEC,KAAKZ,MAAL,CAAYuB,IAFb,CADD;UAMA,OAAO,KAAKrB,QAAL,CAAcsB,WAAd,CACNH,iBADM,EAEN,KAAKrB,MAAL,CAAYyB,SAFN,CAAP;QAIA;;MACD,KAAK,YAAL;QAAmB;UAClB,OAAO,KAAKvB,QAAL,CAAcwB,iBAAd,CACN,KAAKb,MAAL,CAAYG,KAAK,CAACJ,MAAlB,CADM,EAEN,KAAKZ,MAAL,CAAY2B,UAFN,CAAP;QAIA;;MACD,KAAK,SAAL;QAAgB;UACf,MAAM3B,MAAM,GAAG,KAAKI,gBAAL,CAAsBY,KAAK,CAACY,KAA5B,CAAf;UACA,OAAO,KAAK1B,QAAL,CAAc2B,WAAd,CACN,KAAKhB,MAAL,CAAYG,KAAK,CAACJ,MAAlB,EAA0BZ,MAA1B,CADM,EAENA,MAFM,CAAP;QAIA;;MACD,KAAK,MAAL;QAAa;UACZ,OAAO,KAAKE,QAAL,CAAc4B,gBAAd,CACNd,KAAK,CAACO,IADA,EAEN,KAAKvB,MAAL,CAAY+B,IAFN,EAGN,KAAK/B,MAAL,CAAYgC,EAHN,CAAP;QAKA;;MACD,KAAK,IAAL;QAAW;UACV,OAAO,KAAK9B,QAAL,CAAcsB,WAAd,CAA0B,IAA1B,EAAgC,KAAKxB,MAAL,CAAYiC,EAA5C,CAAP;QACA;;MACD,KAAK,MAAL;QAAa;UACZ,MAAMC,EAAE,GAAGlB,KAAK,CAACmB,KAAN,CAAYpB,GAAZ,CAAiBqB,IAAD,IAAU;YACpC,MAAMC,QAAQ,GAAGD,IAAI,CAACxB,MAAL,CAAYG,GAAZ,CAAiBuB,KAAD,IAAW;cAC3C,IAAIA,KAAK,CAAClB,IAAN,KAAe,MAAnB,EAA2B;gBAC1B;gBACA,MAAMmB,WAAW,GAAID,KAAD,CAA8B1B,MAA9B,IAAwC,EAA5D;gBACA,MAAM4B,YAAY,GACjB,KAAKlB,gDAAL,CACCiB,WADD,EAEC,KAAKvC,MAAL,CAAYkC,EAFb,CADD;gBAKA,OAAO,KAAKhC,QAAL,CAAcsB,WAAd,CAA0BgB,YAA1B,EAAwC,KAAKxC,MAAL,CAAYkC,EAApD,CAAP;cACA;cAED;;;cACA,OAAO,KAAKjB,WAAL,CAAiBqB,KAAjB,CAAP;YACA,CAdgB,CAAjB;YAeA,OAAO,KAAKpC,QAAL,CAAcsB,WAAd,CAA0Ba,QAA1B,EAAoC,KAAKrC,MAAL,CAAYkC,EAAhD,CAAP;UACA,CAjBU,CAAX;UAkBA,OAAO,KAAKhC,QAAL,CAAcuC,WAAd,CACNzB,KAAK,CAAC0B,OADA,EAENR,EAFM,EAGN,KAAKlC,MAAL,CAAY2C,IAHN,EAIN,KAAK3C,MAAL,CAAYkC,EAJN,CAAP;QAMA;;MACD,KAAK,QAAL;QAAe;UACd,OAAO,KAAKhC,QAAL,CAAc2B,WAAd,CAA0Bb,KAAK,CAACO,IAAhC,EAAsC,EAC5C,GAAG,KAAKvB,MAAL,CAAYuB,IAD6B;YAE5C,GAAGvB;UAFyC,CAAtC,CAAP;QAIA;;MACD,KAAK,MAAL;QAAa;UACZ;UACA;UACA,MAAM4C,SAAS,GAAG,EACjB,GAAG5C,MADc;YAEjB,GAAG,KAAKA,MAAL,CAAY6C,IAFE,CAEI;;UAFJ,CAAlB;UAIA,MAAMC,IAAI,GAAG,IAAAC,gBAAA,EAAY,KAAK9C,OAAjB,EAA0Be,KAAK,CAAC8B,IAAhC,CAAb;UACA,OAAO,KAAK5C,QAAL,CAAc8C,eAAd,CACN,KAAKnC,MAAL,CAAYG,KAAK,CAACJ,MAAlB,EAA0BgC,SAA1B,CADM,EAENE,IAFM,EAGNF,SAHM,CAAP;QAKA;;MACD,KAAK,OAAL;QAAc;UACb,OAAO,KAAK1C,QAAL,CAAc+C,YAAd,CACNjC,KAAK,CAAC8B,IADA,EAEN9B,KAAK,CAACO,IAAN,IAAcP,KAAK,CAACkC,KAFd,EAGN,KAAKlD,MAAL,CAAYmD,KAHN,CAAP;QAKA;;MACD,KAAK,QAAL;QAAe;UACd,MAAMC,SAAS,GAAG,EACjB,GAAG,KAAKpD,MAAL,CAAYqD,MADE;YAEjB,GAAGrD;UAFc,CAAlB;UAIA,OAAO,KAAKE,QAAL,CAAc2B,WAAd,CACN,KAAKhB,MAAL,CAAYG,KAAK,CAACJ,MAAlB,EAA0BwC,SAA1B,CADM,EAENA,SAFM,CAAP;QAIA;;MACD,KAAK,IAAL;QAAW;UACV,MAAME,WAAW,GAAG,EACnB,GAAG,KAAKtD,MAAL,CAAYgC,EADI;YAEnB,GAAGhC;UAFgB,CAApB;UAIA,OAAO,KAAKE,QAAL,CAAc2B,WAAd,CACN,KAAKhB,MAAL,CAAYG,KAAK,CAACJ,MAAlB,EAA0B0C,WAA1B,CADM,EAENA,WAFM,CAAP;QAIA;;MACD,KAAK,UAAL;QAAiB;UAChB,OAAO,KAAKpD,QAAL,CAAc2B,WAAd,CAA0Bb,KAAK,CAACO,IAAhC,EAAsC,EAC5C,GAAG,KAAKvB,MAAL,CAAYuD,QAD6B;YAE5C,GAAGvD;UAFyC,CAAtC,CAAP;QAIA;;MACD,KAAK,IAAL;QAAW;UACV,OAAO,KAAKE,QAAL,CAAc2B,WAAd,CAA0B,IAA1B,EAAgC,EAAhC,CAAP;QACA;;MACD,KAAK,KAAL;QAAY;UACX,MAAM2B,kBAAkB,GAAG,EAC1B,GAAG,KAAKxD,MAAL,CAAYyD,aADW;YAE1B,GAAGzD;UAFuB,CAA3B;UAIA,OAAO,KAAKE,QAAL,CAAc2B,WAAd,CACN,KAAKhB,MAAL,CAAYG,KAAK,CAACJ,MAAlB,EAA0B4C,kBAA1B,CADM,EAENA,kBAFM,CAAP;QAIA;;MACD,KAAK,MAAL;MACA,KAAK,MAAL;QAAa;UACZ,IAAIxC,KAAK,CAACI,IAAN,KAAe,MAAnB,EAA2B;YAC1BsC,OAAO,CAACC,IAAR,CACC,oEADD;UAGA;;UAED,OAAO,KAAKzD,QAAL,CAAc2B,WAAd,CAA0Bb,KAAK,CAAC4C,GAAhC,EAAqC,EAC3C,GAAG,KAAK5D,MAAL,CAAYuB,IAD4B;YAE3C,GAAGvB;UAFwC,CAArC,CAAP;QAIA;;MACD;QAAS;UACR0D,OAAO,CAACC,IAAR,CACE,oCAAmC3C,KAAK,CAACI,IAAK,uBADhD;UAGA,OAAO,IAAP;QACA;IArJF;EAuJA;;EAEOE,gDAAgD,GAAG,CAC1DV,MAD0D,EAE1DiD,SAF0D,KAGzC;IACjB,IAAIC,gBAAgC,GAAG,EAAvC;IACA,MAAMC,YAAyB,GAAG,EAAlC;IACAnD,MAAM,CAACoD,OAAP,CAAgBC,CAAD,IAAO;MACrB;AACH;AACA;AACA;AACA;MACG,IACCA,CAAC,CAAC7C,IAAF,KAAW,OAAX,IACC6C,CAAC,CAAC7C,IAAF,KAAW,MAAX,IACA6C,CAAC,CAACrD,MADF,IAEAqD,CAAC,CAACrD,MAAF,CAAS,CAAT,CAFA,IAGAqD,CAAC,CAACrD,MAAF,CAAS,CAAT,EAAYQ,IAAZ,KAAqB,OALvB,EAME;QACD;QACA,MAAM8C,MAAM,GAAG,KAAKrD,MAAL,CAAYiD,gBAAZ,CAAf;;QACA,IAAII,MAAM,CAACC,MAAP,GAAgB,CAApB,EAAuB;UACtBJ,YAAY,CAACK,IAAb,CAAkB,KAAKlE,QAAL,CAAc2B,WAAd,CAA0BqC,MAA1B,EAAkCL,SAAlC,CAAlB;QACA,CALA,CAOD;;;QACA,IAAII,CAAC,CAAC7C,IAAF,KAAW,OAAf,EAAwB;UACvB2C,YAAY,CAACK,IAAb,CAAkB,KAAKnD,WAAL,CAAiBgD,CAAjB,CAAlB;QACA,CAFD,MAEO,IAAIA,CAAC,CAAC7C,IAAF,KAAW,MAAf,EAAuB;UAC7B,MAAMiD,UAAU,GAAGJ,CAAC,CAACrD,MAAF,CAAS,CAAT,CAAnB;UACA,MAAMkC,IAAI,GAAG,IAAAC,gBAAA,EAAY,KAAK9C,OAAjB,EAA0BgE,CAAC,CAACnB,IAA5B,CAAb;UACAiB,YAAY,CAACK,IAAb,CACC,KAAKlE,QAAL,CAAcoE,gBAAd,CACCxB,IADD,EAECuB,UAAU,CAACvB,IAFZ,EAGCuB,UAAU,CAAC9C,IAAX,IAAmB8C,UAAU,CAACnB,KAH/B,EAIC,KAAKlD,MAAL,CAAYmD,KAJb,CADD;QAQA;;QAEDW,gBAAgB,GAAG,EAAnB;QACA;MACA;;MACDA,gBAAgB,GAAG,CAAC,GAAGA,gBAAJ,EAAsBG,CAAtB,CAAnB;IACA,CAvCD;IAyCA;;IACA,IAAIH,gBAAgB,CAACK,MAAjB,GAA0B,CAA9B,EAAiC;MAChCJ,YAAY,CAACK,IAAb,CACC,KAAKlE,QAAL,CAAc2B,WAAd,CAA0B,KAAKhB,MAAL,CAAYiD,gBAAZ,CAA1B,EAAyD,EAAzD,CADD;IAGA;;IAED,OAAOC,YAAP;EACA,CAvDuD;AA9L5C;;eAwPElE,M"}
1
+ {"version":3,"names":["Parser","constructor","options","styles","baseUrl","renderer","headingStylesMap","h1","h2","h3","h4","h5","h6","parse","tokens","_parse","elements","map","token","_parseToken","filter","element","type","children","getNormalizedSiblingNodesForBlockAndInlineTokens","text","paragraph","blockquote","depth","heading","code","lang","em","hr","li","items","item","flatMap","cItem","childTokens","listChildren","listItem","list","ordered","escape","linkStyle","link","href","getValidURL","image","title","boldStyle","strong","italicStyle","codespan","br","strikethroughStyle","strikethrough","del","raw","console","warn","html","textStyle","tokenRenderQueue","siblingNodes","forEach","t","parsed","length","push","imageToken","linkImage"],"sourceRoot":"../../../src","sources":["lib/Parser.tsx"],"mappings":"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"}
@@ -15,80 +15,148 @@ var _disc = _interopRequireDefault(require("@jsamr/counter-style/presets/disc"))
15
15
 
16
16
  var _decimal = _interopRequireDefault(require("@jsamr/counter-style/presets/decimal"));
17
17
 
18
- var _MDImage = _interopRequireDefault(require("./../components/MDImage"));
18
+ var _marked = require("marked");
19
19
 
20
- var _string = require("../utils/string");
20
+ var _MDImage = _interopRequireDefault(require("./../components/MDImage"));
21
21
 
22
22
  var _handlers = require("../utils/handlers");
23
23
 
24
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
25
 
26
26
  class Renderer {
27
- getTextNode = (children, styles) => {
28
- return /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
29
- key: (0, _string.generateRandomString)(),
30
- style: styles
31
- }, children);
32
- };
33
- getTextLinkNode = (children, href, styles) => {
34
- return /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
35
- accessibilityRole: "link",
36
- accessibilityHint: "Opens in a new window",
37
- key: (0, _string.generateRandomString)(),
38
- onPress: (0, _handlers.onLinkPress)(href),
39
- style: styles
40
- }, children);
41
- };
42
- getImageLinkNode = (href, imageUrl, alt, style) => {
43
- const imageNode = this.getImageNode(imageUrl, alt, style);
44
- return /*#__PURE__*/_react.default.createElement(_reactNative.TouchableHighlight, {
45
- accessibilityRole: "link",
46
- accessibilityHint: "Opens in a new window",
47
- onPress: (0, _handlers.onLinkPress)(href),
48
- key: (0, _string.generateRandomString)()
49
- }, imageNode);
50
- };
27
+ slugPrefix = "react-native-marked-ele";
51
28
 
52
- getViewNode(children, styles) {
53
- return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
54
- key: (0, _string.generateRandomString)(),
55
- style: styles
56
- }, children);
29
+ constructor() {
30
+ this.slugger = new _marked.Slugger();
31
+ }
32
+
33
+ paragraph(children, styles) {
34
+ return this.getViewNode(children, styles);
35
+ }
36
+
37
+ blockquote(children, styles) {
38
+ return this.getBlockquoteNode(children, styles);
39
+ }
40
+
41
+ heading(text, styles) {
42
+ return this.getTextNode(text, styles);
57
43
  }
58
44
 
59
- getCodeBlockNode(text, containerStyle, textStyle) {
45
+ code(text, _language, containerStyle, textStyle) {
60
46
  return /*#__PURE__*/_react.default.createElement(_reactNative.ScrollView, {
61
47
  horizontal: true,
62
- key: (0, _string.generateRandomString)(),
48
+ key: this.getKey(),
63
49
  contentContainerStyle: containerStyle
64
50
  }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
65
51
  style: textStyle
66
52
  }, text));
67
53
  }
68
54
 
69
- getBlockquoteNode(children, styles) {
70
- return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
71
- key: (0, _string.generateRandomString)(),
55
+ hr(styles) {
56
+ return this.getViewNode(null, styles);
57
+ }
58
+
59
+ listItem(children, styles) {
60
+ return this.getViewNode(children, styles);
61
+ }
62
+
63
+ list(ordered, li, listStyle, textStyle) {
64
+ return /*#__PURE__*/_react.default.createElement(_reactNativeLi.default, {
65
+ counterRenderer: ordered ? _decimal.default : _disc.default,
66
+ markerTextStyle: textStyle,
67
+ markerBoxStyle: listStyle,
68
+ key: this.getKey()
69
+ }, li.map(node => node));
70
+ }
71
+
72
+ escape(text, styles) {
73
+ return this.getTextNode(text, styles);
74
+ }
75
+
76
+ link(children, href, styles) {
77
+ return /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
78
+ accessibilityRole: "link",
79
+ accessibilityHint: "Opens in a new window",
80
+ key: this.getKey(),
81
+ onPress: (0, _handlers.onLinkPress)(href),
72
82
  style: styles
73
83
  }, children);
74
84
  }
75
85
 
76
- getImageNode(uri, alt, style) {
86
+ image(uri, alt, style) {
77
87
  return /*#__PURE__*/_react.default.createElement(_MDImage.default, {
78
- key: (0, _string.generateRandomString)(),
88
+ key: this.getKey(),
79
89
  uri: uri,
80
90
  alt: alt,
81
91
  style: style
82
92
  });
83
93
  }
84
94
 
85
- getListNode(ordered, li, listStyle, textStyle) {
86
- return /*#__PURE__*/_react.default.createElement(_reactNativeLi.default, {
87
- counterRenderer: ordered ? _decimal.default : _disc.default,
88
- markerTextStyle: textStyle,
89
- markerBoxStyle: listStyle,
90
- key: (0, _string.generateRandomString)()
91
- }, li.map(node => node));
95
+ strong(children, styles) {
96
+ return this.getTextNode(children, styles);
97
+ }
98
+
99
+ em(children, styles) {
100
+ return this.getTextNode(children, styles);
101
+ }
102
+
103
+ codespan(text, styles) {
104
+ return this.getTextNode(text, styles);
105
+ }
106
+
107
+ br() {
108
+ return this.getTextNode("\n", {});
109
+ }
110
+
111
+ del(children, styles) {
112
+ return this.getTextNode(children, styles);
113
+ }
114
+
115
+ text(text, styles) {
116
+ return this.getTextNode(text, styles);
117
+ }
118
+
119
+ html(text, styles) {
120
+ return this.getTextNode(text, styles);
121
+ }
122
+
123
+ linkImage(href, imageUrl, alt, style) {
124
+ const imageNode = this.image(imageUrl, alt, style);
125
+ return /*#__PURE__*/_react.default.createElement(_reactNative.TouchableHighlight, {
126
+ accessibilityRole: "link",
127
+ accessibilityHint: "Opens in a new window",
128
+ onPress: (0, _handlers.onLinkPress)(href),
129
+ key: this.getKey()
130
+ }, imageNode);
131
+ }
132
+
133
+ getKey() {
134
+ return this.slugger.slug(this.slugPrefix);
135
+ }
136
+
137
+ getTextNode(children, styles) {
138
+ return /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
139
+ key: this.getKey(),
140
+ style: styles
141
+ }, children);
142
+ }
143
+
144
+ getViewNode(children, styles) {
145
+ {
146
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
147
+ key: this.getKey(),
148
+ style: styles
149
+ }, children);
150
+ }
151
+ }
152
+
153
+ getBlockquoteNode(children, styles) {
154
+ {
155
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
156
+ key: this.getKey(),
157
+ style: styles
158
+ }, children);
159
+ }
92
160
  }
93
161
 
94
162
  }