react-native-marked 1.5.0 → 1.6.0

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/README.md CHANGED
@@ -34,11 +34,12 @@ const ExampleComponent = () => {
34
34
  export default ExampleComponent;
35
35
  ```
36
36
 
37
- ## Example
37
+ ## Examples
38
38
 
39
- https://snack.expo.dev/@gmsgowtham/react-native-marked
39
+ - RN App: https://github.com/gmsgowtham/react-native-marked-test
40
+ - Snack: https://snack.expo.dev/@gmsgowtham/react-native-marked
40
41
 
41
- ## [Props](https://github.com/gmsgowtham/react-native-marked/blob/4ef070931b7d309a7490c41e45129e12525d12d9/src/lib/types.ts#L18)
42
+ ## [Props](https://github.com/gmsgowtham/react-native-marked/blob/main/src/lib/types.ts#L9)
42
43
 
43
44
  | Prop | Description | Type | Optional? |
44
45
  | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------- |
@@ -46,12 +47,32 @@ https://snack.expo.dev/@gmsgowtham/react-native-marked
46
47
  | 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 |
47
48
  | styles | Styles for parsed components | [MarkedStyles](https://github.com/gmsgowtham/react-native-marked/blob/4ef070931b7d309a7490c41e45129e12525d12d9/src/theme/types.ts#L3) | true |
48
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 |
50
+ | baseUrl | A prefix url for any relative link | string | true |
51
+
52
+ ## Supported elements
53
+
54
+ - [x] Headings (1 to 6)
55
+ - [x] Paragraph
56
+ - [x] Emphasis (bold, italic, and strikethrough)
57
+ - [x] Link
58
+ - [x] Image
59
+ - [x] Blockquote
60
+ - [x] Inline Code
61
+ - [x] Code Block
62
+ - [x] List (ordered, unordered)
63
+ - [x] Horizontal Rule
64
+ - [ ] Table
65
+ - [ ] HTML
66
+
67
+ Ref: [CommonMark](https://commonmark.org/help/)
68
+
69
+ > HTML will be treated as plain text
49
70
 
50
71
  ## Screenshots
51
72
 
52
- | Dark Theme | Light Theme |
53
- | :-------------------------------------------------------------------: | :---------------------------------------------------------------------: |
54
- | ![Dark theme](assets/Screenshot_1662875200.png?raw=true 'Dark Theme') | ![Light theme](assets/Screenshot_1662875206.png?raw=true 'Light Theme') |
73
+ | Dark Theme | Light Theme |
74
+ | :--------------------------------------------------------: | :-----------------------------------------------------------: |
75
+ | ![Dark theme](assets/dark-theme.png?raw=true 'Dark Theme') | ![Light theme](assets/light-theme.png?raw=true 'Light Theme') |
55
76
 
56
77
  ## Contributing
57
78
 
@@ -28,13 +28,15 @@ const Markdown = _ref => {
28
28
  value,
29
29
  flatListProps,
30
30
  theme,
31
+ baseUrl,
31
32
  styles: userStyles
32
33
  } = _ref;
33
34
  const colorScheme = (0, _reactNative.useColorScheme)();
34
35
  const styles = (0, _react.useMemo)(() => (0, _styles.default)(userStyles, colorScheme, theme), [userStyles, colorScheme, theme]);
35
36
  const rnElements = (0, _react.useMemo)(() => {
36
37
  const parser = new _Parser.default({
37
- styles
38
+ styles,
39
+ baseUrl
38
40
  });
39
41
 
40
42
  const tokens = _marked.marked.lexer(value, {
@@ -43,7 +45,7 @@ const Markdown = _ref => {
43
45
  });
44
46
 
45
47
  return parser.parse(tokens);
46
- }, [value, styles]);
48
+ }, [value, styles, baseUrl]);
47
49
  const renderItem = (0, _react.useCallback)(_ref2 => {
48
50
  let {
49
51
  item
@@ -1 +1 @@
1
- {"version":3,"names":["Markdown","value","flatListProps","theme","styles","userStyles","colorScheme","useColorScheme","useMemo","getStyles","rnElements","parser","Parser","tokens","marked","lexer","mangle","gfm","parse","renderItem","useCallback","item","keyExtractor","_","index","toString","container","memo"],"sourceRoot":"../../src","sources":["Markdown.tsx"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAGA,MAAMA,QAAQ,GAAG,QAKI;EAAA,IALH;IAChBC,KADgB;IAEhBC,aAFgB;IAGhBC,KAHgB;IAIhBC,MAAM,EAAEC;EAJQ,CAKG;EACnB,MAAMC,WAAW,GAAG,IAAAC,2BAAA,GAApB;EACA,MAAMH,MAAM,GAAG,IAAAI,cAAA,EACb,MAAM,IAAAC,eAAA,EAAUJ,UAAV,EAAsBC,WAAtB,EAAmCH,KAAnC,CADO,EAEb,CAACE,UAAD,EAAaC,WAAb,EAA0BH,KAA1B,CAFa,CAAf;EAKA,MAAMO,UAAU,GAAG,IAAAF,cAAA,EAAQ,MAAM;IAC/B,MAAMG,MAAM,GAAG,IAAIC,eAAJ,CAAW;MACxBR;IADwB,CAAX,CAAf;;IAGA,MAAMS,MAAM,GAAGC,cAAA,CAAOC,KAAP,CAAad,KAAb,EAAoB;MACjCe,MAAM,EAAE,KADyB;MAEjCC,GAAG,EAAE;IAF4B,CAApB,CAAf;;IAKA,OAAON,MAAM,CAACO,KAAP,CAAaL,MAAb,CAAP;EACD,CAVkB,EAUhB,CAACZ,KAAD,EAAQG,MAAR,CAVgB,CAAnB;EAYA,MAAMe,UAAU,GAAG,IAAAC,kBAAA,EAAY,SAAmC;IAAA,IAAlC;MAAEC;IAAF,CAAkC;IAChE,oBAAO,4DAAGA,IAAH,CAAP;EACD,CAFkB,EAEhB,EAFgB,CAAnB;EAIA,MAAMC,YAAY,GAAG,IAAAF,kBAAA,EACnB,CAACG,CAAD,EAAeC,KAAf,KAAiCA,KAAK,CAACC,QAAN,EADd,EAEnB,EAFmB,CAArB;EAKA,oBACE,6BAAC,qBAAD;IACE,YAAY,EAAEH,YADhB;IAEE,mBAAmB,EAAE,CAFvB;IAGE,kBAAkB,EAAE,CAHtB;IAIE,qBAAqB,MAJvB;IAKE,KAAK,EAAElB,MAAM,CAACsB;EALhB,GAMMxB,aANN;IAOE,IAAI,EAAEQ,UAPR;IAQE,UAAU,EAAES;EARd,GADF;AAYD,CA7CD;;4BA+Ce,IAAAQ,WAAA,EAAK3B,QAAL,C"}
1
+ {"version":3,"names":["Markdown","value","flatListProps","theme","baseUrl","styles","userStyles","colorScheme","useColorScheme","useMemo","getStyles","rnElements","parser","Parser","tokens","marked","lexer","mangle","gfm","parse","renderItem","useCallback","item","keyExtractor","_","index","toString","container","memo"],"sourceRoot":"../../src","sources":["Markdown.tsx"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAGA,MAAMA,QAAQ,GAAG,QAMI;EAAA,IANH;IAChBC,KADgB;IAEhBC,aAFgB;IAGhBC,KAHgB;IAIhBC,OAJgB;IAKhBC,MAAM,EAAEC;EALQ,CAMG;EACnB,MAAMC,WAAW,GAAG,IAAAC,2BAAA,GAApB;EACA,MAAMH,MAAM,GAAG,IAAAI,cAAA,EACb,MAAM,IAAAC,eAAA,EAAUJ,UAAV,EAAsBC,WAAtB,EAAmCJ,KAAnC,CADO,EAEb,CAACG,UAAD,EAAaC,WAAb,EAA0BJ,KAA1B,CAFa,CAAf;EAKA,MAAMQ,UAAU,GAAG,IAAAF,cAAA,EAAQ,MAAM;IAC/B,MAAMG,MAAM,GAAG,IAAIC,eAAJ,CAAW;MAAER,MAAF;MAAUD;IAAV,CAAX,CAAf;;IACA,MAAMU,MAAM,GAAGC,cAAA,CAAOC,KAAP,CAAaf,KAAb,EAAoB;MAAEgB,MAAM,EAAE,KAAV;MAAiBC,GAAG,EAAE;IAAtB,CAApB,CAAf;;IACA,OAAON,MAAM,CAACO,KAAP,CAAaL,MAAb,CAAP;EACD,CAJkB,EAIhB,CAACb,KAAD,EAAQI,MAAR,EAAgBD,OAAhB,CAJgB,CAAnB;EAMA,MAAMgB,UAAU,GAAG,IAAAC,kBAAA,EAAY,SAAmC;IAAA,IAAlC;MAAEC;IAAF,CAAkC;IAChE,oBAAO,4DAAGA,IAAH,CAAP;EACD,CAFkB,EAEhB,EAFgB,CAAnB;EAIA,MAAMC,YAAY,GAAG,IAAAF,kBAAA,EACnB,CAACG,CAAD,EAAeC,KAAf,KAAiCA,KAAK,CAACC,QAAN,EADd,EAEnB,EAFmB,CAArB;EAKA,oBACE,6BAAC,qBAAD;IACE,YAAY,EAAEH,YADhB;IAEE,mBAAmB,EAAE,CAFvB;IAGE,kBAAkB,EAAE,CAHtB;IAIE,qBAAqB,MAJvB;IAKE,KAAK,EAAElB,MAAM,CAACsB;EALhB,GAMMzB,aANN;IAOE,IAAI,EAAES,UAPR;IAQE,UAAU,EAAES;EARd,GADF;AAYD,CAxCD;;4BA0Ce,IAAAQ,WAAA,EAAK5B,QAAL,C"}
@@ -7,6 +7,8 @@ exports.default = void 0;
7
7
 
8
8
  var _Renderer = _interopRequireDefault(require("./Renderer"));
9
9
 
10
+ var _url = require("./../utils/url");
11
+
10
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
13
 
12
14
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
@@ -19,6 +21,8 @@ class Parser {
19
21
 
20
22
  _defineProperty(this, "headingStylesMap", void 0);
21
23
 
24
+ _defineProperty(this, "baseUrl", void 0);
25
+
22
26
  _defineProperty(this, "getNormalizedSiblingNodesForBlockAndInlineTokens", (tokens, textStyle) => {
23
27
  let tokenRenderQueue = [];
24
28
  const siblingNodes = [];
@@ -41,7 +45,8 @@ class Parser {
41
45
  siblingNodes.push(this.parseInline([t]));
42
46
  } else if (t.type === 'link') {
43
47
  const imageToken = t.tokens[0];
44
- siblingNodes.push(this.renderer.getImageLinkNode(t.href, imageToken.href, imageToken.text || imageToken.title, this.styles.image));
48
+ const href = (0, _url.getValidURL)(this.baseUrl, t.href);
49
+ siblingNodes.push(this.renderer.getImageLinkNode(href, imageToken.href, imageToken.text || imageToken.title, this.styles.image));
45
50
  }
46
51
 
47
52
  tokenRenderQueue = [];
@@ -61,6 +66,7 @@ class Parser {
61
66
 
62
67
  this.styles = { ...options.styles
63
68
  };
69
+ this.baseUrl = options.baseUrl ?? '';
64
70
  this.renderer = new _Renderer.default();
65
71
  this.headingStylesMap = {
66
72
  1: this.styles.h1,
@@ -152,7 +158,8 @@ class Parser {
152
158
  ...this.styles.link // To override color property
153
159
 
154
160
  };
155
- return this.renderer.getTextLinkNode(this.parseInline(token.tokens, linkStyle), token.href, linkStyle);
161
+ const href = (0, _url.getValidURL)(this.baseUrl, token.href);
162
+ return this.renderer.getTextLinkNode(this.parseInline(token.tokens, linkStyle), href, linkStyle);
156
163
  }
157
164
 
158
165
  case 'image':
@@ -199,6 +206,7 @@ class Parser {
199
206
  case 'text':
200
207
  case 'html':
201
208
  {
209
+ if (token.type === 'html') console.warn('react-native-marked: rendering html from markdown is not supported');
202
210
  return this.renderer.getTextNode(token.raw, { ...this.styles.text,
203
211
  ...styles
204
212
  });
@@ -206,7 +214,7 @@ class Parser {
206
214
 
207
215
  default:
208
216
  {
209
- console.warn(`Token with '${token.type}' type was not found.`);
217
+ console.warn(`react-native-marked: token with '${token.type}' type was not found.`);
210
218
  return null;
211
219
  }
212
220
  }
@@ -1 +1 @@
1
- {"version":3,"names":["Parser","constructor","options","tokens","textStyle","tokenRenderQueue","siblingNodes","forEach","t","type","parsed","parseInline","length","push","renderer","getTextNode","imageToken","getImageLinkNode","href","text","title","styles","image","Renderer","headingStylesMap","h1","h2","h3","h4","h5","h6","parse","elements","map","token","paragraphChildren","getNormalizedSiblingNodesForBlockAndInlineTokens","getViewNode","paragraph","getBlockquoteNode","blockquote","depth","getCodeBlockNode","code","em","hr","li","items","item","children","cItem","childTokens","listChildren","getListNode","ordered","list","filter","element","linkStyle","link","getTextLinkNode","getImageNode","boldStyle","strong","italicStyle","codespan","strikethroughStyle","strikethrough","raw","console","warn"],"sourceRoot":"../../src","sources":["Parser.tsx"],"mappings":"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"}
1
+ {"version":3,"names":["Parser","constructor","options","tokens","textStyle","tokenRenderQueue","siblingNodes","forEach","t","type","parsed","parseInline","length","push","renderer","getTextNode","imageToken","href","getValidURL","baseUrl","getImageLinkNode","text","title","styles","image","Renderer","headingStylesMap","h1","h2","h3","h4","h5","h6","parse","elements","map","token","paragraphChildren","getNormalizedSiblingNodesForBlockAndInlineTokens","getViewNode","paragraph","getBlockquoteNode","blockquote","depth","getCodeBlockNode","code","em","hr","li","items","item","children","cItem","childTokens","listChildren","getListNode","ordered","list","filter","element","linkStyle","link","getTextLinkNode","getImageNode","boldStyle","strong","italicStyle","codespan","strikethroughStyle","strikethrough","console","warn","raw"],"sourceRoot":"../../src","sources":["Parser.tsx"],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getValidURL = void 0;
7
+
8
+ const getValidURL = (prefix, path) => {
9
+ // remove trailing slash from prefix
10
+ if (prefix.endsWith('/')) {
11
+ prefix = prefix.slice(0, -1);
12
+ } // path is valid url
13
+
14
+
15
+ if (path.startsWith('https') || path.startsWith('http')) {
16
+ return path;
17
+ } // absolute path
18
+
19
+
20
+ if (path.startsWith('/')) {
21
+ return `${prefix}${path}`;
22
+ } // relative path
23
+
24
+
25
+ return `${prefix}/${path}`;
26
+ };
27
+
28
+ exports.getValidURL = getValidURL;
29
+ //# sourceMappingURL=url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getValidURL","prefix","path","endsWith","slice","startsWith"],"sourceRoot":"../../src","sources":["url.ts"],"mappings":";;;;;;;AAAO,MAAMA,WAAW,GAAG,CAACC,MAAD,EAAiBC,IAAjB,KAAkC;EAC3D;EACA,IAAID,MAAM,CAACE,QAAP,CAAgB,GAAhB,CAAJ,EAA0B;IACxBF,MAAM,GAAGA,MAAM,CAACG,KAAP,CAAa,CAAb,EAAgB,CAAC,CAAjB,CAAT;EACD,CAJ0D,CAM3D;;;EACA,IAAIF,IAAI,CAACG,UAAL,CAAgB,OAAhB,KAA4BH,IAAI,CAACG,UAAL,CAAgB,MAAhB,CAAhC,EAAyD;IACvD,OAAOH,IAAP;EACD,CAT0D,CAW3D;;;EACA,IAAIA,IAAI,CAACG,UAAL,CAAgB,GAAhB,CAAJ,EAA0B;IACxB,OAAQ,GAAEJ,MAAO,GAAEC,IAAK,EAAxB;EACD,CAd0D,CAgB3D;;;EACA,OAAQ,GAAED,MAAO,IAAGC,IAAK,EAAzB;AACD,CAlBM"}
@@ -11,20 +11,22 @@ const Markdown = _ref => {
11
11
  value,
12
12
  flatListProps,
13
13
  theme,
14
+ baseUrl,
14
15
  styles: userStyles
15
16
  } = _ref;
16
17
  const colorScheme = useColorScheme();
17
18
  const styles = useMemo(() => getStyles(userStyles, colorScheme, theme), [userStyles, colorScheme, theme]);
18
19
  const rnElements = useMemo(() => {
19
20
  const parser = new Parser({
20
- styles
21
+ styles,
22
+ baseUrl
21
23
  });
22
24
  const tokens = marked.lexer(value, {
23
25
  mangle: false,
24
26
  gfm: true
25
27
  });
26
28
  return parser.parse(tokens);
27
- }, [value, styles]);
29
+ }, [value, styles, baseUrl]);
28
30
  const renderItem = useCallback(_ref2 => {
29
31
  let {
30
32
  item
@@ -1 +1 @@
1
- {"version":3,"names":["React","memo","useCallback","useMemo","FlatList","useColorScheme","marked","Parser","getStyles","Markdown","value","flatListProps","theme","styles","userStyles","colorScheme","rnElements","parser","tokens","lexer","mangle","gfm","parse","renderItem","item","keyExtractor","_","index","toString","container"],"sourceRoot":"../../src","sources":["Markdown.tsx"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,IAAhB,EAAiCC,WAAjC,EAA8CC,OAA9C,QAA6D,OAA7D;AACA,SAASC,QAAT,EAAmBC,cAAnB,QAAyC,cAAzC;AACA,SAASC,MAAT,QAAuB,QAAvB;AACA,OAAOC,MAAP,MAAmB,UAAnB;AACA,OAAOC,SAAP,MAAsB,iBAAtB;;AAGA,MAAMC,QAAQ,GAAG,QAKI;EAAA,IALH;IAChBC,KADgB;IAEhBC,aAFgB;IAGhBC,KAHgB;IAIhBC,MAAM,EAAEC;EAJQ,CAKG;EACnB,MAAMC,WAAW,GAAGV,cAAc,EAAlC;EACA,MAAMQ,MAAM,GAAGV,OAAO,CACpB,MAAMK,SAAS,CAACM,UAAD,EAAaC,WAAb,EAA0BH,KAA1B,CADK,EAEpB,CAACE,UAAD,EAAaC,WAAb,EAA0BH,KAA1B,CAFoB,CAAtB;EAKA,MAAMI,UAAU,GAAGb,OAAO,CAAC,MAAM;IAC/B,MAAMc,MAAM,GAAG,IAAIV,MAAJ,CAAW;MACxBM;IADwB,CAAX,CAAf;IAGA,MAAMK,MAAM,GAAGZ,MAAM,CAACa,KAAP,CAAaT,KAAb,EAAoB;MACjCU,MAAM,EAAE,KADyB;MAEjCC,GAAG,EAAE;IAF4B,CAApB,CAAf;IAKA,OAAOJ,MAAM,CAACK,KAAP,CAAaJ,MAAb,CAAP;EACD,CAVyB,EAUvB,CAACR,KAAD,EAAQG,MAAR,CAVuB,CAA1B;EAYA,MAAMU,UAAU,GAAGrB,WAAW,CAAC,SAAmC;IAAA,IAAlC;MAAEsB;IAAF,CAAkC;IAChE,oBAAO,0CAAGA,IAAH,CAAP;EACD,CAF6B,EAE3B,EAF2B,CAA9B;EAIA,MAAMC,YAAY,GAAGvB,WAAW,CAC9B,CAACwB,CAAD,EAAeC,KAAf,KAAiCA,KAAK,CAACC,QAAN,EADH,EAE9B,EAF8B,CAAhC;EAKA,oBACE,oBAAC,QAAD;IACE,YAAY,EAAEH,YADhB;IAEE,mBAAmB,EAAE,CAFvB;IAGE,kBAAkB,EAAE,CAHtB;IAIE,qBAAqB,MAJvB;IAKE,KAAK,EAAEZ,MAAM,CAACgB;EALhB,GAMMlB,aANN;IAOE,IAAI,EAAEK,UAPR;IAQE,UAAU,EAAEO;EARd,GADF;AAYD,CA7CD;;AA+CA,4BAAetB,IAAI,CAACQ,QAAD,CAAnB"}
1
+ {"version":3,"names":["React","memo","useCallback","useMemo","FlatList","useColorScheme","marked","Parser","getStyles","Markdown","value","flatListProps","theme","baseUrl","styles","userStyles","colorScheme","rnElements","parser","tokens","lexer","mangle","gfm","parse","renderItem","item","keyExtractor","_","index","toString","container"],"sourceRoot":"../../src","sources":["Markdown.tsx"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,IAAhB,EAAiCC,WAAjC,EAA8CC,OAA9C,QAA6D,OAA7D;AACA,SAASC,QAAT,EAAmBC,cAAnB,QAAyC,cAAzC;AACA,SAASC,MAAT,QAAuB,QAAvB;AACA,OAAOC,MAAP,MAAmB,UAAnB;AACA,OAAOC,SAAP,MAAsB,iBAAtB;;AAGA,MAAMC,QAAQ,GAAG,QAMI;EAAA,IANH;IAChBC,KADgB;IAEhBC,aAFgB;IAGhBC,KAHgB;IAIhBC,OAJgB;IAKhBC,MAAM,EAAEC;EALQ,CAMG;EACnB,MAAMC,WAAW,GAAGX,cAAc,EAAlC;EACA,MAAMS,MAAM,GAAGX,OAAO,CACpB,MAAMK,SAAS,CAACO,UAAD,EAAaC,WAAb,EAA0BJ,KAA1B,CADK,EAEpB,CAACG,UAAD,EAAaC,WAAb,EAA0BJ,KAA1B,CAFoB,CAAtB;EAKA,MAAMK,UAAU,GAAGd,OAAO,CAAC,MAAM;IAC/B,MAAMe,MAAM,GAAG,IAAIX,MAAJ,CAAW;MAAEO,MAAF;MAAUD;IAAV,CAAX,CAAf;IACA,MAAMM,MAAM,GAAGb,MAAM,CAACc,KAAP,CAAaV,KAAb,EAAoB;MAAEW,MAAM,EAAE,KAAV;MAAiBC,GAAG,EAAE;IAAtB,CAApB,CAAf;IACA,OAAOJ,MAAM,CAACK,KAAP,CAAaJ,MAAb,CAAP;EACD,CAJyB,EAIvB,CAACT,KAAD,EAAQI,MAAR,EAAgBD,OAAhB,CAJuB,CAA1B;EAMA,MAAMW,UAAU,GAAGtB,WAAW,CAAC,SAAmC;IAAA,IAAlC;MAAEuB;IAAF,CAAkC;IAChE,oBAAO,0CAAGA,IAAH,CAAP;EACD,CAF6B,EAE3B,EAF2B,CAA9B;EAIA,MAAMC,YAAY,GAAGxB,WAAW,CAC9B,CAACyB,CAAD,EAAeC,KAAf,KAAiCA,KAAK,CAACC,QAAN,EADH,EAE9B,EAF8B,CAAhC;EAKA,oBACE,oBAAC,QAAD;IACE,YAAY,EAAEH,YADhB;IAEE,mBAAmB,EAAE,CAFvB;IAGE,kBAAkB,EAAE,CAHtB;IAIE,qBAAqB,MAJvB;IAKE,KAAK,EAAEZ,MAAM,CAACgB;EALhB,GAMMnB,aANN;IAOE,IAAI,EAAEM,UAPR;IAQE,UAAU,EAAEO;EARd,GADF;AAYD,CAxCD;;AA0CA,4BAAevB,IAAI,CAACQ,QAAD,CAAnB"}
@@ -1,6 +1,7 @@
1
1
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
2
 
3
3
  import Renderer from './Renderer';
4
+ import { getValidURL } from './../utils/url';
4
5
 
5
6
  class Parser {
6
7
  constructor(options) {
@@ -10,6 +11,8 @@ class Parser {
10
11
 
11
12
  _defineProperty(this, "headingStylesMap", void 0);
12
13
 
14
+ _defineProperty(this, "baseUrl", void 0);
15
+
13
16
  _defineProperty(this, "getNormalizedSiblingNodesForBlockAndInlineTokens", (tokens, textStyle) => {
14
17
  let tokenRenderQueue = [];
15
18
  const siblingNodes = [];
@@ -32,7 +35,8 @@ class Parser {
32
35
  siblingNodes.push(this.parseInline([t]));
33
36
  } else if (t.type === 'link') {
34
37
  const imageToken = t.tokens[0];
35
- siblingNodes.push(this.renderer.getImageLinkNode(t.href, imageToken.href, imageToken.text || imageToken.title, this.styles.image));
38
+ const href = getValidURL(this.baseUrl, t.href);
39
+ siblingNodes.push(this.renderer.getImageLinkNode(href, imageToken.href, imageToken.text || imageToken.title, this.styles.image));
36
40
  }
37
41
 
38
42
  tokenRenderQueue = [];
@@ -52,6 +56,7 @@ class Parser {
52
56
 
53
57
  this.styles = { ...options.styles
54
58
  };
59
+ this.baseUrl = options.baseUrl ?? '';
55
60
  this.renderer = new Renderer();
56
61
  this.headingStylesMap = {
57
62
  1: this.styles.h1,
@@ -143,7 +148,8 @@ class Parser {
143
148
  ...this.styles.link // To override color property
144
149
 
145
150
  };
146
- return this.renderer.getTextLinkNode(this.parseInline(token.tokens, linkStyle), token.href, linkStyle);
151
+ const href = getValidURL(this.baseUrl, token.href);
152
+ return this.renderer.getTextLinkNode(this.parseInline(token.tokens, linkStyle), href, linkStyle);
147
153
  }
148
154
 
149
155
  case 'image':
@@ -190,6 +196,7 @@ class Parser {
190
196
  case 'text':
191
197
  case 'html':
192
198
  {
199
+ if (token.type === 'html') console.warn('react-native-marked: rendering html from markdown is not supported');
193
200
  return this.renderer.getTextNode(token.raw, { ...this.styles.text,
194
201
  ...styles
195
202
  });
@@ -197,7 +204,7 @@ class Parser {
197
204
 
198
205
  default:
199
206
  {
200
- console.warn(`Token with '${token.type}' type was not found.`);
207
+ console.warn(`react-native-marked: token with '${token.type}' type was not found.`);
201
208
  return null;
202
209
  }
203
210
  }
@@ -1 +1 @@
1
- {"version":3,"names":["Renderer","Parser","constructor","options","tokens","textStyle","tokenRenderQueue","siblingNodes","forEach","t","type","parsed","parseInline","length","push","renderer","getTextNode","imageToken","getImageLinkNode","href","text","title","styles","image","headingStylesMap","h1","h2","h3","h4","h5","h6","parse","elements","map","token","paragraphChildren","getNormalizedSiblingNodesForBlockAndInlineTokens","getViewNode","paragraph","getBlockquoteNode","blockquote","depth","getCodeBlockNode","code","em","hr","li","items","item","children","cItem","childTokens","listChildren","getListNode","ordered","list","filter","element","linkStyle","link","getTextLinkNode","getImageNode","boldStyle","strong","italicStyle","codespan","strikethroughStyle","strikethrough","raw","console","warn"],"sourceRoot":"../../src","sources":["Parser.tsx"],"mappings":";;AAGA,OAAOA,QAAP,MAAqB,YAArB;;AAIA,MAAMC,MAAN,CAAa;EAIXC,WAAW,CAACC,OAAD,EAAyB;IAAA;;IAAA;;IAAA;;IAAA,0EA8KuB,CACzDC,MADyD,EAEzDC,SAFyD,KAGzC;MAChB,IAAIC,gBAAgC,GAAG,EAAvC;MACA,MAAMC,YAAyB,GAAG,EAAlC;MACAH,MAAM,CAACI,OAAP,CAAgBC,CAAD,IAAO;QACpB;AACN;AACA;AACA;AACA;QACM,IACEA,CAAC,CAACC,IAAF,KAAW,OAAX,IACCD,CAAC,CAACC,IAAF,KAAW,MAAX,IACCD,CAAC,CAACL,MADH,IAECK,CAAC,CAACL,MAAF,CAAS,CAAT,CAFD,IAGCK,CAAC,CAACL,MAAF,CAAS,CAAT,EAAYM,IAAZ,KAAqB,OALzB,EAME;UACA;UACA,MAAMC,MAAM,GAAG,KAAKC,WAAL,CAAiBN,gBAAjB,CAAf;;UACA,IAAIK,MAAM,CAACE,MAAP,GAAgB,CAApB,EAAuB;YACrBN,YAAY,CAACO,IAAb,CAAkB,KAAKC,QAAL,CAAcC,WAAd,CAA0BL,MAA1B,EAAkCN,SAAlC,CAAlB;UACD,CALD,CAOA;;;UACA,IAAII,CAAC,CAACC,IAAF,KAAW,OAAf,EAAwB;YACtBH,YAAY,CAACO,IAAb,CAAkB,KAAKF,WAAL,CAAiB,CAACH,CAAD,CAAjB,CAAlB;UACD,CAFD,MAEO,IAAIA,CAAC,CAACC,IAAF,KAAW,MAAf,EAAuB;YAC5B,MAAMO,UAAU,GAAGR,CAAC,CAACL,MAAF,CAAS,CAAT,CAAnB;YACAG,YAAY,CAACO,IAAb,CACE,KAAKC,QAAL,CAAcG,gBAAd,CACET,CAAC,CAACU,IADJ,EAEEF,UAAU,CAACE,IAFb,EAGEF,UAAU,CAACG,IAAX,IAAmBH,UAAU,CAACI,KAHhC,EAIE,KAAKC,MAAL,CAAYC,KAJd,CADF;UAQD;;UAEDjB,gBAAgB,GAAG,EAAnB;UACA;QACD;;QACDA,gBAAgB,GAAG,CAAC,GAAGA,gBAAJ,EAAsBG,CAAtB,CAAnB;MACD,CAtCD;MAwCA;;MACA,IAAIH,gBAAgB,CAACO,MAAjB,GAA0B,CAA9B,EAAiC;QAC/BN,YAAY,CAACO,IAAb,CACE,KAAKC,QAAL,CAAcC,WAAd,CAA0B,KAAKJ,WAAL,CAAiBN,gBAAjB,CAA1B,EAA8D,EAA9D,CADF;MAGD;;MAED,OAAOC,YAAP;IACD,CApOmC;;IAClC,KAAKe,MAAL,GAAc,EAAE,GAAGnB,OAAO,CAACmB;IAAb,CAAd;IACA,KAAKP,QAAL,GAAgB,IAAIf,QAAJ,EAAhB;IACA,KAAKwB,gBAAL,GAAwB;MACtB,GAAG,KAAKF,MAAL,CAAYG,EADO;MAEtB,GAAG,KAAKH,MAAL,CAAYI,EAFO;MAGtB,GAAG,KAAKJ,MAAL,CAAYK,EAHO;MAItB,GAAG,KAAKL,MAAL,CAAYM,EAJO;MAKtB,GAAG,KAAKN,MAAL,CAAYO,EALO;MAMtB,GAAG,KAAKP,MAAL,CAAYQ;IANO,CAAxB;EAQD;;EAEDC,KAAK,CAAC3B,MAAD,EAAyB;IAC5B,MAAM4B,QAAqB,GAAG5B,MAAM,CAAC6B,GAAP,CAAYC,KAAD,IAAW;MAClD,QAAQA,KAAK,CAACxB,IAAd;QACE,KAAK,OAAL;UAAc;YACZ,OAAO,IAAP;UACD;;QACD,KAAK,WAAL;UAAkB;YAChB,MAAMyB,iBAAiB,GACrB,KAAKC,gDAAL,CACEF,KAAK,CAAC9B,MADR,EAEE,KAAKkB,MAAL,CAAYF,IAFd,CADF;YAMA,OAAO,KAAKL,QAAL,CAAcsB,WAAd,CACLF,iBADK,EAEL,KAAKb,MAAL,CAAYgB,SAFP,CAAP;UAID;;QACD,KAAK,YAAL;UAAmB;YACjB,OAAO,KAAKvB,QAAL,CAAcwB,iBAAd,CACL,KAAKR,KAAL,CAAWG,KAAK,CAAC9B,MAAjB,CADK,EAEL,KAAKkB,MAAL,CAAYkB,UAFP,CAAP;UAID;;QACD,KAAK,SAAL;UAAgB;YACd,MAAMlB,MAAM,GAAG,KAAKE,gBAAL,CAAsBU,KAAK,CAACO,KAA5B,CAAf;YACA,OAAO,KAAK1B,QAAL,CAAcC,WAAd,CACL,KAAKJ,WAAL,CAAiBsB,KAAK,CAAC9B,MAAvB,EAA+BkB,MAA/B,CADK,EAELA,MAFK,CAAP;UAID;;QACD,KAAK,MAAL;UAAa;YACX,OAAO,KAAKP,QAAL,CAAc2B,gBAAd,CACLR,KAAK,CAACd,IADD,EAEL,KAAKE,MAAL,CAAYqB,IAFP,EAGL,KAAKrB,MAAL,CAAYsB,EAHP,CAAP;UAKD;;QACD,KAAK,IAAL;UAAW;YACT,OAAO,KAAK7B,QAAL,CAAcsB,WAAd,CAA0B,IAA1B,EAAgC,KAAKf,MAAL,CAAYuB,EAA5C,CAAP;UACD;;QACD,KAAK,MAAL;UAAa;YACX,MAAMC,EAAE,GAAGZ,KAAK,CAACa,KAAN,CAAYd,GAAZ,CAAiBe,IAAD,IAAU;cACnC,MAAMC,QAAQ,GAAGD,IAAI,CAAC5C,MAAL,CAAY6B,GAAZ,CAAiBiB,KAAD,IAAW;gBAC1C,IAAIA,KAAK,CAACxC,IAAN,KAAe,MAAnB,EAA2B;kBACzB;kBACA,MAAMyC,WAAW,GAAID,KAAD,CAA8B9C,MAA9B,IAAwC,EAA5D;kBACA,MAAMgD,YAAY,GAChB,KAAKhB,gDAAL,CACEe,WADF,EAEE,KAAK7B,MAAL,CAAYwB,EAFd,CADF;kBAKA,OAAO,KAAK/B,QAAL,CAAcsB,WAAd,CAA0Be,YAA1B,EAAwC,KAAK9B,MAAL,CAAYwB,EAApD,CAAP;gBACD;gBAED;;;gBACA,OAAO,KAAKf,KAAL,CAAW,CAACmB,KAAD,CAAX,CAAP;cACD,CAdgB,CAAjB;cAeA,OAAO,KAAKnC,QAAL,CAAcsB,WAAd,CAA0BY,QAA1B,EAAoC,KAAK3B,MAAL,CAAYwB,EAAhD,CAAP;YACD,CAjBU,CAAX;YAkBA,OAAO,KAAK/B,QAAL,CAAcsC,WAAd,CACLnB,KAAK,CAACoB,OADD,EAELR,EAFK,EAGL,KAAKxB,MAAL,CAAYiC,IAHP,EAIL,KAAKjC,MAAL,CAAYwB,EAJP,CAAP;UAMD;;QACD;UACE,OAAO,KAAKlC,WAAL,CAAiB,CAACsB,KAAD,CAAjB,CAAP;MAlEJ;IAoED,CArE6B,CAA9B;IAsEA,OAAOF,QAAQ,CAACwB,MAAT,CAAiBC,OAAD,IAAaA,OAAO,KAAK,IAAzC,CAAP;EACD;;EAED7C,WAAW,CACTR,MADS,EAETkB,MAFS,EAGT;IACA,MAAMU,QAAqB,GAAG5B,MAAM,CAAC6B,GAAP,CAAYC,KAAD,IAAW;MAClD,QAAQA,KAAK,CAACxB,IAAd;QACE,KAAK,QAAL;UAAe;YACb,OAAO,KAAKK,QAAL,CAAcC,WAAd,CAA0BkB,KAAK,CAACd,IAAhC,EAAsC,EAC3C,GAAG,KAAKE,MAAL,CAAYF,IAD4B;cAE3C,GAAGE;YAFwC,CAAtC,CAAP;UAID;;QACD,KAAK,MAAL;UAAa;YACX;YACA;YACA,MAAMoC,SAAS,GAAG,EAChB,GAAGpC,MADa;cAEhB,GAAG,KAAKA,MAAL,CAAYqC,IAFC,CAEK;;YAFL,CAAlB;YAIA,OAAO,KAAK5C,QAAL,CAAc6C,eAAd,CACL,KAAKhD,WAAL,CAAiBsB,KAAK,CAAC9B,MAAvB,EAA+BsD,SAA/B,CADK,EAELxB,KAAK,CAACf,IAFD,EAGLuC,SAHK,CAAP;UAKD;;QACD,KAAK,OAAL;UAAc;YACZ,OAAO,KAAK3C,QAAL,CAAc8C,YAAd,CACL3B,KAAK,CAACf,IADD,EAELe,KAAK,CAACd,IAAN,IAAcc,KAAK,CAACb,KAFf,EAGL,KAAKC,MAAL,CAAYC,KAHP,CAAP;UAKD;;QACD,KAAK,QAAL;UAAe;YACb,MAAMuC,SAAS,GAAG,EAChB,GAAG,KAAKxC,MAAL,CAAYyC,MADC;cAEhB,GAAGzC;YAFa,CAAlB;YAIA,OAAO,KAAKP,QAAL,CAAcC,WAAd,CACL,KAAKJ,WAAL,CAAiBsB,KAAK,CAAC9B,MAAvB,EAA+B0D,SAA/B,CADK,EAELA,SAFK,CAAP;UAID;;QACD,KAAK,IAAL;UAAW;YACT,MAAME,WAAW,GAAG,EAClB,GAAG,KAAK1C,MAAL,CAAYsB,EADG;cAElB,GAAGtB;YAFe,CAApB;YAIA,OAAO,KAAKP,QAAL,CAAcC,WAAd,CACL,KAAKJ,WAAL,CAAiBsB,KAAK,CAAC9B,MAAvB,EAA+B4D,WAA/B,CADK,EAELA,WAFK,CAAP;UAID;;QACD,KAAK,UAAL;UAAiB;YACf,OAAO,KAAKjD,QAAL,CAAcC,WAAd,CAA0BkB,KAAK,CAACd,IAAhC,EAAsC,EAC3C,GAAG,KAAKE,MAAL,CAAY2C,QAD4B;cAE3C,GAAG3C;YAFwC,CAAtC,CAAP;UAID;;QACD,KAAK,IAAL;UAAW;YACT,OAAO,KAAKP,QAAL,CAAcC,WAAd,CAA0B,IAA1B,EAAgC,EAAhC,CAAP;UACD;;QACD,KAAK,KAAL;UAAY;YACV,MAAMkD,kBAAkB,GAAG,EACzB,GAAG,KAAK5C,MAAL,CAAY6C,aADU;cAEzB,GAAG7C;YAFsB,CAA3B;YAIA,OAAO,KAAKP,QAAL,CAAcC,WAAd,CACL,KAAKJ,WAAL,CAAiBsB,KAAK,CAAC9B,MAAvB,EAA+B8D,kBAA/B,CADK,EAELA,kBAFK,CAAP;UAID;;QACD,KAAK,MAAL;QACA,KAAK,MAAL;UAAa;YACX,OAAO,KAAKnD,QAAL,CAAcC,WAAd,CAA0BkB,KAAK,CAACkC,GAAhC,EAAqC,EAC1C,GAAG,KAAK9C,MAAL,CAAYF,IAD2B;cAE1C,GAAGE;YAFuC,CAArC,CAAP;UAID;;QACD;UAAS;YACP+C,OAAO,CAACC,IAAR,CAAc,eAAcpC,KAAK,CAACxB,IAAK,uBAAvC;YACA,OAAO,IAAP;UACD;MA5EH;IA8ED,CA/E6B,CAA9B;IAgFA,OAAOsB,QAAQ,CAACwB,MAAT,CAAiBC,OAAD,IAAaA,OAAO,KAAK,IAAzC,CAAP;EACD;;AAhLU;;AA2Ob,eAAexD,MAAf"}
1
+ {"version":3,"names":["Renderer","getValidURL","Parser","constructor","options","tokens","textStyle","tokenRenderQueue","siblingNodes","forEach","t","type","parsed","parseInline","length","push","renderer","getTextNode","imageToken","href","baseUrl","getImageLinkNode","text","title","styles","image","headingStylesMap","h1","h2","h3","h4","h5","h6","parse","elements","map","token","paragraphChildren","getNormalizedSiblingNodesForBlockAndInlineTokens","getViewNode","paragraph","getBlockquoteNode","blockquote","depth","getCodeBlockNode","code","em","hr","li","items","item","children","cItem","childTokens","listChildren","getListNode","ordered","list","filter","element","linkStyle","link","getTextLinkNode","getImageNode","boldStyle","strong","italicStyle","codespan","strikethroughStyle","strikethrough","console","warn","raw"],"sourceRoot":"../../src","sources":["Parser.tsx"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export const getValidURL = (prefix, path) => {
2
+ // remove trailing slash from prefix
3
+ if (prefix.endsWith('/')) {
4
+ prefix = prefix.slice(0, -1);
5
+ } // path is valid url
6
+
7
+
8
+ if (path.startsWith('https') || path.startsWith('http')) {
9
+ return path;
10
+ } // absolute path
11
+
12
+
13
+ if (path.startsWith('/')) {
14
+ return `${prefix}${path}`;
15
+ } // relative path
16
+
17
+
18
+ return `${prefix}/${path}`;
19
+ };
20
+ //# sourceMappingURL=url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getValidURL","prefix","path","endsWith","slice","startsWith"],"sourceRoot":"../../src","sources":["url.ts"],"mappings":"AAAA,OAAO,MAAMA,WAAW,GAAG,CAACC,MAAD,EAAiBC,IAAjB,KAAkC;EAC3D;EACA,IAAID,MAAM,CAACE,QAAP,CAAgB,GAAhB,CAAJ,EAA0B;IACxBF,MAAM,GAAGA,MAAM,CAACG,KAAP,CAAa,CAAb,EAAgB,CAAC,CAAjB,CAAT;EACD,CAJ0D,CAM3D;;;EACA,IAAIF,IAAI,CAACG,UAAL,CAAgB,OAAhB,KAA4BH,IAAI,CAACG,UAAL,CAAgB,MAAhB,CAAhC,EAAyD;IACvD,OAAOH,IAAP;EACD,CAT0D,CAW3D;;;EACA,IAAIA,IAAI,CAACG,UAAL,CAAgB,GAAhB,CAAJ,EAA0B;IACxB,OAAQ,GAAEJ,MAAO,GAAEC,IAAK,EAAxB;EACD,CAd0D,CAgB3D;;;EACA,OAAQ,GAAED,MAAO,IAAGC,IAAK,EAAzB;AACD,CAlBM"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
2
  import type { MarkdownProps } from './types';
3
- declare const _default: React.MemoExoticComponent<({ value, flatListProps, theme, styles: userStyles, }: MarkdownProps) => JSX.Element>;
3
+ declare const _default: React.MemoExoticComponent<({ value, flatListProps, theme, baseUrl, styles: userStyles, }: MarkdownProps) => JSX.Element>;
4
4
  export default _default;
5
5
  //# sourceMappingURL=Markdown.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Markdown.d.ts","sourceRoot":"","sources":["../../../src/lib/Markdown.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgD,MAAM,OAAO,CAAC;AAKrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;;AAiD7C,wBAA8B"}
1
+ {"version":3,"file":"Markdown.d.ts","sourceRoot":"","sources":["../../../src/lib/Markdown.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgD,MAAM,OAAO,CAAC;AAKrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;;AA4C7C,wBAA8B"}
@@ -6,6 +6,7 @@ declare class Parser {
6
6
  private renderer;
7
7
  private styles;
8
8
  private headingStylesMap;
9
+ private baseUrl;
9
10
  constructor(options: ParserOptions);
10
11
  parse(tokens: marked.Token[]): ReactNode[];
11
12
  parseInline(tokens: marked.Token[], styles?: ViewStyle | TextStyle | ImageStyle): ReactNode[];
@@ -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;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGrC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,cAAM,MAAM;IACV,OAAO,CAAC,QAAQ,CAAC;IACjB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,gBAAgB,CAAwC;gBACpD,OAAO,EAAE,aAAa;IAalC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE;IA0E5B,WAAW,CACT,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,EACtB,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU;IAqF7C,OAAO,CAAC,gDAAgD,CAsDtD;CACH;AAED,eAAe,MAAM,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;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGrC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG7C,cAAM,MAAM;IACV,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;IA0E5B,WAAW,CACT,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,EACtB,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU;IA6F7C,OAAO,CAAC,gDAAgD,CAuDtD;CACH;AAED,eAAe,MAAM,CAAC"}
@@ -3,11 +3,11 @@ import type { FlatListProps } from 'react-native';
3
3
  import type { MarkedStyles, UserTheme } from './../theme/types';
4
4
  export interface ParserOptions {
5
5
  styles?: MarkedStyles;
6
+ baseUrl?: string;
6
7
  }
7
- export interface MarkdownProps {
8
+ export interface MarkdownProps extends ParserOptions {
8
9
  value: string;
9
10
  flatListProps?: Omit<FlatListProps<ReactNode>, 'data' | 'renderItem' | 'horizontal'>;
10
- styles?: MarkedStyles;
11
11
  theme?: UserTheme;
12
12
  }
13
13
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEhE,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,IAAI,CAClB,aAAa,CAAC,SAAS,CAAC,EACxB,MAAM,GAAG,YAAY,GAAG,YAAY,CACrC,CAAC;IACF,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEhE,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,IAAI,CAClB,aAAa,CAAC,SAAS,CAAC,EACxB,MAAM,GAAG,YAAY,GAAG,YAAY,CACrC,CAAC;IACF,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB"}
@@ -0,0 +1,2 @@
1
+ export declare const getValidURL: (prefix: string, path: string) => string;
2
+ //# sourceMappingURL=url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../src/utils/url.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,WAAY,MAAM,QAAQ,MAAM,WAkBvD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-marked",
3
- "version": "1.5.0",
3
+ "version": "1.6.0",
4
4
  "description": "Markdown renderer for React Native powered by marked.js",
5
5
  "main": "dist/commonjs/index",
6
6
  "module": "dist/module/index",
@@ -57,30 +57,30 @@
57
57
  "@testing-library/react-native": "11.3.0",
58
58
  "@types/jest": "29.2.0",
59
59
  "@types/marked": "4.0.7",
60
- "@types/react": "18.0.21",
60
+ "@types/react": "18.0.24",
61
61
  "@types/react-native": "0.70.6",
62
- "@typescript-eslint/eslint-plugin": "5.40.1",
63
- "@typescript-eslint/parser": "5.40.1",
62
+ "@typescript-eslint/eslint-plugin": "5.41.0",
63
+ "@typescript-eslint/parser": "5.41.0",
64
64
  "commitlint": "17.1.2",
65
65
  "eslint": "8.26.0",
66
66
  "eslint-config-prettier": "8.5.0",
67
67
  "eslint-plugin-jest": "27.1.3",
68
68
  "eslint-plugin-prettier": "4.2.1",
69
69
  "eslint-plugin-react-native-a11y": "3.3.0",
70
- "jest": "29.2.1",
71
- "jest-environment-jsdom": "29.2.1",
72
- "metro-react-native-babel-preset": "0.73.2",
70
+ "jest": "29.2.2",
71
+ "jest-environment-jsdom": "29.2.2",
72
+ "metro-react-native-babel-preset": "0.73.3",
73
73
  "pod-install": "0.1.38",
74
74
  "prettier": "2.7.1",
75
75
  "react": "18.2.0",
76
- "react-native": "0.70.3",
76
+ "react-native": "0.70.4",
77
77
  "react-native-builder-bob": "0.20.0",
78
78
  "react-test-renderer": "18.2.0",
79
79
  "release-it": "15.5.0",
80
80
  "typescript": "4.8.4"
81
81
  },
82
82
  "resolutions": {
83
- "@types/react": "18.0.21"
83
+ "@types/react": "18.0.24"
84
84
  },
85
85
  "peerDependencies": {
86
86
  "react": "^16.8.6 || ^17.0.0 || ^18.0.0",
@@ -9,6 +9,7 @@ const Markdown = ({
9
9
  value,
10
10
  flatListProps,
11
11
  theme,
12
+ baseUrl,
12
13
  styles: userStyles,
13
14
  }: MarkdownProps) => {
14
15
  const colorScheme = useColorScheme();
@@ -18,16 +19,10 @@ const Markdown = ({
18
19
  );
19
20
 
20
21
  const rnElements = useMemo(() => {
21
- const parser = new Parser({
22
- styles,
23
- });
24
- const tokens = marked.lexer(value, {
25
- mangle: false,
26
- gfm: true,
27
- });
28
-
22
+ const parser = new Parser({ styles, baseUrl });
23
+ const tokens = marked.lexer(value, { mangle: false, gfm: true });
29
24
  return parser.parse(tokens);
30
- }, [value, styles]);
25
+ }, [value, styles, baseUrl]);
31
26
 
32
27
  const renderItem = useCallback(({ item }: { item: ReactNode }) => {
33
28
  return <>{item}</>;
@@ -4,13 +4,16 @@ import type { marked } from 'marked';
4
4
  import Renderer from './Renderer';
5
5
  import type { MarkedStyles } from '../theme/types';
6
6
  import type { ParserOptions } from './types';
7
+ import { getValidURL } from './../utils/url';
7
8
 
8
9
  class Parser {
9
10
  private renderer;
10
11
  private styles: MarkedStyles;
11
12
  private headingStylesMap: Record<number, TextStyle | undefined>;
13
+ private baseUrl: string;
12
14
  constructor(options: ParserOptions) {
13
15
  this.styles = { ...options.styles };
16
+ this.baseUrl = options.baseUrl ?? '';
14
17
  this.renderer = new Renderer();
15
18
  this.headingStylesMap = {
16
19
  1: this.styles.h1,
@@ -115,9 +118,10 @@ class Parser {
115
118
  ...styles,
116
119
  ...this.styles.link, // To override color property
117
120
  };
121
+ const href = getValidURL(this.baseUrl, token.href);
118
122
  return this.renderer.getTextLinkNode(
119
123
  this.parseInline(token.tokens, linkStyle),
120
- token.href,
124
+ href,
121
125
  linkStyle
122
126
  );
123
127
  }
@@ -169,13 +173,20 @@ class Parser {
169
173
  }
170
174
  case 'text':
171
175
  case 'html': {
176
+ if (token.type === 'html')
177
+ console.warn(
178
+ 'react-native-marked: rendering html from markdown is not supported'
179
+ );
180
+
172
181
  return this.renderer.getTextNode(token.raw, {
173
182
  ...this.styles.text,
174
183
  ...styles,
175
184
  });
176
185
  }
177
186
  default: {
178
- console.warn(`Token with '${token.type}' type was not found.`);
187
+ console.warn(
188
+ `react-native-marked: token with '${token.type}' type was not found.`
189
+ );
179
190
  return null;
180
191
  }
181
192
  }
@@ -213,9 +224,10 @@ class Parser {
213
224
  siblingNodes.push(this.parseInline([t]));
214
225
  } else if (t.type === 'link') {
215
226
  const imageToken = t.tokens[0] as marked.Tokens.Image;
227
+ const href = getValidURL(this.baseUrl, t.href);
216
228
  siblingNodes.push(
217
229
  this.renderer.getImageLinkNode(
218
- t.href,
230
+ href,
219
231
  imageToken.href,
220
232
  imageToken.text || imageToken.title,
221
233
  this.styles.image
package/src/lib/types.ts CHANGED
@@ -4,14 +4,14 @@ import type { MarkedStyles, UserTheme } from './../theme/types';
4
4
 
5
5
  export interface ParserOptions {
6
6
  styles?: MarkedStyles;
7
+ baseUrl?: string;
7
8
  }
8
9
 
9
- export interface MarkdownProps {
10
+ export interface MarkdownProps extends ParserOptions {
10
11
  value: string;
11
12
  flatListProps?: Omit<
12
13
  FlatListProps<ReactNode>,
13
14
  'data' | 'renderItem' | 'horizontal'
14
15
  >;
15
- styles?: MarkedStyles;
16
16
  theme?: UserTheme;
17
17
  }
@@ -0,0 +1,19 @@
1
+ export const getValidURL = (prefix: string, path: string) => {
2
+ // remove trailing slash from prefix
3
+ if (prefix.endsWith('/')) {
4
+ prefix = prefix.slice(0, -1);
5
+ }
6
+
7
+ // path is valid url
8
+ if (path.startsWith('https') || path.startsWith('http')) {
9
+ return path;
10
+ }
11
+
12
+ // absolute path
13
+ if (path.startsWith('/')) {
14
+ return `${prefix}${path}`;
15
+ }
16
+
17
+ // relative path
18
+ return `${prefix}/${path}`;
19
+ };