react-native-marked 1.0.0-alpha.3 → 1.0.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.
Files changed (55) hide show
  1. package/README.md +5 -4
  2. package/dist/commonjs/components/MDImage.js +5 -22
  3. package/dist/commonjs/components/MDImage.js.map +1 -1
  4. package/dist/commonjs/lib/Markdown.js +19 -11
  5. package/dist/commonjs/lib/Markdown.js.map +1 -1
  6. package/dist/commonjs/lib/Parser.js +38 -131
  7. package/dist/commonjs/lib/Parser.js.map +1 -1
  8. package/dist/commonjs/lib/Renderer.js +22 -13
  9. package/dist/commonjs/lib/Renderer.js.map +1 -1
  10. package/dist/commonjs/theme/colors.js +25 -0
  11. package/dist/commonjs/theme/colors.js.map +1 -0
  12. package/dist/commonjs/theme/styles.js +113 -0
  13. package/dist/commonjs/theme/styles.js.map +1 -0
  14. package/dist/commonjs/theme/theme.js +19 -0
  15. package/dist/commonjs/theme/theme.js.map +1 -0
  16. package/dist/commonjs/{types → theme}/types.js +0 -0
  17. package/dist/commonjs/theme/types.js.map +1 -0
  18. package/dist/module/components/MDImage.js +6 -22
  19. package/dist/module/components/MDImage.js.map +1 -1
  20. package/dist/module/lib/Markdown.js +18 -12
  21. package/dist/module/lib/Markdown.js.map +1 -1
  22. package/dist/module/lib/Parser.js +39 -130
  23. package/dist/module/lib/Parser.js.map +1 -1
  24. package/dist/module/lib/Renderer.js +19 -13
  25. package/dist/module/lib/Renderer.js.map +1 -1
  26. package/dist/module/theme/colors.js +18 -0
  27. package/dist/module/theme/colors.js.map +1 -0
  28. package/dist/module/theme/styles.js +102 -0
  29. package/dist/module/theme/styles.js.map +1 -0
  30. package/dist/module/theme/theme.js +7 -0
  31. package/dist/module/theme/theme.js.map +1 -0
  32. package/dist/module/{types → theme}/types.js +0 -0
  33. package/dist/module/theme/types.js.map +1 -0
  34. package/dist/typescript/components/MDImage.d.ts +1 -2
  35. package/dist/typescript/lib/Markdown.d.ts +6 -5
  36. package/dist/typescript/lib/Parser.d.ts +7 -5
  37. package/dist/typescript/lib/Renderer.d.ts +6 -6
  38. package/dist/typescript/theme/colors.d.ts +3 -0
  39. package/dist/typescript/theme/styles.d.ts +4 -0
  40. package/dist/typescript/theme/theme.d.ts +3 -0
  41. package/dist/typescript/theme/types.d.ts +25 -0
  42. package/package.json +10 -5
  43. package/src/components/MDImage.tsx +5 -28
  44. package/src/lib/Markdown.tsx +28 -10
  45. package/src/lib/Parser.tsx +163 -0
  46. package/src/lib/Renderer.tsx +32 -13
  47. package/src/theme/colors.ts +20 -0
  48. package/src/theme/styles.ts +117 -0
  49. package/src/theme/theme.ts +9 -0
  50. package/src/theme/types.ts +28 -0
  51. package/dist/commonjs/types/types.js.map +0 -1
  52. package/dist/module/types/types.js.map +0 -1
  53. package/dist/typescript/types/types.d.ts +0 -23
  54. package/src/lib/Parser.ts +0 -256
  55. package/src/types/types.ts +0 -25
package/README.md CHANGED
@@ -12,16 +12,13 @@ yarn add react-native-marked
12
12
 
13
13
  ```jsx
14
14
  import * as React from 'react';
15
- import { Dimensions } from 'react-native';
16
15
  import Markdown from 'react-native-marked';
17
16
 
18
17
  const ExampleComponent = () => {
19
- const { width: windowWidth } = Dimensions.get('window');
20
18
  return (
21
19
  <Markdown
22
20
  value={`#Hello world`}
23
- contentWidth={windowWidth}
24
- listProps={{
21
+ flatListProps={{
25
22
  initialNumToRender: 8,
26
23
  }}
27
24
  />
@@ -42,3 +39,7 @@ MIT
42
39
  ---
43
40
 
44
41
  Made with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)
42
+
43
+ ## External Libraries
44
+ - [React Native Fit Image](https://github.com/huiseoul/react-native-fit-image)
45
+ - [@jsamr/react-native-li](https://github.com/jsamr/react-native-li)
@@ -9,7 +9,7 @@ var _react = _interopRequireWildcard(require("react"));
9
9
 
10
10
  var _reactNative = require("react-native");
11
11
 
12
- var _reactNativeFastImage = _interopRequireDefault(require("react-native-fast-image"));
12
+ var _reactNativeFitImage = _interopRequireDefault(require("react-native-fit-image"));
13
13
 
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
15
 
@@ -19,33 +19,16 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
19
19
 
20
20
  const MDImage = _ref => {
21
21
  let {
22
- uri,
23
- width
22
+ uri
24
23
  } = _ref;
25
- const [height, setHeight] = (0, _react.useState)(0);
26
24
  (0, _react.useEffect)(() => {
27
25
  _reactNative.Image.prefetch(uri);
28
-
29
- _reactNative.Image.getSize(uri, (iWidth, iHeight) => {
30
- const heightCalc = width * (iHeight / iWidth);
31
- setHeight(heightCalc);
32
- });
33
- }, [uri, width, height]);
34
-
35
- if (height < 1) {
36
- return null;
37
- }
38
-
39
- return /*#__PURE__*/_react.default.createElement(_reactNativeFastImage.default, {
40
- fallback: true,
26
+ }, [uri]);
27
+ return /*#__PURE__*/_react.default.createElement(_reactNativeFitImage.default, {
41
28
  source: {
42
29
  uri
43
30
  },
44
- style: [{
45
- width: width,
46
- height: height
47
- }],
48
- resizeMode: _reactNativeFastImage.default.resizeMode.cover
31
+ resizeMode: "cover"
49
32
  });
50
33
  };
51
34
 
@@ -1 +1 @@
1
- {"version":3,"names":["MDImage","uri","width","height","setHeight","useState","useEffect","Image","prefetch","getSize","iWidth","iHeight","heightCalc","FastImage","resizeMode","cover","memo"],"sources":["MDImage.tsx"],"sourcesContent":["import React, { memo, useEffect, useState } from 'react';\nimport { Image } from 'react-native';\nimport FastImage from 'react-native-fast-image';\n\ninterface MDImageProps {\n uri: string;\n width: number;\n}\n\nconst MDImage = ({ uri, width }: MDImageProps) => {\n const [height, setHeight] = useState<number>(0);\n\n useEffect(() => {\n Image.prefetch(uri);\n Image.getSize(uri, (iWidth, iHeight) => {\n const heightCalc = width * (iHeight / iWidth);\n setHeight(heightCalc);\n });\n }, [uri, width, height]);\n\n if (height < 1) {\n return null;\n }\n\n return (\n <FastImage\n fallback\n source={{ uri }}\n style={[\n {\n width: width,\n height: height,\n },\n ]}\n resizeMode={FastImage.resizeMode.cover}\n />\n );\n};\n\nexport default memo(MDImage);\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;;;;;AAOA,MAAMA,OAAO,GAAG,QAAkC;EAAA,IAAjC;IAAEC,GAAF;IAAOC;EAAP,CAAiC;EAChD,MAAM,CAACC,MAAD,EAASC,SAAT,IAAsB,IAAAC,eAAA,EAAiB,CAAjB,CAA5B;EAEA,IAAAC,gBAAA,EAAU,MAAM;IACdC,kBAAA,CAAMC,QAAN,CAAeP,GAAf;;IACAM,kBAAA,CAAME,OAAN,CAAcR,GAAd,EAAmB,CAACS,MAAD,EAASC,OAAT,KAAqB;MACtC,MAAMC,UAAU,GAAGV,KAAK,IAAIS,OAAO,GAAGD,MAAd,CAAxB;MACAN,SAAS,CAACQ,UAAD,CAAT;IACD,CAHD;EAID,CAND,EAMG,CAACX,GAAD,EAAMC,KAAN,EAAaC,MAAb,CANH;;EAQA,IAAIA,MAAM,GAAG,CAAb,EAAgB;IACd,OAAO,IAAP;EACD;;EAED,oBACE,6BAAC,6BAAD;IACE,QAAQ,MADV;IAEE,MAAM,EAAE;MAAEF;IAAF,CAFV;IAGE,KAAK,EAAE,CACL;MACEC,KAAK,EAAEA,KADT;MAEEC,MAAM,EAAEA;IAFV,CADK,CAHT;IASE,UAAU,EAAEU,6BAAA,CAAUC,UAAV,CAAqBC;EATnC,EADF;AAaD,CA5BD;;4BA8Be,IAAAC,WAAA,EAAKhB,OAAL,C"}
1
+ {"version":3,"names":["MDImage","uri","useEffect","Image","prefetch","memo"],"sources":["MDImage.tsx"],"sourcesContent":["import React, { memo, useEffect } from 'react';\nimport { Image } from 'react-native';\nimport FitImage from 'react-native-fit-image';\n\ninterface MDImageProps {\n uri: string;\n}\n\nconst MDImage = ({ uri }: MDImageProps) => {\n useEffect(() => {\n Image.prefetch(uri);\n }, [uri]);\n\n return <FitImage source={{ uri }} resizeMode=\"cover\" />;\n};\n\nexport default memo(MDImage);\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;;;;;AAMA,MAAMA,OAAO,GAAG,QAA2B;EAAA,IAA1B;IAAEC;EAAF,CAA0B;EACzC,IAAAC,gBAAA,EAAU,MAAM;IACdC,kBAAA,CAAMC,QAAN,CAAeH,GAAf;EACD,CAFD,EAEG,CAACA,GAAD,CAFH;EAIA,oBAAO,6BAAC,4BAAD;IAAU,MAAM,EAAE;MAAEA;IAAF,CAAlB;IAA2B,UAAU,EAAC;EAAtC,EAAP;AACD,CAND;;4BAQe,IAAAI,WAAA,EAAKL,OAAL,C"}
@@ -7,11 +7,13 @@ exports.default = void 0;
7
7
 
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
 
10
+ var _reactNative = require("react-native");
11
+
10
12
  var _marked = require("marked");
11
13
 
12
14
  var _Parser = _interopRequireDefault(require("./Parser"));
13
15
 
14
- var _reactNative = require("react-native");
16
+ var _styles = _interopRequireDefault(require("../theme/styles"));
15
17
 
16
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
19
 
@@ -24,16 +26,20 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
24
26
  const Markdown = _ref => {
25
27
  let {
26
28
  value,
27
- contentWidth,
28
- listProps
29
+ flatListProps,
30
+ styles: userStyles
29
31
  } = _ref;
32
+ const systemTheme = (0, _reactNative.useColorScheme)();
33
+ const styles = (0, _react.useMemo)(() => (0, _styles.default)(userStyles, systemTheme), [userStyles, systemTheme]);
34
+ const rnElements = (0, _react.useMemo)(() => {
35
+ const parser = new _Parser.default({
36
+ styles
37
+ });
30
38
 
31
- const tokens = _marked.marked.lexer(value.trim());
39
+ const tokens = _marked.marked.lexer(value.trim());
32
40
 
33
- const parser = new _Parser.default({
34
- contentWidth
35
- });
36
- const rnElements = parser.parse(tokens);
41
+ return parser.parse(tokens);
42
+ }, [value, styles]);
37
43
  const renderItem = (0, _react.useCallback)(_ref2 => {
38
44
  let {
39
45
  item
@@ -45,13 +51,15 @@ const Markdown = _ref => {
45
51
  keyExtractor: keyExtractor,
46
52
  maxToRenderPerBatch: 8,
47
53
  initialNumToRender: 8,
48
- removeClippedSubviews: true
49
- }, listProps, {
54
+ removeClippedSubviews: true,
55
+ style: styles.container
56
+ }, flatListProps, {
50
57
  data: rnElements,
51
58
  renderItem: renderItem
52
59
  }));
53
60
  };
54
61
 
55
- var _default = Markdown;
62
+ var _default = /*#__PURE__*/(0, _react.memo)(Markdown);
63
+
56
64
  exports.default = _default;
57
65
  //# sourceMappingURL=Markdown.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Markdown","value","contentWidth","listProps","tokens","marked","lexer","trim","parser","Parser","rnElements","parse","renderItem","useCallback","item","keyExtractor","_","index","toString"],"sources":["Markdown.tsx"],"sourcesContent":["import React, { ReactNode, useCallback } from 'react';\nimport { marked } from 'marked';\nimport Parser from './Parser';\nimport { FlatList, FlatListProps } from 'react-native';\n\ninterface MarkdownProps {\n value: string;\n contentWidth: number;\n listProps?: Omit<\n FlatListProps<ReactNode>,\n 'data' | 'renderItem' | 'horizontal'\n >;\n}\n\nconst Markdown = ({ value, contentWidth, listProps }: MarkdownProps) => {\n const tokens = marked.lexer(value.trim());\n const parser = new Parser({ contentWidth });\n const rnElements = parser.parse(tokens);\n\n const renderItem = useCallback(({ item }: { item: ReactNode }) => {\n return <>{item}</>;\n }, []);\n\n const keyExtractor = useCallback((_, index) => index.toString(), []);\n\n return (\n <FlatList\n keyExtractor={keyExtractor}\n maxToRenderPerBatch={8}\n initialNumToRender={8}\n removeClippedSubviews\n {...listProps}\n data={rnElements}\n renderItem={renderItem}\n />\n );\n};\n\nexport default Markdown;\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;;;;;AAWA,MAAMA,QAAQ,GAAG,QAAuD;EAAA,IAAtD;IAAEC,KAAF;IAASC,YAAT;IAAuBC;EAAvB,CAAsD;;EACtE,MAAMC,MAAM,GAAGC,cAAA,CAAOC,KAAP,CAAaL,KAAK,CAACM,IAAN,EAAb,CAAf;;EACA,MAAMC,MAAM,GAAG,IAAIC,eAAJ,CAAW;IAAEP;EAAF,CAAX,CAAf;EACA,MAAMQ,UAAU,GAAGF,MAAM,CAACG,KAAP,CAAaP,MAAb,CAAnB;EAEA,MAAMQ,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,EAAY,CAACG,CAAD,EAAIC,KAAJ,KAAcA,KAAK,CAACC,QAAN,EAA1B,EAA4C,EAA5C,CAArB;EAEA,oBACE,6BAAC,qBAAD;IACE,YAAY,EAAEH,YADhB;IAEE,mBAAmB,EAAE,CAFvB;IAGE,kBAAkB,EAAE,CAHtB;IAIE,qBAAqB;EAJvB,GAKMZ,SALN;IAME,IAAI,EAAEO,UANR;IAOE,UAAU,EAAEE;EAPd,GADF;AAWD,CAtBD;;eAwBeZ,Q"}
1
+ {"version":3,"names":["Markdown","value","flatListProps","styles","userStyles","systemTheme","useColorScheme","useMemo","getStyles","rnElements","parser","Parser","tokens","marked","lexer","trim","parse","renderItem","useCallback","item","keyExtractor","_","index","toString","container","memo"],"sources":["Markdown.tsx"],"sourcesContent":["import React, { memo, ReactNode, useCallback, useMemo } from 'react';\nimport { FlatList, FlatListProps, useColorScheme } from 'react-native';\nimport { marked } from 'marked';\nimport Parser from './Parser';\nimport getStyles from '../theme/styles';\nimport type { MarkedStyles } from '../theme/types';\n\ninterface MarkdownProps {\n value: string;\n flatListProps?: Omit<\n FlatListProps<ReactNode>,\n 'data' | 'renderItem' | 'horizontal'\n >;\n styles?: MarkedStyles;\n}\n\nconst Markdown = ({\n value,\n flatListProps,\n styles: userStyles,\n}: MarkdownProps) => {\n const systemTheme = useColorScheme();\n const styles = useMemo(\n () => getStyles(userStyles, systemTheme),\n [userStyles, systemTheme]\n );\n\n const rnElements = useMemo(() => {\n const parser = new Parser({\n styles,\n });\n const tokens = marked.lexer(value.trim());\n\n return parser.parse(tokens);\n }, [value, styles]);\n\n const renderItem = useCallback(({ item }: { item: ReactNode }) => {\n return <>{item}</>;\n }, []);\n\n const keyExtractor = useCallback((_, index) => index.toString(), []);\n\n return (\n <FlatList\n keyExtractor={keyExtractor}\n maxToRenderPerBatch={8}\n initialNumToRender={8}\n removeClippedSubviews\n style={styles.container}\n {...flatListProps}\n data={rnElements}\n renderItem={renderItem}\n />\n );\n};\n\nexport default memo(Markdown);\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAYA,MAAMA,QAAQ,GAAG,QAII;EAAA,IAJH;IAChBC,KADgB;IAEhBC,aAFgB;IAGhBC,MAAM,EAAEC;EAHQ,CAIG;EACnB,MAAMC,WAAW,GAAG,IAAAC,2BAAA,GAApB;EACA,MAAMH,MAAM,GAAG,IAAAI,cAAA,EACb,MAAM,IAAAC,eAAA,EAAUJ,UAAV,EAAsBC,WAAtB,CADO,EAEb,CAACD,UAAD,EAAaC,WAAb,CAFa,CAAf;EAKA,MAAMI,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,CAAab,KAAK,CAACc,IAAN,EAAb,CAAf;;IAEA,OAAOL,MAAM,CAACM,KAAP,CAAaJ,MAAb,CAAP;EACD,CAPkB,EAOhB,CAACX,KAAD,EAAQE,MAAR,CAPgB,CAAnB;EASA,MAAMc,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,EAAY,CAACG,CAAD,EAAIC,KAAJ,KAAcA,KAAK,CAACC,QAAN,EAA1B,EAA4C,EAA5C,CAArB;EAEA,oBACE,6BAAC,qBAAD;IACE,YAAY,EAAEH,YADhB;IAEE,mBAAmB,EAAE,CAFvB;IAGE,kBAAkB,EAAE,CAHtB;IAIE,qBAAqB,MAJvB;IAKE,KAAK,EAAEjB,MAAM,CAACqB;EALhB,GAMMtB,aANN;IAOE,IAAI,EAAEO,UAPR;IAQE,UAAU,EAAEQ;EARd,GADF;AAYD,CAtCD;;4BAwCe,IAAAQ,WAAA,EAAKzB,QAAL,C"}
@@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _reactNative = require("react-native");
9
-
10
8
  var _Renderer = _interopRequireDefault(require("./Renderer"));
11
9
 
12
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -19,21 +17,22 @@ class Parser {
19
17
 
20
18
  _defineProperty(this, "styles", void 0);
21
19
 
22
- _defineProperty(this, "options", void 0);
20
+ _defineProperty(this, "headingStylesMap", void 0);
23
21
 
22
+ this.styles = { ...options.styles
23
+ };
24
24
  this.renderer = new _Renderer.default();
25
- this.options = options;
26
- this.styles = { ...defaultStyles,
27
- ...options.styles
25
+ this.headingStylesMap = {
26
+ 1: this.styles.h1,
27
+ 2: this.styles.h2,
28
+ 3: this.styles.h3,
29
+ 4: this.styles.h4,
30
+ 5: this.styles.h5,
31
+ 6: this.styles.h6
28
32
  };
29
33
  }
30
34
 
31
35
  parse(tokens) {
32
- return this.parseBlocks(tokens);
33
- }
34
-
35
- parseBlocks(tokens) {
36
- let styleObj = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
37
36
  const elements = tokens.map(token => {
38
37
  switch (token.type) {
39
38
  case 'space':
@@ -46,9 +45,8 @@ class Parser {
46
45
  let tempTokens = [];
47
46
  const paragraphChildren = [];
48
47
  token.tokens.forEach(t => {
49
- // TODO: move type checking value to const
50
48
  if (t.type === 'image') {
51
- paragraphChildren.push(this.renderer.getTextNode(this.parseInline(tempTokens), styleObj));
49
+ paragraphChildren.push(this.renderer.getTextNode(this.parseInline(tempTokens), this.styles.text));
52
50
  paragraphChildren.push(this.parseInline([t]));
53
51
  tempTokens = [];
54
52
  return;
@@ -58,49 +56,41 @@ class Parser {
58
56
  });
59
57
 
60
58
  if (tempTokens.length > 0) {
61
- paragraphChildren.push(this.renderer.getTextNode(this.parseInline(tempTokens), styleObj));
59
+ paragraphChildren.push(this.renderer.getTextNode(this.parseInline(tempTokens), {}));
62
60
  }
63
61
 
64
- return this.renderer.getParagraph(paragraphChildren, [styleObj, this.styles.paragraph]);
62
+ return this.renderer.getViewNode(paragraphChildren, this.styles.paragraph);
65
63
  }
66
64
 
67
65
  case 'blockquote':
68
66
  {
69
- return this.renderer.getBlockquote(this.parseBlocks(token.tokens, this.styles.blockquoteText), this.styles.blockquoteContainer);
67
+ return this.renderer.getBlockquoteNode(this.parse(token.tokens), this.styles.blockquote);
70
68
  }
71
69
 
72
70
  case 'heading':
73
71
  {
74
- switch (token.depth) {
75
- case 1:
76
- return this.renderer.getHeading(token.text, this.styles.h1);
77
-
78
- case 2:
79
- return this.renderer.getHeading(token.text, this.styles.h2);
80
-
81
- case 3:
82
- return this.renderer.getHeading(token.text, this.styles.h3);
83
-
84
- case 4:
85
- return this.renderer.getHeading(token.text, this.styles.h4);
86
-
87
- case 5:
88
- return this.renderer.getHeading(token.text, this.styles.h5);
72
+ const styles = this.headingStylesMap[token.depth] ?? this.styles.text;
73
+ return this.renderer.getTextNode(token.text, styles);
74
+ }
89
75
 
90
- case 6:
91
- return this.renderer.getHeading(token.text, this.styles.h6);
76
+ case 'code':
77
+ {
78
+ return this.renderer.getCodeBlockNode(token.text, this.styles.code, this.styles.em);
79
+ }
92
80
 
93
- default:
94
- return null;
95
- }
81
+ case 'hr':
82
+ {
83
+ return this.renderer.getViewNode(null, this.styles.hr);
96
84
  }
97
85
 
98
- case 'code':
86
+ case 'list':
99
87
  {
100
- return this.renderer.getCodeBlock(token.text, this.styles.code, this.styles.em);
88
+ const li = token.items.map(item => item.text);
89
+ return this.renderer.getListNode(token.ordered, li, this.styles.list, this.styles.li);
101
90
  }
102
91
 
103
92
  default:
93
+ console.warn(`Token with '${token.type}' type was not found.`);
104
94
  return null;
105
95
  }
106
96
  });
@@ -108,14 +98,14 @@ class Parser {
108
98
  }
109
99
 
110
100
  parseInline(tokens) {
111
- let styleObj = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
101
+ let styles = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
112
102
  const elements = tokens.map(token => {
113
103
  if (!token) return null;
114
104
 
115
105
  switch (token.type) {
116
106
  case 'escape':
117
107
  {
118
- return this.renderer.getTextNode(token.text, [styleObj, this.styles.text]);
108
+ return this.renderer.getTextNode(token.text, [styles, this.styles.text]);
119
109
  }
120
110
 
121
111
  case 'html':
@@ -126,27 +116,27 @@ class Parser {
126
116
 
127
117
  case 'link':
128
118
  {
129
- return this.renderer.getLinkNode(token.text, token.href, [styleObj, this.styles.link]);
119
+ return this.renderer.getLinkNode(token.text, token.href, [styles, this.styles.link]);
130
120
  }
131
121
 
132
122
  case 'image':
133
123
  {
134
- return this.renderer.getImage(token.href, this.options.contentWidth);
124
+ return this.renderer.getImageNode(token.href);
135
125
  }
136
126
 
137
127
  case 'strong':
138
128
  {
139
- return this.renderer.getTextNode(this.parseInline(token.tokens, this.styles.strong), [styleObj, this.styles.strong]);
129
+ return this.renderer.getTextNode(this.parseInline(token.tokens, this.styles.strong), [styles, this.styles.strong]);
140
130
  }
141
131
 
142
132
  case 'em':
143
133
  {
144
- return this.renderer.getTextNode(this.parseInline(token.tokens, this.styles.em), [styleObj, this.styles.em]);
134
+ return this.renderer.getTextNode(this.parseInline(token.tokens, this.styles.em), [styles, this.styles.em]);
145
135
  }
146
136
 
147
137
  case 'codespan':
148
138
  {
149
- return this.renderer.getTextNode(` ${token.text} `, this.styles.codespan);
139
+ return this.renderer.getTextNode(token.text, this.styles.codespan);
150
140
  }
151
141
 
152
142
  case 'br':
@@ -161,13 +151,12 @@ class Parser {
161
151
 
162
152
  case 'text':
163
153
  {
164
- return this.renderer.getTextNode(token.raw, [styleObj, this.styles.text]);
154
+ return this.renderer.getTextNode(token.raw, [styles, this.styles.text]);
165
155
  }
166
156
 
167
157
  default:
168
158
  {
169
- const errMsg = 'Token with "' + token.type + '" type was not found.';
170
- console.error(errMsg);
159
+ console.warn(`Token with '${token.type}' type was not found.`);
171
160
  return null;
172
161
  }
173
162
  }
@@ -175,89 +164,7 @@ class Parser {
175
164
  return elements;
176
165
  }
177
166
 
178
- } // TODO: material typography for font size
179
-
180
-
181
- const defaultStyles = _reactNative.StyleSheet.create({
182
- em: {
183
- fontSize: 16,
184
- lineHeight: 24,
185
- fontStyle: 'italic'
186
- },
187
- strong: {
188
- fontSize: 16,
189
- lineHeight: 24,
190
- fontWeight: 'bold'
191
- },
192
- text: {
193
- fontSize: 16,
194
- lineHeight: 24
195
- },
196
- paragraph: {
197
- fontSize: 16,
198
- lineHeight: 24,
199
- paddingVertical: 8
200
- },
201
- link: {
202
- fontStyle: 'italic',
203
- fontSize: 16,
204
- lineHeight: 24,
205
- color: '#0074cc'
206
- },
207
- blockquoteText: {
208
- color: '#6a737d'
209
- },
210
- blockquoteContainer: {
211
- borderLeftColor: '#dfe2e5',
212
- paddingLeft: 16,
213
- borderLeftWidth: 5
214
- },
215
- h1: {
216
- fontSize: 32,
217
- lineHeight: 40,
218
- fontWeight: 'bold',
219
- paddingVertical: 8,
220
- letterSpacing: 0
221
- },
222
- h2: {
223
- fontSize: 28,
224
- lineHeight: 36,
225
- fontWeight: '500',
226
- paddingVertical: 8
227
- },
228
- h3: {
229
- fontSize: 36,
230
- lineHeight: 44,
231
- fontWeight: '500'
232
- },
233
- h4: {
234
- fontSize: 22,
235
- lineHeight: 28,
236
- fontWeight: '500'
237
- },
238
- h5: {
239
- fontSize: 16,
240
- lineHeight: 24,
241
- fontWeight: '500'
242
- },
243
- h6: {
244
- fontSize: 14,
245
- lineHeight: 20,
246
- fontWeight: '500'
247
- },
248
- codespan: {
249
- fontSize: 16,
250
- lineHeight: 24,
251
- fontStyle: 'italic',
252
- backgroundColor: '#afb8c133',
253
- fontWeight: '300'
254
- },
255
- code: {
256
- padding: 16,
257
- backgroundColor: '#afb8c133',
258
- minWidth: '100%'
259
- }
260
- });
167
+ }
261
168
 
262
169
  var _default = Parser;
263
170
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"names":["Parser","constructor","options","renderer","Renderer","styles","defaultStyles","parse","tokens","parseBlocks","styleObj","elements","map","token","type","tempTokens","paragraphChildren","forEach","t","push","getTextNode","parseInline","length","getParagraph","paragraph","getBlockquote","blockquoteText","blockquoteContainer","depth","getHeading","text","h1","h2","h3","h4","h5","h6","getCodeBlock","code","em","console","log","getLinkNode","href","link","getImage","contentWidth","strong","codespan","raw","errMsg","error","StyleSheet","create","fontSize","lineHeight","fontStyle","fontWeight","paddingVertical","color","borderLeftColor","paddingLeft","borderLeftWidth","letterSpacing","backgroundColor","padding","minWidth"],"sources":["Parser.ts"],"sourcesContent":["import type { marked } from 'marked';\nimport {\n ImageStyle,\n StyleProp,\n StyleSheet,\n TextStyle,\n ViewStyle,\n} from 'react-native';\nimport Renderer from './Renderer';\nimport type { MarkedStyles, ParserOptions } from '../types/types';\n\nclass Parser {\n private renderer;\n private styles: MarkedStyles;\n private options: ParserOptions;\n constructor(options: ParserOptions) {\n this.renderer = new Renderer();\n this.options = options;\n this.styles = {\n ...defaultStyles,\n ...options.styles,\n };\n }\n\n parse(tokens: marked.Token[]) {\n return this.parseBlocks(tokens);\n }\n\n parseBlocks(\n tokens: marked.Token[],\n styleObj: StyleProp<ViewStyle | TextStyle | ImageStyle> = {}\n ) {\n const elements: React.ReactNode[] = tokens.map((token) => {\n switch (token.type) {\n case 'space': {\n return null;\n }\n case 'paragraph': {\n let tempTokens: marked.Token[] = [];\n const paragraphChildren: React.ReactNode[] = [];\n token.tokens.forEach((t) => {\n // TODO: move type checking value to const\n if (t.type === 'image') {\n paragraphChildren.push(\n this.renderer.getTextNode(\n this.parseInline(tempTokens),\n styleObj\n )\n );\n paragraphChildren.push(this.parseInline([t]));\n tempTokens = [];\n return;\n }\n tempTokens = [...tempTokens, t];\n });\n\n if (tempTokens.length > 0) {\n paragraphChildren.push(\n this.renderer.getTextNode(this.parseInline(tempTokens), styleObj)\n );\n }\n\n return this.renderer.getParagraph(paragraphChildren, [\n styleObj,\n this.styles.paragraph,\n ]);\n }\n case 'blockquote': {\n return this.renderer.getBlockquote(\n this.parseBlocks(token.tokens, this.styles.blockquoteText),\n this.styles.blockquoteContainer\n );\n }\n case 'heading': {\n switch (token.depth) {\n case 1:\n return this.renderer.getHeading(token.text, this.styles.h1);\n case 2:\n return this.renderer.getHeading(token.text, this.styles.h2);\n case 3:\n return this.renderer.getHeading(token.text, this.styles.h3);\n case 4:\n return this.renderer.getHeading(token.text, this.styles.h4);\n case 5:\n return this.renderer.getHeading(token.text, this.styles.h5);\n case 6:\n return this.renderer.getHeading(token.text, this.styles.h6);\n default:\n return null;\n }\n }\n case 'code': {\n return this.renderer.getCodeBlock(\n token.text,\n this.styles.code,\n this.styles.em\n );\n }\n default:\n return null;\n }\n });\n return elements;\n }\n\n parseInline(\n tokens: marked.Token[],\n styleObj: StyleProp<ViewStyle | TextStyle | ImageStyle> = {}\n ) {\n const elements: React.ReactNode[] = tokens.map((token) => {\n if (!token) return null;\n\n switch (token.type) {\n case 'escape': {\n return this.renderer.getTextNode(token.text, [\n styleObj,\n this.styles.text,\n ]);\n }\n case 'html': {\n console.log('html', token);\n return null;\n }\n case 'link': {\n return this.renderer.getLinkNode(token.text, token.href, [\n styleObj,\n this.styles.link,\n ]);\n }\n case 'image': {\n return this.renderer.getImage(token.href, this.options.contentWidth);\n }\n case 'strong': {\n return this.renderer.getTextNode(\n this.parseInline(token.tokens, this.styles.strong),\n [styleObj, this.styles.strong]\n );\n }\n case 'em': {\n return this.renderer.getTextNode(\n this.parseInline(token.tokens, this.styles.em),\n [styleObj, this.styles.em]\n );\n }\n case 'codespan': {\n return this.renderer.getTextNode(\n ` ${token.text} `,\n this.styles.codespan\n );\n }\n case 'br': {\n return this.renderer.getTextNode('\\n', {});\n }\n case 'del': {\n return null;\n }\n case 'text': {\n return this.renderer.getTextNode(token.raw, [\n styleObj,\n this.styles.text,\n ]);\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n console.error(errMsg);\n return null;\n }\n }\n });\n return elements;\n }\n}\n\n// TODO: material typography for font size\nconst defaultStyles = StyleSheet.create<MarkedStyles>({\n em: {\n fontSize: 16,\n lineHeight: 24,\n fontStyle: 'italic',\n },\n strong: {\n fontSize: 16,\n lineHeight: 24,\n fontWeight: 'bold',\n },\n text: {\n fontSize: 16,\n lineHeight: 24,\n },\n paragraph: {\n fontSize: 16,\n lineHeight: 24,\n paddingVertical: 8,\n },\n link: {\n fontStyle: 'italic',\n fontSize: 16,\n lineHeight: 24,\n color: '#0074cc',\n },\n blockquoteText: {\n color: '#6a737d',\n },\n blockquoteContainer: {\n borderLeftColor: '#dfe2e5',\n paddingLeft: 16,\n borderLeftWidth: 5,\n },\n h1: {\n fontSize: 32,\n lineHeight: 40,\n fontWeight: 'bold',\n paddingVertical: 8,\n letterSpacing: 0,\n },\n h2: {\n fontSize: 28,\n lineHeight: 36,\n fontWeight: '500',\n paddingVertical: 8,\n },\n h3: {\n fontSize: 36,\n lineHeight: 44,\n fontWeight: '500',\n },\n h4: {\n fontSize: 22,\n lineHeight: 28,\n fontWeight: '500',\n },\n h5: {\n fontSize: 16,\n lineHeight: 24,\n fontWeight: '500',\n },\n h6: {\n fontSize: 14,\n lineHeight: 20,\n fontWeight: '500',\n },\n codespan: {\n fontSize: 16,\n lineHeight: 24,\n fontStyle: 'italic',\n backgroundColor: '#afb8c133',\n fontWeight: '300',\n },\n code: {\n padding: 16,\n backgroundColor: '#afb8c133',\n minWidth: '100%',\n },\n});\n\nexport default Parser;\n"],"mappings":"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"}
1
+ {"version":3,"names":["Parser","constructor","options","styles","renderer","Renderer","headingStylesMap","h1","h2","h3","h4","h5","h6","parse","tokens","elements","map","token","type","tempTokens","paragraphChildren","forEach","t","push","getTextNode","parseInline","text","length","getViewNode","paragraph","getBlockquoteNode","blockquote","depth","getCodeBlockNode","code","em","hr","li","items","item","getListNode","ordered","list","console","warn","log","getLinkNode","href","link","getImageNode","strong","codespan","raw"],"sources":["Parser.tsx"],"sourcesContent":["import type { marked } from 'marked';\nimport type { ImageStyle, StyleProp, TextStyle, ViewStyle } from 'react-native';\nimport Renderer from './Renderer';\nimport type { MarkedStyles } from '../theme/types';\n\ninterface ParserOptions {\n styles?: MarkedStyles;\n}\n\nclass Parser {\n private renderer;\n private styles: MarkedStyles;\n private headingStylesMap: Record<number, TextStyle | undefined>;\n constructor(options: ParserOptions) {\n this.styles = { ...options.styles };\n this.renderer = new Renderer();\n this.headingStylesMap = {\n 1: this.styles.h1,\n 2: this.styles.h2,\n 3: this.styles.h3,\n 4: this.styles.h4,\n 5: this.styles.h5,\n 6: this.styles.h6,\n };\n }\n\n parse(tokens: marked.Token[]) {\n const elements: React.ReactNode[] = tokens.map((token) => {\n switch (token.type) {\n case 'space': {\n return null;\n }\n case 'paragraph': {\n let tempTokens: marked.Token[] = [];\n const paragraphChildren: React.ReactNode[] = [];\n token.tokens.forEach((t) => {\n if (t.type === 'image') {\n paragraphChildren.push(\n this.renderer.getTextNode(\n this.parseInline(tempTokens),\n this.styles.text\n )\n );\n paragraphChildren.push(this.parseInline([t]));\n tempTokens = [];\n return;\n }\n tempTokens = [...tempTokens, t];\n });\n\n if (tempTokens.length > 0) {\n paragraphChildren.push(\n this.renderer.getTextNode(this.parseInline(tempTokens), {})\n );\n }\n\n return this.renderer.getViewNode(\n paragraphChildren,\n this.styles.paragraph\n );\n }\n case 'blockquote': {\n return this.renderer.getBlockquoteNode(\n this.parse(token.tokens),\n this.styles.blockquote\n );\n }\n case 'heading': {\n const styles = this.headingStylesMap[token.depth] ?? this.styles.text;\n return this.renderer.getTextNode(token.text, styles);\n }\n case 'code': {\n return this.renderer.getCodeBlockNode(\n token.text,\n this.styles.code,\n this.styles.em\n );\n }\n case 'hr': {\n return this.renderer.getViewNode(null, this.styles.hr);\n }\n case 'list': {\n const li = token.items.map((item) => item.text);\n return this.renderer.getListNode(\n token.ordered,\n li,\n this.styles.list,\n this.styles.li\n );\n }\n default:\n console.warn(`Token with '${token.type}' type was not found.`);\n return null;\n }\n });\n return elements;\n }\n\n parseInline(\n tokens: marked.Token[],\n styles: StyleProp<ViewStyle | TextStyle | ImageStyle> = {}\n ) {\n const elements: React.ReactNode[] = tokens.map((token) => {\n if (!token) return null;\n\n switch (token.type) {\n case 'escape': {\n return this.renderer.getTextNode(token.text, [\n styles,\n this.styles.text,\n ]);\n }\n case 'html': {\n console.log('html', token);\n return null;\n }\n case 'link': {\n return this.renderer.getLinkNode(token.text, token.href, [\n styles,\n this.styles.link,\n ]);\n }\n case 'image': {\n return this.renderer.getImageNode(token.href);\n }\n case 'strong': {\n return this.renderer.getTextNode(\n this.parseInline(token.tokens, this.styles.strong),\n [styles, this.styles.strong]\n );\n }\n case 'em': {\n return this.renderer.getTextNode(\n this.parseInline(token.tokens, this.styles.em),\n [styles, this.styles.em]\n );\n }\n case 'codespan': {\n return this.renderer.getTextNode(token.text, this.styles.codespan);\n }\n case 'br': {\n return this.renderer.getTextNode('\\n', {});\n }\n case 'del': {\n return null;\n }\n case 'text': {\n return this.renderer.getTextNode(token.raw, [\n styles,\n this.styles.text,\n ]);\n }\n default: {\n console.warn(`Token with '${token.type}' type was not found.`);\n return null;\n }\n }\n });\n return elements;\n }\n}\n\nexport default Parser;\n"],"mappings":"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"}
@@ -9,6 +9,12 @@ var React = _interopRequireWildcard(require("react"));
9
9
 
10
10
  var _reactNative = require("react-native");
11
11
 
12
+ var _reactNativeLi = _interopRequireDefault(require("@jsamr/react-native-li"));
13
+
14
+ var _disc = _interopRequireDefault(require("@jsamr/counter-style/presets/disc"));
15
+
16
+ var _decimal = _interopRequireDefault(require("@jsamr/counter-style/presets/decimal"));
17
+
12
18
  var _MDImage = _interopRequireDefault(require("./../components/MDImage"));
13
19
 
14
20
  var _string = require("../utils/string");
@@ -41,14 +47,14 @@ class Renderer {
41
47
  });
42
48
  }
43
49
 
44
- getParagraph(children, styles) {
50
+ getViewNode(children, styles) {
45
51
  return /*#__PURE__*/React.createElement(_reactNative.View, {
46
52
  key: (0, _string.generateRandomString)(),
47
53
  style: styles
48
54
  }, children);
49
55
  }
50
56
 
51
- getCodeBlock(text, containerStyle, textStyle) {
57
+ getCodeBlockNode(text, containerStyle, textStyle) {
52
58
  return /*#__PURE__*/React.createElement(_reactNative.ScrollView, {
53
59
  contentContainerStyle: containerStyle,
54
60
  horizontal: true
@@ -57,28 +63,31 @@ class Renderer {
57
63
  }, text));
58
64
  }
59
65
 
60
- getBlockquote(children, styles) {
66
+ getBlockquoteNode(children, styles) {
61
67
  return /*#__PURE__*/React.createElement(_reactNative.View, {
62
68
  key: (0, _string.generateRandomString)(),
63
69
  style: styles
64
70
  }, children);
65
71
  }
66
72
 
67
- getHeading(text, styles) {
68
- return /*#__PURE__*/React.createElement(_reactNative.Text, {
69
- key: (0, _string.generateRandomString)(),
70
- style: styles
71
- }, text);
72
- }
73
-
74
- getImage(uri, width) {
73
+ getImageNode(uri) {
75
74
  return /*#__PURE__*/React.createElement(_MDImage.default, {
76
75
  key: (0, _string.generateRandomString)(),
77
- uri: uri,
78
- width: width
76
+ uri: uri
79
77
  });
80
78
  }
81
79
 
80
+ getListNode(ordered, li, listStyle, textStyle) {
81
+ return /*#__PURE__*/React.createElement(_reactNativeLi.default, {
82
+ counterRenderer: ordered ? _decimal.default : _disc.default,
83
+ markerTextStyle: textStyle,
84
+ markerBoxStyle: listStyle
85
+ }, li.map((text, index) => /*#__PURE__*/React.createElement(_reactNative.Text, {
86
+ key: index,
87
+ style: textStyle
88
+ }, text)));
89
+ }
90
+
82
91
  }
83
92
 
84
93
  var _default = Renderer;
@@ -1 +1 @@
1
- {"version":3,"names":["Renderer","href","Linking","openURL","children","styles","generateRandomString","text","onLinkPress","getParagraph","getCodeBlock","containerStyle","textStyle","getBlockquote","getHeading","getImage","uri","width"],"sources":["Renderer.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Linking, ScrollView, View, ViewStyle } from 'react-native';\nimport type { StyleProp, TextStyle } from 'react-native';\nimport { Text } from 'react-native';\nimport MDImage from './../components/MDImage';\nimport { generateRandomString } from '../utils/string';\n\nclass Renderer {\n private onLinkPress = (href: string) => () => Linking.openURL(href);\n\n getTextNode = (\n children: string | React.ReactNode[],\n styles: StyleProp<TextStyle>\n ) => {\n return (\n <Text key={generateRandomString()} style={styles}>\n {children}\n </Text>\n );\n };\n\n getLinkNode = (text: string, href: string, styles: StyleProp<TextStyle>) => {\n return (\n <Text\n key={generateRandomString()}\n onPress={this.onLinkPress(href)}\n style={styles}\n >\n {text}\n </Text>\n );\n };\n\n getParagraph(children: React.ReactNode[], styles: StyleProp<ViewStyle>) {\n return (\n <View key={generateRandomString()} style={styles}>\n {children}\n </View>\n );\n }\n\n getCodeBlock(\n text: string,\n containerStyle: StyleProp<ViewStyle>,\n textStyle: StyleProp<TextStyle>\n ) {\n return (\n <ScrollView contentContainerStyle={containerStyle} horizontal>\n <Text style={textStyle}>{text}</Text>\n </ScrollView>\n );\n }\n\n getBlockquote(children: React.ReactNode[], styles: StyleProp<ViewStyle>) {\n return (\n <View key={generateRandomString()} style={styles}>\n {children}\n </View>\n );\n }\n\n getHeading(text: string, styles: StyleProp<TextStyle>) {\n return (\n <Text key={generateRandomString()} style={styles}>\n {text}\n </Text>\n );\n }\n\n getImage(uri: string, width: number) {\n return <MDImage key={generateRandomString()} uri={uri} width={width} />;\n }\n}\n\nexport default Renderer;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAGA;;AACA;;;;;;;;;;AAEA,MAAMA,QAAN,CAAe;EAAA;IAAA,qCACUC,IAAD,IAAkB,MAAMC,oBAAA,CAAQC,OAAR,CAAgBF,IAAhB,CADjC;;IAAA,qCAGC,CACZG,QADY,EAEZC,MAFY,KAGT;MACH,oBACE,oBAAC,iBAAD;QAAM,GAAG,EAAE,IAAAC,4BAAA,GAAX;QAAmC,KAAK,EAAED;MAA1C,GACGD,QADH,CADF;IAKD,CAZY;;IAAA,qCAcC,CAACG,IAAD,EAAeN,IAAf,EAA6BI,MAA7B,KAA8D;MAC1E,oBACE,oBAAC,iBAAD;QACE,GAAG,EAAE,IAAAC,4BAAA,GADP;QAEE,OAAO,EAAE,KAAKE,WAAL,CAAiBP,IAAjB,CAFX;QAGE,KAAK,EAAEI;MAHT,GAKGE,IALH,CADF;IASD,CAxBY;EAAA;;EA0BbE,YAAY,CAACL,QAAD,EAA8BC,MAA9B,EAA4D;IACtE,oBACE,oBAAC,iBAAD;MAAM,GAAG,EAAE,IAAAC,4BAAA,GAAX;MAAmC,KAAK,EAAED;IAA1C,GACGD,QADH,CADF;EAKD;;EAEDM,YAAY,CACVH,IADU,EAEVI,cAFU,EAGVC,SAHU,EAIV;IACA,oBACE,oBAAC,uBAAD;MAAY,qBAAqB,EAAED,cAAnC;MAAmD,UAAU;IAA7D,gBACE,oBAAC,iBAAD;MAAM,KAAK,EAAEC;IAAb,GAAyBL,IAAzB,CADF,CADF;EAKD;;EAEDM,aAAa,CAACT,QAAD,EAA8BC,MAA9B,EAA4D;IACvE,oBACE,oBAAC,iBAAD;MAAM,GAAG,EAAE,IAAAC,4BAAA,GAAX;MAAmC,KAAK,EAAED;IAA1C,GACGD,QADH,CADF;EAKD;;EAEDU,UAAU,CAACP,IAAD,EAAeF,MAAf,EAA6C;IACrD,oBACE,oBAAC,iBAAD;MAAM,GAAG,EAAE,IAAAC,4BAAA,GAAX;MAAmC,KAAK,EAAED;IAA1C,GACGE,IADH,CADF;EAKD;;EAEDQ,QAAQ,CAACC,GAAD,EAAcC,KAAd,EAA6B;IACnC,oBAAO,oBAAC,gBAAD;MAAS,GAAG,EAAE,IAAAX,4BAAA,GAAd;MAAsC,GAAG,EAAEU,GAA3C;MAAgD,KAAK,EAAEC;IAAvD,EAAP;EACD;;AAhEY;;eAmEAjB,Q"}
1
+ {"version":3,"names":["Renderer","href","Linking","openURL","children","styles","generateRandomString","text","onLinkPress","getViewNode","getCodeBlockNode","containerStyle","textStyle","getBlockquoteNode","getImageNode","uri","getListNode","ordered","li","listStyle","Decimal","Disc","map","index"],"sources":["Renderer.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Linking, ScrollView, View, ViewStyle } from 'react-native';\nimport { Text, StyleProp, TextStyle } from 'react-native';\nimport MarkedList from '@jsamr/react-native-li';\nimport Disc from '@jsamr/counter-style/presets/disc';\nimport Decimal from '@jsamr/counter-style/presets/decimal';\nimport MDImage from './../components/MDImage';\n\nimport { generateRandomString } from '../utils/string';\n\nclass Renderer {\n private onLinkPress = (href: string) => () => Linking.openURL(href);\n\n getTextNode = (\n children: string | React.ReactNode[],\n styles: StyleProp<TextStyle>\n ) => {\n return (\n <Text key={generateRandomString()} style={styles}>\n {children}\n </Text>\n );\n };\n\n getLinkNode = (text: string, href: string, styles: StyleProp<TextStyle>) => {\n return (\n <Text\n key={generateRandomString()}\n onPress={this.onLinkPress(href)}\n style={styles}\n >\n {text}\n </Text>\n );\n };\n\n getViewNode(\n children: React.ReactNode[] | null,\n styles: StyleProp<ViewStyle>\n ) {\n return (\n <View key={generateRandomString()} style={styles}>\n {children}\n </View>\n );\n }\n\n getCodeBlockNode(\n text: string,\n containerStyle: StyleProp<ViewStyle>,\n textStyle: StyleProp<TextStyle>\n ) {\n return (\n <ScrollView contentContainerStyle={containerStyle} horizontal>\n <Text style={textStyle}>{text}</Text>\n </ScrollView>\n );\n }\n\n getBlockquoteNode(children: React.ReactNode[], styles: StyleProp<ViewStyle>) {\n return (\n <View key={generateRandomString()} style={styles}>\n {children}\n </View>\n );\n }\n\n getImageNode(uri: string) {\n return <MDImage key={generateRandomString()} uri={uri} />;\n }\n\n getListNode(\n ordered: boolean,\n li: string[],\n listStyle: ViewStyle | undefined,\n textStyle: TextStyle | undefined\n ) {\n return (\n <MarkedList\n counterRenderer={ordered ? Decimal : Disc}\n markerTextStyle={textStyle}\n markerBoxStyle={listStyle}\n >\n {li.map((text, index) => (\n <Text key={index} style={textStyle}>\n {text}\n </Text>\n ))}\n </MarkedList>\n );\n }\n}\n\nexport default Renderer;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AAEA;;;;;;;;;;AAEA,MAAMA,QAAN,CAAe;EAAA;IAAA,qCACUC,IAAD,IAAkB,MAAMC,oBAAA,CAAQC,OAAR,CAAgBF,IAAhB,CADjC;;IAAA,qCAGC,CACZG,QADY,EAEZC,MAFY,KAGT;MACH,oBACE,oBAAC,iBAAD;QAAM,GAAG,EAAE,IAAAC,4BAAA,GAAX;QAAmC,KAAK,EAAED;MAA1C,GACGD,QADH,CADF;IAKD,CAZY;;IAAA,qCAcC,CAACG,IAAD,EAAeN,IAAf,EAA6BI,MAA7B,KAA8D;MAC1E,oBACE,oBAAC,iBAAD;QACE,GAAG,EAAE,IAAAC,4BAAA,GADP;QAEE,OAAO,EAAE,KAAKE,WAAL,CAAiBP,IAAjB,CAFX;QAGE,KAAK,EAAEI;MAHT,GAKGE,IALH,CADF;IASD,CAxBY;EAAA;;EA0BbE,WAAW,CACTL,QADS,EAETC,MAFS,EAGT;IACA,oBACE,oBAAC,iBAAD;MAAM,GAAG,EAAE,IAAAC,4BAAA,GAAX;MAAmC,KAAK,EAAED;IAA1C,GACGD,QADH,CADF;EAKD;;EAEDM,gBAAgB,CACdH,IADc,EAEdI,cAFc,EAGdC,SAHc,EAId;IACA,oBACE,oBAAC,uBAAD;MAAY,qBAAqB,EAAED,cAAnC;MAAmD,UAAU;IAA7D,gBACE,oBAAC,iBAAD;MAAM,KAAK,EAAEC;IAAb,GAAyBL,IAAzB,CADF,CADF;EAKD;;EAEDM,iBAAiB,CAACT,QAAD,EAA8BC,MAA9B,EAA4D;IAC3E,oBACE,oBAAC,iBAAD;MAAM,GAAG,EAAE,IAAAC,4BAAA,GAAX;MAAmC,KAAK,EAAED;IAA1C,GACGD,QADH,CADF;EAKD;;EAEDU,YAAY,CAACC,GAAD,EAAc;IACxB,oBAAO,oBAAC,gBAAD;MAAS,GAAG,EAAE,IAAAT,4BAAA,GAAd;MAAsC,GAAG,EAAES;IAA3C,EAAP;EACD;;EAEDC,WAAW,CACTC,OADS,EAETC,EAFS,EAGTC,SAHS,EAITP,SAJS,EAKT;IACA,oBACE,oBAAC,sBAAD;MACE,eAAe,EAAEK,OAAO,GAAGG,gBAAH,GAAaC,aADvC;MAEE,eAAe,EAAET,SAFnB;MAGE,cAAc,EAAEO;IAHlB,GAKGD,EAAE,CAACI,GAAH,CAAO,CAACf,IAAD,EAAOgB,KAAP,kBACN,oBAAC,iBAAD;MAAM,GAAG,EAAEA,KAAX;MAAkB,KAAK,EAAEX;IAAzB,GACGL,IADH,CADD,CALH,CADF;EAaD;;AAhFY;;eAmFAP,Q"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ const colors = {
8
+ light: {
9
+ background: '#ffffff',
10
+ code: '#f6f8fa',
11
+ link: '#58a6ff',
12
+ text: '#333333',
13
+ border: '#d0d7de'
14
+ },
15
+ dark: {
16
+ background: '#000000',
17
+ code: '#161b22',
18
+ link: '#58a6ff',
19
+ text: '#ffffff',
20
+ border: '#30363d'
21
+ }
22
+ };
23
+ var _default = colors;
24
+ exports.default = _default;
25
+ //# sourceMappingURL=colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["colors","light","background","code","link","text","border","dark"],"sources":["colors.ts"],"sourcesContent":["import type { ColorKeys } from './types';\n\nconst colors: Record<'light' | 'dark', Record<ColorKeys, string>> = {\n light: {\n background: '#ffffff',\n code: '#f6f8fa',\n link: '#58a6ff',\n text: '#333333',\n border: '#d0d7de',\n },\n dark: {\n background: '#000000',\n code: '#161b22',\n link: '#58a6ff',\n text: '#ffffff',\n border: '#30363d',\n },\n};\n\nexport default colors;\n"],"mappings":";;;;;;AAEA,MAAMA,MAA2D,GAAG;EAClEC,KAAK,EAAE;IACLC,UAAU,EAAE,SADP;IAELC,IAAI,EAAE,SAFD;IAGLC,IAAI,EAAE,SAHD;IAILC,IAAI,EAAE,SAJD;IAKLC,MAAM,EAAE;EALH,CAD2D;EAQlEC,IAAI,EAAE;IACJL,UAAU,EAAE,SADR;IAEJC,IAAI,EAAE,SAFF;IAGJC,IAAI,EAAE,SAHF;IAIJC,IAAI,EAAE,SAJF;IAKJC,MAAM,EAAE;EALJ;AAR4D,CAApE;eAiBeN,M"}