react-native-marked 3.0.0 → 4.0.0-rc.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
@@ -17,6 +17,8 @@ yarn add react-native-marked
17
17
 
18
18
  ## Usage
19
19
 
20
+ ### Using Component
21
+
20
22
  ```tsx
21
23
  import * as React from "react";
22
24
  import Markdown from "react-native-marked";
@@ -35,11 +37,7 @@ const ExampleComponent = () => {
35
37
  export default ExampleComponent;
36
38
  ```
37
39
 
38
- ## Examples
39
-
40
- - RN App: https://github.com/gmsgowtham/react-native-marked-test
41
-
42
- ## [Props](https://github.com/gmsgowtham/react-native-marked/blob/main/src/lib/types.ts#L9)
40
+ #### [Props](https://github.com/gmsgowtham/react-native-marked/blob/main/src/lib/types.ts#L9)
43
41
 
44
42
  | Prop | Description | Type | Optional? |
45
43
  | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------- |
@@ -50,6 +48,46 @@ export default ExampleComponent;
50
48
  | baseUrl | A prefix url for any relative link | string | true |
51
49
  | renderer | Custom component Renderer | [RendererInterface](https://github.com/gmsgowtham/react-native-marked/blob/main/src/lib/types.ts#L25) | true |
52
50
 
51
+
52
+ ### Using hook
53
+
54
+ `useMarkdown` hook will return list of elements that can be rendered using a list component of your choice.
55
+
56
+ ```tsx
57
+ import React, { Fragment } from "react";
58
+ import { ScrollView, useColorScheme } from "react-native";
59
+ import { useMarkdown, type useMarkdownHookOptions } from "react-native-marked";
60
+
61
+ const CustomComponent = () => {
62
+ const colorScheme = useColorScheme();
63
+ const options: useMarkdownHookOptions = {
64
+ colorScheme
65
+ }
66
+ const elements = useMarkdown("# Hello world", options);
67
+ return (
68
+ <ScrollView>
69
+ {elements.map((element, index) => {
70
+ return <Fragment key={`demo_${index}`}>{element}</Fragment>
71
+ })}
72
+ </ScrollView>
73
+ );
74
+ };
75
+ ```
76
+
77
+ #### Options
78
+
79
+ | Option | Description | Type | Optional? |
80
+ | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | --------- |
81
+ | colorScheme | Device color scheme ("dark" or "light") | ColorSchemeName | false |
82
+ | styles | Styles for parsed components | [MarkedStyles](https://github.com/gmsgowtham/react-native-marked/blob/main/src/theme/types.ts#L5) | true |
83
+ | 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 |
84
+ | baseUrl | A prefix url for any relative link | string | true |
85
+ | renderer | Custom component Renderer | [RendererInterface](https://github.com/gmsgowtham/react-native-marked/blob/main/src/lib/types.ts#L25) | true |
86
+
87
+ ## Examples
88
+
89
+ - RN App: https://github.com/gmsgowtham/react-native-marked-test
90
+
53
91
  ## Supported elements
54
92
 
55
93
  - [x] Headings (1 to 6)
@@ -68,14 +106,15 @@ export default ExampleComponent;
68
106
  Ref: [CommonMark](https://commonmark.org/help/)
69
107
 
70
108
  > HTML will be treated as plain text
109
+ > Please refer [issue#290](https://github.com/gmsgowtham/react-native-marked/issues/290) for a potential solution
71
110
 
72
111
  ## Using custom components
73
112
 
74
113
  ```tsx
75
- import React, { ReactNode } from "react";
76
- import { Text } from "react-native";
114
+ import React, { ReactNode, Fragment } from "react";
115
+ import { Text, ScrollView } from "react-native";
77
116
  import type { ImageStyle, TextStyle } from "react-native";
78
- import Markdown, { Renderer } from "react-native-marked";
117
+ import Markdown, { Renderer, useMarkdown } from "react-native-marked";
79
118
  import type { RendererInterface } from "react-native-marked";
80
119
  import FastImage from "react-native-fast-image";
81
120
 
@@ -118,6 +157,19 @@ const ExampleComponent = () => {
118
157
  );
119
158
  };
120
159
 
160
+ // Alternate using hook
161
+ const ExampleComponentWithHook = () => {
162
+ const elements = useMarkdown("`Hello world`", { renderer });
163
+
164
+ return (
165
+ <ScrollView>
166
+ {elements.map((element, index) => {
167
+ return <Fragment key={`demo_${index}`}>{element}</Fragment>
168
+ })}
169
+ </ScrollView>
170
+ )
171
+ }
172
+
121
173
  export default ExampleComponent;
122
174
  ```
123
175
 
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = require("react");
9
+
10
+ var _marked = require("marked");
11
+
12
+ var _Parser = _interopRequireDefault(require("../lib/Parser"));
13
+
14
+ var _Renderer = _interopRequireDefault(require("../lib/Renderer"));
15
+
16
+ var _styles = _interopRequireDefault(require("./../theme/styles"));
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ const useMarkdown = (value, options) => {
21
+ const styles = (0, _react.useMemo)(() => (0, _styles.default)(options === null || options === void 0 ? void 0 : options.styles, options === null || options === void 0 ? void 0 : options.colorScheme, options === null || options === void 0 ? void 0 : options.theme), [options === null || options === void 0 ? void 0 : options.styles, options === null || options === void 0 ? void 0 : options.theme, options === null || options === void 0 ? void 0 : options.colorScheme]);
22
+ const parser = (0, _react.useMemo)(() => new _Parser.default({
23
+ styles: styles,
24
+ baseUrl: options === null || options === void 0 ? void 0 : options.baseUrl,
25
+ renderer: (options === null || options === void 0 ? void 0 : options.renderer) ?? new _Renderer.default()
26
+ }), [options === null || options === void 0 ? void 0 : options.renderer, options === null || options === void 0 ? void 0 : options.baseUrl, styles]);
27
+ const elements = (0, _react.useMemo)(() => {
28
+ const tokens = _marked.marked.lexer(value, {
29
+ mangle: false,
30
+ gfm: true
31
+ });
32
+
33
+ return parser.parse(tokens);
34
+ }, [value, parser]);
35
+ return elements;
36
+ };
37
+
38
+ var _default = useMarkdown;
39
+ exports.default = _default;
40
+ //# sourceMappingURL=useMarkdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMarkdown","value","options","styles","useMemo","getStyles","colorScheme","theme","parser","Parser","baseUrl","renderer","Renderer","elements","tokens","marked","lexer","mangle","gfm","parse"],"sourceRoot":"../../../src","sources":["hooks/useMarkdown.ts"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;;;AAYA,MAAMA,WAAW,GAAG,CACnBC,KADmB,EAEnBC,OAFmB,KAGF;EACjB,MAAMC,MAAM,GAAG,IAAAC,cAAA,EACd,MAAM,IAAAC,eAAA,EAAUH,OAAV,aAAUA,OAAV,uBAAUA,OAAO,CAAEC,MAAnB,EAA2BD,OAA3B,aAA2BA,OAA3B,uBAA2BA,OAAO,CAAEI,WAApC,EAAiDJ,OAAjD,aAAiDA,OAAjD,uBAAiDA,OAAO,CAAEK,KAA1D,CADQ,EAEd,CAACL,OAAD,aAACA,OAAD,uBAACA,OAAO,CAAEC,MAAV,EAAkBD,OAAlB,aAAkBA,OAAlB,uBAAkBA,OAAO,CAAEK,KAA3B,EAAkCL,OAAlC,aAAkCA,OAAlC,uBAAkCA,OAAO,CAAEI,WAA3C,CAFc,CAAf;EAKA,MAAME,MAAM,GAAG,IAAAJ,cAAA,EACd,MACC,IAAIK,eAAJ,CAAW;IACVN,MAAM,EAAEA,MADE;IAEVO,OAAO,EAAER,OAAF,aAAEA,OAAF,uBAAEA,OAAO,CAAEQ,OAFR;IAGVC,QAAQ,EAAE,CAAAT,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAES,QAAT,KAAqB,IAAIC,iBAAJ;EAHrB,CAAX,CAFa,EAOd,CAACV,OAAD,aAACA,OAAD,uBAACA,OAAO,CAAES,QAAV,EAAoBT,OAApB,aAAoBA,OAApB,uBAAoBA,OAAO,CAAEQ,OAA7B,EAAsCP,MAAtC,CAPc,CAAf;EAUA,MAAMU,QAAQ,GAAG,IAAAT,cAAA,EAAQ,MAAM;IAC9B,MAAMU,MAAM,GAAGC,cAAA,CAAOC,KAAP,CAAaf,KAAb,EAAoB;MAAEgB,MAAM,EAAE,KAAV;MAAiBC,GAAG,EAAE;IAAtB,CAApB,CAAf;;IACA,OAAOV,MAAM,CAACW,KAAP,CAAaL,MAAb,CAAP;EACA,CAHgB,EAGd,CAACb,KAAD,EAAQO,MAAR,CAHc,CAAjB;EAKA,OAAOK,QAAP;AACA,CAzBD;;eA2Beb,W"}
@@ -10,11 +10,19 @@ Object.defineProperty(exports, "Renderer", {
10
10
  }
11
11
  });
12
12
  exports.default = void 0;
13
+ Object.defineProperty(exports, "useMarkdown", {
14
+ enumerable: true,
15
+ get: function () {
16
+ return _useMarkdown.default;
17
+ }
18
+ });
13
19
 
14
20
  var _Markdown = _interopRequireDefault(require("./lib/Markdown"));
15
21
 
16
22
  var _Renderer = _interopRequireDefault(require("./lib/Renderer"));
17
23
 
24
+ var _useMarkdown = _interopRequireDefault(require("./hooks/useMarkdown"));
25
+
18
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
27
 
20
28
  var _default = _Markdown.default;
@@ -1 +1 @@
1
- {"version":3,"names":["Markdown"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;;;eASeA,iB"}
1
+ {"version":3,"names":["Markdown"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;eAceA,iB"}
@@ -9,13 +9,9 @@ var _react = _interopRequireWildcard(require("react"));
9
9
 
10
10
  var _reactNative = require("react-native");
11
11
 
12
- var _marked = require("marked");
12
+ var _useMarkdown = _interopRequireDefault(require("../hooks/useMarkdown"));
13
13
 
14
- var _Parser = _interopRequireDefault(require("./Parser"));
15
-
16
- var _Renderer = _interopRequireDefault(require("./Renderer"));
17
-
18
- var _styles = _interopRequireDefault(require("../theme/styles"));
14
+ var _colors = _interopRequireDefault(require("../theme/colors"));
19
15
 
20
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
17
 
@@ -32,23 +28,16 @@ const Markdown = _ref => {
32
28
  theme,
33
29
  baseUrl,
34
30
  renderer,
35
- styles: userStyles
31
+ styles
36
32
  } = _ref;
37
33
  const colorScheme = (0, _reactNative.useColorScheme)();
38
- const styles = (0, _react.useMemo)(() => (0, _styles.default)(userStyles, colorScheme, theme), [userStyles, colorScheme, theme]);
39
- const parser = (0, _react.useMemo)(() => new _Parser.default({
40
- styles,
34
+ const rnElements = (0, _useMarkdown.default)(value, {
35
+ theme,
41
36
  baseUrl,
42
- renderer: renderer ?? new _Renderer.default()
43
- }), [styles, baseUrl]);
44
- const rnElements = (0, _react.useMemo)(() => {
45
- const tokens = _marked.marked.lexer(value, {
46
- mangle: false,
47
- gfm: true
48
- });
49
-
50
- return parser.parse(tokens);
51
- }, [value, styles, baseUrl]);
37
+ renderer,
38
+ colorScheme,
39
+ styles
40
+ });
52
41
  const renderItem = (0, _react.useCallback)(_ref2 => {
53
42
  let {
54
43
  item
@@ -61,7 +50,9 @@ const Markdown = _ref => {
61
50
  keyExtractor: keyExtractor,
62
51
  maxToRenderPerBatch: 8,
63
52
  initialNumToRender: 8,
64
- style: styles.container
53
+ style: {
54
+ backgroundColor: colorScheme === "light" ? _colors.default.light.background : _colors.default.dark.background
55
+ }
65
56
  }, flatListProps, {
66
57
  data: rnElements,
67
58
  renderItem: renderItem
@@ -1 +1 @@
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"}
1
+ {"version":3,"names":["Markdown","value","flatListProps","theme","baseUrl","renderer","styles","colorScheme","useColorScheme","rnElements","useMarkdown","renderItem","useCallback","item","keyExtractor","_","index","toString","backgroundColor","colors","light","background","dark","memo"],"sourceRoot":"../../../src","sources":["lib/Markdown.tsx"],"mappings":";;;;;;;AAAA;;AAMA;;AAEA;;AACA;;;;;;;;;;AAEA,MAAMA,QAAQ,GAAG,QAOI;EAAA,IAPH;IACjBC,KADiB;IAEjBC,aAFiB;IAGjBC,KAHiB;IAIjBC,OAJiB;IAKjBC,QALiB;IAMjBC;EANiB,CAOG;EACpB,MAAMC,WAAW,GAAG,IAAAC,2BAAA,GAApB;EAEA,MAAMC,UAAU,GAAG,IAAAC,oBAAA,EAAYT,KAAZ,EAAmB;IACrCE,KADqC;IAErCC,OAFqC;IAGrCC,QAHqC;IAIrCE,WAJqC;IAKrCD;EALqC,CAAnB,CAAnB;EAQA,MAAMK,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,EAAE;MACNI,eAAe,EACdX,WAAW,KAAK,OAAhB,GACGY,eAAA,CAAOC,KAAP,CAAaC,UADhB,GAEGF,eAAA,CAAOG,IAAP,CAAYD;IAJV;EALR,GAWKnB,aAXL;IAYC,IAAI,EAAEO,UAZP;IAaC,UAAU,EAAEE;EAbb,GADD;AAiBA,CA5CD;;4BA8Ce,IAAAY,WAAA,EAAKvB,QAAL,C"}
@@ -37,9 +37,6 @@ const getStyles = (userStyles, colorScheme, userTheme) => {
37
37
  const fontStyle = getFontStyles(mdColors);
38
38
 
39
39
  const defaultStyles = _reactNative.StyleSheet.create({
40
- container: {
41
- backgroundColor: mdColors.background
42
- },
43
40
  em: { ...fontStyle.regular,
44
41
  fontStyle: "italic"
45
42
  },
@@ -1 +1 @@
1
- {"version":3,"names":["getFontStyles","mdColors","StyleSheet","create","regular","fontSize","lineHeight","color","text","heading","fontWeight","getStyles","userStyles","colorScheme","userTheme","colors","mdSpacing","spacing","fontStyle","defaultStyles","container","backgroundColor","background","em","strong","strikethrough","textDecorationLine","textDecorationStyle","paragraph","paddingVertical","m","link","blockquote","borderLeftColor","border","paddingLeft","l","borderLeftWidth","s","opacity","h1","marginVertical","letterSpacing","paddingBottom","borderBottomColor","borderBottomWidth","h2","h3","h4","h5","xs","h6","codespan","code","padding","minWidth","hr","li","flexShrink","image","resizeMode","table","borderWidth","borderColor","tableRow","flexDirection","tableCell"],"sourceRoot":"../../../src","sources":["theme/styles.ts"],"mappings":"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"}
1
+ {"version":3,"names":["getFontStyles","mdColors","StyleSheet","create","regular","fontSize","lineHeight","color","text","heading","fontWeight","getStyles","userStyles","colorScheme","userTheme","colors","mdSpacing","spacing","fontStyle","defaultStyles","em","strong","strikethrough","textDecorationLine","textDecorationStyle","paragraph","paddingVertical","m","link","blockquote","borderLeftColor","border","paddingLeft","l","borderLeftWidth","s","opacity","h1","marginVertical","letterSpacing","paddingBottom","borderBottomColor","borderBottomWidth","h2","h3","h4","h5","xs","h6","codespan","backgroundColor","code","padding","minWidth","hr","li","flexShrink","image","resizeMode","table","borderWidth","borderColor","tableRow","flexDirection","tableCell"],"sourceRoot":"../../../src","sources":["theme/styles.ts"],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { useMemo } from "react";
2
+ import { marked } from "marked";
3
+ import Parser from "../lib/Parser";
4
+ import Renderer from "../lib/Renderer";
5
+ import getStyles from "./../theme/styles";
6
+
7
+ const useMarkdown = (value, options) => {
8
+ const styles = useMemo(() => getStyles(options === null || options === void 0 ? void 0 : options.styles, options === null || options === void 0 ? void 0 : options.colorScheme, options === null || options === void 0 ? void 0 : options.theme), [options === null || options === void 0 ? void 0 : options.styles, options === null || options === void 0 ? void 0 : options.theme, options === null || options === void 0 ? void 0 : options.colorScheme]);
9
+ const parser = useMemo(() => new Parser({
10
+ styles: styles,
11
+ baseUrl: options === null || options === void 0 ? void 0 : options.baseUrl,
12
+ renderer: (options === null || options === void 0 ? void 0 : options.renderer) ?? new Renderer()
13
+ }), [options === null || options === void 0 ? void 0 : options.renderer, options === null || options === void 0 ? void 0 : options.baseUrl, styles]);
14
+ const elements = useMemo(() => {
15
+ const tokens = marked.lexer(value, {
16
+ mangle: false,
17
+ gfm: true
18
+ });
19
+ return parser.parse(tokens);
20
+ }, [value, parser]);
21
+ return elements;
22
+ };
23
+
24
+ export default useMarkdown;
25
+ //# sourceMappingURL=useMarkdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","marked","Parser","Renderer","getStyles","useMarkdown","value","options","styles","colorScheme","theme","parser","baseUrl","renderer","elements","tokens","lexer","mangle","gfm","parse"],"sourceRoot":"../../../src","sources":["hooks/useMarkdown.ts"],"mappings":"AAAA,SAASA,OAAT,QAAwC,OAAxC;AACA,SAASC,MAAT,QAAuB,QAAvB;AAEA,OAAOC,MAAP,MAAmB,eAAnB;AACA,OAAOC,QAAP,MAAqB,iBAArB;AACA,OAAOC,SAAP,MAAsB,mBAAtB;;AAYA,MAAMC,WAAW,GAAG,CACnBC,KADmB,EAEnBC,OAFmB,KAGF;EACjB,MAAMC,MAAM,GAAGR,OAAO,CACrB,MAAMI,SAAS,CAACG,OAAD,aAACA,OAAD,uBAACA,OAAO,CAAEC,MAAV,EAAkBD,OAAlB,aAAkBA,OAAlB,uBAAkBA,OAAO,CAAEE,WAA3B,EAAwCF,OAAxC,aAAwCA,OAAxC,uBAAwCA,OAAO,CAAEG,KAAjD,CADM,EAErB,CAACH,OAAD,aAACA,OAAD,uBAACA,OAAO,CAAEC,MAAV,EAAkBD,OAAlB,aAAkBA,OAAlB,uBAAkBA,OAAO,CAAEG,KAA3B,EAAkCH,OAAlC,aAAkCA,OAAlC,uBAAkCA,OAAO,CAAEE,WAA3C,CAFqB,CAAtB;EAKA,MAAME,MAAM,GAAGX,OAAO,CACrB,MACC,IAAIE,MAAJ,CAAW;IACVM,MAAM,EAAEA,MADE;IAEVI,OAAO,EAAEL,OAAF,aAAEA,OAAF,uBAAEA,OAAO,CAAEK,OAFR;IAGVC,QAAQ,EAAE,CAAAN,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEM,QAAT,KAAqB,IAAIV,QAAJ;EAHrB,CAAX,CAFoB,EAOrB,CAACI,OAAD,aAACA,OAAD,uBAACA,OAAO,CAAEM,QAAV,EAAoBN,OAApB,aAAoBA,OAApB,uBAAoBA,OAAO,CAAEK,OAA7B,EAAsCJ,MAAtC,CAPqB,CAAtB;EAUA,MAAMM,QAAQ,GAAGd,OAAO,CAAC,MAAM;IAC9B,MAAMe,MAAM,GAAGd,MAAM,CAACe,KAAP,CAAaV,KAAb,EAAoB;MAAEW,MAAM,EAAE,KAAV;MAAiBC,GAAG,EAAE;IAAtB,CAApB,CAAf;IACA,OAAOP,MAAM,CAACQ,KAAP,CAAaJ,MAAb,CAAP;EACA,CAHuB,EAGrB,CAACT,KAAD,EAAQK,MAAR,CAHqB,CAAxB;EAKA,OAAOG,QAAP;AACA,CAzBD;;AA2BA,eAAeT,WAAf"}
@@ -1,5 +1,6 @@
1
1
  import Markdown from "./lib/Markdown";
2
2
  import Renderer from "./lib/Renderer";
3
- export { Renderer };
3
+ import useMarkdown from "./hooks/useMarkdown";
4
+ export { Renderer, useMarkdown };
4
5
  export default Markdown;
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Markdown","Renderer"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,OAAOA,QAAP,MAAqB,gBAArB;AACA,OAAOC,QAAP,MAAqB,gBAArB;AAQA,SAASA,QAAT;AACA,eAAeD,QAAf"}
1
+ {"version":3,"names":["Markdown","Renderer","useMarkdown"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,OAAOA,QAAP,MAAqB,gBAArB;AACA,OAAOC,QAAP,MAAqB,gBAArB;AACA,OAAOC,WAAP,MAAyD,qBAAzD;AAaA,SAASD,QAAT,EAAmBC,WAAnB;AACA,eAAeF,QAAf"}
@@ -1,11 +1,9 @@
1
1
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
2
 
3
- import React, { memo, useCallback, useMemo } from "react";
3
+ import React, { memo, useCallback } from "react";
4
4
  import { FlatList, useColorScheme } from "react-native";
5
- import { marked } from "marked";
6
- import Parser from "./Parser";
7
- import Renderer from "./Renderer";
8
- import getStyles from "../theme/styles";
5
+ import useMarkdown from "../hooks/useMarkdown";
6
+ import colors from "../theme/colors";
9
7
 
10
8
  const Markdown = _ref => {
11
9
  let {
@@ -14,22 +12,16 @@ const Markdown = _ref => {
14
12
  theme,
15
13
  baseUrl,
16
14
  renderer,
17
- styles: userStyles
15
+ styles
18
16
  } = _ref;
19
17
  const colorScheme = useColorScheme();
20
- const styles = useMemo(() => getStyles(userStyles, colorScheme, theme), [userStyles, colorScheme, theme]);
21
- const parser = useMemo(() => new Parser({
22
- styles,
18
+ const rnElements = useMarkdown(value, {
19
+ theme,
23
20
  baseUrl,
24
- renderer: renderer ?? new Renderer()
25
- }), [styles, baseUrl]);
26
- const rnElements = useMemo(() => {
27
- const tokens = marked.lexer(value, {
28
- mangle: false,
29
- gfm: true
30
- });
31
- return parser.parse(tokens);
32
- }, [value, styles, baseUrl]);
21
+ renderer,
22
+ colorScheme,
23
+ styles
24
+ });
33
25
  const renderItem = useCallback(_ref2 => {
34
26
  let {
35
27
  item
@@ -42,7 +34,9 @@ const Markdown = _ref => {
42
34
  keyExtractor: keyExtractor,
43
35
  maxToRenderPerBatch: 8,
44
36
  initialNumToRender: 8,
45
- style: styles.container
37
+ style: {
38
+ backgroundColor: colorScheme === "light" ? colors.light.background : colors.dark.background
39
+ }
46
40
  }, flatListProps, {
47
41
  data: rnElements,
48
42
  renderItem: renderItem
@@ -1 +1 @@
1
- {"version":3,"names":["React","memo","useCallback","useMemo","FlatList","useColorScheme","marked","Parser","Renderer","getStyles","Markdown","value","flatListProps","theme","baseUrl","renderer","styles","userStyles","colorScheme","parser","rnElements","tokens","lexer","mangle","gfm","parse","renderItem","item","keyExtractor","_","index","toString","container"],"sourceRoot":"../../../src","sources":["lib/Markdown.tsx"],"mappings":";;AAAA,OAAOA,KAAP,IACCC,IADD,EAECC,WAFD,EAGCC,OAHD,QAMO,OANP;AAOA,SAASC,QAAT,EAAmBC,cAAnB,QAAyC,cAAzC;AACA,SAASC,MAAT,QAAuB,QAAvB;AACA,OAAOC,MAAP,MAAmB,UAAnB;AACA,OAAOC,QAAP,MAAqB,YAArB;AACA,OAAOC,SAAP,MAAsB,iBAAtB;;AAGA,MAAMC,QAAQ,GAAG,QAOI;EAAA,IAPH;IACjBC,KADiB;IAEjBC,aAFiB;IAGjBC,KAHiB;IAIjBC,OAJiB;IAKjBC,QALiB;IAMjBC,MAAM,EAAEC;EANS,CAOG;EACpB,MAAMC,WAAW,GAAGb,cAAc,EAAlC;EACA,MAAMW,MAAM,GAAGb,OAAO,CACrB,MAAMM,SAAS,CAACQ,UAAD,EAAaC,WAAb,EAA0BL,KAA1B,CADM,EAErB,CAACI,UAAD,EAAaC,WAAb,EAA0BL,KAA1B,CAFqB,CAAtB;EAKA,MAAMM,MAAM,GAAGhB,OAAO,CACrB,MACC,IAAII,MAAJ,CAAW;IACVS,MADU;IAEVF,OAFU;IAGVC,QAAQ,EAAEA,QAAQ,IAAI,IAAIP,QAAJ;EAHZ,CAAX,CAFoB,EAOrB,CAACQ,MAAD,EAASF,OAAT,CAPqB,CAAtB;EAUA,MAAMM,UAAU,GAAGjB,OAAO,CAAC,MAAM;IAChC,MAAMkB,MAAM,GAAGf,MAAM,CAACgB,KAAP,CAAaX,KAAb,EAAoB;MAAEY,MAAM,EAAE,KAAV;MAAiBC,GAAG,EAAE;IAAtB,CAApB,CAAf;IACA,OAAOL,MAAM,CAACM,KAAP,CAAaJ,MAAb,CAAP;EACA,CAHyB,EAGvB,CAACV,KAAD,EAAQK,MAAR,EAAgBF,OAAhB,CAHuB,CAA1B;EAKA,MAAMY,UAAU,GAAGxB,WAAW,CAAC,SAAmC;IAAA,IAAlC;MAAEyB;IAAF,CAAkC;IACjE,OAAOA,IAAP;EACA,CAF6B,EAE3B,EAF2B,CAA9B;EAIA,MAAMC,YAAY,GAAG1B,WAAW,CAC/B,CAAC2B,CAAD,EAAeC,KAAf,KAAiCA,KAAK,CAACC,QAAN,EADF,EAE/B,EAF+B,CAAhC;EAKA,oBACC,oBAAC,QAAD;IACC,qBAAqB,MADtB;IAEC,YAAY,EAAEH,YAFf;IAGC,mBAAmB,EAAE,CAHtB;IAIC,kBAAkB,EAAE,CAJrB;IAKC,KAAK,EAAEZ,MAAM,CAACgB;EALf,GAMKpB,aANL;IAOC,IAAI,EAAEQ,UAPP;IAQC,UAAU,EAAEM;EARb,GADD;AAYA,CAlDD;;AAoDA,4BAAezB,IAAI,CAACS,QAAD,CAAnB"}
1
+ {"version":3,"names":["React","memo","useCallback","FlatList","useColorScheme","useMarkdown","colors","Markdown","value","flatListProps","theme","baseUrl","renderer","styles","colorScheme","rnElements","renderItem","item","keyExtractor","_","index","toString","backgroundColor","light","background","dark"],"sourceRoot":"../../../src","sources":["lib/Markdown.tsx"],"mappings":";;AAAA,OAAOA,KAAP,IACCC,IADD,EAECC,WAFD,QAKO,OALP;AAMA,SAASC,QAAT,EAAmBC,cAAnB,QAAyC,cAAzC;AAEA,OAAOC,WAAP,MAAwB,sBAAxB;AACA,OAAOC,MAAP,MAAmB,iBAAnB;;AAEA,MAAMC,QAAQ,GAAG,QAOI;EAAA,IAPH;IACjBC,KADiB;IAEjBC,aAFiB;IAGjBC,KAHiB;IAIjBC,OAJiB;IAKjBC,QALiB;IAMjBC;EANiB,CAOG;EACpB,MAAMC,WAAW,GAAGV,cAAc,EAAlC;EAEA,MAAMW,UAAU,GAAGV,WAAW,CAACG,KAAD,EAAQ;IACrCE,KADqC;IAErCC,OAFqC;IAGrCC,QAHqC;IAIrCE,WAJqC;IAKrCD;EALqC,CAAR,CAA9B;EAQA,MAAMG,UAAU,GAAGd,WAAW,CAAC,SAAmC;IAAA,IAAlC;MAAEe;IAAF,CAAkC;IACjE,OAAOA,IAAP;EACA,CAF6B,EAE3B,EAF2B,CAA9B;EAIA,MAAMC,YAAY,GAAGhB,WAAW,CAC/B,CAACiB,CAAD,EAAeC,KAAf,KAAiCA,KAAK,CAACC,QAAN,EADF,EAE/B,EAF+B,CAAhC;EAKA,oBACC,oBAAC,QAAD;IACC,qBAAqB,MADtB;IAEC,YAAY,EAAEH,YAFf;IAGC,mBAAmB,EAAE,CAHtB;IAIC,kBAAkB,EAAE,CAJrB;IAKC,KAAK,EAAE;MACNI,eAAe,EACdR,WAAW,KAAK,OAAhB,GACGR,MAAM,CAACiB,KAAP,CAAaC,UADhB,GAEGlB,MAAM,CAACmB,IAAP,CAAYD;IAJV;EALR,GAWKf,aAXL;IAYC,IAAI,EAAEM,UAZP;IAaC,UAAU,EAAEC;EAbb,GADD;AAiBA,CA5CD;;AA8CA,4BAAef,IAAI,CAACM,QAAD,CAAnB"}
@@ -25,9 +25,6 @@ const getStyles = (userStyles, colorScheme, userTheme) => {
25
25
  };
26
26
  const fontStyle = getFontStyles(mdColors);
27
27
  const defaultStyles = StyleSheet.create({
28
- container: {
29
- backgroundColor: mdColors.background
30
- },
31
28
  em: { ...fontStyle.regular,
32
29
  fontStyle: "italic"
33
30
  },
@@ -1 +1 @@
1
- {"version":3,"names":["StyleSheet","spacing","colors","getFontStyles","mdColors","create","regular","fontSize","lineHeight","color","text","heading","fontWeight","getStyles","userStyles","colorScheme","userTheme","mdSpacing","fontStyle","defaultStyles","container","backgroundColor","background","em","strong","strikethrough","textDecorationLine","textDecorationStyle","paragraph","paddingVertical","m","link","blockquote","borderLeftColor","border","paddingLeft","l","borderLeftWidth","s","opacity","h1","marginVertical","letterSpacing","paddingBottom","borderBottomColor","borderBottomWidth","h2","h3","h4","h5","xs","h6","codespan","code","padding","minWidth","hr","li","flexShrink","image","resizeMode","table","borderWidth","borderColor","tableRow","flexDirection","tableCell"],"sourceRoot":"../../../src","sources":["theme/styles.ts"],"mappings":"AAAA,SAASA,UAAT,QAAiD,cAAjD;AACA,OAAOC,OAAP,MAAoB,WAApB;AACA,OAAOC,MAAP,MAA4C,UAA5C;;AAGA,MAAMC,aAAa,GAAIC,QAAD,IAA8B;EACnD,OAAOJ,UAAU,CAACK,MAAX,CAAkB;IACxBC,OAAO,EAAE;MACRC,QAAQ,EAAE,EADF;MAERC,UAAU,EAAE,EAFJ;MAGRC,KAAK,EAAEL,QAAQ,CAACM;IAHR,CADe;IAMxBC,OAAO,EAAE;MACRC,UAAU,EAAE,KADJ;MAERH,KAAK,EAAEL,QAAQ,CAACM;IAFR;EANe,CAAlB,CAAP;AAWA,CAZD;;AAcA,MAAMG,SAAS,GAAG,CACjBC,UADiB,EAEjBC,WAFiB,EAGjBC,SAHiB,KAIC;EAClB,MAAMZ,QAAQ,GAAG,EAAE,GAAGF,MAAM,CAACa,WAAW,IAAI,OAAhB,CAAX;IAAqC,IAAGC,SAAH,aAAGA,SAAH,uBAAGA,SAAS,CAAEd,MAAd;EAArC,CAAjB;EACA,MAAMe,SAAS,GAAG,EAAE,GAAGhB,OAAL;IAAc,IAAGe,SAAH,aAAGA,SAAH,uBAAGA,SAAS,CAAEf,OAAd;EAAd,CAAlB;EAEA,MAAMiB,SAAS,GAAGf,aAAa,CAACC,QAAD,CAA/B;EACA,MAAMe,aAAa,GAAGnB,UAAU,CAACK,MAAX,CAAgC;IACrDe,SAAS,EAAE;MACVC,eAAe,EAAEjB,QAAQ,CAACkB;IADhB,CAD0C;IAIrDC,EAAE,EAAE,EACH,GAAGL,SAAS,CAACZ,OADV;MAEHY,SAAS,EAAE;IAFR,CAJiD;IAQrDM,MAAM,EAAE,EACP,GAAGN,SAAS,CAACZ,OADN;MAEPM,UAAU,EAAE;IAFL,CAR6C;IAYrDa,aAAa,EAAE,EACd,GAAGP,SAAS,CAACZ,OADC;MAEdoB,kBAAkB,EAAE,cAFN;MAGdC,mBAAmB,EAAE;IAHP,CAZsC;IAiBrDjB,IAAI,EAAE,EACL,GAAGQ,SAAS,CAACZ;IADR,CAjB+C;IAoBrDsB,SAAS,EAAE,EACV,GAAGV,SAAS,CAACZ,OADH;MAEVuB,eAAe,EAAEZ,SAAS,CAACa;IAFjB,CApB0C;IAwBrDC,IAAI,EAAE,EACL,GAAGb,SAAS,CAACZ,OADR;MAELY,SAAS,EAAE,QAFN;MAGLT,KAAK,EAAEL,QAAQ,CAAC2B;IAHX,CAxB+C;IA6BrDC,UAAU,EAAE;MACXC,eAAe,EAAE7B,QAAQ,CAAC8B,MADf;MAEXC,WAAW,EAAElB,SAAS,CAACmB,CAFZ;MAGXC,eAAe,EAAEpB,SAAS,CAACqB,CAHhB;MAIXC,OAAO,EAAE;IAJE,CA7ByC;IAmCrDC,EAAE,EAAE;MACHjC,QAAQ,EAAE,EADP;MAEHC,UAAU,EAAE,EAFT;MAGHI,UAAU,EAAE,MAHT;MAIH6B,cAAc,EAAExB,SAAS,CAACa,CAJvB;MAKHY,aAAa,EAAE,CALZ;MAMHC,aAAa,EAAE1B,SAAS,CAACqB,CANtB;MAOHM,iBAAiB,EAAExC,QAAQ,CAAC8B,MAPzB;MAQHW,iBAAiB,EAAE;IARhB,CAnCiD;IA6CrDC,EAAE,EAAE,EACH,GAAG5B,SAAS,CAACP,OADV;MAEHJ,QAAQ,EAAE,EAFP;MAGHC,UAAU,EAAE,EAHT;MAIHiC,cAAc,EAAExB,SAAS,CAACa,CAJvB;MAKHa,aAAa,EAAE1B,SAAS,CAACqB,CALtB;MAMHM,iBAAiB,EAAExC,QAAQ,CAAC8B,MANzB;MAOHW,iBAAiB,EAAE;IAPhB,CA7CiD;IAsDrDE,EAAE,EAAE,EACH,GAAG7B,SAAS,CAACP,OADV;MAEHJ,QAAQ,EAAE,EAFP;MAGHC,UAAU,EAAE,EAHT;MAIHiC,cAAc,EAAExB,SAAS,CAACqB;IAJvB,CAtDiD;IA4DrDU,EAAE,EAAE,EACH,GAAG9B,SAAS,CAACP,OADV;MAEHJ,QAAQ,EAAE,EAFP;MAGHC,UAAU,EAAE,EAHT;MAIHiC,cAAc,EAAExB,SAAS,CAACqB;IAJvB,CA5DiD;IAkErDW,EAAE,EAAE,EACH,GAAG/B,SAAS,CAACZ,OADV;MAEH,GAAGY,SAAS,CAACP,OAFV;MAGH8B,cAAc,EAAExB,SAAS,CAACiC;IAHvB,CAlEiD;IAuErDC,EAAE,EAAE,EACH,GAAGjC,SAAS,CAACP,OADV;MAEHJ,QAAQ,EAAE,EAFP;MAGHC,UAAU,EAAE,EAHT;MAIHiC,cAAc,EAAExB,SAAS,CAACiC;IAJvB,CAvEiD;IA6ErDE,QAAQ,EAAE,EACT,GAAGlC,SAAS,CAACZ,OADJ;MAETY,SAAS,EAAE,QAFF;MAGTG,eAAe,EAAEjB,QAAQ,CAACiD,IAHjB;MAITzC,UAAU,EAAE;IAJH,CA7E2C;IAmFrDyC,IAAI,EAAE;MACLC,OAAO,EAAErC,SAAS,CAACmB,CADd;MAELf,eAAe,EAAEjB,QAAQ,CAACiD,IAFrB;MAGLE,QAAQ,EAAE;IAHL,CAnF+C;IAwFrDC,EAAE,EAAE;MACHX,iBAAiB,EAAE,CADhB;MAEHD,iBAAiB,EAAExC,QAAQ,CAAC8B,MAFzB;MAGHO,cAAc,EAAExB,SAAS,CAACqB;IAHvB,CAxFiD;IA6FrDmB,EAAE,EAAE,EACH,GAAGvC,SAAS,CAACZ,OADV;MAEHoD,UAAU,EAAE;IAFT,CA7FiD;IAiGrDC,KAAK,EAAE;MACNC,UAAU,EAAE;IADN,CAjG8C;IAoGrDC,KAAK,EAAE;MACNC,WAAW,EAAE,CADP;MAENC,WAAW,EAAE3D,QAAQ,CAAC8B;IAFhB,CApG8C;IAwGrD8B,QAAQ,EAAE;MACTC,aAAa,EAAE;IADN,CAxG2C;IA2GrDC,SAAS,EAAE;MACVZ,OAAO,EAAErC,SAAS,CAACqB;IADT;EA3G0C,CAAhC,CAAtB;EAgHA,OAAO,EACN,GAAGnB,aADG;IAEN,GAAGL;EAFG,CAAP;AAIA,CA7HD;;AA+HA,eAAeD,SAAf"}
1
+ {"version":3,"names":["StyleSheet","spacing","colors","getFontStyles","mdColors","create","regular","fontSize","lineHeight","color","text","heading","fontWeight","getStyles","userStyles","colorScheme","userTheme","mdSpacing","fontStyle","defaultStyles","em","strong","strikethrough","textDecorationLine","textDecorationStyle","paragraph","paddingVertical","m","link","blockquote","borderLeftColor","border","paddingLeft","l","borderLeftWidth","s","opacity","h1","marginVertical","letterSpacing","paddingBottom","borderBottomColor","borderBottomWidth","h2","h3","h4","h5","xs","h6","codespan","backgroundColor","code","padding","minWidth","hr","li","flexShrink","image","resizeMode","table","borderWidth","borderColor","tableRow","flexDirection","tableCell"],"sourceRoot":"../../../src","sources":["theme/styles.ts"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type ReactNode } from "react";
2
+ import type { MarkedStyles, UserTheme } from "./../theme/types";
3
+ import { type ColorSchemeName } from "react-native";
4
+ import type { RendererInterface } from "../lib/types";
5
+ export interface useMarkdownHookOptions {
6
+ colorScheme?: ColorSchemeName;
7
+ renderer?: RendererInterface;
8
+ theme?: UserTheme;
9
+ styles?: MarkedStyles;
10
+ baseUrl?: string;
11
+ }
12
+ declare const useMarkdown: (value: string, options?: useMarkdownHookOptions) => ReactNode[];
13
+ export default useMarkdown;
14
+ //# sourceMappingURL=useMarkdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMarkdown.d.ts","sourceRoot":"","sources":["../../../src/hooks/useMarkdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIhE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,sBAAsB;IACtC,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,QAAA,MAAM,WAAW,UACT,MAAM,YACH,sBAAsB,KAC9B,SAAS,EAsBX,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import Markdown from "./lib/Markdown";
2
2
  import Renderer from "./lib/Renderer";
3
+ import useMarkdown, { type useMarkdownHookOptions } from "./hooks/useMarkdown";
3
4
  import type { MarkdownProps, ParserOptions, RendererInterface } from "./lib/types";
4
- export type { MarkdownProps, ParserOptions, RendererInterface };
5
- export { Renderer };
5
+ export type { MarkdownProps, ParserOptions, RendererInterface, useMarkdownHookOptions, };
6
+ export { Renderer, useMarkdown };
6
7
  export default Markdown;
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,EACX,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,MAAM,aAAa,CAAC;AAErB,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,WAAW,EAAE,EAAE,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,KAAK,EACX,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,MAAM,aAAa,CAAC;AAErB,YAAY,EACX,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,sBAAsB,GACtB,CAAC;AACF,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AACjC,eAAe,QAAQ,CAAC"}
@@ -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, baseUrl, renderer, styles: userStyles, }: MarkdownProps) => JSX.Element>;
3
+ declare const _default: React.MemoExoticComponent<({ value, flatListProps, theme, baseUrl, renderer, styles, }: 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,KAMN,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;;AAsD7C,wBAA8B"}
1
+ {"version":3,"file":"Markdown.d.ts","sourceRoot":"","sources":["../../../src/lib/Markdown.tsx"],"names":[],"mappings":"AAAA,OAAO,KAKN,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;;AAkD7C,wBAA8B"}
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/theme/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAGhE,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAgBvD,QAAA,MAAM,SAAS,gBACD,YAAY,gBACX,eAAe,cACjB,SAAS,KACnB,YAyHF,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/theme/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAGhE,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAgBvD,QAAA,MAAM,SAAS,gBACD,YAAY,gBACX,eAAe,cACjB,SAAS,KACnB,YAsHF,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -2,7 +2,6 @@ import type { ImageStyle, TextStyle, ViewStyle } from "react-native";
2
2
  import type { ColorKeysType } from "./colors";
3
3
  import type { SpacingKeysType } from "./spacing";
4
4
  export interface MarkedStyles {
5
- container?: ViewStyle;
6
5
  em?: TextStyle;
7
6
  strong?: TextStyle;
8
7
  strikethrough?: TextStyle;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/theme/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD,MAAM,WAAW,YAAY;IAC5B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;CAC1C"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/theme/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD,MAAM,WAAW,YAAY;IAC5B,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;CAC1C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-marked",
3
- "version": "3.0.0",
3
+ "version": "4.0.0-rc.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",
@@ -49,32 +49,32 @@
49
49
  "registry": "https://registry.npmjs.org/"
50
50
  },
51
51
  "devDependencies": {
52
- "@babel/core": "7.21.4",
53
- "@babel/preset-env": "7.21.4",
54
- "@commitlint/config-conventional": "17.4.4",
55
- "@evilmartians/lefthook": "1.3.9",
52
+ "@babel/core": "7.21.5",
53
+ "@babel/preset-env": "7.21.5",
54
+ "@commitlint/config-conventional": "17.6.1",
55
+ "@evilmartians/lefthook": "1.3.12",
56
56
  "@release-it/conventional-changelog": "5.1.1",
57
57
  "@testing-library/jest-native": "5.4.2",
58
- "@testing-library/react-native": "12.0.1",
59
- "@types/jest": "29.5.0",
58
+ "@testing-library/react-native": "12.1.1",
59
+ "@types/jest": "29.5.1",
60
60
  "@types/marked": "4.0.8",
61
- "@types/node": "18.15.11",
62
- "@types/react": "18.0.34",
63
- "@types/react-native": "0.71.5",
61
+ "@types/node": "18.16.3",
62
+ "@types/react": "18.2.0",
63
+ "@types/react-native": "0.71.6",
64
64
  "@types/react-native-table-component": "1.2.4",
65
- "commitlint": "17.5.1",
66
- "danger": "11.2.5",
65
+ "commitlint": "17.6.1",
66
+ "danger": "11.2.6",
67
67
  "jest": "29.5.0",
68
68
  "jest-environment-jsdom": "29.5.0",
69
- "metro-react-native-babel-preset": "0.76.1",
69
+ "metro-react-native-babel-preset": "0.76.3",
70
70
  "pod-install": "0.1.38",
71
71
  "postinstall-postinstall": "2.1.0",
72
72
  "react": "18.2.0",
73
- "react-native": "0.71.6",
73
+ "react-native": "0.71.7",
74
74
  "react-native-builder-bob": "0.20.4",
75
75
  "react-test-renderer": "18.2.0",
76
- "reassure": "0.8.0",
77
- "release-it": "15.10.1",
76
+ "reassure": "0.9.0",
77
+ "release-it": "15.10.2",
78
78
  "rome": "12.0.0",
79
79
  "typescript": "5.0.4"
80
80
  },
@@ -0,0 +1,45 @@
1
+ import { useMemo, type ReactNode } from "react";
2
+ import { marked } from "marked";
3
+ import type { MarkedStyles, UserTheme } from "./../theme/types";
4
+ import Parser from "../lib/Parser";
5
+ import Renderer from "../lib/Renderer";
6
+ import getStyles from "./../theme/styles";
7
+ import { type ColorSchemeName } from "react-native";
8
+ import type { RendererInterface } from "../lib/types";
9
+
10
+ export interface useMarkdownHookOptions {
11
+ colorScheme?: ColorSchemeName;
12
+ renderer?: RendererInterface;
13
+ theme?: UserTheme;
14
+ styles?: MarkedStyles;
15
+ baseUrl?: string;
16
+ }
17
+
18
+ const useMarkdown = (
19
+ value: string,
20
+ options?: useMarkdownHookOptions,
21
+ ): ReactNode[] => {
22
+ const styles = useMemo(
23
+ () => getStyles(options?.styles, options?.colorScheme, options?.theme),
24
+ [options?.styles, options?.theme, options?.colorScheme],
25
+ );
26
+
27
+ const parser = useMemo(
28
+ () =>
29
+ new Parser({
30
+ styles: styles,
31
+ baseUrl: options?.baseUrl,
32
+ renderer: options?.renderer ?? new Renderer(),
33
+ }),
34
+ [options?.renderer, options?.baseUrl, styles],
35
+ );
36
+
37
+ const elements = useMemo(() => {
38
+ const tokens = marked.lexer(value, { mangle: false, gfm: true });
39
+ return parser.parse(tokens);
40
+ }, [value, parser]);
41
+
42
+ return elements;
43
+ };
44
+
45
+ export default useMarkdown;
package/src/index.ts CHANGED
@@ -1,11 +1,17 @@
1
1
  import Markdown from "./lib/Markdown";
2
2
  import Renderer from "./lib/Renderer";
3
+ import useMarkdown, { type useMarkdownHookOptions } from "./hooks/useMarkdown";
3
4
  import type {
4
5
  MarkdownProps,
5
6
  ParserOptions,
6
7
  RendererInterface,
7
8
  } from "./lib/types";
8
9
 
9
- export type { MarkdownProps, ParserOptions, RendererInterface };
10
- export { Renderer };
10
+ export type {
11
+ MarkdownProps,
12
+ ParserOptions,
13
+ RendererInterface,
14
+ useMarkdownHookOptions,
15
+ };
16
+ export { Renderer, useMarkdown };
11
17
  export default Markdown;
@@ -1,16 +1,13 @@
1
1
  import React, {
2
2
  memo,
3
3
  useCallback,
4
- useMemo,
5
4
  type ReactElement,
6
5
  type ReactNode,
7
6
  } from "react";
8
7
  import { FlatList, useColorScheme } from "react-native";
9
- import { marked } from "marked";
10
- import Parser from "./Parser";
11
- import Renderer from "./Renderer";
12
- import getStyles from "../theme/styles";
13
8
  import type { MarkdownProps } from "./types";
9
+ import useMarkdown from "../hooks/useMarkdown";
10
+ import colors from "../theme/colors";
14
11
 
15
12
  const Markdown = ({
16
13
  value,
@@ -18,28 +15,17 @@ const Markdown = ({
18
15
  theme,
19
16
  baseUrl,
20
17
  renderer,
21
- styles: userStyles,
18
+ styles,
22
19
  }: MarkdownProps) => {
23
20
  const colorScheme = useColorScheme();
24
- const styles = useMemo(
25
- () => getStyles(userStyles, colorScheme, theme),
26
- [userStyles, colorScheme, theme],
27
- );
28
-
29
- const parser = useMemo(
30
- () =>
31
- new Parser({
32
- styles,
33
- baseUrl,
34
- renderer: renderer ?? new Renderer(),
35
- }),
36
- [styles, baseUrl],
37
- );
38
21
 
39
- const rnElements = useMemo(() => {
40
- const tokens = marked.lexer(value, { mangle: false, gfm: true });
41
- return parser.parse(tokens);
42
- }, [value, styles, baseUrl]);
22
+ const rnElements = useMarkdown(value, {
23
+ theme,
24
+ baseUrl,
25
+ renderer,
26
+ colorScheme,
27
+ styles,
28
+ });
43
29
 
44
30
  const renderItem = useCallback(({ item }: { item: ReactNode }) => {
45
31
  return item as ReactElement;
@@ -56,7 +42,12 @@ const Markdown = ({
56
42
  keyExtractor={keyExtractor}
57
43
  maxToRenderPerBatch={8}
58
44
  initialNumToRender={8}
59
- style={styles.container}
45
+ style={{
46
+ backgroundColor:
47
+ colorScheme === "light"
48
+ ? colors.light.background
49
+ : colors.dark.background,
50
+ }}
60
51
  {...flatListProps}
61
52
  data={rnElements}
62
53
  renderItem={renderItem}
@@ -27,9 +27,6 @@ const getStyles = (
27
27
 
28
28
  const fontStyle = getFontStyles(mdColors);
29
29
  const defaultStyles = StyleSheet.create<MarkedStyles>({
30
- container: {
31
- backgroundColor: mdColors.background,
32
- },
33
30
  em: {
34
31
  ...fontStyle.regular,
35
32
  fontStyle: "italic",
@@ -3,7 +3,6 @@ import type { ColorKeysType } from "./colors";
3
3
  import type { SpacingKeysType } from "./spacing";
4
4
 
5
5
  export interface MarkedStyles {
6
- container?: ViewStyle;
7
6
  em?: TextStyle;
8
7
  strong?: TextStyle;
9
8
  strikethrough?: TextStyle;