From 1ce21967b16ea1a008365d8462b8744a21c5c6ca Mon Sep 17 00:00:00 2001
From: Joshua Tag Howard
Date: Mon, 28 Oct 2024 20:52:08 +0000
Subject: [PATCH 1/8] Add devcontainer
---
.devcontainer/devcontainer.json | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
create mode 100644 .devcontainer/devcontainer.json
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
new file mode 100644
index 00000000..ee45b8e4
--- /dev/null
+++ b/.devcontainer/devcontainer.json
@@ -0,0 +1,22 @@
+// For format details, see https://aka.ms/devcontainer.json. For config options, see the
+// README at: https://github.com/devcontainers/templates/tree/main/src/typescript-node
+{
+ "name": "Node.js & TypeScript",
+ // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
+ "image": "mcr.microsoft.com/devcontainers/typescript-node:1-22-bookworm"
+
+ // Features to add to the dev container. More info: https://containers.dev/features.
+ // "features": {},
+
+ // Use 'forwardPorts' to make a list of ports inside the container available locally.
+ // "forwardPorts": [],
+
+ // Use 'postCreateCommand' to run commands after the container is created.
+ // "postCreateCommand": "yarn install",
+
+ // Configure tool-specific properties.
+ // "customizations": {},
+
+ // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
+ // "remoteUser": "root"
+}
From d23785d22da4cca5c841e04b1e20e18b7b1d138f Mon Sep 17 00:00:00 2001
From: Joshua Tag Howard
Date: Mon, 28 Oct 2024 21:00:26 +0000
Subject: [PATCH 2/8] Typescript port
---
.gitignore | 1 +
README.md | 286 ++++++-----
package.json | 40 +-
src/index.d.ts | 18 +-
src/index.js | 231 ---------
src/index.tsx | 216 +++++++++
src/lib/AstRenderer.js | 186 -------
src/lib/AstRenderer.ts | 170 +++++++
.../{textStyleProps.js => textStyleProps.ts} | 0
src/lib/parser.js | 27 --
src/lib/parser.ts | 28 ++
src/lib/renderRules.js | 347 -------------
src/lib/renderRules.tsx | 455 ++++++++++++++++++
src/lib/{styles.js => styles.ts} | 0
src/lib/types.ts | 16 +
src/lib/util/Token.js | 8 -
src/lib/util/Token.ts | 35 ++
src/lib/util/cleanupTokens.js | 58 ---
src/lib/util/cleanupTokens.ts | 63 +++
src/lib/util/convertAdditionalStyles.js | 25 -
src/lib/util/convertAdditionalStyles.ts | 25 +
src/lib/util/flattenInlineTokens.js | 14 -
src/lib/util/flattenInlineTokens.ts | 19 +
src/lib/util/getTokenTypeByToken.js | 44 --
src/lib/util/getTokenTypeByToken.ts | 49 ++
.../util/{getUniqueID.js => getUniqueID.ts} | 0
...{groupTextTokens.js => groupTextTokens.ts} | 15 +-
src/lib/util/hasParents.js | 9 -
src/lib/util/hasParents.ts | 5 +
...mParagraph.js => omitListItemParagraph.ts} | 15 +-
src/lib/util/openUrl.js | 12 -
src/lib/util/openUrl.ts | 15 +
src/lib/util/removeTextStyleProps.js | 15 -
src/lib/util/removeTextStyleProps.ts | 17 +
src/lib/util/renderInlineAsText.js | 13 -
src/lib/util/renderInlineAsText.ts | 15 +
src/lib/util/splitTextNonTextNodes.js | 14 -
src/lib/util/stringToTokens.js | 10 -
src/lib/util/stringToTokens.ts | 15 +
.../util/{tokensToAST.js => tokensToAST.ts} | 38 +-
tsconfig.json | 101 ++++
tsconfig.tsbuildinfo | 1 +
42 files changed, 1438 insertions(+), 1233 deletions(-)
delete mode 100644 src/index.js
create mode 100644 src/index.tsx
delete mode 100644 src/lib/AstRenderer.js
create mode 100644 src/lib/AstRenderer.ts
rename src/lib/data/{textStyleProps.js => textStyleProps.ts} (100%)
delete mode 100644 src/lib/parser.js
create mode 100644 src/lib/parser.ts
delete mode 100644 src/lib/renderRules.js
create mode 100644 src/lib/renderRules.tsx
rename src/lib/{styles.js => styles.ts} (100%)
create mode 100644 src/lib/types.ts
delete mode 100644 src/lib/util/Token.js
create mode 100644 src/lib/util/Token.ts
delete mode 100644 src/lib/util/cleanupTokens.js
create mode 100644 src/lib/util/cleanupTokens.ts
delete mode 100644 src/lib/util/convertAdditionalStyles.js
create mode 100644 src/lib/util/convertAdditionalStyles.ts
delete mode 100644 src/lib/util/flattenInlineTokens.js
create mode 100644 src/lib/util/flattenInlineTokens.ts
delete mode 100644 src/lib/util/getTokenTypeByToken.js
create mode 100644 src/lib/util/getTokenTypeByToken.ts
rename src/lib/util/{getUniqueID.js => getUniqueID.ts} (100%)
rename src/lib/util/{groupTextTokens.js => groupTextTokens.ts} (50%)
delete mode 100644 src/lib/util/hasParents.js
create mode 100644 src/lib/util/hasParents.ts
rename src/lib/util/{omitListItemParagraph.js => omitListItemParagraph.ts} (67%)
delete mode 100644 src/lib/util/openUrl.js
create mode 100644 src/lib/util/openUrl.ts
delete mode 100644 src/lib/util/removeTextStyleProps.js
create mode 100644 src/lib/util/removeTextStyleProps.ts
delete mode 100644 src/lib/util/renderInlineAsText.js
create mode 100644 src/lib/util/renderInlineAsText.ts
delete mode 100644 src/lib/util/splitTextNonTextNodes.js
delete mode 100644 src/lib/util/stringToTokens.js
create mode 100644 src/lib/util/stringToTokens.ts
rename src/lib/util/{tokensToAST.js => tokensToAST.ts} (54%)
create mode 100644 tsconfig.json
create mode 100644 tsconfig.tsbuildinfo
diff --git a/.gitignore b/.gitignore
index e3e176f1..e1e826b7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,4 @@ package-lock.json
yarn-error.log
yarn.lock
.eslintcache
+/dist
\ No newline at end of file
diff --git a/README.md b/README.md
index dd58d859..bb352d88 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,8 @@
# React Native Markdown Display [![npm version](https://badge.fury.io/js/react-native-markdown-display.svg)](https://badge.fury.io/js/react-native-markdown-display) [![Known Vulnerabilities](https://snyk.io/test/github/iamacup/react-native-markdown-display/badge.svg)](https://snyk.io/test/github/iamacup/react-native-markdown-display)
-**This is a fork of [iamacup/react-native-markdown-display](https://github.com/iamacup/react-native-markdown-display) that increases the depended upon versions of react to 18 and react-native to v0.68. This makes it compatible with Expo SDK 46**
+\*\*This is a vendored copy of [@jonasmerlin/react-native-markdown-display](https://github.com/jonasmerlin/react-native-markdown-display)
-It a 100% compatible CommonMark renderer, a react-native markdown renderer done right. This is __not__ a web-view markdown renderer but a renderer that uses native components for all its elements. These components can be overwritten and styled as needed.
+It a 100% compatible CommonMark renderer, a react-native markdown renderer done right. This is **not** a web-view markdown renderer but a renderer that uses native components for all its elements. These components can be overwritten and styled as needed.
### Compatibility with react-native-markdown-renderer
@@ -11,11 +11,13 @@ This is intended to be a replacement for react-native-markdown-renderer, with a
### Install
#### Yarn
+
```npm
yarn add react-native-markdown-display
```
#### NPM
+
```npm
npm install -S react-native-markdown-display
```
@@ -56,32 +58,29 @@ const App: () => React$Node = () => {
export default App;
```
-
### Props and Functions
The `` object takes the following common props:
-| Property | Default | Required | Description
-| --- | --- | --- | ---
-| `children` | N/A | `true` | The markdown string to render, or the [pre-processed tree](#pre-processing)
-| `style` | [source](https://github.com/iamacup/react-native-markdown-display/blob/master/src/lib/styles.js) | `false` | An object to override the styling for the various rules, [see style section below](#rules-and-styles) for more info
-| `mergeStyle` | `true` | `false` | If true, when a style is supplied, the individual items are merged with the default styles instead of overwriting them
-| `rules` | [source](https://github.com/iamacup/react-native-markdown-display/blob/master/src/lib/renderRules.js) | `false` | An object of rules that specify how to render each markdown item, [see rules section below](#rules) for more info
-| `onLinkPress` | `import { Linking } from 'react-native';` and `Linking.openURL(url);` | `false` | A handler function to change click behaviour, [see handling links section below](#handling-links) for more info
-| `debugPrintTree` | `false` | `false` | Will print the AST tree to the console to help you see what the markdown is being translated to
-
+| Property | Default | Required | Description |
+| ---------------- | ----------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------- |
+| `children` | N/A | `true` | The markdown string to render, or the [pre-processed tree](#pre-processing) |
+| `style` | [source](https://github.com/iamacup/react-native-markdown-display/blob/master/src/lib/styles.js) | `false` | An object to override the styling for the various rules, [see style section below](#rules-and-styles) for more info |
+| `mergeStyle` | `true` | `false` | If true, when a style is supplied, the individual items are merged with the default styles instead of overwriting them |
+| `rules` | [source](https://github.com/iamacup/react-native-markdown-display/blob/master/src/lib/renderRules.js) | `false` | An object of rules that specify how to render each markdown item, [see rules section below](#rules) for more info |
+| `onLinkPress` | `import { Linking } from 'react-native';` and `Linking.openURL(url);` | `false` | A handler function to change click behaviour, [see handling links section below](#handling-links) for more info |
+| `debugPrintTree` | `false` | `false` | Will print the AST tree to the console to help you see what the markdown is being translated to |
And some additional, less used options:
-| Property | Default | Required | Description
-| --- | --- | --- | ---
-| `renderer` | `instanceOf(AstRenderer)` | `false` | Used to specify a custom renderer, you can not use the rules or styles props with a custom renderer.
-| `markdownit` | `instanceOf(MarkdownIt)` | `false` | A custom markdownit instance with your configuration, default is `MarkdownIt({typographer: true})`
-| `maxTopLevelChildren` | `null` | `false` | If defined as a number will only render out first `n` many top level children, then will try to render out `topLevelMaxExceededItem`
-| `topLevelMaxExceededItem` | `...` | `false` | Will render when `maxTopLevelChildren` is hit. Make sure to give it a key!
-| `allowedImageHandlers` | `['data:image/png;base64', 'data:image/gif;base64', 'data:image/jpeg;base64', 'https://', 'http://']` | `false` | Any image that does not start with one of these will have the `defaultImageHandler` value prepended to it (unless `defaultImageHandler` is null in which case it won't try to render anything)
-| `defaultImageHandler` | `http://` | `false` | Will be prepended to an image url if it does not start with something in the `allowedImageHandlers` array, if this is set to null, it won't try to recover but will just not render anything instead.
-
+| Property | Default | Required | Description |
+| ------------------------- | ----------------------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `renderer` | `instanceOf(AstRenderer)` | `false` | Used to specify a custom renderer, you can not use the rules or styles props with a custom renderer. |
+| `markdownit` | `instanceOf(MarkdownIt)` | `false` | A custom markdownit instance with your configuration, default is `MarkdownIt({typographer: true})` |
+| `maxTopLevelChildren` | `null` | `false` | If defined as a number will only render out first `n` many top level children, then will try to render out `topLevelMaxExceededItem` |
+| `topLevelMaxExceededItem` | `...` | `false` | Will render when `maxTopLevelChildren` is hit. Make sure to give it a key! |
+| `allowedImageHandlers` | `['data:image/png;base64', 'data:image/gif;base64', 'data:image/jpeg;base64', 'https://', 'http://']` | `false` | Any image that does not start with one of these will have the `defaultImageHandler` value prepended to it (unless `defaultImageHandler` is null in which case it won't try to render anything) |
+| `defaultImageHandler` | `http://` | `false` | Will be prepended to an image url if it does not start with something in the `allowedImageHandlers` array, if this is set to null, it won't try to recover but will just not render anything instead. |
# Syntax Support
@@ -97,14 +96,13 @@ And some additional, less used options:
###### h6 Heading
```
-| iOS | Android
-| --- | ---
-| |
+| iOS | Android |
+| ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
+| | |
-
Horizontal Rules
@@ -119,16 +117,13 @@ And some additional, less used options:
Some text below
```
-| iOS | Android
-| --- | ---
-| |
-
+| iOS | Android |
+| ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
+| | |
-
-
Emphasis
@@ -144,14 +139,13 @@ And some additional, less used options:
~~Strikethrough~~
```
-| iOS | Android
-| --- | ---
-| |
+| iOS | Android |
+| ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
+| | |
-
Blockquotes
@@ -161,14 +155,13 @@ And some additional, less used options:
> > > ...or with spaces between arrows.
```
-| iOS | Android
-| --- | ---
-| |
+| iOS | Android |
+| ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
+| | |
-
Lists
@@ -195,48 +188,47 @@ And some additional, less used options:
58. bar
```
-| iOS | Android
-| --- | ---
-| |
+| iOS | Android |
+| ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
+| | |
-
Code
```
Inline \`code\`
- Indented code
+Indented code
// Some comments
line 1 of code
line 2 of code
line 3 of code
+Block code "fences"
- Block code "fences"
+\`\`\`
+Sample text here...
+\`\`\`
- \`\`\`
- Sample text here...
- \`\`\`
+Syntax highlighting
- Syntax highlighting
+\`\`\` js
+var foo = function (bar) {
+return bar++;
+};
- \`\`\` js
- var foo = function (bar) {
- return bar++;
- };
+console.log(foo(5));
+\`\`\`
- console.log(foo(5));
- \`\`\`
```
| iOS | Android
| --- | ---
-| |
+| |
@@ -246,24 +238,26 @@ And some additional, less used options:
```
- | Option | Description |
- | ------ | ----------- |
- | data | path to data files to supply the data that will be passed into templates. |
- | engine | engine to be used for processing templates. Handlebars is the default. |
- | ext | extension to be used for dest files. |
- Right aligned columns
+| Option | Description |
+| ------ | ------------------------------------------------------------------------- |
+| data | path to data files to supply the data that will be passed into templates. |
+| engine | engine to be used for processing templates. Handlebars is the default. |
+| ext | extension to be used for dest files. |
+
+Right aligned columns
+
+| Option | Description |
+| -----: | ------------------------------------------------------------------------: |
+| data | path to data files to supply the data that will be passed into templates. |
+| engine | engine to be used for processing templates. Handlebars is the default. |
+| ext | extension to be used for dest files. |
- | Option | Description |
- | ------:| -----------:|
- | data | path to data files to supply the data that will be passed into templates. |
- | engine | engine to be used for processing templates. Handlebars is the default. |
- | ext | extension to be used for dest files. |
```
| iOS | Android
| --- | ---
-| |
+| |
@@ -272,16 +266,18 @@ And some additional, less used options:
```
- [link text](https://www.google.com)
- [link with title](https://www.google.com "title text!")
+[link text](https://www.google.com)
+
+[link with title](https://www.google.com 'title text!')
+
+Autoconverted link https://www.google.com (enable linkify to see)
- Autoconverted link https://www.google.com (enable linkify to see)
```
| iOS | Android
| --- | ---
-| |
+| |
@@ -290,21 +286,23 @@ And some additional, less used options:
```
- ![Minion](https://octodex.github.com/images/minion.png)
- ![Stormtroopocat](https://octodex.github.com/images/stormtroopocat.jpg "The Stormtroopocat")
- Like links, Images also have a footnote style syntax
+![Minion](https://octodex.github.com/images/minion.png)
+![Stormtroopocat](https://octodex.github.com/images/stormtroopocat.jpg 'The Stormtroopocat')
- ![Alt text][id]
+Like links, Images also have a footnote style syntax
- With a reference later in the document defining the URL location:
+![Alt text][id]
+
+With a reference later in the document defining the URL location:
+
+[id]: https://octodex.github.com/images/dojocat.jpg 'The Dojocat'
- [id]: https://octodex.github.com/images/dojocat.jpg "The Dojocat"
```
| iOS | Android
| --- | ---
-| |
+| |
@@ -314,20 +312,22 @@ And some additional, less used options:
```
- Enable typographer option to see result.
- (c) (C) (r) (R) (tm) (TM) (p) (P) +-
+Enable typographer option to see result.
- test.. test... test..... test?..... test!....
+(c) (C) (r) (R) (tm) (TM) (p) (P) +-
- !!!!!! ???? ,, -- ---
+test.. test... test..... test?..... test!....
- "Smartypants, double quotes" and 'single quotes'
-```
+!!!!!! ???? ,, -- ---
+
+"Smartypants, double quotes" and 'single quotes'
+
+````
| iOS | Android
| --- | ---
-| |
+| |
@@ -351,7 +351,7 @@ import { SafeAreaView, ScrollView, StatusBar } from 'react-native';
import Markdown, { MarkdownIt } from 'react-native-markdown-display';
import blockEmbedPlugin from 'markdown-it-block-embed';
-const markdownItInstance =
+const markdownItInstance =
MarkdownIt({typographer: true})
.use(blockEmbedPlugin, {
containerClassName: "video-embed"
@@ -386,7 +386,7 @@ const App: () => React$Node = () => {
export default App;
-```
+````
In the console, we will see the following rendered tree:
@@ -401,15 +401,13 @@ body
With the following error message:
```
-Warning, unknown render rule encountered: video. 'unknown' render rule used (by default, returns null - nothing rendered)
+Warning, unknown render rule encountered: video. 'unknown' render rule used (by default, returns null - nothing rendered)
```
-
#### Step 2
We need to create the **render rules** and **styles** to handle this new **'video'** component
-
```jsx
import React from 'react';
import { SafeAreaView, ScrollView, StatusBar } from 'react-native';
@@ -417,7 +415,7 @@ import { SafeAreaView, ScrollView, StatusBar } from 'react-native';
import Markdown, { MarkdownIt } from 'react-native-markdown-display';
import blockEmbedPlugin from 'markdown-it-block-embed';
-const markdownItInstance =
+const markdownItInstance =
MarkdownIt({typographer: true})
.use(blockEmbedPlugin, {
containerClassName: "video-embed"
@@ -455,7 +453,7 @@ const App: () => React$Node = () => {
Return a video component instead of this text component!
);
}
-
+
}}
>
{copy}
@@ -501,14 +499,15 @@ And all of the video properties needed to render something meaningful are on the
You can do some additional debugging of what the markdown instance is spitting out like this:
```jsx
-import Markdown, { MarkdownIt } from 'react-native-markdown-display';
+import Markdown, {MarkdownIt} from 'react-native-markdown-display';
import blockEmbedPlugin from 'markdown-it-block-embed';
-const markdownItInstance =
- MarkdownIt({typographer: true})
- .use(blockEmbedPlugin, {
- containerClassName: "video-embed"
- });
+const markdownItInstance = MarkdownIt({typographer: true}).use(
+ blockEmbedPlugin,
+ {
+ containerClassName: 'video-embed',
+ },
+);
const copy = `
# Some header
@@ -523,7 +522,6 @@ console.log(astTree);
//this contains the html that would be generated - not used by react-native-markdown-display but useful for reference
const html = markdownItInstance.render(copy);
console.log(html);
-
```
The above code will output something like this:
@@ -549,11 +547,9 @@ html:
```
-
-
All Markdown for Testing
@@ -712,7 +708,6 @@ Typographic Replacements
-
# Rules and Styles
### How to style stuff
@@ -723,11 +718,10 @@ Think of the implementation like applying styles in CSS. changes to the `body` e
**Be careful when styling 'text':** the text rule is not applied to all rendered text, most notably list bullet points. If you want to, for instance, color all text, change the `body` style.
-
Example
-
+
```jsx
import React from 'react';
@@ -783,7 +777,7 @@ export default App;
-### Styles
+### Styles
Styles are used to override how certain rules are styled. The existing implementation is [here](https://github.com/iamacup/react-native-markdown-display/blob/master/src/lib/styles.js)
@@ -925,46 +919,45 @@ export default App;
-
### All rules and their associated styles:
-| Render Rule | Style(s) |
-| ------ | ----------- |
-| `body` | `body` |
-| `heading1` | `heading1` |
-| `heading2` | `heading2` |
-| `heading3` | `heading3` |
-| `heading4` | `heading4` |
-| `heading5` | `heading5` |
-| `heading6` | `heading6` |
-| `hr` | `hr` |
-| `strong` | `strong` |
-| `em` | `em` |
-| `s` | `s` |
-| `blockquote` | `blockquote` |
-| `bullet_list` | `bullet_list` |
-| `ordered_list` | `ordered_list` |
-| `list_item` | `list_item` - This is a special case that contains a set of pseudo classes that don't align to the render rule: `ordered_list_icon`, `ordered_list_content`, `bullet_list_icon`, `bullet_list_content` |
-| `code_inline` | `code_inline` |
-| `code_block` | `code_block` |
-| `fence` | `fence` |
-| `table` | `table` |
-| `thead` | `thead` |
-| `tbody` | `tbody` |
-| `th` | `th` |
-| `tr` | `tr` |
-| `td` | `td` |
-| `link` | `link` |
-| `blocklink` | `blocklink` |
-| `image` | `image` |
-| `text` | `text` |
-| `textgroup` | `textgroup` |
-| `paragraph` | `paragraph` |
-| `hardbreak` | `hardbreak` |
-| `softbreak` | `softbreak` |
-| `pre` | `pre` |
-| `inline` | `inline` |
-| `span` | `span` |
+| Render Rule | Style(s) |
+| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `body` | `body` |
+| `heading1` | `heading1` |
+| `heading2` | `heading2` |
+| `heading3` | `heading3` |
+| `heading4` | `heading4` |
+| `heading5` | `heading5` |
+| `heading6` | `heading6` |
+| `hr` | `hr` |
+| `strong` | `strong` |
+| `em` | `em` |
+| `s` | `s` |
+| `blockquote` | `blockquote` |
+| `bullet_list` | `bullet_list` |
+| `ordered_list` | `ordered_list` |
+| `list_item` | `list_item` - This is a special case that contains a set of pseudo classes that don't align to the render rule: `ordered_list_icon`, `ordered_list_content`, `bullet_list_icon`, `bullet_list_content` |
+| `code_inline` | `code_inline` |
+| `code_block` | `code_block` |
+| `fence` | `fence` |
+| `table` | `table` |
+| `thead` | `thead` |
+| `tbody` | `tbody` |
+| `th` | `th` |
+| `tr` | `tr` |
+| `td` | `td` |
+| `link` | `link` |
+| `blocklink` | `blocklink` |
+| `image` | `image` |
+| `text` | `text` |
+| `textgroup` | `textgroup` |
+| `paragraph` | `paragraph` |
+| `hardbreak` | `hardbreak` |
+| `softbreak` | `softbreak` |
+| `pre` | `pre` |
+| `inline` | `inline` |
+| `span` | `span` |
# Handling Links
@@ -988,7 +981,7 @@ const onLinkPress = (url) => {
// some custom logic
return false;
}
-
+
// return true to open with `Linking.openURL
// return false to handle it yourself
return true
@@ -1071,7 +1064,6 @@ export default App;
-
# Disabling Specific Types of Markdown
You can dissable any type of markdown you want, which is very useful in a mobile environment, by passing the markdownit property like below. Note that for convenience we also export the `MarkdownIt` instance so you don't have to include it as a project dependency directly just to remove some types of markdown.
@@ -1117,7 +1109,6 @@ export default App;
A full list of things you can turn off is [here](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/commonmark.js)
-
### Pre Processing
It is possible to need to pre-process the data outside of this library ([related discussion here](https://github.com/iamacup/react-native-markdown-display/issues/79)). As a result, you can pass an AST tree directly as the children like this:
@@ -1160,7 +1151,6 @@ const App: () => React$Node = () => {
export default App;
```
-
### Other Notes
This is a fork of [react-native-markdown-renderer](https://github.com/mientjan/react-native-markdown-renderer), a library that unfortunately has not been updated for some time so i took all of the outstanding pull requests from that library and tested + merged as necessary.
diff --git a/package.json b/package.json
index 455dcb34..617aa217 100644
--- a/package.json
+++ b/package.json
@@ -1,15 +1,12 @@
{
- "name": "@jonasmerlin/react-native-markdown-display",
- "version": "1.0.2",
+ "name": "@ukdanceblue/react-native-markdown-display",
"description": "Markdown renderer for react-native, with CommonMark spec support + adds syntax extensions & sugar (URL autolinking, typographer), originally created by Mient-jan Stelling as react-native-markdown-renderer",
"main": "src/index.js",
"types": "src/index.d.ts",
"scripts": {
- "lint": "eslint --fix --cache ./src"
+ "build": "tsc",
+ "watch": "tsc -w"
},
- "pre-commit": [
- "lint"
- ],
"repository": {
"type": "git",
"url": "git+https://github.com/jonasmerlin/react-native-markdown-display.git"
@@ -24,33 +21,18 @@
],
"author": "Mient-jan Stelling and Tom Pickard + others from the community",
"license": "MIT",
- "bugs": {
- "url": "https://github.com/jonasmerlin/react-native-markdown-display/issues"
- },
- "homepage": "https://github.com/jonasmerlin/react-native-markdown-display/",
"dependencies": {
- "css-to-react-native": "^3.0.0",
- "markdown-it": "^13.0.1",
- "prop-types": "^15.8.1",
- "react-native-fit-image": "^1.5.5"
+ "css-to-react-native": "^3.2.0",
+ "markdown-it": "^14.1.0"
},
"peerDependencies": {
- "react": "^16.2.0 || ^18.0.0",
- "react-native": ">=0.50.4"
+ "react": ">=18.0.0",
+ "react-native": ">=0.76.0"
},
"devDependencies": {
- "@types/markdown-it": "^12.2.3",
- "@types/react-native": ">=0.67.7",
- "@babel/core": "^7.17.10",
- "@babel/runtime": "^7.17.9",
- "@react-native-community/eslint-config": "^3.0.2",
- "@typescript-eslint/parser": "^5.23.0",
- "eslint": "^8.15.0",
- "json-schema": "^0.4.0",
- "pre-commit": "1.2.2",
- "typescript": "^4.6.4"
- },
- "directories": {
- "doc": "doc"
+ "@types/markdown-it": "^14.1.2",
+ "@types/react": "^18.0.0",
+ "react-native": "^0.76.0",
+ "typescript": "^5.6.3"
}
}
diff --git a/src/index.d.ts b/src/index.d.ts
index ae8e8e01..ca5ed4b6 100644
--- a/src/index.d.ts
+++ b/src/index.d.ts
@@ -1,8 +1,8 @@
// tslint:disable:max-classes-per-file
-import MarkdownIt from 'markdown-it';
-import Token from 'markdown-it/lib/token';
-import {ComponentType, ReactNode} from 'react';
-import {StyleSheet, View} from 'react-native';
+import MarkdownIt from "markdown-it";
+import Token from "markdown-it/lib/token";
+import { ComponentType, ReactNode } from "react";
+import { StyleSheet, View } from "react-native";
export function getUniqueID(): string;
export function openUrl(url: string): void;
@@ -24,7 +24,7 @@ export type RenderLinkFunction = (
children: ReactNode[],
parentNodes: ASTNode[],
styles: any,
- onLinkPress?: (url: string) => boolean,
+ onLinkPress?: (url: string) => boolean
) => ReactNode;
export type RenderImageFunction = (
@@ -33,7 +33,7 @@ export type RenderImageFunction = (
parentNodes: ASTNode[],
styles: any,
allowedImageHandlers: string[],
- defaultImageHandler: string,
+ defaultImageHandler: string | null
) => ReactNode;
export interface RenderRules {
@@ -71,12 +71,12 @@ export class AstRenderer {
export function parser(
source: string,
renderer: (node: ASTNode) => View,
- parser: MarkdownParser,
+ parser: MarkdownParser
): any;
export function stringToTokens(
source: string,
- markdownIt: MarkdownParser,
+ markdownIt: MarkdownParser
): Token[];
export function tokensToAST(tokens: ReadonlyArray): ASTNode[];
@@ -95,5 +95,5 @@ export interface MarkdownProps {
type MarkdownStatic = ComponentType;
export const Markdown: MarkdownStatic;
export type Markdown = MarkdownStatic;
-export {MarkdownIt};
+export { MarkdownIt };
export default Markdown;
diff --git a/src/index.js b/src/index.js
deleted file mode 100644
index 59afec7c..00000000
--- a/src/index.js
+++ /dev/null
@@ -1,231 +0,0 @@
-/**
- * Base Markdown component
- * @author Mient-jan Stelling + contributors
- */
-
-import React, {useMemo} from 'react';
-import {Text, StyleSheet} from 'react-native';
-import PropTypes from 'prop-types';
-import parser from './lib/parser';
-import getUniqueID from './lib/util/getUniqueID';
-import hasParents from './lib/util/hasParents';
-import openUrl from './lib/util/openUrl';
-import tokensToAST from './lib/util/tokensToAST';
-import renderRules from './lib/renderRules';
-import AstRenderer from './lib/AstRenderer';
-import MarkdownIt from 'markdown-it';
-import removeTextStyleProps from './lib/util/removeTextStyleProps';
-import {styles} from './lib/styles';
-import {stringToTokens} from './lib/util/stringToTokens';
-import FitImage from 'react-native-fit-image';
-import textStyleProps from './lib/data/textStyleProps';
-
-export {
- getUniqueID,
- openUrl,
- hasParents,
- renderRules,
- AstRenderer,
- parser,
- stringToTokens,
- tokensToAST,
- MarkdownIt,
- styles,
- removeTextStyleProps,
- FitImage,
- textStyleProps,
-};
-
-// we use StyleSheet.flatten here to make sure we have an object, in case someone
-// passes in a StyleSheet.create result to the style prop
-const getStyle = (mergeStyle, style) => {
- let useStyles = {};
-
- if (mergeStyle === true && style !== null) {
- // make sure we get anything user defuned
- Object.keys(style).forEach((value) => {
- useStyles[value] = {
- ...StyleSheet.flatten(style[value]),
- };
- });
-
- // combine any existing styles
- Object.keys(styles).forEach((value) => {
- useStyles[value] = {
- ...styles[value],
- ...StyleSheet.flatten(style[value]),
- };
- });
- } else {
- useStyles = {
- ...styles,
- };
-
- if (style !== null) {
- Object.keys(style).forEach((value) => {
- useStyles[value] = {
- ...StyleSheet.flatten(style[value]),
- };
- });
- }
- }
-
- Object.keys(useStyles).forEach((value) => {
- useStyles['_VIEW_SAFE_' + value] = removeTextStyleProps(useStyles[value]);
- });
-
- return StyleSheet.create(useStyles);
-};
-
-const getRenderer = (
- renderer,
- rules,
- style,
- mergeStyle,
- onLinkPress,
- maxTopLevelChildren,
- topLevelMaxExceededItem,
- allowedImageHandlers,
- defaultImageHandler,
- debugPrintTree,
-) => {
- if (renderer && rules) {
- console.warn(
- 'react-native-markdown-display you are using renderer and rules at the same time. This is not possible, props.rules is ignored',
- );
- }
-
- if (renderer && style) {
- console.warn(
- 'react-native-markdown-display you are using renderer and style at the same time. This is not possible, props.style is ignored',
- );
- }
-
- // these checks are here to prevent extra overhead.
- if (renderer) {
- if (!(typeof renderer === 'function') || renderer instanceof AstRenderer) {
- return renderer;
- } else {
- throw new Error(
- 'Provided renderer is not compatible with function or AstRenderer. please change',
- );
- }
- } else {
- let useStyles = getStyle(mergeStyle, style);
-
- return new AstRenderer(
- {
- ...renderRules,
- ...(rules || {}),
- },
- useStyles,
- onLinkPress,
- maxTopLevelChildren,
- topLevelMaxExceededItem,
- allowedImageHandlers,
- defaultImageHandler,
- debugPrintTree,
- );
- }
-};
-
-const Markdown = React.memo(
- ({
- children,
- renderer = null,
- rules = null,
- style = null,
- mergeStyle = true,
- markdownit = MarkdownIt({
- typographer: true,
- }),
- onLinkPress,
- maxTopLevelChildren = null,
- topLevelMaxExceededItem = ...,
- allowedImageHandlers = [
- 'data:image/png;base64',
- 'data:image/gif;base64',
- 'data:image/jpeg;base64',
- 'https://',
- 'http://',
- ],
- defaultImageHandler = 'https://',
- debugPrintTree = false,
- }) => {
- const momoizedRenderer = useMemo(
- () =>
- getRenderer(
- renderer,
- rules,
- style,
- mergeStyle,
- onLinkPress,
- maxTopLevelChildren,
- topLevelMaxExceededItem,
- allowedImageHandlers,
- defaultImageHandler,
- debugPrintTree,
- ),
- [
- maxTopLevelChildren,
- onLinkPress,
- renderer,
- rules,
- style,
- mergeStyle,
- topLevelMaxExceededItem,
- allowedImageHandlers,
- defaultImageHandler,
- debugPrintTree,
- ],
- );
-
- const momoizedParser = useMemo(() => markdownit, [markdownit]);
-
- return parser(children, momoizedRenderer.render, momoizedParser);
- },
-);
-
-Markdown.propTypes = {
- children: PropTypes.oneOfType([PropTypes.node, PropTypes.array]).isRequired,
- renderer: PropTypes.oneOfType([
- PropTypes.func,
- PropTypes.instanceOf(AstRenderer),
- ]),
- onLinkPress: PropTypes.func,
- maxTopLevelChildren: PropTypes.number,
- topLevelMaxExceededItem: PropTypes.any,
- rules: (props, propName, componentName) => {
- let invalidProps = [];
- const prop = props[propName];
-
- if (!prop) {
- return;
- }
-
- if (typeof prop === 'object') {
- invalidProps = Object.keys(prop).filter(
- (key) => typeof prop[key] !== 'function',
- );
- }
-
- if (typeof prop !== 'object') {
- return new Error(
- `Invalid prop \`${propName}\` supplied to \`${componentName}\`. Must be of shape {[index:string]:function} `,
- );
- } else if (invalidProps.length > 0) {
- return new Error(
- `Invalid prop \`${propName}\` supplied to \`${componentName}\`. These ` +
- `props are not of type function \`${invalidProps.join(', ')}\` `,
- );
- }
- },
- markdownit: PropTypes.instanceOf(MarkdownIt),
- style: PropTypes.any,
- mergeStyle: PropTypes.bool,
- allowedImageHandlers: PropTypes.arrayOf(PropTypes.string),
- defaultImageHandler: PropTypes.string,
- debugPrintTree: PropTypes.bool,
-};
-
-export default Markdown;
diff --git a/src/index.tsx b/src/index.tsx
new file mode 100644
index 00000000..990d448a
--- /dev/null
+++ b/src/index.tsx
@@ -0,0 +1,216 @@
+/* eslint-disable react-refresh/only-export-components */
+import MarkdownIt from "markdown-it";
+import type { ReactNode } from "react";
+import React, { useMemo } from "react";
+import type { TextStyle, ViewStyle } from "react-native";
+import { StyleSheet, Text } from "react-native";
+
+import AstRenderer from "./lib/AstRenderer";
+import parser from "./lib/parser";
+import type { RenderRules } from "./lib/renderRules";
+import renderRules from "./lib/renderRules";
+import { styles } from "./lib/styles";
+import type { ASTNode } from "./lib/types";
+import removeTextStyleProps from "./lib/util/removeTextStyleProps";
+
+function getStyle(
+ mergeStyle: boolean,
+ style: StyleSheet.NamedStyles | undefined
+): ReturnType {
+ let useStyles: Record = {};
+
+ if (mergeStyle && style != null) {
+ Object.keys(style).forEach((value) => {
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
+ useStyles[value] = {
+ // @ts-expect-error this is fine
+ ...StyleSheet.flatten(style[value]),
+ };
+ });
+
+ Object.keys(styles).forEach((value) => {
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
+ useStyles[value] = {
+ // @ts-expect-error this is fine
+ ...styles[value],
+ // @ts-expect-error this is fine
+ ...StyleSheet.flatten(style[value]),
+ };
+ });
+ } else {
+ // @ts-expect-error this is fine
+ useStyles = {
+ ...styles,
+ };
+
+ if (style != null) {
+ Object.keys(style).forEach((value) => {
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
+ useStyles[value] = {
+ // @ts-expect-error this is fine
+ ...StyleSheet.flatten(style[value]),
+ };
+ });
+ }
+ }
+
+ Object.keys(useStyles).forEach((value) => {
+ useStyles[`_VIEW_SAFE_${value}`] = removeTextStyleProps(useStyles[value]);
+ });
+
+ return StyleSheet.create(useStyles);
+}
+
+const getRenderer = (
+ renderer: AstRenderer | undefined,
+ rules: RenderRules | undefined,
+ style: StyleSheet.NamedStyles | undefined,
+ mergeStyle: boolean,
+ onLinkPress: ((url: string) => boolean) | undefined,
+ maxTopLevelChildren: number | null,
+ topLevelMaxExceededItem: React.ReactNode,
+ allowedImageHandlers: string[],
+ defaultImageHandler: string,
+ debugPrintTree: boolean
+): AstRenderer => {
+ if (renderer && rules) {
+ console.warn(
+ "react-native-markdown-display you are using renderer and rules at the same time. This is not possible, props.rules is ignored"
+ );
+ }
+
+ if (renderer && style) {
+ console.warn(
+ "react-native-markdown-display you are using renderer and style at the same time. This is not possible, props.style is ignored"
+ );
+ }
+
+ if (renderer) {
+ if (
+ !(typeof renderer === "function") ||
+ (renderer as unknown) instanceof AstRenderer
+ ) {
+ return renderer;
+ } else {
+ throw new TypeError(
+ "Provided renderer is not compatible with function or AstRenderer. please change"
+ );
+ }
+ } else {
+ const useStyles = getStyle(mergeStyle, style);
+
+ return new AstRenderer(
+ {
+ ...renderRules,
+ ...(rules ?? {}),
+ },
+ useStyles,
+ onLinkPress,
+ maxTopLevelChildren,
+ topLevelMaxExceededItem,
+ allowedImageHandlers,
+ defaultImageHandler,
+ debugPrintTree
+ );
+ }
+};
+
+export interface MarkdownProps {
+ children: string;
+ rules?: RenderRules;
+ style?: StyleSheet.NamedStyles;
+ renderer?: AstRenderer;
+ markdownit?: MarkdownIt;
+ mergeStyle?: boolean;
+ debugPrintTree?: boolean;
+ onLinkPress?: (url: string) => boolean;
+}
+
+const Markdown: React.FC<
+ MarkdownProps & {
+ maxTopLevelChildren: number | null;
+ topLevelMaxExceededItem: React.ReactNode;
+ allowedImageHandlers: string[];
+ defaultImageHandler: string;
+ }
+> = React.memo(
+ ({
+ children,
+ renderer = undefined,
+ rules = undefined,
+ style = undefined,
+ mergeStyle = true,
+ markdownit = MarkdownIt({
+ typographer: true,
+ }),
+ onLinkPress,
+ maxTopLevelChildren = null,
+ topLevelMaxExceededItem = ...,
+ allowedImageHandlers = [
+ "data:image/png;base64",
+ "data:image/gif;base64",
+ "data:image/jpeg;base64",
+ "https://",
+ "http://",
+ ],
+ defaultImageHandler = "https://",
+ debugPrintTree = false,
+ }: MarkdownProps & {
+ maxTopLevelChildren: number | null;
+ topLevelMaxExceededItem: React.ReactNode;
+ allowedImageHandlers: string[];
+ defaultImageHandler: string;
+ }) => {
+ const momoizedRenderer = useMemo(
+ () =>
+ getRenderer(
+ renderer,
+ rules,
+ style,
+ mergeStyle,
+ onLinkPress,
+ maxTopLevelChildren,
+ topLevelMaxExceededItem,
+ allowedImageHandlers,
+ defaultImageHandler,
+ debugPrintTree
+ ),
+ [
+ maxTopLevelChildren,
+ onLinkPress,
+ renderer,
+ rules,
+ style,
+ mergeStyle,
+ topLevelMaxExceededItem,
+ allowedImageHandlers,
+ defaultImageHandler,
+ debugPrintTree,
+ ]
+ );
+
+ const memoizedParser = useMemo(() => markdownit, [markdownit]);
+
+ return parser(
+ children,
+ (nodes: readonly ASTNode[]): ReactNode => momoizedRenderer.render(nodes),
+ memoizedParser
+ );
+ }
+);
+
+export default Markdown;
+
+export { default as MarkdownIt } from "markdown-it";
+export { default as AstRenderer } from "./lib/AstRenderer";
+export { default as textStyleProps } from "./lib/data/textStyleProps";
+export { default as parser } from "./lib/parser";
+export { default as renderRules } from "./lib/renderRules";
+export { styles } from "./lib/styles";
+export { default as getUniqueID } from "./lib/util/getUniqueID";
+export { default as hasParents } from "./lib/util/hasParents";
+export { default as openUrl } from "./lib/util/openUrl";
+export { default as removeTextStyleProps } from "./lib/util/removeTextStyleProps";
+export { stringToTokens } from "./lib/util/stringToTokens";
+export { default as tokensToAST } from "./lib/util/tokensToAST";
+
diff --git a/src/lib/AstRenderer.js b/src/lib/AstRenderer.js
deleted file mode 100644
index 608e9455..00000000
--- a/src/lib/AstRenderer.js
+++ /dev/null
@@ -1,186 +0,0 @@
-import {StyleSheet} from 'react-native';
-
-import getUniqueID from './util/getUniqueID';
-import convertAdditionalStyles from './util/convertAdditionalStyles';
-
-import textStyleProps from './data/textStyleProps';
-
-export default class AstRenderer {
- /**
- *
- * @param {Object.} renderRules
- * @param {any} style
- */
- constructor(
- renderRules,
- style,
- onLinkPress,
- maxTopLevelChildren,
- topLevelMaxExceededItem,
- allowedImageHandlers,
- defaultImageHandler,
- debugPrintTree,
- ) {
- this._renderRules = renderRules;
- this._style = style;
- this._onLinkPress = onLinkPress;
- this._maxTopLevelChildren = maxTopLevelChildren;
- this._topLevelMaxExceededItem = topLevelMaxExceededItem;
- this._allowedImageHandlers = allowedImageHandlers;
- this._defaultImageHandler = defaultImageHandler;
- this._debugPrintTree = debugPrintTree;
- }
-
- /**
- *
- * @param {string} type
- * @return {string}
- */
- getRenderFunction = (type) => {
- const renderFunction = this._renderRules[type];
-
- if (!renderFunction) {
- console.warn(
- `Warning, unknown render rule encountered: ${type}. 'unknown' render rule used (by default, returns null - nothing rendered)`,
- );
- return this._renderRules.unknown;
- }
-
- return renderFunction;
- };
-
- /**
- *
- * @param node
- * @param parentNodes
- * @return {*}
- */
- renderNode = (node, parentNodes, isRoot = false) => {
- const renderFunction = this.getRenderFunction(node.type);
- const parents = [...parentNodes];
-
- if (this._debugPrintTree === true) {
- let str = '';
-
- for (let a = 0; a < parents.length; a++) {
- str = str + '-';
- }
-
- console.log(`${str}${node.type}`);
- }
-
- parents.unshift(node);
-
- // calculate the children first
- let children = node.children.map((value) => {
- return this.renderNode(value, parents);
- });
-
- // render any special types of nodes that have different renderRule function signatures
-
- if (node.type === 'link' || node.type === 'blocklink') {
- return renderFunction(
- node,
- children,
- parentNodes,
- this._style,
- this._onLinkPress,
- );
- }
-
- if (node.type === 'image') {
- return renderFunction(
- node,
- children,
- parentNodes,
- this._style,
- this._allowedImageHandlers,
- this._defaultImageHandler,
- );
- }
-
- // We are at the bottom of some tree - grab all the parent styles
- // this effectively grabs the styles from parents and
- // applies them in order of priority parent (least) to child (most)
- // to allow styling global, then lower down things individually
-
- // we have to handle list_item seperately here because they have some child
- // pseudo classes that need the additional style props from parents passed down to them
- if (children.length === 0 || node.type === 'list_item') {
- const styleObj = {};
-
- for (let a = parentNodes.length - 1; a > -1; a--) {
- // grab and additional attributes specified by markdown-it
- let refStyle = {};
-
- if (
- parentNodes[a].attributes &&
- parentNodes[a].attributes.style &&
- typeof parentNodes[a].attributes.style === 'string'
- ) {
- refStyle = convertAdditionalStyles(parentNodes[a].attributes.style);
- }
-
- // combine in specific styles for the object
- if (this._style[parentNodes[a].type]) {
- refStyle = {
- ...refStyle,
- ...StyleSheet.flatten(this._style[parentNodes[a].type]),
- };
-
- // workaround for list_items and their content cascading down the tree
- if (parentNodes[a].type === 'list_item') {
- let contentStyle = {};
-
- if (parentNodes[a + 1].type === 'bullet_list') {
- contentStyle = this._style.bullet_list_content;
- } else if (parentNodes[a + 1].type === 'ordered_list') {
- contentStyle = this._style.ordered_list_content;
- }
-
- refStyle = {
- ...refStyle,
- ...StyleSheet.flatten(contentStyle),
- };
- }
- }
-
- // then work out if any of them are text styles that should be used in the end.
- const arr = Object.keys(refStyle);
-
- for (let b = 0; b < arr.length; b++) {
- if (textStyleProps.includes(arr[b])) {
- styleObj[arr[b]] = refStyle[arr[b]];
- }
- }
- }
-
- return renderFunction(node, children, parentNodes, this._style, styleObj);
- }
-
- // cull top level children
-
- if (
- isRoot === true &&
- this._maxTopLevelChildren &&
- children.length > this._maxTopLevelChildren
- ) {
- children = children.slice(0, this._maxTopLevelChildren);
- children.push(this._topLevelMaxExceededItem);
- }
-
- // render anythign else that has a normal signature
-
- return renderFunction(node, children, parentNodes, this._style);
- };
-
- /**
- *
- * @param nodes
- * @return {*}
- */
- render = (nodes) => {
- const root = {type: 'body', key: getUniqueID(), children: nodes};
- return this.renderNode(root, [], true);
- };
-}
diff --git a/src/lib/AstRenderer.ts b/src/lib/AstRenderer.ts
new file mode 100644
index 00000000..0543e79c
--- /dev/null
+++ b/src/lib/AstRenderer.ts
@@ -0,0 +1,170 @@
+import { StyleSheet, ViewStyle } from "react-native";
+
+import getUniqueID from "./util/getUniqueID";
+import convertAdditionalStyles from "./util/convertAdditionalStyles";
+
+import textStyleProps from "./data/textStyleProps";
+import { RenderRules } from "./renderRules";
+import { ASTNode } from "./types";
+import { ReactNode } from "react";
+
+export default class AstRenderer {
+ constructor(
+ private renderRules: RenderRules,
+ private style: Record,
+ private onLinkPress: ((url: string) => boolean) | undefined,
+ private maxTopLevelChildren: number | null,
+ private topLevelMaxExceededItem: React.ReactNode,
+ private allowedImageHandlers: string[],
+ private defaultImageHandler: string,
+ private debugPrintTree: boolean
+ ) {}
+
+ getRenderFunction(type: R): RenderRules[R] {
+ const renderFunction = this.renderRules[type];
+
+ if (!renderFunction) {
+ console.warn(
+ `Warning, unknown render rule encountered: ${type}. 'unknown' render rule used (by default, returns null - nothing rendered)`
+ );
+ return this.renderRules.unknown;
+ }
+
+ return renderFunction;
+ }
+
+ renderNode(node: ASTNode, parentNodes: ASTNode[], isRoot = false): ReactNode {
+ const parents = [...parentNodes];
+
+ if (this.debugPrintTree === true) {
+ let str = "";
+
+ for (let a = 0; a < parents.length; a++) {
+ str = str + "-";
+ }
+
+ console.log(`${str}${node.type}`);
+ }
+
+ parents.unshift(node);
+
+ // calculate the children first
+ let children = node.children.map((value) => {
+ return this.renderNode(value, parents);
+ });
+
+ // render any special types of nodes that have different renderRule function signatures
+
+ if (node.type === "link" || node.type === "blocklink") {
+ return this.getRenderFunction(node.type)(
+ node,
+ children,
+ parentNodes,
+ this.style,
+ this.onLinkPress
+ );
+ }
+
+ if (node.type === "image") {
+ return this.getRenderFunction(node.type)(
+ node,
+ children,
+ parentNodes,
+ this.style,
+ this.allowedImageHandlers,
+ this.defaultImageHandler
+ );
+ }
+
+ // We are at the bottom of some tree - grab all the parent styles
+ // this effectively grabs the styles from parents and
+ // applies them in order of priority parent (least) to child (most)
+ // to allow styling global, then lower down things individually
+
+ // we have to handle list_item seperately here because they have some child
+ // pseudo classes that need the additional style props from parents passed down to them
+ if (children.length === 0 || node.type === "list_item") {
+ const styleObj = {};
+
+ for (let a = parentNodes.length - 1; a > -1; a--) {
+ // grab and additional attributes specified by markdown-it
+ let refStyle = {};
+
+ if (
+ parentNodes[a].attributes &&
+ parentNodes[a].attributes?.style &&
+ typeof parentNodes[a].attributes?.style === "string"
+ ) {
+ refStyle = convertAdditionalStyles(parentNodes[a].attributes?.style);
+ }
+
+ // combine in specific styles for the object
+ if (this.style[parentNodes[a].type]) {
+ refStyle = {
+ ...refStyle,
+ ...StyleSheet.flatten(this.style[parentNodes[a].type]),
+ };
+
+ // workaround for list_items and their content cascading down the tree
+ if (parentNodes[a].type === "list_item") {
+ let contentStyle = {};
+
+ if (parentNodes[a + 1].type === "bullet_list") {
+ contentStyle = this.style.bullet_list_content;
+ } else if (parentNodes[a + 1].type === "ordered_list") {
+ contentStyle = this.style.ordered_list_content;
+ }
+
+ refStyle = {
+ ...refStyle,
+ ...StyleSheet.flatten(contentStyle),
+ };
+ }
+ }
+
+ // then work out if any of them are text styles that should be used in the end.
+ const arr = Object.keys(refStyle) as (keyof ViewStyle)[];
+
+ for (let b = 0; b < arr.length; b++) {
+ if (textStyleProps.includes(arr[b])) {
+ // @ts-expect-error - this is fine
+ styleObj[arr[b]] = refStyle[arr[b]];
+ }
+ }
+ }
+
+ return this.getRenderFunction(node.type)(
+ node,
+ children,
+ parentNodes,
+ this.style,
+ styleObj
+ );
+ }
+
+ // cull top level children
+
+ if (
+ isRoot === true &&
+ this.maxTopLevelChildren &&
+ children.length > this.maxTopLevelChildren
+ ) {
+ children = children.slice(0, this.maxTopLevelChildren);
+ children.push(this.topLevelMaxExceededItem);
+ }
+
+ // render anythign else that has a normal signature
+
+ return this.getRenderFunction(node.type)(
+ node,
+ children,
+ parentNodes,
+ this.style
+ );
+ }
+
+ render(nodes: ReadonlyArray): ReactNode {
+ const root: ASTNode = { type: "body", key: getUniqueID(), children: nodes };
+ return this.renderNode(root, [], true);
+ }
+}
diff --git a/src/lib/data/textStyleProps.js b/src/lib/data/textStyleProps.ts
similarity index 100%
rename from src/lib/data/textStyleProps.js
rename to src/lib/data/textStyleProps.ts
diff --git a/src/lib/parser.js b/src/lib/parser.js
deleted file mode 100644
index 4e897933..00000000
--- a/src/lib/parser.js
+++ /dev/null
@@ -1,27 +0,0 @@
-import tokensToAST from './util/tokensToAST';
-import {stringToTokens} from './util/stringToTokens';
-import {cleanupTokens} from './util/cleanupTokens';
-import groupTextTokens from './util/groupTextTokens';
-import omitListItemParagraph from './util/omitListItemParagraph';
-
-/**
- *
- * @param {string} source
- * @param {function} [renderer]
- * @param {AstRenderer} [markdownIt]
- * @return {View}
- */
-export default function parser(source, renderer, markdownIt) {
- if (Array.isArray(source)) {
- return renderer(source);
- }
-
- let tokens = stringToTokens(source, markdownIt);
- tokens = cleanupTokens(tokens);
- tokens = groupTextTokens(tokens);
- tokens = omitListItemParagraph(tokens);
-
- const astTree = tokensToAST(tokens);
-
- return renderer(astTree);
-}
diff --git a/src/lib/parser.ts b/src/lib/parser.ts
new file mode 100644
index 00000000..ad8975ac
--- /dev/null
+++ b/src/lib/parser.ts
@@ -0,0 +1,28 @@
+import tokensToAST from "./util/tokensToAST";
+import { stringToTokens } from "./util/stringToTokens";
+import { cleanupTokens } from "./util/cleanupTokens";
+import groupTextTokens from "./util/groupTextTokens";
+import omitListItemParagraph from "./util/omitListItemParagraph";
+import { ReactNode } from "react";
+import MarkdownIt, { Token } from "markdown-it";
+import TextToken from "./util/Token";
+import { ASTNode } from "./types";
+
+export default function parser(
+ source: string,
+ renderer: (source: ASTNode[]) => ReactNode,
+ markdownIt: MarkdownIt
+): ReactNode {
+ if (Array.isArray(source)) {
+ return renderer(source);
+ }
+
+ let tokens: (Token | TextToken)[] = stringToTokens(source, markdownIt);
+ tokens = cleanupTokens(tokens);
+ tokens = groupTextTokens(tokens);
+ tokens = omitListItemParagraph(tokens);
+
+ const astTree = tokensToAST(tokens);
+
+ return renderer(astTree);
+}
diff --git a/src/lib/renderRules.js b/src/lib/renderRules.js
deleted file mode 100644
index 6f2ed8d4..00000000
--- a/src/lib/renderRules.js
+++ /dev/null
@@ -1,347 +0,0 @@
-import React from 'react';
-import {
- Text,
- TouchableWithoutFeedback,
- View,
- Platform,
- StyleSheet,
-} from 'react-native';
-import FitImage from 'react-native-fit-image';
-
-import openUrl from './util/openUrl';
-import hasParents from './util/hasParents';
-
-import textStyleProps from './data/textStyleProps';
-
-const renderRules = {
- // when unknown elements are introduced, so it wont break
- unknown: (node, children, parent, styles) => null,
-
- // The main container
- body: (node, children, parent, styles) => (
-
- {children}
-
- ),
-
- // Headings
- heading1: (node, children, parent, styles) => (
-
- {children}
-
- ),
- heading2: (node, children, parent, styles) => (
-
- {children}
-
- ),
- heading3: (node, children, parent, styles) => (
-
- {children}
-
- ),
- heading4: (node, children, parent, styles) => (
-
- {children}
-
- ),
- heading5: (node, children, parent, styles) => (
-
- {children}
-
- ),
- heading6: (node, children, parent, styles) => (
-
- {children}
-
- ),
-
- // Horizontal Rule
- hr: (node, children, parent, styles) => (
-
- ),
-
- // Emphasis
- strong: (node, children, parent, styles) => (
-
- {children}
-
- ),
- em: (node, children, parent, styles) => (
-
- {children}
-
- ),
- s: (node, children, parent, styles) => (
-
- {children}
-
- ),
-
- // Blockquotes
- blockquote: (node, children, parent, styles) => (
-
- {children}
-
- ),
-
- // Lists
- bullet_list: (node, children, parent, styles) => (
-
- {children}
-
- ),
- ordered_list: (node, children, parent, styles) => (
-
- {children}
-
- ),
- // this is a unique and quite annoying render rule because it has
- // child items that can be styled (the list icon and the list content)
- // outside of the AST tree so there are some work arounds in the
- // AST renderer specifically to get the styling right here
- list_item: (node, children, parent, styles, inheritedStyles = {}) => {
- // we need to grab any text specific stuff here that is applied on the list_item style
- // and apply it onto bullet_list_icon. the AST renderer has some workaround code to make
- // the content classes apply correctly to the child AST tree items as well
- // as code that forces the creation of the inheritedStyles object for list_items
- const refStyle = {
- ...inheritedStyles,
- ...StyleSheet.flatten(styles.list_item),
- };
-
- const arr = Object.keys(refStyle);
-
- const modifiedInheritedStylesObj = {};
-
- for (let b = 0; b < arr.length; b++) {
- if (textStyleProps.includes(arr[b])) {
- modifiedInheritedStylesObj[arr[b]] = refStyle[arr[b]];
- }
- }
-
- if (hasParents(parent, 'bullet_list')) {
- return (
-
-
- {Platform.select({
- android: '\u2022',
- ios: '\u00B7',
- default: '\u2022',
- })}
-
- {children}
-
- );
- }
-
- if (hasParents(parent, 'ordered_list')) {
- const orderedListIndex = parent.findIndex(
- (el) => el.type === 'ordered_list',
- );
-
- const orderedList = parent[orderedListIndex];
- let listItemNumber;
-
- if (orderedList.attributes && orderedList.attributes.start) {
- listItemNumber = orderedList.attributes.start + node.index;
- } else {
- listItemNumber = node.index + 1;
- }
-
- return (
-
-
- {listItemNumber}
- {node.markup}
-
- {children}
-
- );
- }
-
- // we should not need this, but just in case
- return (
-
- {children}
-
- );
- },
-
- // Code
- code_inline: (node, children, parent, styles, inheritedStyles = {}) => (
-
- {node.content}
-
- ),
- code_block: (node, children, parent, styles, inheritedStyles = {}) => {
- // we trim new lines off the end of code blocks because the parser sends an extra one.
- let {content} = node;
-
- if (
- typeof node.content === 'string' &&
- node.content.charAt(node.content.length - 1) === '\n'
- ) {
- content = node.content.substring(0, node.content.length - 1);
- }
-
- return (
-
- {content}
-
- );
- },
- fence: (node, children, parent, styles, inheritedStyles = {}) => {
- // we trim new lines off the end of code blocks because the parser sends an extra one.
- let {content} = node;
-
- if (
- typeof node.content === 'string' &&
- node.content.charAt(node.content.length - 1) === '\n'
- ) {
- content = node.content.substring(0, node.content.length - 1);
- }
-
- return (
-
- {content}
-
- );
- },
-
- // Tables
- table: (node, children, parent, styles) => (
-
- {children}
-
- ),
- thead: (node, children, parent, styles) => (
-
- {children}
-
- ),
- tbody: (node, children, parent, styles) => (
-
- {children}
-
- ),
- th: (node, children, parent, styles) => (
-
- {children}
-
- ),
- tr: (node, children, parent, styles) => (
-
- {children}
-
- ),
- td: (node, children, parent, styles) => (
-
- {children}
-
- ),
-
- // Links
- link: (node, children, parent, styles, onLinkPress) => (
- openUrl(node.attributes.href, onLinkPress)}>
- {children}
-
- ),
- blocklink: (node, children, parent, styles, onLinkPress) => (
- openUrl(node.attributes.href, onLinkPress)}
- style={styles.blocklink}>
- {children}
-
- ),
-
- // Images
- image: (
- node,
- children,
- parent,
- styles,
- allowedImageHandlers,
- defaultImageHandler,
- ) => {
- const {src, alt} = node.attributes;
-
- // we check that the source starts with at least one of the elements in allowedImageHandlers
- const show =
- allowedImageHandlers.filter((value) => {
- return src.toLowerCase().startsWith(value.toLowerCase());
- }).length > 0;
-
- if (show === false && defaultImageHandler === null) {
- return null;
- }
-
- const imageProps = {
- indicator: true,
- key: node.key,
- style: styles._VIEW_SAFE_image,
- source: {
- uri: show === true ? src : `${defaultImageHandler}${src}`,
- },
- };
-
- if (alt) {
- imageProps.accessible = true;
- imageProps.accessibilityLabel = alt;
- }
-
- return ;
- },
-
- // Text Output
- text: (node, children, parent, styles, inheritedStyles = {}) => (
-
- {node.content}
-
- ),
- textgroup: (node, children, parent, styles) => (
-
- {children}
-
- ),
- paragraph: (node, children, parent, styles) => (
-
- {children}
-
- ),
- hardbreak: (node, children, parent, styles) => (
-
- {'\n'}
-
- ),
- softbreak: (node, children, parent, styles) => (
-
- {'\n'}
-
- ),
-
- // Believe these are never used but retained for completeness
- pre: (node, children, parent, styles) => (
-
- {children}
-
- ),
- inline: (node, children, parent, styles) => (
-
- {children}
-
- ),
- span: (node, children, parent, styles) => (
-
- {children}
-
- ),
-};
-
-export default renderRules;
diff --git a/src/lib/renderRules.tsx b/src/lib/renderRules.tsx
new file mode 100644
index 00000000..926d7dea
--- /dev/null
+++ b/src/lib/renderRules.tsx
@@ -0,0 +1,455 @@
+import type { ReactNode } from "react";
+import type { ViewStyle } from "react-native";
+import {
+ Platform,
+ StyleSheet,
+ Text,
+ TouchableWithoutFeedback,
+ View,
+} from "react-native";
+
+import textStyleProps from "./data/textStyleProps";
+import type { ASTNode } from "./types";
+import hasParents from "./util/hasParents";
+import openUrl from "./util/openUrl";
+
+export type RenderFunction = (
+ node: ASTNode,
+ children: ReactNode[],
+ parentNodes: ASTNode[],
+ styles: Record
+) => ReactNode;
+
+export type InheritingRenderFunction = (
+ node: ASTNode,
+ children: ReactNode[],
+ parentNodes: ASTNode[],
+ styles: Record,
+ inheritedStyles?: Record
+) => ReactNode;
+
+export type RenderLinkFunction = (
+ node: ASTNode,
+ children: ReactNode[],
+ parentNodes: ASTNode[],
+ styles: Record,
+ onLinkPress?: (url: string) => boolean
+) => ReactNode;
+
+export type RenderImageFunction = (
+ node: ASTNode,
+ children: ReactNode[],
+ parentNodes: ASTNode[],
+ styles: Record,
+ allowedImageHandlers: string[],
+ defaultImageHandler: string | null
+) => ReactNode;
+
+export type SomeRenderFunction =
+ | RenderFunction
+ | InheritingRenderFunction
+ | RenderLinkFunction
+ | RenderImageFunction;
+
+export interface RenderRules {
+ unknown: RenderFunction;
+ body: RenderFunction;
+ heading1: RenderFunction;
+ heading2: RenderFunction;
+ heading3: RenderFunction;
+ heading4: RenderFunction;
+ heading5: RenderFunction;
+ heading6: RenderFunction;
+ hr: RenderFunction;
+ strong: RenderFunction;
+ em: RenderFunction;
+ s: RenderFunction;
+ blockquote: RenderFunction;
+ bullet_list: RenderFunction;
+ ordered_list: RenderFunction;
+ list_item: InheritingRenderFunction;
+ code_inline: InheritingRenderFunction;
+ code_block: InheritingRenderFunction;
+ fence: InheritingRenderFunction;
+ table: RenderFunction;
+ thead: RenderFunction;
+ tbody: RenderFunction;
+ th: RenderFunction;
+ tr: RenderFunction;
+ td: RenderFunction;
+ link: RenderLinkFunction;
+ blocklink: RenderLinkFunction;
+ image: RenderImageFunction;
+ text: InheritingRenderFunction;
+ textgroup: RenderFunction;
+ paragraph: RenderFunction;
+ hardbreak: RenderFunction;
+ softbreak: RenderFunction;
+ pre: RenderFunction;
+ inline: RenderFunction;
+ span: RenderFunction;
+}
+
+const renderRules: RenderRules = {
+ // when unknown elements are introduced, so it wont break
+ unknown: () => null,
+
+ // The main container
+ body: (node, children, _parent, styles) => (
+
+ {children}
+
+ ),
+
+ // Headings
+ heading1: (node, children, _parent, styles) => (
+
+ {children}
+
+ ),
+ heading2: (node, children, _parent, styles) => (
+
+ {children}
+
+ ),
+ heading3: (node, children, _parent, styles) => (
+
+ {children}
+
+ ),
+ heading4: (node, children, _parent, styles) => (
+
+ {children}
+
+ ),
+ heading5: (node, children, _parent, styles) => (
+
+ {children}
+
+ ),
+ heading6: (node, children, _parent, styles) => (
+
+ {children}
+
+ ),
+
+ // Horizontal Rule
+ hr: (node, _children, _parent, styles) => (
+
+ ),
+
+ // Emphasis
+ strong: (node, children, _parent, styles) => (
+
+ {children}
+
+ ),
+ em: (node, children, _parent, styles) => (
+
+ {children}
+
+ ),
+ s: (node, children, _parent, styles) => (
+
+ {children}
+
+ ),
+
+ // Blockquotes
+ blockquote: (node, children, _parent, styles) => (
+
+ {children}
+
+ ),
+
+ // Lists
+ bullet_list: (node, children, _parent, styles) => (
+
+ {children}
+
+ ),
+ ordered_list: (node, children, _parent, styles) => (
+
+ {children}
+
+ ),
+ // this is a unique and quite annoying render rule because it has
+ // child items that can be styled (the list icon and the list content)
+ // outside of the AST tree so there are some work arounds in the
+ // AST renderer specifically to get the styling right here
+ list_item: (node, children, parent, styles, inheritedStyles = {}) => {
+ // we need to grab any text specific stuff here that is applied on the list_item style
+ // and apply it onto bullet_list_icon. the AST renderer has some workaround code to make
+ // the content classes apply correctly to the child AST tree items as well
+ // as code that forces the creation of the inheritedStyles object for list_items
+ const refStyle = {
+ ...inheritedStyles,
+ ...StyleSheet.flatten(styles.list_item),
+ };
+
+ const arr = Object.keys(refStyle);
+
+ const modifiedInheritedStylesObj: Record = {};
+
+ for (let b = 0; b < arr.length; b++) {
+ if (textStyleProps.includes(arr[b])) {
+ // @ts-expect-error - this is fine
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
+ modifiedInheritedStylesObj[arr[b]] = refStyle[arr[b]];
+ }
+ }
+
+ if (hasParents(parent, "bullet_list")) {
+ return (
+
+
+ {Platform.select({
+ android: "\u2022",
+ ios: "\u00B7",
+ default: "\u2022",
+ })}
+
+ {children}
+
+ );
+ }
+
+ if (hasParents(parent, "ordered_list")) {
+ const orderedListIndex = parent.findIndex(
+ (el) => el.type === "ordered_list"
+ );
+
+ const orderedList = parent[orderedListIndex];
+ let listItemNumber;
+
+ // @ts-expect-error - this is fine
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, prefer-const
+ listItemNumber = orderedList.attributes.start
+ ? // @ts-expect-error - this is fine
+ // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
+ orderedList.attributes.start + node.index
+ : (node.index ?? 0) + 1;
+
+ return (
+
+
+ {listItemNumber}
+ {node.markup}
+
+ {children}
+
+ );
+ }
+
+ // we should not need this, but just in case
+ return (
+
+ {children}
+
+ );
+ },
+
+ // Code
+ code_inline: (node, _children, _parent, styles, inheritedStyles = {}) => (
+
+ {node.content}
+
+ ),
+ code_block: (
+ { content, key },
+ _children,
+ _parent,
+ styles,
+ inheritedStyles = {}
+ ) => {
+ // we trim new lines off the end of code blocks because the parser sends an extra one.
+
+ if (typeof content === "string" && content.endsWith("\n")) {
+ content = content.substring(0, content.length - 1);
+ }
+
+ return (
+
+ {content}
+
+ );
+ },
+ fence: (
+ { content, key },
+ _children,
+ _parent,
+ styles,
+ inheritedStyles = {}
+ ) => {
+ // we trim new lines off the end of code blocks because the parser sends an extra one.
+
+ if (typeof content === "string" && content.endsWith("\n")) {
+ content = content.substring(0, content.length - 1);
+ }
+
+ return (
+
+ {content}
+
+ );
+ },
+
+ // Tables
+ table: (node, children, _parent, styles) => (
+
+ {children}
+
+ ),
+ thead: (node, children, _parent, styles) => (
+
+ {children}
+
+ ),
+ tbody: (node, children, _parent, styles) => (
+
+ {children}
+
+ ),
+ th: (node, children, _parent, styles) => (
+
+ {children}
+
+ ),
+ tr: (node, children, _parent, styles) => (
+
+ {children}
+
+ ),
+ td: (node, children, _parent, styles) => (
+
+ {children}
+
+ ),
+
+ // Links
+ link: (node, children, _parent, styles, onLinkPress) => (
+ openUrl(node.attributes?.href, onLinkPress))
+ }
+ >
+ {children}
+
+ ),
+ blocklink: (node, children, _parent, styles, onLinkPress) => (
+ openUrl(node.attributes?.href, onLinkPress))
+ }
+ style={styles.blocklink}
+ >
+ {children}
+
+ ),
+
+ // Images
+ image: (
+ node,
+ _children,
+ _parent,
+ styles,
+ allowedImageHandlers,
+ defaultImageHandler
+ ) => {
+ if (!node.attributes) {
+ return null;
+ }
+
+ const { src, alt } = node.attributes;
+
+ if (typeof src !== "string") {
+ return null;
+ }
+
+ // we check that the source starts with at least one of the elements in allowedImageHandlers
+ const show = allowedImageHandlers.some((value) => {
+ return src.toLowerCase().startsWith(value.toLowerCase());
+ });
+
+ if (!show && defaultImageHandler === null) {
+ return null;
+ }
+
+ const imageProps = {
+ indicator: true,
+ key: node.key,
+ style: styles._VIEW_SAFE_image,
+ source: {
+ uri: show ? src : `${defaultImageHandler}${src}`,
+ },
+ };
+
+ if (alt) {
+ // @ts-expect-error - this is fine
+ imageProps.accessible = true;
+ // @ts-expect-error - this is fine
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
+ imageProps.accessibilityLabel = alt;
+ }
+
+ if (imageProps.style.overflow === "scroll") {
+ throw new Error(
+ "Image style property 'overflow' is set to 'scroll'. This is not supported"
+ );
+ }
+ // @ts-expect-error - this is fine
+ return ;
+ },
+
+ // Text Output
+ text: (node, _children, _parent, styles, inheritedStyles = {}) => (
+
+ {node.content}
+
+ ),
+ textgroup: (node, children, _parent, styles) => (
+
+ {children}
+
+ ),
+ paragraph: (node, children, _parent, styles) => (
+
+ {children}
+
+ ),
+ hardbreak: (node, _children, _parent, styles) => (
+
+ {"\n"}
+
+ ),
+ softbreak: (node, _children, _parent, styles) => (
+
+ {"\n"}
+
+ ),
+
+ // Believe these are never used but retained for completeness
+ pre: (node, children, _parent, styles) => (
+
+ {children}
+
+ ),
+ inline: (node, children, _parent, styles) => (
+
+ {children}
+
+ ),
+ span: (node, children, _parent, styles) => (
+
+ {children}
+
+ ),
+};
+
+export default renderRules;
diff --git a/src/lib/styles.js b/src/lib/styles.ts
similarity index 100%
rename from src/lib/styles.js
rename to src/lib/styles.ts
diff --git a/src/lib/types.ts b/src/lib/types.ts
new file mode 100644
index 00000000..caf8e4e3
--- /dev/null
+++ b/src/lib/types.ts
@@ -0,0 +1,16 @@
+import type { RenderRules } from "./renderRules";
+
+export interface ASTNode {
+ type: T;
+ sourceType?: string; // original source token name
+ sourceInfo?: string;
+ sourceMeta?: string;
+ block?: boolean;
+ key: string;
+ content?: string;
+ markup?: string;
+ tokenIndex?: number;
+ index?: number;
+ attributes?: Record;
+ children: ReadonlyArray;
+}
diff --git a/src/lib/util/Token.js b/src/lib/util/Token.js
deleted file mode 100644
index 9a7c18c5..00000000
--- a/src/lib/util/Token.js
+++ /dev/null
@@ -1,8 +0,0 @@
-export default class Token {
- constructor(type, nesting = 0, children = null, block = false) {
- this.type = type;
- this.nesting = nesting;
- this.children = children;
- this.block = block;
- }
-}
diff --git a/src/lib/util/Token.ts b/src/lib/util/Token.ts
new file mode 100644
index 00000000..9939cf3e
--- /dev/null
+++ b/src/lib/util/Token.ts
@@ -0,0 +1,35 @@
+import { Token } from "markdown-it";
+
+export default class TextToken {
+ constructor(
+ public type: "textgroup",
+ public nesting: number
+ ) {}
+
+ public get children(): Token[] {
+ return [];
+ }
+
+ public get tag(): "" {
+ return "";
+ }
+
+ public get content(): "" {
+ return "";
+ }
+
+ public get attrs(): null {
+ return null;
+ }
+ public get info(): undefined {
+ return undefined;
+ }
+ public get meta(): undefined {
+ return undefined;
+ }
+ public get markup(): undefined {
+ return undefined;
+ }
+
+ public block: boolean = false;
+}
diff --git a/src/lib/util/cleanupTokens.js b/src/lib/util/cleanupTokens.js
deleted file mode 100644
index 621b761d..00000000
--- a/src/lib/util/cleanupTokens.js
+++ /dev/null
@@ -1,58 +0,0 @@
-import getTokenTypeByToken from './getTokenTypeByToken';
-import flattenInlineTokens from './flattenInlineTokens';
-import renderInlineAsText from './renderInlineAsText';
-
-export function cleanupTokens(tokens) {
- tokens = flattenInlineTokens(tokens);
- tokens.forEach((token) => {
- token.type = getTokenTypeByToken(token);
-
- // set image and hardbreak to block elements
- if (token.type === 'image' || token.type === 'hardbreak') {
- token.block = true;
- }
-
- // Set img alt text
- if (token.type === 'image') {
- token.attrs[token.attrIndex('alt')][1] = renderInlineAsText(
- token.children,
- );
- }
- });
-
- /**
- * changing a link token to a blocklink to fix issue where link tokens with
- * nested non text tokens breaks component
- */
- const stack = [];
- tokens = tokens.reduce((acc, token, index) => {
- if (token.type === 'link' && token.nesting === 1) {
- stack.push(token);
- } else if (
- stack.length > 0 &&
- token.type === 'link' &&
- token.nesting === -1
- ) {
- if (stack.some((stackToken) => stackToken.block)) {
- stack[0].type = 'blocklink';
- stack[0].block = true;
- token.type = 'blocklink';
- token.block = true;
- }
-
- stack.push(token);
-
- while (stack.length) {
- acc.push(stack.shift());
- }
- } else if (stack.length > 0) {
- stack.push(token);
- } else {
- acc.push(token);
- }
-
- return acc;
- }, []);
-
- return tokens;
-}
diff --git a/src/lib/util/cleanupTokens.ts b/src/lib/util/cleanupTokens.ts
new file mode 100644
index 00000000..c17afbcf
--- /dev/null
+++ b/src/lib/util/cleanupTokens.ts
@@ -0,0 +1,63 @@
+import getTokenTypeByToken from "./getTokenTypeByToken";
+import flattenInlineTokens from "./flattenInlineTokens";
+import renderInlineAsText from "./renderInlineAsText";
+import { Token } from "markdown-it";
+import TextToken from "./Token";
+
+export function cleanupTokens(
+ tokens: (Token | TextToken)[]
+): (Token | TextToken)[] {
+ tokens = flattenInlineTokens(tokens);
+ tokens.forEach((token) => {
+ token.type = getTokenTypeByToken(token);
+
+ // set image and hardbreak to block elements
+ if (token.type === "image" || token.type === "hardbreak") {
+ token.block = true;
+ }
+
+ // Set img alt text
+ if (token.type === "image") {
+ if (token.attrs)
+ token.attrs[token.attrIndex("alt")][1] = renderInlineAsText(
+ token.children ?? []
+ );
+ }
+ });
+
+ /**
+ * changing a link token to a blocklink to fix issue where link tokens with
+ * nested non text tokens breaks component
+ */
+ const stack: (Token | TextToken)[] = [];
+ tokens = tokens.reduce<(Token | TextToken)[]>((acc, token) => {
+ if (token.type === "link" && token.nesting === 1) {
+ stack.push(token);
+ } else if (
+ stack.length > 0 &&
+ token.type === "link" &&
+ token.nesting === -1
+ ) {
+ if (stack.some((stackToken) => stackToken.block)) {
+ stack[0].type = "blocklink";
+ stack[0].block = true;
+ token.type = "blocklink";
+ token.block = true;
+ }
+
+ stack.push(token);
+
+ while (stack.length) {
+ acc.push(stack.shift()!);
+ }
+ } else if (stack.length > 0) {
+ stack.push(token);
+ } else {
+ acc.push(token);
+ }
+
+ return acc;
+ }, []);
+
+ return tokens;
+}
diff --git a/src/lib/util/convertAdditionalStyles.js b/src/lib/util/convertAdditionalStyles.js
deleted file mode 100644
index 3cf4e40e..00000000
--- a/src/lib/util/convertAdditionalStyles.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import cssToReactNative from 'css-to-react-native';
-
-export default function convertAdditionalStyles(style) {
- const rules = style.split(';');
-
- const tuples = rules
- .map((rule) => {
- let [key, value] = rule.split(':');
-
- if (key && value) {
- key = key.trim();
- value = value.trim();
- return [key, value];
- } else {
- return null;
- }
- })
- .filter((x) => {
- return x != null;
- });
-
- const conv = cssToReactNative(tuples);
-
- return conv;
-}
diff --git a/src/lib/util/convertAdditionalStyles.ts b/src/lib/util/convertAdditionalStyles.ts
new file mode 100644
index 00000000..6186a6cb
--- /dev/null
+++ b/src/lib/util/convertAdditionalStyles.ts
@@ -0,0 +1,25 @@
+import cssToReactNative, { Style, StyleTuple } from "css-to-react-native";
+
+export default function convertAdditionalStyles(style: string): Style {
+ const rules = style.split(";");
+
+ const tuples: StyleTuple[] = rules
+ .map((rule): StyleTuple | null => {
+ let [key, value] = rule.split(":");
+
+ if (key && value) {
+ key = key.trim();
+ value = value.trim();
+ return [key, value];
+ } else {
+ return null;
+ }
+ })
+ .filter((x) => {
+ return x != null;
+ });
+
+ const conv = cssToReactNative(tuples);
+
+ return conv;
+}
diff --git a/src/lib/util/flattenInlineTokens.js b/src/lib/util/flattenInlineTokens.js
deleted file mode 100644
index 4fe3b605..00000000
--- a/src/lib/util/flattenInlineTokens.js
+++ /dev/null
@@ -1,14 +0,0 @@
-export default function flattenTokens(tokens) {
- return tokens.reduce((acc, curr) => {
- if (curr.type === 'inline' && curr.children && curr.children.length > 0) {
- const children = flattenTokens(curr.children);
- while (children.length) {
- acc.push(children.shift());
- }
- } else {
- acc.push(curr);
- }
-
- return acc;
- }, []);
-}
diff --git a/src/lib/util/flattenInlineTokens.ts b/src/lib/util/flattenInlineTokens.ts
new file mode 100644
index 00000000..8e165918
--- /dev/null
+++ b/src/lib/util/flattenInlineTokens.ts
@@ -0,0 +1,19 @@
+import { Token } from "markdown-it";
+import TextToken from "./Token";
+
+export default function flattenTokens(
+ tokens: (Token | TextToken)[]
+): (Token | TextToken)[] {
+ return tokens.reduce<(Token | TextToken)[]>((acc, curr) => {
+ if (curr.type === "inline" && curr.children && curr.children.length > 0) {
+ const children = flattenTokens(curr.children);
+ while (children.length) {
+ acc.push(children.shift()!);
+ }
+ } else {
+ acc.push(curr);
+ }
+
+ return acc;
+ }, []);
+}
diff --git a/src/lib/util/getTokenTypeByToken.js b/src/lib/util/getTokenTypeByToken.js
deleted file mode 100644
index c4955105..00000000
--- a/src/lib/util/getTokenTypeByToken.js
+++ /dev/null
@@ -1,44 +0,0 @@
-const regSelectOpenClose = /_open|_close/g;
-
-/**
- *
- * @example {
- "type": "heading_open",
- "tag": "h1",
- "attrs": null,
- "map": [
- 1,
- 2
- ],
- "nesting": 1,
- "level": 0,
- "children": null,
- "content": "",
- "markup": "#",
- "info": "",
- "meta": null,
- "block": true,
- "hidden": false
- }
- * @param token
- * @return {String}
- */
-export default function getTokenTypeByToken(token) {
- let cleanedType = 'unknown';
-
- if (token.type) {
- cleanedType = token.type.replace(regSelectOpenClose, '');
- }
-
- switch (cleanedType) {
- case 'heading': {
- cleanedType = `${cleanedType}${token.tag.substr(1)}`;
- break;
- }
- default: {
- break;
- }
- }
-
- return cleanedType;
-}
diff --git a/src/lib/util/getTokenTypeByToken.ts b/src/lib/util/getTokenTypeByToken.ts
new file mode 100644
index 00000000..728cc114
--- /dev/null
+++ b/src/lib/util/getTokenTypeByToken.ts
@@ -0,0 +1,49 @@
+import { Token } from "markdown-it";
+import { RenderRules } from "../renderRules";
+import TextToken from "./Token";
+
+const regSelectOpenClose = /_open|_close/g;
+
+/**
+ *
+ * @example {
+ "type": "heading_open",
+ "tag": "h1",
+ "attrs": null,
+ "map": [
+ 1,
+ 2
+ ],
+ "nesting": 1,
+ "level": 0,
+ "children": null,
+ "content": "",
+ "markup": "#",
+ "info": "",
+ "meta": null,
+ "block": true,
+ "hidden": false
+ }
+ * @param token
+ * @return {String}
+ */
+export default function getTokenTypeByToken(
+ token: Token | TextToken
+): keyof RenderRules {
+ let cleanedType: keyof RenderRules | "heading" = "unknown";
+
+ if (token.type) {
+ cleanedType = token.type.replace(regSelectOpenClose, "") as
+ | keyof RenderRules
+ | "heading";
+ }
+
+ switch (cleanedType) {
+ case "heading": {
+ return `${cleanedType}${token.tag.substring(1) as "1" | "2" | "3" | "4" | "5" | "6"}`;
+ }
+ default: {
+ return cleanedType;
+ }
+ }
+}
diff --git a/src/lib/util/getUniqueID.js b/src/lib/util/getUniqueID.ts
similarity index 100%
rename from src/lib/util/getUniqueID.js
rename to src/lib/util/getUniqueID.ts
diff --git a/src/lib/util/groupTextTokens.js b/src/lib/util/groupTextTokens.ts
similarity index 50%
rename from src/lib/util/groupTextTokens.js
rename to src/lib/util/groupTextTokens.ts
index fb38e3d1..d5c5ccd3 100644
--- a/src/lib/util/groupTextTokens.js
+++ b/src/lib/util/groupTextTokens.ts
@@ -1,20 +1,23 @@
-import Token from './Token';
+import { Token } from "markdown-it";
+import TextToken from "./Token";
-export default function groupTextTokens(tokens) {
- const result = [];
+export default function groupTextTokens(
+ tokens: (Token | TextToken)[]
+): (Token | TextToken)[] {
+ const result: (Token | TextToken)[] = [];
let hasGroup = false;
- tokens.forEach((token, index) => {
+ tokens.forEach((token) => {
if (!token.block && !hasGroup) {
hasGroup = true;
- result.push(new Token('textgroup', 1));
+ result.push(new TextToken("textgroup", 1));
result.push(token);
} else if (!token.block && hasGroup) {
result.push(token);
} else if (token.block && hasGroup) {
hasGroup = false;
- result.push(new Token('textgroup', -1));
+ result.push(new TextToken("textgroup", -1));
result.push(token);
} else {
result.push(token);
diff --git a/src/lib/util/hasParents.js b/src/lib/util/hasParents.js
deleted file mode 100644
index 57287540..00000000
--- a/src/lib/util/hasParents.js
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- *
- * @param {Array} parents
- * @param {string} type
- * @return {boolean}
- */
-export default function hasParents(parents, type) {
- return parents.findIndex((el) => el.type === type) > -1;
-}
diff --git a/src/lib/util/hasParents.ts b/src/lib/util/hasParents.ts
new file mode 100644
index 00000000..d23ecc35
--- /dev/null
+++ b/src/lib/util/hasParents.ts
@@ -0,0 +1,5 @@
+import { ASTNode } from "../types";
+
+export default function hasParents(parents: ASTNode[], type: string): boolean {
+ return parents.findIndex((el) => el.type === type) > -1;
+}
diff --git a/src/lib/util/omitListItemParagraph.js b/src/lib/util/omitListItemParagraph.ts
similarity index 67%
rename from src/lib/util/omitListItemParagraph.js
rename to src/lib/util/omitListItemParagraph.ts
index 8efc08ae..7b9c0c0c 100644
--- a/src/lib/util/omitListItemParagraph.js
+++ b/src/lib/util/omitListItemParagraph.ts
@@ -1,6 +1,11 @@
-export default function omitListItemParagraph(tokens) {
+import { Token } from "markdown-it";
+import TextToken from "./Token";
+
+export default function omitListItemParagraph(
+ tokens: (Token | TextToken)[]
+): (Token | TextToken)[] {
// used to ensure that we remove the correct ending paragraph token
- let depth = null;
+ let depth: number | null = null;
return tokens.filter((token, index) => {
// update depth if we've already removed a starting paragraph token
if (depth !== null) {
@@ -8,13 +13,13 @@ export default function omitListItemParagraph(tokens) {
}
// check for a list_item token followed by paragraph token (to remove)
- if (token.type === 'list_item' && token.nesting === 1 && depth === null) {
+ if (token.type === "list_item" && token.nesting === 1 && depth === null) {
const next = index + 1 in tokens ? tokens[index + 1] : null;
- if (next && next.type === 'paragraph' && next.nesting === 1) {
+ if (next && next.type === "paragraph" && next.nesting === 1) {
depth = 0;
return true;
}
- } else if (token.type === 'paragraph') {
+ } else if (token.type === "paragraph") {
if (token.nesting === 1 && depth === 1) {
// remove the paragraph token immediately after the list_item token
return false;
diff --git a/src/lib/util/openUrl.js b/src/lib/util/openUrl.js
deleted file mode 100644
index 1c1bf198..00000000
--- a/src/lib/util/openUrl.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import {Linking} from 'react-native';
-
-export default function openUrl(url, customCallback) {
- if (customCallback) {
- const result = customCallback(url);
- if (url && result && typeof result === 'boolean') {
- Linking.openURL(url);
- }
- } else if (url) {
- Linking.openURL(url);
- }
-}
diff --git a/src/lib/util/openUrl.ts b/src/lib/util/openUrl.ts
new file mode 100644
index 00000000..dd71856d
--- /dev/null
+++ b/src/lib/util/openUrl.ts
@@ -0,0 +1,15 @@
+import { Linking } from "react-native";
+
+export default function openUrl(
+ url: string,
+ customCallback?: (url: string) => boolean
+): void {
+ if (customCallback) {
+ const result = customCallback(url);
+ if (url && result && typeof result === "boolean") {
+ Linking.openURL(url);
+ }
+ } else if (url) {
+ Linking.openURL(url);
+ }
+}
diff --git a/src/lib/util/removeTextStyleProps.js b/src/lib/util/removeTextStyleProps.js
deleted file mode 100644
index 773fec86..00000000
--- a/src/lib/util/removeTextStyleProps.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import textStyleProps from '../data/textStyleProps';
-
-export default function removeTextStyleProps(style) {
- const intersection = textStyleProps.filter((value) =>
- Object.keys(style).includes(value),
- );
-
- const obj = {...style};
-
- intersection.forEach((value) => {
- delete obj[value];
- });
-
- return obj;
-}
diff --git a/src/lib/util/removeTextStyleProps.ts b/src/lib/util/removeTextStyleProps.ts
new file mode 100644
index 00000000..b4e5f740
--- /dev/null
+++ b/src/lib/util/removeTextStyleProps.ts
@@ -0,0 +1,17 @@
+import { ViewStyle } from "react-native";
+import textStyleProps from "../data/textStyleProps";
+
+export default function removeTextStyleProps(style: ViewStyle): ViewStyle {
+ const intersection = textStyleProps.filter((value) =>
+ Object.keys(style).includes(value)
+ );
+
+ const obj = { ...style };
+
+ intersection.forEach((value) => {
+ // @ts-ignore
+ delete obj[value];
+ });
+
+ return obj;
+}
diff --git a/src/lib/util/renderInlineAsText.js b/src/lib/util/renderInlineAsText.js
deleted file mode 100644
index 274efae9..00000000
--- a/src/lib/util/renderInlineAsText.js
+++ /dev/null
@@ -1,13 +0,0 @@
-export default function renderInlineAsText(tokens) {
- var result = '';
-
- for (var i = 0, len = tokens.length; i < len; i++) {
- if (tokens[i].type === 'text') {
- result += tokens[i].content;
- } else if (tokens[i].type === 'image') {
- result += renderInlineAsText(tokens[i].children);
- }
- }
-
- return result;
-}
diff --git a/src/lib/util/renderInlineAsText.ts b/src/lib/util/renderInlineAsText.ts
new file mode 100644
index 00000000..3d9101d6
--- /dev/null
+++ b/src/lib/util/renderInlineAsText.ts
@@ -0,0 +1,15 @@
+import { Token } from "markdown-it";
+
+export default function renderInlineAsText(tokens: Token[]): string {
+ var result = "";
+
+ for (var i = 0, len = tokens.length; i < len; i++) {
+ if (tokens[i].type === "text") {
+ result += tokens[i].content;
+ } else if (tokens[i].type === "image") {
+ result += renderInlineAsText(tokens[i].children!);
+ }
+ }
+
+ return result;
+}
diff --git a/src/lib/util/splitTextNonTextNodes.js b/src/lib/util/splitTextNonTextNodes.js
deleted file mode 100644
index e8111695..00000000
--- a/src/lib/util/splitTextNonTextNodes.js
+++ /dev/null
@@ -1,14 +0,0 @@
-export default function splitTextNonTextNodes(children) {
- return children.reduce(
- (acc, curr) => {
- if (curr.type.displayName === 'Text') {
- acc.textNodes.push(curr);
- } else {
- acc.nonTextNodes.push(curr);
- }
-
- return acc;
- },
- {textNodes: [], nonTextNodes: []},
- );
-}
diff --git a/src/lib/util/stringToTokens.js b/src/lib/util/stringToTokens.js
deleted file mode 100644
index 6ac77f37..00000000
--- a/src/lib/util/stringToTokens.js
+++ /dev/null
@@ -1,10 +0,0 @@
-export function stringToTokens(source, markdownIt) {
- let result = [];
- try {
- result = markdownIt.parse(source, {});
- } catch (err) {
- console.warn(err);
- }
-
- return result;
-}
diff --git a/src/lib/util/stringToTokens.ts b/src/lib/util/stringToTokens.ts
new file mode 100644
index 00000000..9d327ae3
--- /dev/null
+++ b/src/lib/util/stringToTokens.ts
@@ -0,0 +1,15 @@
+import MarkdownIt, { Token } from "markdown-it";
+
+export function stringToTokens(
+ source: string,
+ markdownIt: MarkdownIt
+): Token[] {
+ let result: Token[] = [];
+ try {
+ result = markdownIt.parse(source, {});
+ } catch (err) {
+ console.warn(err);
+ }
+
+ return result;
+}
diff --git a/src/lib/util/tokensToAST.js b/src/lib/util/tokensToAST.ts
similarity index 54%
rename from src/lib/util/tokensToAST.js
rename to src/lib/util/tokensToAST.ts
index b0ed265c..dd8f23d2 100644
--- a/src/lib/util/tokensToAST.js
+++ b/src/lib/util/tokensToAST.ts
@@ -1,13 +1,10 @@
-import getUniqueID from './getUniqueID';
-import getTokenTypeByToken from './getTokenTypeByToken';
+import getUniqueID from "./getUniqueID";
+import getTokenTypeByToken from "./getTokenTypeByToken";
+import { Token } from "markdown-it";
+import { ASTNode } from "../types";
+import TextToken from "./Token";
-/**
- *
- * @param {{type: string, tag:string, content: string, children: *, attrs: Array, meta, info, block: boolean}} token
- * @param {number} tokenIndex
- * @return {{type: string, content, tokenIndex: *, index: number, attributes: {}, children: *}}
- */
-function createNode(token, tokenIndex) {
+function createNode(token: Token | TextToken, tokenIndex: number): ASTNode {
const type = getTokenTypeByToken(token);
const content = token.content;
@@ -16,7 +13,7 @@ function createNode(token, tokenIndex) {
if (token.attrs) {
attributes = token.attrs.reduce((prev, curr) => {
const [name, value] = curr;
- return {...prev, [name]: value};
+ return { ...prev, [name]: value };
}, {});
}
@@ -27,23 +24,18 @@ function createNode(token, tokenIndex) {
sourceMeta: token.meta,
block: token.block,
markup: token.markup,
- key: getUniqueID() + '_' + type,
+ key: getUniqueID() + "_" + type,
content,
tokenIndex,
index: 0,
attributes,
- children: tokensToAST(token.children),
+ children: token.children ? tokensToAST(token.children) : [],
};
}
-/**
- *
- * @param {Array<{type: string, tag:string, content: string, children: *, attrs: Array}>}tokens
- * @return {Array}
- */
-export default function tokensToAST(tokens) {
+export default function tokensToAST(tokens: (Token | TextToken)[]): ASTNode[] {
let stack = [];
- let children = [];
+ let children: ASTNode[] = [];
if (!tokens || tokens.length === 0) {
return [];
@@ -55,9 +47,9 @@ export default function tokensToAST(tokens) {
if (
!(
- astNode.type === 'text' &&
+ astNode.type === "text" &&
astNode.children.length === 0 &&
- astNode.content === ''
+ astNode.content === ""
)
) {
astNode.index = children.length;
@@ -65,9 +57,9 @@ export default function tokensToAST(tokens) {
if (token.nesting === 1) {
children.push(astNode);
stack.push(children);
- children = astNode.children;
+ children = [...astNode.children];
} else if (token.nesting === -1) {
- children = stack.pop();
+ children = stack.pop() ?? [];
} else if (token.nesting === 0) {
children.push(astNode);
}
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 00000000..49844674
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,101 @@
+{
+ "compilerOptions": {
+ "noEmit": false,
+ /* Visit https://aka.ms/tsconfig to read more about this file */
+ /* Projects */
+ "incremental": true /* Save .tsbuildinfo files to allow for incremental compilation of projects. */,
+ // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
+ // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */
+ // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */
+ // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
+ // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
+ /* Language and Environment */
+ "target": "ES2021" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */,
+ "lib": [
+ "ES2021",
+ "ES2022.Error"
+ ] /* Specify a set of bundled library declaration files that describe the target runtime environment. */,
+ "jsx": "preserve" /* Specify what JSX code is generated. */,
+ "experimentalDecorators": true /* Enable experimental support for TC39 stage 2 draft decorators. */,
+ "emitDecoratorMetadata": true /* Emit design-type metadata for decorated declarations in source files. */,
+ // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */
+ // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
+ // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */
+ // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */
+ // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
+ // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
+ // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */
+ /* Modules */
+ "module": "NodeNext" /* Specify what module code is generated. */,
+ "rootDir": "./src" /* Specify the root folder within your source files. */,
+ // "moduleResolution": "classic", /* Specify how TypeScript looks up a file from a given module specifier. */
+ // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
+ // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
+ // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
+ // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */
+ // "types": [], /* Specify type package names to be included without being referenced in a source file. */
+ // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
+ // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */
+ // "resolveJsonModule": true, /* Enable importing .json files. */
+ // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */
+ /* JavaScript Support */
+ // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
+ // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
+ // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */
+ /* Emit */
+ "declaration": true /* Generate .d.ts files from TypeScript and JavaScript files in your project. */,
+ "declarationMap": true /* Create sourcemaps for d.ts files. */,
+ // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
+ "sourceMap": true /* Create source map files for emitted JavaScript files. */,
+ // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */
+ "outDir": "./dist" /* Specify an output folder for all emitted files. */,
+ // "removeComments": true, /* Disable emitting comments. */
+ // "noEmit": true, /* Disable emitting files from a compilation. */
+ // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
+ // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */
+ // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
+ // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
+ // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
+ // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
+ // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
+ // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
+ // "newLine": "crlf", /* Set the newline character for emitting files. */
+ // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */
+ // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */
+ // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
+ // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */
+ // "declarationDir": "./", /* Specify the output directory for generated declaration files. */
+ // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
+ /* Interop Constraints */
+ "isolatedModules": true /* Ensure that each file can be safely transpiled without relying on other imports. */,
+ "allowSyntheticDefaultImports": true /* Allow 'import x from y' when a module doesn't have a default export. */,
+ "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */,
+ // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
+ "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */,
+ /* Type Checking */
+ "strict": true /* Enable all strict type-checking options. */,
+ "noImplicitAny": true /* Enable error reporting for expressions and declarations with an implied 'any' type. */,
+ "strictNullChecks": true /* When type checking, take into account 'null' and 'undefined'. */,
+ // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
+ // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */
+ "strictPropertyInitialization": true /* Check for class properties that are declared but not set in the constructor. */,
+ "noImplicitThis": true /* Enable error reporting when 'this' is given the type 'any'. */,
+ "useUnknownInCatchVariables": true /* Default catch clause variables as 'unknown' instead of 'any'. */,
+ // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
+ // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */
+ // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */
+ // "exactOptionalPropertyTypes": true /* Interpret optional property types as written, rather than adding 'undefined'. */,
+ // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
+ // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
+ "noUncheckedIndexedAccess": false /* Add 'undefined' to a type when accessed using an index. */,
+ // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
+ // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */
+ // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
+ // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
+ /* Completeness */
+ "skipDefaultLibCheck": false /* Skip type checking .d.ts files that are included with TypeScript. */,
+ // "skipLibCheck": false /* Skip type checking all .d.ts files. */
+ "types": []
+ },
+ "include": ["./src/**/*"]
+}
diff --git a/tsconfig.tsbuildinfo b/tsconfig.tsbuildinfo
new file mode 100644
index 00000000..bc51d918
--- /dev/null
+++ b/tsconfig.tsbuildinfo
@@ -0,0 +1 @@
+{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/@types/linkify-it/build/index.cjs.d.ts","./node_modules/@types/mdurl/build/index.cjs.d.ts","./node_modules/@types/markdown-it/dist/index.cjs.d.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/prop-types/index.d.ts","./node_modules/@types/react/index.d.ts","./node_modules/react-native/types/modules/BatchedBridge.d.ts","./node_modules/react-native/types/modules/Codegen.d.ts","./node_modules/react-native/types/modules/Devtools.d.ts","./node_modules/react-native/types/modules/globals.d.ts","./node_modules/react-native/types/modules/LaunchScreen.d.ts","./node_modules/react-native/types/private/Utilities.d.ts","./node_modules/react-native/types/public/Insets.d.ts","./node_modules/react-native/types/public/ReactNativeTypes.d.ts","./node_modules/react-native/Libraries/Types/CoreEventTypes.d.ts","./node_modules/react-native/types/public/ReactNativeRenderer.d.ts","./node_modules/react-native/Libraries/Components/Touchable/Touchable.d.ts","./node_modules/react-native/Libraries/Components/View/ViewAccessibility.d.ts","./node_modules/react-native/Libraries/Components/View/ViewPropTypes.d.ts","./node_modules/react-native/Libraries/Components/RefreshControl/RefreshControl.d.ts","./node_modules/react-native/Libraries/Components/ScrollView/ScrollView.d.ts","./node_modules/react-native/Libraries/Components/View/View.d.ts","./node_modules/react-native/Libraries/Image/ImageResizeMode.d.ts","./node_modules/react-native/Libraries/Image/ImageSource.d.ts","./node_modules/react-native/Libraries/Image/Image.d.ts","./node_modules/@react-native/virtualized-lists/Lists/VirtualizedList.d.ts","./node_modules/@react-native/virtualized-lists/index.d.ts","./node_modules/react-native/Libraries/Lists/FlatList.d.ts","./node_modules/react-native/Libraries/ReactNative/RendererProxy.d.ts","./node_modules/react-native/Libraries/Lists/SectionList.d.ts","./node_modules/react-native/Libraries/Text/Text.d.ts","./node_modules/react-native/Libraries/Animated/Animated.d.ts","./node_modules/react-native/Libraries/StyleSheet/StyleSheetTypes.d.ts","./node_modules/react-native/Libraries/StyleSheet/StyleSheet.d.ts","./node_modules/react-native/Libraries/StyleSheet/processColor.d.ts","./node_modules/react-native/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts","./node_modules/react-native/Libraries/Alert/Alert.d.ts","./node_modules/react-native/Libraries/Animated/Easing.d.ts","./node_modules/react-native/Libraries/Animated/useAnimatedValue.d.ts","./node_modules/react-native/Libraries/vendor/emitter/EventEmitter.d.ts","./node_modules/react-native/Libraries/EventEmitter/RCTDeviceEventEmitter.d.ts","./node_modules/react-native/Libraries/EventEmitter/RCTNativeAppEventEmitter.d.ts","./node_modules/react-native/Libraries/AppState/AppState.d.ts","./node_modules/react-native/Libraries/BatchedBridge/NativeModules.d.ts","./node_modules/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts","./node_modules/react-native/Libraries/Components/ActivityIndicator/ActivityIndicator.d.ts","./node_modules/react-native/Libraries/Components/Clipboard/Clipboard.d.ts","./node_modules/react-native/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.d.ts","./node_modules/react-native/Libraries/EventEmitter/NativeEventEmitter.d.ts","./node_modules/react-native/Libraries/Components/Keyboard/Keyboard.d.ts","./node_modules/react-native/types/private/TimerMixin.d.ts","./node_modules/react-native/Libraries/Components/Keyboard/KeyboardAvoidingView.d.ts","./node_modules/react-native/Libraries/Components/Pressable/Pressable.d.ts","./node_modules/react-native/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.d.ts","./node_modules/react-native/Libraries/Components/SafeAreaView/SafeAreaView.d.ts","./node_modules/react-native/Libraries/Components/StatusBar/StatusBar.d.ts","./node_modules/react-native/Libraries/Components/Switch/Switch.d.ts","./node_modules/react-native/Libraries/Components/TextInput/InputAccessoryView.d.ts","./node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts","./node_modules/react-native/Libraries/Components/ToastAndroid/ToastAndroid.d.ts","./node_modules/react-native/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts","./node_modules/react-native/Libraries/Components/Touchable/TouchableHighlight.d.ts","./node_modules/react-native/Libraries/Components/Touchable/TouchableOpacity.d.ts","./node_modules/react-native/Libraries/Components/Touchable/TouchableNativeFeedback.d.ts","./node_modules/react-native/Libraries/Components/Button.d.ts","./node_modules/react-native/Libraries/Core/registerCallableModule.d.ts","./node_modules/react-native/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts","./node_modules/react-native/Libraries/Interaction/InteractionManager.d.ts","./node_modules/react-native/Libraries/Interaction/PanResponder.d.ts","./node_modules/react-native/Libraries/LayoutAnimation/LayoutAnimation.d.ts","./node_modules/react-native/Libraries/Linking/Linking.d.ts","./node_modules/react-native/Libraries/LogBox/LogBox.d.ts","./node_modules/react-native/Libraries/Modal/Modal.d.ts","./node_modules/react-native/Libraries/Performance/Systrace.d.ts","./node_modules/react-native/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts","./node_modules/react-native/Libraries/PushNotificationIOS/PushNotificationIOS.d.ts","./node_modules/react-native/Libraries/Utilities/IPerformanceLogger.d.ts","./node_modules/react-native/Libraries/ReactNative/AppRegistry.d.ts","./node_modules/react-native/Libraries/ReactNative/I18nManager.d.ts","./node_modules/react-native/Libraries/ReactNative/RootTag.d.ts","./node_modules/react-native/Libraries/ReactNative/UIManager.d.ts","./node_modules/react-native/Libraries/ReactNative/requireNativeComponent.d.ts","./node_modules/react-native/Libraries/Settings/Settings.d.ts","./node_modules/react-native/Libraries/Share/Share.d.ts","./node_modules/react-native/Libraries/StyleSheet/PlatformColorValueTypesIOS.d.ts","./node_modules/react-native/Libraries/StyleSheet/PlatformColorValueTypes.d.ts","./node_modules/react-native/Libraries/TurboModule/RCTExport.d.ts","./node_modules/react-native/Libraries/TurboModule/TurboModuleRegistry.d.ts","./node_modules/react-native/Libraries/Utilities/Appearance.d.ts","./node_modules/react-native/Libraries/Utilities/BackHandler.d.ts","./node_modules/react-native/Libraries/Utilities/DevSettings.d.ts","./node_modules/react-native/Libraries/Utilities/Dimensions.d.ts","./node_modules/react-native/Libraries/Utilities/PixelRatio.d.ts","./node_modules/react-native/Libraries/Utilities/Platform.d.ts","./node_modules/react-native/Libraries/Vibration/Vibration.d.ts","./node_modules/react-native/Libraries/YellowBox/YellowBoxDeprecated.d.ts","./node_modules/react-native/Libraries/vendor/core/ErrorUtils.d.ts","./node_modules/react-native/types/public/DeprecatedPropertiesAlias.d.ts","./node_modules/react-native/types/index.d.ts","./src/lib/util/getUniqueID.ts","./node_modules/css-to-react-native/index.d.ts","./src/lib/util/convertAdditionalStyles.ts","./src/lib/data/textStyleProps.ts","./src/lib/types.ts","./src/lib/util/hasParents.ts","./src/lib/util/openUrl.ts","./src/lib/renderRules.tsx","./src/lib/AstRenderer.ts","./src/lib/util/Token.ts","./src/lib/util/getTokenTypeByToken.ts","./src/lib/util/tokensToAST.ts","./src/lib/util/stringToTokens.ts","./src/lib/util/flattenInlineTokens.ts","./src/lib/util/renderInlineAsText.ts","./src/lib/util/cleanupTokens.ts","./src/lib/util/groupTextTokens.ts","./src/lib/util/omitListItemParagraph.ts","./src/lib/parser.ts","./src/lib/styles.ts","./src/lib/util/removeTextStyleProps.ts","./src/index.tsx"],"fileIdsList":[[57,150],[77],[51,52],[54,55,56],[85,86],[57,66,72,73,76,79,81,82,85],[83],[93],[57,65,91],[57,63,65,66,70,84,85],[57,85,114,115],[57,63,65,66,70,85],[91,100],[57,63,70,84,85,102],[57,64,66,69,70,73,84,85],[57,63,65,70,85],[57,63,65,70],[57,63,64,66,68,70,71,84,85],[57,85],[57,84,85],[57,63,65,66,69,70,84,85,91,102],[57,64,66],[57,73,84,85,112],[57,63,68,85,112,114],[57,73,112],[57,63,64,66,68,69,84,85,102],[66],[57,64,66,67,68,69,84,85],[91],[92],[57,63,64,65,66,69,74,75,84,85],[66,67],[57,72,73,78,84,85],[57,72,78,80,84,85],[57,66,70],[57,84,128],[57],[57,65],[65],[85],[84],[74,83,85],[57,63,65,66,69,84,85],[138],[100],[58,59,60,61,62,64,65,66,67,68,69,70,71,72,73,74,75,76,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149],[150],[60],[53,57,150,151,154,155,156,157,158,159,162,163,169,170,171],[57,150,151,153,154,155,158],[53,57,155,160,162,163,166,167,168],[57,150,154,155,156,157],[158],[53],[53,160,161,164,165],[152],[53,160],[53,158,160],[155],[150,154],[53,151,155,160,161]],"fileInfos":[{"version":"44e584d4f6444f58791784f1d530875970993129442a847597db702a073ca68c","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"6920e1448680767498a0b77c6a00a8e77d14d62c3da8967b171f1ddffa3c18e4","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"45d8ccb3dfd57355eb29749919142d4321a0aa4df6acdfc54e30433d7176600a","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1a94697425a99354df73d9c8291e2ecd4dddd370aed4023c2d6dee6cccb32666","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3f9fc0ec0b96a9e642f11eda09c0be83a61c7b336977f8b9fdb1e9788e925fe","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"479553e3779be7d4f68e9f40cdb82d038e5ef7592010100410723ceced22a0f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"d3d7b04b45033f57351c8434f60b6be1ea71a2dfec2d0a0c3c83badbb0e3e693","affectsGlobalScope":true,"impliedFormat":1},{"version":"956d27abdea9652e8368ce029bb1e0b9174e9678a273529f426df4b3d90abd60","affectsGlobalScope":true,"impliedFormat":1},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true,"impliedFormat":1},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"742f21debb3937c3839a63245648238555bdab1ea095d43fd10c88a64029bf76","impliedFormat":1},{"version":"0944f27ebff4b20646b71e7e3faaaae50a6debd40bc63e225de1320dd15c5795","impliedFormat":1},{"version":"8a7219b41d3c1c93f3f3b779146f313efade2404eeece88dcd366df7e2364977","impliedFormat":1},{"version":"36a2e4c9a67439aca5f91bb304611d5ae6e20d420503e96c230cf8fcdc948d94","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","impliedFormat":1},{"version":"ed6b820c54de95b2510bb673490d61c7f2187f532a339d8d04981645a918961f","impliedFormat":1},{"version":"aa17748c522bd586f8712b1a308ea23af59c309b2fd278f6d4f406647c72e659","affectsGlobalScope":true,"impliedFormat":1},{"version":"3a909e8789a4f8b5377ef3fb8dc10d0c0a090c03f2e40aab599534727457475a","affectsGlobalScope":true,"impliedFormat":1},{"version":"2b47c8df863142d9383f948c987e1ebd25ade3867aeb4ae60e9d6009035dfe46","impliedFormat":1},{"version":"b8dd45aa6e099a5f564edcabfe8114096b096eb1ffaa343dd6f3fe73f1a6e85e","impliedFormat":1},{"version":"38e8ac2d182bd3f85d28de9bdf1386c19a319f9c0280aa43960204c353b07878","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc4db28f3510994e45bbabba1ee33e9a0d27dab33d4c8a5844cee8c85438a058","impliedFormat":1},{"version":"232f660363b3b189f7be7822ed71e907195d1a85bc8d55d2b7ce3f09b2136938","impliedFormat":1},{"version":"e745388cfad9efb4e5a9a15a2c6b66d54094dd82f8d0c2551064e216f7b51526","impliedFormat":1},{"version":"53390c21d095fb54e6c0b8351cbf7f4008f096ade9717bc5ee75e340bc3dfa30","impliedFormat":1},{"version":"71493b2c538dffa1e3e968b55b70984b542cc6e488012850865f72768ff32630","impliedFormat":1},{"version":"8ebf448e9837fda1a368acbb575b0e28843d5b2a3fda04bce76248b64326ea49","impliedFormat":1},{"version":"91b9f6241fca7843985aa31157cfa08cc724c77d91145a4d834d27cdde099c05","impliedFormat":1},{"version":"8b94ac8c460c9a2578ca3308fecfcf034e21af89e9c287c97710e9717ffae133","impliedFormat":1},{"version":"a7266bcc42f8ec0f31f319c2dd8100411b4d7b8a534235cb00a719f1c8a2a42e","impliedFormat":1},{"version":"3dfa3a6f2a62259b56fa7bcebfbacf886848dfa037298be5bed07c7a0381ee4f","impliedFormat":1},{"version":"a1e3cda52746919d2a95784ce0b1b9ffa22052209aab5f54e079e7b920f5339e","impliedFormat":1},{"version":"1882680f8c88c5648d603408dd1943857ca831a815e33d3126be8368f7a69252","impliedFormat":1},{"version":"f387a979388291b2688ba0f604e3ae78874f5f777616b448d34109762a4f05a9","impliedFormat":1},{"version":"cae0fb826d8a88749189b8a924dfcb5d3ad629e3bc5ec934195fbd83fa48b068","impliedFormat":1},{"version":"376b8482d1224aa83f4521590672304e30ba847d0b87b9e1a62b2e60a5c788f2","impliedFormat":1},{"version":"488242948cc48ee6413a159c60bcaf70de15db01364741737a962662f1a127a5","impliedFormat":1},{"version":"42bacb33cddecbcfe3e043ee1117ba848801749e44f947626765b3e0aec74b1c","impliedFormat":1},{"version":"b326790c20287ad266b5fcd0c388e2a83320a24747856727dcb70c7bbd489dfc","impliedFormat":1},{"version":"cd2156bc8e4d54d52a2817d1b6f4629a5dd3173b1d8bb0fc893ee678d6a78ecd","impliedFormat":1},{"version":"60526d9010e8ccb2a76a59821061463464c3acd5bc7a50320df6d2e4e0d6e4f7","impliedFormat":1},{"version":"562cce1c8e14e8d5a55d1931cb1848b1df49cc7b1024356d56f3550ed57ad67f","impliedFormat":1},{"version":"623fa4efc706bb9956d0ae94b13321c6617655bf8ebdb270c9792bb398f82e44","impliedFormat":1},{"version":"f20c96192f5841cbf982d2c1989c1e9fdef41c4a9db7543edff131007bf1dbfb","impliedFormat":1},{"version":"79d6871ce0da76f4c865a58daa509d5c8a10545d510b804501daa5d0626e7028","impliedFormat":1},{"version":"9054417b5760061bc5fe31f9eee5dc9bf018339b0617d3c65dd1673c8e3c0f25","impliedFormat":1},{"version":"442856ad0787bc213f659e134c204ad0d502179aa216bf700faefb5572208358","impliedFormat":1},{"version":"443702ca8101ef0adc827c2cc530ca93cf98d41e36ce4399efb9bc833ad9cb62","impliedFormat":1},{"version":"c94f70562ae60797cce564c3bebbaaf1752c327d5063d6ac152aa5ca1616c267","impliedFormat":1},{"version":"2aeb5fcdfc884b16015617d263fd8d1a8513f7efe23880be4e5f0bdb3794b37c","impliedFormat":1},{"version":"fd412dd6372493eb8e3e95cae8687d35e4d34dde905a33e0ee47b74224cdd6ab","impliedFormat":1},{"version":"b561170fbe8d4292425e1dfa52406c8d97575681f7a5e420d11d9f72f7c29e38","impliedFormat":1},{"version":"5fe94f3f6411a0f6293f16fdc8e02ee61138941847ce91d6f6800c97fac22fcd","impliedFormat":1},{"version":"7f7c0ecc3eeeef905a3678e540947f4fbbc1a9c76075419dcc5fbfc3df59cb0b","impliedFormat":1},{"version":"df3303018d45c92be73fb4a282d5a242579f96235f5e0f8981983102caf5feca","impliedFormat":1},{"version":"35db266b474b3b9dfd0bc7d25dff3926cc227de45394262f3783b8b174182a16","impliedFormat":1},{"version":"8205e62a7310ac0513747f6d84175400680cff372559bc5fbe2df707194a295d","impliedFormat":1},{"version":"084d0df6805570b6dc6c8b49c3a71d5bdfe59606901e0026c63945b68d4b080a","impliedFormat":1},{"version":"8387fa3287992c71702756fe6ecea68e2f8f2c5aa434493e3afe4817dd4a4787","impliedFormat":1},{"version":"0f066f9654e700a9cf79c75553c934eb14296aa80583bd2b5d07e2d582a3f4ee","impliedFormat":1},{"version":"269c5d54104033b70331343bd931c9933852a882391ed6bd98c3d8b7d6465d22","impliedFormat":1},{"version":"a56b8577aaf471d9e60582065a8193269310e8cae48c1ce4111ed03216f5f715","impliedFormat":1},{"version":"486ae83cd51b813095f6716f06cc9b2cf480ad1d6c7f8ec59674d6c858cd2407","impliedFormat":1},{"version":"fff527e2567a24dd634a30268f1aa8a220315fed9c513d70ee872e54f67f27f3","impliedFormat":1},{"version":"5dd0ff735b3f2e642c3f16bcfb3dc4ecebb679a70e43cfb19ab5fd84d8faaeed","impliedFormat":1},{"version":"d1d78d1ef0f21ac77cdc436d2a4d56592453a8a2e51af2040ec9a69a5d35e4de","impliedFormat":1},{"version":"bc55b91274e43f88030c9cfe2c4217fae57894c3c302173ab6e9743c29484e3d","impliedFormat":1},{"version":"8bb22f70bfd7bf186631fa565c9202ee6a1009ffb961197b7d092b5a1e1d56b1","impliedFormat":1},{"version":"77282216c61bcef9a700db98e142301d5a7d988d3076286029da63e415e98a42","impliedFormat":1},{"version":"6c28f4f95aaa6c3c8b1a0681c29f446b0bf0ed1aa5aa11e8b2ca6fc9e066e9f2","impliedFormat":1},{"version":"64ce8e260a1362d4cadd6c753581a912a9869d4a53ec6e733dc61018f9250f5d","impliedFormat":1},{"version":"85a915dbb768b89cb92f5e6c165d776bfebd065883c34fee4e0219c3ed321b47","impliedFormat":1},{"version":"83df2f39cb14971adea51d1c84e7d146a34e9b7f84ad118450a51bdc3138412c","impliedFormat":1},{"version":"b96364fcb0c9d521e7618346b00acf3fe16ccf9368404ceac1658edee7b6332c","impliedFormat":1},{"version":"bdb2b70c74908c92ec41d8dd8375a195cb3bb07523e4de642b2b2dfbde249ca6","impliedFormat":1},{"version":"7b329f4137a552073f504022acbf8cd90d49cc5e5529791bef508f76ff774854","impliedFormat":1},{"version":"f63bbbffcfc897d22f34cf19ae13405cd267b1783cd21ec47d8a2d02947c98c1","impliedFormat":1},{"version":"7889f4932dfa7b1126cdc17914d85d80b5860cc3d62ba329494007e8aab45430","impliedFormat":1},{"version":"d9725ef7f60a791668f7fb808eb90b1789feaaef989a686fefc0f7546a51dcdc","impliedFormat":1},{"version":"df55b9be6ba19a6f77487e09dc7a94d7c9bf66094d35ea168dbd4bac42c46b8f","impliedFormat":1},{"version":"595125f3e088b883d104622ef10e6b7d5875ff6976bbe4d7dca090a3e2dca513","impliedFormat":1},{"version":"8ebb6f0603bf481e893311c49e4d2e2061413c51b9ba5898cd9b0a01f5ef19c8","impliedFormat":1},{"version":"e0d7eed4ba363df3faadb8e617f95f9fc8adfbb00b87db7ade4a1098d6cf1e90","impliedFormat":1},{"version":"38faab59a79924ce5eb4f2f3e7e7db91e74d425b4183f908cc014be213f0d971","impliedFormat":1},{"version":"de115595321ce012c456f512a799679bfc874f0ac0a4928a8429557bb25086aa","impliedFormat":1},{"version":"cdca67bd898deff48e3acb05fb44500b5ebce16c26a8ec99dee1522cf9879795","impliedFormat":1},{"version":"0524cab11ba9048d151d93cc666d3908fda329eec6b1642e9a936093e6d79f28","impliedFormat":1},{"version":"869073d7523e75f45bd65b2072865c60002d5e0cbd3d17831e999cf011312778","impliedFormat":1},{"version":"bc7b5906a6ce6c5744a640c314e020856be6c50a693e77dc12aff2d77b12ca76","impliedFormat":1},{"version":"56503e377bc1344f155e4e3115a772cb4e59350c0b8131e3e1fb2750ac491608","impliedFormat":1},{"version":"6b579287217ee1320ee1c6cfec5f6730f3a1f91daab000f7131558ee531b2bf8","impliedFormat":1},{"version":"e2ddb2877f5a841866f4fc772a601b58e90ac8399b35f9a06535be81b8e08b47","impliedFormat":1},{"version":"a793636667598e739a52684033037a67dc2d9db37fab727623626ef19aa5abb9","impliedFormat":1},{"version":"b15d6238a86bc0fc2368da429249b96c260debc0cec3eb7b5f838ad32587c129","impliedFormat":1},{"version":"9a9fba3a20769b0a74923e7032997451b61c1bd371c519429b29019399040d74","impliedFormat":1},{"version":"4b10e2fe52cb61035e58df3f1fdd926dd0fe9cf1a2302f92916da324332fb4e0","impliedFormat":1},{"version":"d1092ae8d6017f359f4758115f588e089848cc8fb359f7ba045b1a1cf3668a49","impliedFormat":1},{"version":"ddae9195b0da7b25a585ef43365f4dc5204a746b155fbee71e6ee1a9193fb69f","impliedFormat":1},{"version":"32dbced998ce74c5e76ce87044d0b4071857576dde36b0c6ed1d5957ce9cf5b5","impliedFormat":1},{"version":"5bc29a9918feba88816b71e32960cf11243b77b76630e9e87cad961e5e1d31d0","impliedFormat":1},{"version":"341ffa358628577f490f128f3880c01d50ef31412d1be012bb1cd959b0a383ea","impliedFormat":1},{"version":"ecc1b8878c8033bde0204b85e26fe1af6847805427759e5723882c848a11e134","impliedFormat":1},{"version":"cfc9c32553ad3b5be38342bc8731397438a93531118e1a226a8c79ad255b4f0c","impliedFormat":1},{"version":"16e5b5b023c2a1119c1878a51714861c56255778de0a7fe378391876a15f7433","impliedFormat":1},{"version":"52e8612d284467b4417143ca8fe54d30145fdfc3815f5b5ea9b14b677f422be5","impliedFormat":1},{"version":"a090a8a3b0ef2cceeb089acf4df95df72e7d934215896afe264ff6f734d66d15","impliedFormat":1},{"version":"a0259c6054e3ed2c5fb705b6638e384446cbcdf7fd2072c659b43bd56e214b9a","impliedFormat":1},{"version":"005319c82222e57934c7b211013eb6931829e46b2a61c5d9a1c3c25f8dc3ea90","impliedFormat":1},{"version":"151f422f08c8ca67b77c5c39d49278b4df452ef409237c8219be109ae3cdae9d","impliedFormat":1},{"version":"6466cbb0aa561e1c1a87850a1f066692f1692a0a9513c508a3886cd66a62dae8","affectsGlobalScope":true,"impliedFormat":1},{"version":"bb5cfe79e5f80bd06b0cb8d75274f7710ccb0ba269d35ab06c45dad7bf50a450","signature":"9f2c77b3670856f0be5fd1a504cbc163606ceed481860513eca72634b32d3c7d","impliedFormat":1},{"version":"6d1d31f1786b80ab882f0844f2c99767f6f0c6538e94a4292775e8e741c6a802","impliedFormat":1},{"version":"57271ace81d2865cc16c47eb125f0f34d38ce536989895e8d6c9236f5fca4e1d","signature":"2a9464ab1154680f9a45713ad52ee914229ef5a0100cd8a7dc41e9c8dc8563c3","impliedFormat":1},{"version":"3a72663f675bb47f1c4a42ddf03d0b94442f767d270231af2c3e65a81a195d94","signature":"66b9118e963c55e4311125a3312c9d946106d43d9def22ed3f41bd52462a4c80","impliedFormat":1},{"version":"2c81020b79f5e9f087e7f5b3665533450999dfba029db049020a02581649422a","signature":"43b56e7f904cbc5ea05d44daa7a46044ffa69e065868df65b003157dbd5956fe","impliedFormat":1},{"version":"83c3cf713a4561204ae2316b33266be18e8dd858823f14f8ba02a47ba359d92f","signature":"d728c1eb02f8384410cf59b5698c2d9f52c7ad655e839d6dbb1f1ad64877cadf","impliedFormat":1},{"version":"6bf6420b513f4b548ba2da6baf7fd9ef8c13f7125ddfbdbfb8e04a206131c040","signature":"8158a29454ce0c7ddb8bd1e17062ce64f9c6d2fa4d8c844ade50a4189da2b05d","impliedFormat":1},{"version":"22110b658bd84f2cc193bf941e2313dc799f592424b5376fffd5fe21e1b15f87","signature":"79119a0b05f41118afb2d66ae50d7a36a4df53e9ea25d545ad008513afe7e510","impliedFormat":1},{"version":"eb7fd9013b9782bf257fc968373728f46ee6ed18e0b4530350e143656833ebd6","signature":"8c0faac21b200b337ed21f09ffedab948ed83200b1b41e4b2e5e1c751bd11c3b","impliedFormat":1},{"version":"5d810ff49a73754dbecd14c8936c32d1e1c42af8c3635ec72380d4f1b2009670","signature":"ea588380242774f14bbbbdce180cb43218d5cf788f864d311015910a428a7ec5","impliedFormat":1},{"version":"25057b50fcc66651f1acb841a0f872d844151a32eb9332b49f2b9723ccac711d","signature":"2b3d74e32bb0bd3cd9965f28ba76e5b6587232bf5dbe440f0363231849e42a93","impliedFormat":1},{"version":"b2e3018573b49a4f2a8c6b2b7472fb6c665de88b833a47169c4a565d1518a4af","signature":"b6c08b3fdc441e99db8d4c55838f76fa2024855eb6c64dd86bb77d831b29a449","impliedFormat":1},{"version":"b58f80095cd5db44743fa90aa4c24f70c1e820445f2f42d7cbe5f82450e111ce","signature":"b064caa285e15d91ac315e46f7a970940452b4a8f1c071736ca18a48faa98348","impliedFormat":1},{"version":"5c70463772e79053d76ed4ca991e48a369c8c1a0a55f1b7bdb98964b93c97064","signature":"7214a8af60b4039a192bf3460cf48b16c27272aed494e16c8fb375cbcab8a669","impliedFormat":1},{"version":"ee072494ac2f54647366f670806e13c59d6ac15b95b118c7d489c40d9c1c718f","signature":"d45382d88b9f313315c4693a3aceb2d137db236ed435726ccc3cb5f4f95fb696","impliedFormat":1},{"version":"bffccb7cd6245db255a421592298c1b84e141cf6a1c45c523d54bbf21607b4b3","signature":"ef963a484a85f604c7e9a105f7e53e6176e1d5cdb5d50c69b15188fa94b7ac07","impliedFormat":1},{"version":"4b7a89c94d301e1322e826c3ec402886e290cef23b5cd772e4ed1fceb0820181","signature":"f5d48ed660a093a592fb4d6711e62cacc74112af8ef529921da1d69850cb7246","impliedFormat":1},{"version":"b76ab52fed35ea1483b53a1a5b8065fa196291b29d38516f4310cca617b836a8","signature":"ed66b549cf33c8068d2d68f0e3cb42eb5476e55fcc730fb0d4853e22df31355b","impliedFormat":1},{"version":"ff2bcfc8ea435e32cf3e46979a50badc7cd0ff3adc3a827a6acc264b3c2b04d4","signature":"6d19e497dbbd0db80757a13d2ed759939d8f651a1d063570bc21359319f375b1","impliedFormat":1},{"version":"fabeb2404bc5ee310dd52d7ed4322914f57e1a7e3ec6fc59da04728b80d4f07e","signature":"8660e950fd61b3f60ae718284fef7d215011ed9d19ddf110ab688b9a69fc5e64","impliedFormat":1},{"version":"411aac6f5713c193891ac8c9bcc0db7a37159da7f91e412dd86e827ecc8c61f0","signature":"5ade073342145585fc0e64759dfcec8d0289e94abc75d2fb333522956c4f5a4b","impliedFormat":1},{"version":"d91770e85017b2623e7bc749dcc2357256cdc10bc041ff80eec21b6028158a05","signature":"68e069b7ef4d7fad012b2aab487ccd1ab728fadc06240683ce520642a7961451","impliedFormat":1}],"root":[151,[153,172]],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"declarationMap":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"jsx":1,"module":199,"noImplicitAny":true,"noImplicitThis":true,"noUncheckedIndexedAccess":false,"outDir":"./dist","rootDir":"./src","skipDefaultLibCheck":false,"sourceMap":true,"strict":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":8,"useUnknownInCatchVariables":true},"referencedMap":[[77,1],[78,2],[53,3],[57,4],[87,5],[83,6],[90,7],[94,8],[96,9],[97,10],[116,11],[99,12],[101,13],[103,14],[104,15],[105,16],[71,16],[106,17],[72,18],[107,19],[108,10],[109,20],[110,21],[68,22],[113,23],[115,24],[114,25],[112,26],[73,17],[69,27],[70,28],[100,29],[92,29],[93,30],[76,31],[119,29],[120,32],[122,13],[79,33],[81,34],[124,35],[129,36],[80,37],[131,37],[132,38],[133,39],[135,40],[137,40],[136,40],[85,41],[84,42],[86,40],[82,43],[139,44],[66,38],[140,8],[141,8],[142,45],[143,29],[147,37],[150,46],[59,47],[60,48],[149,47],[67,27],[65,37],[172,49],[159,50],[169,51],[158,52],[170,47],[155,53],[160,54],[166,55],[153,56],[164,57],[161,58],[167,57],[156,59],[168,57],[157,47],[171,60],[165,54],[163,54],[162,61]],"version":"5.6.3"}
\ No newline at end of file
From eaf28260f7f6233c069bbc5becbac3ab81bc52b8 Mon Sep 17 00:00:00 2001
From: Joshua Tag Howard
Date: Mon, 28 Oct 2024 21:25:03 +0000
Subject: [PATCH 3/8] Add eslint and prettier
---
.devcontainer/devcontainer.json | 31 ++++----
.eslintrc.js | 9 ---
.prettierrc | 5 ++
.prettierrc.js | 6 --
.vscode/settings.json | 3 +
README.md | 12 +--
eslint.config.mjs | 28 +++++++
package.json | 14 +++-
src/index.d.ts | 99 -------------------------
src/index.tsx | 60 ++++++++-------
src/lib/AstRenderer.ts | 51 +++++++------
src/lib/data/textStyleProps.ts | 38 +++++-----
src/lib/parser.ts | 12 +--
src/lib/renderRules.tsx | 53 +++++++------
src/lib/styles.ts | 88 +++++++++++-----------
src/lib/types.ts | 8 +-
src/lib/util/Token.ts | 18 ++---
src/lib/util/cleanupTokens.ts | 6 +-
src/lib/util/convertAdditionalStyles.ts | 2 +-
src/lib/util/flattenInlineTokens.ts | 4 +-
src/lib/util/getTokenTypeByToken.ts | 6 +-
src/lib/util/groupTextTokens.ts | 4 +-
src/lib/util/hasParents.ts | 2 +-
src/lib/util/omitListItemParagraph.ts | 4 +-
src/lib/util/openUrl.ts | 12 ++-
src/lib/util/removeTextStyleProps.ts | 9 ++-
src/lib/util/renderInlineAsText.ts | 6 +-
src/lib/util/stringToTokens.ts | 4 +-
src/lib/util/tokensToAST.ts | 14 ++--
tsconfig.tsbuildinfo | 2 +-
30 files changed, 273 insertions(+), 337 deletions(-)
delete mode 100644 .eslintrc.js
create mode 100644 .prettierrc
delete mode 100644 .prettierrc.js
create mode 100644 .vscode/settings.json
create mode 100644 eslint.config.mjs
delete mode 100644 src/index.d.ts
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index ee45b8e4..b012da2c 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -1,22 +1,27 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/typescript-node
{
- "name": "Node.js & TypeScript",
- // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
- "image": "mcr.microsoft.com/devcontainers/typescript-node:1-22-bookworm"
+ "name": "Node.js & TypeScript",
+ // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
+ "image": "mcr.microsoft.com/devcontainers/typescript-node:1-22-bookworm",
+ "customizations": {
+ "vscode": {
+ "extensions": ["esbenp.prettier-vscode", "dbaeumer.vscode-eslint"]
+ }
+ }
- // Features to add to the dev container. More info: https://containers.dev/features.
- // "features": {},
+ // Features to add to the dev container. More info: https://containers.dev/features.
+ // "features": {},
- // Use 'forwardPorts' to make a list of ports inside the container available locally.
- // "forwardPorts": [],
+ // Use 'forwardPorts' to make a list of ports inside the container available locally.
+ // "forwardPorts": [],
- // Use 'postCreateCommand' to run commands after the container is created.
- // "postCreateCommand": "yarn install",
+ // Use 'postCreateCommand' to run commands after the container is created.
+ // "postCreateCommand": "yarn install",
- // Configure tool-specific properties.
- // "customizations": {},
+ // Configure tool-specific properties.
+ // "customizations": {},
- // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
- // "remoteUser": "root"
+ // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
+ // "remoteUser": "root"
}
diff --git a/.eslintrc.js b/.eslintrc.js
deleted file mode 100644
index d46623ba..00000000
--- a/.eslintrc.js
+++ /dev/null
@@ -1,9 +0,0 @@
-module.exports = {
- root: true,
- extends: '@react-native-community',
- settings: {
- react: {
- version: require('./package.json').peerDependencies.react,
- },
- }
-};
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 00000000..4b0d4ad5
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,5 @@
+{
+ "bracketSpacing": false,
+ "singleQuote": false,
+ "trailingComma": "all"
+}
diff --git a/.prettierrc.js b/.prettierrc.js
deleted file mode 100644
index 5c4de1a4..00000000
--- a/.prettierrc.js
+++ /dev/null
@@ -1,6 +0,0 @@
-module.exports = {
- bracketSpacing: false,
- jsxBracketSameLine: true,
- singleQuote: true,
- trailingComma: 'all',
-};
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 00000000..1e9031c3
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "typescript.tsserver.experimental.enableProjectDiagnostics": true
+}
diff --git a/README.md b/README.md
index bb352d88..55087f5d 100644
--- a/README.md
+++ b/README.md
@@ -269,7 +269,7 @@ Right aligned columns
[link text](https://www.google.com)
-[link with title](https://www.google.com 'title text!')
+[link with title](https://www.google.com "title text!")
Autoconverted link https://www.google.com (enable linkify to see)
@@ -288,7 +288,7 @@ Autoconverted link https://www.google.com (enable linkify to see)
```
![Minion](https://octodex.github.com/images/minion.png)
-![Stormtroopocat](https://octodex.github.com/images/stormtroopocat.jpg 'The Stormtroopocat')
+![Stormtroopocat](https://octodex.github.com/images/stormtroopocat.jpg "The Stormtroopocat")
Like links, Images also have a footnote style syntax
@@ -296,7 +296,7 @@ Like links, Images also have a footnote style syntax
With a reference later in the document defining the URL location:
-[id]: https://octodex.github.com/images/dojocat.jpg 'The Dojocat'
+[id]: https://octodex.github.com/images/dojocat.jpg "The Dojocat"
```
@@ -499,13 +499,13 @@ And all of the video properties needed to render something meaningful are on the
You can do some additional debugging of what the markdown instance is spitting out like this:
```jsx
-import Markdown, {MarkdownIt} from 'react-native-markdown-display';
-import blockEmbedPlugin from 'markdown-it-block-embed';
+import Markdown, {MarkdownIt} from "react-native-markdown-display";
+import blockEmbedPlugin from "markdown-it-block-embed";
const markdownItInstance = MarkdownIt({typographer: true}).use(
blockEmbedPlugin,
{
- containerClassName: 'video-embed',
+ containerClassName: "video-embed",
},
);
diff --git a/eslint.config.mjs b/eslint.config.mjs
new file mode 100644
index 00000000..bc2f9e54
--- /dev/null
+++ b/eslint.config.mjs
@@ -0,0 +1,28 @@
+import eslint from "@eslint/js";
+import tseslint from "typescript-eslint";
+
+export default tseslint.config(
+ eslint.configs.recommended,
+ ...tseslint.configs.strictTypeChecked,
+ ...tseslint.configs.stylisticTypeChecked,
+ {
+ languageOptions: {
+ parserOptions: {
+ projectService: {
+ allowDefaultProject: ["eslint.config.mjs"],
+ },
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
+ tsconfigRootDir: import.meta.dirname,
+ },
+ },
+ },
+ {
+ rules: {
+ "@typescript-eslint/no-non-null-assertion": "off",
+ "@typescript-eslint/no-unused-vars": ["error", {argsIgnorePattern: "^_"}],
+ },
+ },
+ {
+ ignores: ["dist/"],
+ },
+);
diff --git a/package.json b/package.json
index 617aa217..1af7596b 100644
--- a/package.json
+++ b/package.json
@@ -5,7 +5,12 @@
"types": "src/index.d.ts",
"scripts": {
"build": "tsc",
- "watch": "tsc -w"
+ "watch": "tsc -w",
+ "lint": "eslint .",
+ "lint-fix": "eslint . --fix",
+ "format": "prettier . --check",
+ "format-fix": "prettier . --write",
+ "check": "npm run lint && npm run format && npm run build -- --noEmit"
},
"repository": {
"type": "git",
@@ -30,9 +35,14 @@
"react-native": ">=0.76.0"
},
"devDependencies": {
+ "@eslint/js": "^9.13.0",
+ "@types/eslint__js": "^8.42.3",
"@types/markdown-it": "^14.1.2",
"@types/react": "^18.0.0",
+ "eslint": "^9.13.0",
+ "prettier": "^3.3.3",
"react-native": "^0.76.0",
- "typescript": "^5.6.3"
+ "typescript": "^5.6.3",
+ "typescript-eslint": "^8.12.0"
}
}
diff --git a/src/index.d.ts b/src/index.d.ts
deleted file mode 100644
index ca5ed4b6..00000000
--- a/src/index.d.ts
+++ /dev/null
@@ -1,99 +0,0 @@
-// tslint:disable:max-classes-per-file
-import MarkdownIt from "markdown-it";
-import Token from "markdown-it/lib/token";
-import { ComponentType, ReactNode } from "react";
-import { StyleSheet, View } from "react-native";
-
-export function getUniqueID(): string;
-export function openUrl(url: string): void;
-
-export function hasParents(parents: any[], type: string): boolean;
-
-export type RenderFunction = (
- node: ASTNode,
- children: ReactNode[],
- parentNodes: ASTNode[],
- styles: any,
- styleObj?: any,
- // must have this so that we can have fixed overrides with more arguments
- ...args: any
-) => ReactNode;
-
-export type RenderLinkFunction = (
- node: ASTNode,
- children: ReactNode[],
- parentNodes: ASTNode[],
- styles: any,
- onLinkPress?: (url: string) => boolean
-) => ReactNode;
-
-export type RenderImageFunction = (
- node: ASTNode,
- children: ReactNode[],
- parentNodes: ASTNode[],
- styles: any,
- allowedImageHandlers: string[],
- defaultImageHandler: string | null
-) => ReactNode;
-
-export interface RenderRules {
- [name: string]: RenderFunction | undefined;
- link?: RenderLinkFunction;
- blocklink?: RenderLinkFunction;
- image?: RenderImageFunction;
-}
-
-export const renderRules: RenderRules;
-
-export interface MarkdownParser {
- parse: (value: string, options: any) => Token[];
-}
-
-export interface ASTNode {
- type: string;
- sourceType: string; // original source token name
- key: string;
- content: string;
- markup: string;
- tokenIndex: number;
- index: number;
- attributes: Record;
- children: ASTNode[];
-}
-
-export class AstRenderer {
- constructor(renderRules: RenderRules, style?: any);
- getRenderFunction(type: string): RenderFunction;
- renderNode(node: any, parentNodes: ReadonlyArray): ReactNode;
- render(nodes: ReadonlyArray): View;
-}
-
-export function parser(
- source: string,
- renderer: (node: ASTNode) => View,
- parser: MarkdownParser
-): any;
-
-export function stringToTokens(
- source: string,
- markdownIt: MarkdownParser
-): Token[];
-
-export function tokensToAST(tokens: ReadonlyArray): ASTNode[];
-
-export interface MarkdownProps {
- children?: ReactNode;
- rules?: RenderRules;
- style?: StyleSheet.NamedStyles;
- renderer?: AstRenderer;
- markdownit?: MarkdownIt;
- mergeStyle?: boolean;
- debugPrintTree?: boolean;
- onLinkPress?: (url: string) => boolean;
-}
-
-type MarkdownStatic = ComponentType;
-export const Markdown: MarkdownStatic;
-export type Markdown = MarkdownStatic;
-export { MarkdownIt };
-export default Markdown;
diff --git a/src/index.tsx b/src/index.tsx
index 990d448a..4aed590c 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -1,21 +1,20 @@
-/* eslint-disable react-refresh/only-export-components */
import MarkdownIt from "markdown-it";
-import type { ReactNode } from "react";
-import React, { useMemo } from "react";
-import type { TextStyle, ViewStyle } from "react-native";
-import { StyleSheet, Text } from "react-native";
+import type {ReactNode} from "react";
+import React, {useMemo} from "react";
+import type {TextStyle, ViewStyle} from "react-native";
+import {StyleSheet, Text} from "react-native";
import AstRenderer from "./lib/AstRenderer";
import parser from "./lib/parser";
-import type { RenderRules } from "./lib/renderRules";
+import type {RenderRules} from "./lib/renderRules";
import renderRules from "./lib/renderRules";
-import { styles } from "./lib/styles";
-import type { ASTNode } from "./lib/types";
+import {styles} from "./lib/styles";
+import type {ASTNode} from "./lib/types";
import removeTextStyleProps from "./lib/util/removeTextStyleProps";
function getStyle(
mergeStyle: boolean,
- style: StyleSheet.NamedStyles | undefined
+ style: StyleSheet.NamedStyles | undefined,
): ReturnType {
let useStyles: Record = {};
@@ -71,17 +70,17 @@ const getRenderer = (
topLevelMaxExceededItem: React.ReactNode,
allowedImageHandlers: string[],
defaultImageHandler: string,
- debugPrintTree: boolean
+ debugPrintTree: boolean,
): AstRenderer => {
if (renderer && rules) {
console.warn(
- "react-native-markdown-display you are using renderer and rules at the same time. This is not possible, props.rules is ignored"
+ "react-native-markdown-display you are using renderer and rules at the same time. This is not possible, props.rules is ignored",
);
}
if (renderer && style) {
console.warn(
- "react-native-markdown-display you are using renderer and style at the same time. This is not possible, props.style is ignored"
+ "react-native-markdown-display you are using renderer and style at the same time. This is not possible, props.style is ignored",
);
}
@@ -93,7 +92,7 @@ const getRenderer = (
return renderer;
} else {
throw new TypeError(
- "Provided renderer is not compatible with function or AstRenderer. please change"
+ "Provided renderer is not compatible with function or AstRenderer. please change",
);
}
} else {
@@ -110,7 +109,7 @@ const getRenderer = (
topLevelMaxExceededItem,
allowedImageHandlers,
defaultImageHandler,
- debugPrintTree
+ debugPrintTree,
);
}
};
@@ -173,7 +172,7 @@ const Markdown: React.FC<
topLevelMaxExceededItem,
allowedImageHandlers,
defaultImageHandler,
- debugPrintTree
+ debugPrintTree,
),
[
maxTopLevelChildren,
@@ -186,7 +185,7 @@ const Markdown: React.FC<
allowedImageHandlers,
defaultImageHandler,
debugPrintTree,
- ]
+ ],
);
const memoizedParser = useMemo(() => markdownit, [markdownit]);
@@ -194,23 +193,22 @@ const Markdown: React.FC<
return parser(
children,
(nodes: readonly ASTNode[]): ReactNode => momoizedRenderer.render(nodes),
- memoizedParser
+ memoizedParser,
);
- }
+ },
);
export default Markdown;
-export { default as MarkdownIt } from "markdown-it";
-export { default as AstRenderer } from "./lib/AstRenderer";
-export { default as textStyleProps } from "./lib/data/textStyleProps";
-export { default as parser } from "./lib/parser";
-export { default as renderRules } from "./lib/renderRules";
-export { styles } from "./lib/styles";
-export { default as getUniqueID } from "./lib/util/getUniqueID";
-export { default as hasParents } from "./lib/util/hasParents";
-export { default as openUrl } from "./lib/util/openUrl";
-export { default as removeTextStyleProps } from "./lib/util/removeTextStyleProps";
-export { stringToTokens } from "./lib/util/stringToTokens";
-export { default as tokensToAST } from "./lib/util/tokensToAST";
-
+export {default as MarkdownIt} from "markdown-it";
+export {default as AstRenderer} from "./lib/AstRenderer";
+export {default as textStyleProps} from "./lib/data/textStyleProps";
+export {default as parser} from "./lib/parser";
+export {default as renderRules} from "./lib/renderRules";
+export {styles} from "./lib/styles";
+export {default as getUniqueID} from "./lib/util/getUniqueID";
+export {default as hasParents} from "./lib/util/hasParents";
+export {default as openUrl} from "./lib/util/openUrl";
+export {default as removeTextStyleProps} from "./lib/util/removeTextStyleProps";
+export {stringToTokens} from "./lib/util/stringToTokens";
+export {default as tokensToAST} from "./lib/util/tokensToAST";
diff --git a/src/lib/AstRenderer.ts b/src/lib/AstRenderer.ts
index 0543e79c..003cc62e 100644
--- a/src/lib/AstRenderer.ts
+++ b/src/lib/AstRenderer.ts
@@ -1,12 +1,12 @@
-import { StyleSheet, ViewStyle } from "react-native";
+import {StyleSheet, ViewStyle} from "react-native";
-import getUniqueID from "./util/getUniqueID";
import convertAdditionalStyles from "./util/convertAdditionalStyles";
+import getUniqueID from "./util/getUniqueID";
+import {ReactNode} from "react";
import textStyleProps from "./data/textStyleProps";
-import { RenderRules } from "./renderRules";
-import { ASTNode } from "./types";
-import { ReactNode } from "react";
+import {RenderRules} from "./renderRules";
+import {ASTNode} from "./types";
export default class AstRenderer {
constructor(
@@ -17,15 +17,15 @@ export default class AstRenderer {
private topLevelMaxExceededItem: React.ReactNode,
private allowedImageHandlers: string[],
private defaultImageHandler: string,
- private debugPrintTree: boolean
+ private debugPrintTree: boolean,
) {}
getRenderFunction(type: R): RenderRules[R] {
const renderFunction = this.renderRules[type];
- if (!renderFunction) {
+ if (!renderFunction as unknown) {
console.warn(
- `Warning, unknown render rule encountered: ${type}. 'unknown' render rule used (by default, returns null - nothing rendered)`
+ `Warning, unknown render rule encountered: ${type}. 'unknown' render rule used (by default, returns null - nothing rendered)`,
);
return this.renderRules.unknown;
}
@@ -36,10 +36,11 @@ export default class AstRenderer {
renderNode(node: ASTNode, parentNodes: ASTNode[], isRoot = false): ReactNode {
const parents = [...parentNodes];
- if (this.debugPrintTree === true) {
+ if (this.debugPrintTree) {
let str = "";
- for (let a = 0; a < parents.length; a++) {
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ for (const _ of parents) {
str = str + "-";
}
@@ -61,7 +62,7 @@ export default class AstRenderer {
children,
parentNodes,
this.style,
- this.onLinkPress
+ this.onLinkPress,
);
}
@@ -72,7 +73,7 @@ export default class AstRenderer {
parentNodes,
this.style,
this.allowedImageHandlers,
- this.defaultImageHandler
+ this.defaultImageHandler,
);
}
@@ -91,15 +92,16 @@ export default class AstRenderer {
let refStyle = {};
if (
- parentNodes[a].attributes &&
parentNodes[a].attributes?.style &&
typeof parentNodes[a].attributes?.style === "string"
) {
- refStyle = convertAdditionalStyles(parentNodes[a].attributes?.style);
+ refStyle = convertAdditionalStyles(
+ String(parentNodes[a].attributes?.style),
+ );
}
// combine in specific styles for the object
- if (this.style[parentNodes[a].type]) {
+ if (this.style[parentNodes[a].type] as unknown) {
refStyle = {
...refStyle,
...StyleSheet.flatten(this.style[parentNodes[a].type]),
@@ -125,10 +127,11 @@ export default class AstRenderer {
// then work out if any of them are text styles that should be used in the end.
const arr = Object.keys(refStyle) as (keyof ViewStyle)[];
- for (let b = 0; b < arr.length; b++) {
- if (textStyleProps.includes(arr[b])) {
- // @ts-expect-error - this is fine
- styleObj[arr[b]] = refStyle[arr[b]];
+ for (const key of arr) {
+ if (textStyleProps.includes(key)) {
+ // @ts-expect-error this is fine
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
+ styleObj[key] = refStyle[key];
}
}
}
@@ -138,14 +141,14 @@ export default class AstRenderer {
children,
parentNodes,
this.style,
- styleObj
+ styleObj,
);
}
// cull top level children
if (
- isRoot === true &&
+ isRoot &&
this.maxTopLevelChildren &&
children.length > this.maxTopLevelChildren
) {
@@ -159,12 +162,12 @@ export default class AstRenderer {
node,
children,
parentNodes,
- this.style
+ this.style,
);
}
- render(nodes: ReadonlyArray): ReactNode {
- const root: ASTNode = { type: "body", key: getUniqueID(), children: nodes };
+ render(nodes: readonly ASTNode[]): ReactNode {
+ const root: ASTNode = {type: "body", key: getUniqueID(), children: nodes};
return this.renderNode(root, [], true);
}
}
diff --git a/src/lib/data/textStyleProps.ts b/src/lib/data/textStyleProps.ts
index c48139d0..a9350870 100644
--- a/src/lib/data/textStyleProps.ts
+++ b/src/lib/data/textStyleProps.ts
@@ -1,21 +1,21 @@
export default [
- 'textShadowOffset',
- 'color',
- 'fontSize',
- 'fontStyle',
- 'fontWeight',
- 'lineHeight',
- 'textAlign',
- 'textDecorationLine',
- 'textShadowColor',
- 'fontFamily',
- 'textShadowRadius',
- 'includeFontPadding',
- 'textAlignVertical',
- 'fontVariant',
- 'letterSpacing',
- 'textDecorationColor',
- 'textDecorationStyle',
- 'textTransform',
- 'writingDirection',
+ "textShadowOffset",
+ "color",
+ "fontSize",
+ "fontStyle",
+ "fontWeight",
+ "lineHeight",
+ "textAlign",
+ "textDecorationLine",
+ "textShadowColor",
+ "fontFamily",
+ "textShadowRadius",
+ "includeFontPadding",
+ "textAlignVertical",
+ "fontVariant",
+ "letterSpacing",
+ "textDecorationColor",
+ "textDecorationStyle",
+ "textTransform",
+ "writingDirection",
];
diff --git a/src/lib/parser.ts b/src/lib/parser.ts
index ad8975ac..66bb1dbf 100644
--- a/src/lib/parser.ts
+++ b/src/lib/parser.ts
@@ -1,17 +1,17 @@
import tokensToAST from "./util/tokensToAST";
-import { stringToTokens } from "./util/stringToTokens";
-import { cleanupTokens } from "./util/cleanupTokens";
+import {stringToTokens} from "./util/stringToTokens";
+import {cleanupTokens} from "./util/cleanupTokens";
import groupTextTokens from "./util/groupTextTokens";
import omitListItemParagraph from "./util/omitListItemParagraph";
-import { ReactNode } from "react";
-import MarkdownIt, { Token } from "markdown-it";
+import {ReactNode} from "react";
+import MarkdownIt, {Token} from "markdown-it";
import TextToken from "./util/Token";
-import { ASTNode } from "./types";
+import {ASTNode} from "./types";
export default function parser(
source: string,
renderer: (source: ASTNode[]) => ReactNode,
- markdownIt: MarkdownIt
+ markdownIt: MarkdownIt,
): ReactNode {
if (Array.isArray(source)) {
return renderer(source);
diff --git a/src/lib/renderRules.tsx b/src/lib/renderRules.tsx
index 926d7dea..1efd3a58 100644
--- a/src/lib/renderRules.tsx
+++ b/src/lib/renderRules.tsx
@@ -1,5 +1,5 @@
-import type { ReactNode } from "react";
-import type { ViewStyle } from "react-native";
+import type {ReactNode} from "react";
+import type {ViewStyle} from "react-native";
import {
Platform,
StyleSheet,
@@ -9,7 +9,7 @@ import {
} from "react-native";
import textStyleProps from "./data/textStyleProps";
-import type { ASTNode } from "./types";
+import type {ASTNode} from "./types";
import hasParents from "./util/hasParents";
import openUrl from "./util/openUrl";
@@ -17,7 +17,7 @@ export type RenderFunction = (
node: ASTNode,
children: ReactNode[],
parentNodes: ASTNode[],
- styles: Record
+ styles: Record,
) => ReactNode;
export type InheritingRenderFunction = (
@@ -25,7 +25,7 @@ export type InheritingRenderFunction = (
children: ReactNode[],
parentNodes: ASTNode[],
styles: Record,
- inheritedStyles?: Record
+ inheritedStyles?: Record,
) => ReactNode;
export type RenderLinkFunction = (
@@ -33,7 +33,7 @@ export type RenderLinkFunction = (
children: ReactNode[],
parentNodes: ASTNode[],
styles: Record,
- onLinkPress?: (url: string) => boolean
+ onLinkPress?: (url: string) => boolean,
) => ReactNode;
export type RenderImageFunction = (
@@ -42,7 +42,7 @@ export type RenderImageFunction = (
parentNodes: ASTNode[],
styles: Record,
allowedImageHandlers: string[],
- defaultImageHandler: string | null
+ defaultImageHandler: string | null,
) => ReactNode;
export type SomeRenderFunction =
@@ -191,11 +191,11 @@ const renderRules: RenderRules = {
const modifiedInheritedStylesObj: Record = {};
- for (let b = 0; b < arr.length; b++) {
- if (textStyleProps.includes(arr[b])) {
+ for (const key of arr) {
+ if (textStyleProps.includes(key)) {
// @ts-expect-error - this is fine
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
- modifiedInheritedStylesObj[arr[b]] = refStyle[arr[b]];
+ modifiedInheritedStylesObj[key] = refStyle[key];
}
}
@@ -219,7 +219,7 @@ const renderRules: RenderRules = {
if (hasParents(parent, "ordered_list")) {
const orderedListIndex = parent.findIndex(
- (el) => el.type === "ordered_list"
+ (el) => el.type === "ordered_list",
);
const orderedList = parent[orderedListIndex];
@@ -259,11 +259,11 @@ const renderRules: RenderRules = {
),
code_block: (
- { content, key },
+ {content, key},
_children,
_parent,
styles,
- inheritedStyles = {}
+ inheritedStyles = {},
) => {
// we trim new lines off the end of code blocks because the parser sends an extra one.
@@ -277,13 +277,7 @@ const renderRules: RenderRules = {
);
},
- fence: (
- { content, key },
- _children,
- _parent,
- styles,
- inheritedStyles = {}
- ) => {
+ fence: ({content, key}, _children, _parent, styles, inheritedStyles = {}) => {
// we trim new lines off the end of code blocks because the parser sends an extra one.
if (typeof content === "string" && content.endsWith("\n")) {
@@ -335,7 +329,10 @@ const renderRules: RenderRules = {
key={node.key}
style={styles.link}
onPress={
- node.attributes && (() => openUrl(node.attributes?.href, onLinkPress))
+ node.attributes &&
+ (() => {
+ openUrl(String(node.attributes?.href), onLinkPress);
+ })
}
>
{children}
@@ -345,7 +342,10 @@ const renderRules: RenderRules = {
openUrl(node.attributes?.href, onLinkPress))
+ node.attributes &&
+ (() => {
+ openUrl(String(node.attributes?.href), onLinkPress);
+ })
}
style={styles.blocklink}
>
@@ -360,13 +360,13 @@ const renderRules: RenderRules = {
_parent,
styles,
allowedImageHandlers,
- defaultImageHandler
+ defaultImageHandler,
) => {
if (!node.attributes) {
return null;
}
- const { src, alt } = node.attributes;
+ const {src, alt} = node.attributes;
if (typeof src !== "string") {
return null;
@@ -386,7 +386,7 @@ const renderRules: RenderRules = {
key: node.key,
style: styles._VIEW_SAFE_image,
source: {
- uri: show ? src : `${defaultImageHandler}${src}`,
+ uri: show ? src : `${String(defaultImageHandler)}${src}`,
},
};
@@ -394,13 +394,12 @@ const renderRules: RenderRules = {
// @ts-expect-error - this is fine
imageProps.accessible = true;
// @ts-expect-error - this is fine
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
imageProps.accessibilityLabel = alt;
}
if (imageProps.style.overflow === "scroll") {
throw new Error(
- "Image style property 'overflow' is set to 'scroll'. This is not supported"
+ "Image style property 'overflow' is set to 'scroll'. This is not supported",
);
}
// @ts-expect-error - this is fine
diff --git a/src/lib/styles.ts b/src/lib/styles.ts
index e1b5e39e..1590643b 100644
--- a/src/lib/styles.ts
+++ b/src/lib/styles.ts
@@ -1,4 +1,4 @@
-import {Platform} from 'react-native';
+import {Platform} from "react-native";
// this is converted to a stylesheet internally at run time with StyleSheet.create(
export const styles = {
@@ -7,51 +7,51 @@ export const styles = {
// Headings
heading1: {
- flexDirection: 'row',
+ flexDirection: "row",
fontSize: 32,
},
heading2: {
- flexDirection: 'row',
+ flexDirection: "row",
fontSize: 24,
},
heading3: {
- flexDirection: 'row',
+ flexDirection: "row",
fontSize: 18,
},
heading4: {
- flexDirection: 'row',
+ flexDirection: "row",
fontSize: 16,
},
heading5: {
- flexDirection: 'row',
+ flexDirection: "row",
fontSize: 13,
},
heading6: {
- flexDirection: 'row',
+ flexDirection: "row",
fontSize: 11,
},
// Horizontal Rule
hr: {
- backgroundColor: '#000000',
+ backgroundColor: "#000000",
height: 1,
},
// Emphasis
strong: {
- fontWeight: 'bold',
+ fontWeight: "bold",
},
em: {
- fontStyle: 'italic',
+ fontStyle: "italic",
},
s: {
- textDecorationLine: 'line-through',
+ textDecorationLine: "line-through",
},
// Blockquotes
blockquote: {
- backgroundColor: '#F5F5F5',
- borderColor: '#CCC',
+ backgroundColor: "#F5F5F5",
+ borderColor: "#CCC",
borderLeftWidth: 4,
marginLeft: 5,
paddingHorizontal: 5,
@@ -61,8 +61,8 @@ export const styles = {
bullet_list: {},
ordered_list: {},
list_item: {
- flexDirection: 'row',
- justifyContent: 'flex-start',
+ flexDirection: "row",
+ justifyContent: "flex-start",
},
// @pseudo class, does not have a unique render rule
bullet_list_icon: {
@@ -86,46 +86,46 @@ export const styles = {
// Code
code_inline: {
borderWidth: 1,
- borderColor: '#CCCCCC',
- backgroundColor: '#f5f5f5',
+ borderColor: "#CCCCCC",
+ backgroundColor: "#f5f5f5",
padding: 10,
borderRadius: 4,
...Platform.select({
- ['ios']: {
- fontFamily: 'Courier',
+ ["ios"]: {
+ fontFamily: "Courier",
},
- ['android']: {
- fontFamily: 'monospace',
+ ["android"]: {
+ fontFamily: "monospace",
},
}),
},
code_block: {
borderWidth: 1,
- borderColor: '#CCCCCC',
- backgroundColor: '#f5f5f5',
+ borderColor: "#CCCCCC",
+ backgroundColor: "#f5f5f5",
padding: 10,
borderRadius: 4,
...Platform.select({
- ['ios']: {
- fontFamily: 'Courier',
+ ["ios"]: {
+ fontFamily: "Courier",
},
- ['android']: {
- fontFamily: 'monospace',
+ ["android"]: {
+ fontFamily: "monospace",
},
}),
},
fence: {
borderWidth: 1,
- borderColor: '#CCCCCC',
- backgroundColor: '#f5f5f5',
+ borderColor: "#CCCCCC",
+ backgroundColor: "#f5f5f5",
padding: 10,
borderRadius: 4,
...Platform.select({
- ['ios']: {
- fontFamily: 'Courier',
+ ["ios"]: {
+ fontFamily: "Courier",
},
- ['android']: {
- fontFamily: 'monospace',
+ ["android"]: {
+ fontFamily: "monospace",
},
}),
},
@@ -133,7 +133,7 @@ export const styles = {
// Tables
table: {
borderWidth: 1,
- borderColor: '#000000',
+ borderColor: "#000000",
borderRadius: 3,
},
thead: {},
@@ -144,8 +144,8 @@ export const styles = {
},
tr: {
borderBottomWidth: 1,
- borderColor: '#000000',
- flexDirection: 'row',
+ borderColor: "#000000",
+ flexDirection: "row",
},
td: {
flex: 1,
@@ -154,11 +154,11 @@ export const styles = {
// Links
link: {
- textDecorationLine: 'underline',
+ textDecorationLine: "underline",
},
blocklink: {
flex: 1,
- borderColor: '#000000',
+ borderColor: "#000000",
borderBottomWidth: 1,
},
@@ -173,14 +173,14 @@ export const styles = {
paragraph: {
marginTop: 10,
marginBottom: 10,
- flexWrap: 'wrap',
- flexDirection: 'row',
- alignItems: 'flex-start',
- justifyContent: 'flex-start',
- width: '100%',
+ flexWrap: "wrap",
+ flexDirection: "row",
+ alignItems: "flex-start",
+ justifyContent: "flex-start",
+ width: "100%",
},
hardbreak: {
- width: '100%',
+ width: "100%",
height: 1,
},
softbreak: {},
diff --git a/src/lib/types.ts b/src/lib/types.ts
index caf8e4e3..d5cd4d07 100644
--- a/src/lib/types.ts
+++ b/src/lib/types.ts
@@ -1,16 +1,16 @@
-import type { RenderRules } from "./renderRules";
+import type {RenderRules} from "./renderRules";
export interface ASTNode {
type: T;
sourceType?: string; // original source token name
sourceInfo?: string;
- sourceMeta?: string;
+ sourceMeta?: unknown;
block?: boolean;
key: string;
content?: string;
markup?: string;
tokenIndex?: number;
index?: number;
- attributes?: Record;
- children: ReadonlyArray;
+ attributes?: Record;
+ children: readonly ASTNode[];
}
diff --git a/src/lib/util/Token.ts b/src/lib/util/Token.ts
index 9939cf3e..f10d7605 100644
--- a/src/lib/util/Token.ts
+++ b/src/lib/util/Token.ts
@@ -1,26 +1,20 @@
-import { Token } from "markdown-it";
+import {Token} from "markdown-it";
export default class TextToken {
constructor(
public type: "textgroup",
- public nesting: number
+ public nesting: number,
) {}
public get children(): Token[] {
return [];
}
- public get tag(): "" {
- return "";
- }
+ public readonly tag = "";
- public get content(): "" {
- return "";
- }
+ public readonly content = "";
- public get attrs(): null {
- return null;
- }
+ public readonly attrs = null;
public get info(): undefined {
return undefined;
}
@@ -31,5 +25,5 @@ export default class TextToken {
return undefined;
}
- public block: boolean = false;
+ public block = false;
}
diff --git a/src/lib/util/cleanupTokens.ts b/src/lib/util/cleanupTokens.ts
index c17afbcf..a1295a69 100644
--- a/src/lib/util/cleanupTokens.ts
+++ b/src/lib/util/cleanupTokens.ts
@@ -1,11 +1,11 @@
import getTokenTypeByToken from "./getTokenTypeByToken";
import flattenInlineTokens from "./flattenInlineTokens";
import renderInlineAsText from "./renderInlineAsText";
-import { Token } from "markdown-it";
+import {Token} from "markdown-it";
import TextToken from "./Token";
export function cleanupTokens(
- tokens: (Token | TextToken)[]
+ tokens: (Token | TextToken)[],
): (Token | TextToken)[] {
tokens = flattenInlineTokens(tokens);
tokens.forEach((token) => {
@@ -20,7 +20,7 @@ export function cleanupTokens(
if (token.type === "image") {
if (token.attrs)
token.attrs[token.attrIndex("alt")][1] = renderInlineAsText(
- token.children ?? []
+ token.children ?? [],
);
}
});
diff --git a/src/lib/util/convertAdditionalStyles.ts b/src/lib/util/convertAdditionalStyles.ts
index 6186a6cb..19d38b0e 100644
--- a/src/lib/util/convertAdditionalStyles.ts
+++ b/src/lib/util/convertAdditionalStyles.ts
@@ -1,4 +1,4 @@
-import cssToReactNative, { Style, StyleTuple } from "css-to-react-native";
+import cssToReactNative, {Style, StyleTuple} from "css-to-react-native";
export default function convertAdditionalStyles(style: string): Style {
const rules = style.split(";");
diff --git a/src/lib/util/flattenInlineTokens.ts b/src/lib/util/flattenInlineTokens.ts
index 8e165918..3379fe04 100644
--- a/src/lib/util/flattenInlineTokens.ts
+++ b/src/lib/util/flattenInlineTokens.ts
@@ -1,8 +1,8 @@
-import { Token } from "markdown-it";
+import {Token} from "markdown-it";
import TextToken from "./Token";
export default function flattenTokens(
- tokens: (Token | TextToken)[]
+ tokens: (Token | TextToken)[],
): (Token | TextToken)[] {
return tokens.reduce<(Token | TextToken)[]>((acc, curr) => {
if (curr.type === "inline" && curr.children && curr.children.length > 0) {
diff --git a/src/lib/util/getTokenTypeByToken.ts b/src/lib/util/getTokenTypeByToken.ts
index 728cc114..b5a3d232 100644
--- a/src/lib/util/getTokenTypeByToken.ts
+++ b/src/lib/util/getTokenTypeByToken.ts
@@ -1,5 +1,5 @@
-import { Token } from "markdown-it";
-import { RenderRules } from "../renderRules";
+import {Token} from "markdown-it";
+import {RenderRules} from "../renderRules";
import TextToken from "./Token";
const regSelectOpenClose = /_open|_close/g;
@@ -28,7 +28,7 @@ const regSelectOpenClose = /_open|_close/g;
* @return {String}
*/
export default function getTokenTypeByToken(
- token: Token | TextToken
+ token: Token | TextToken,
): keyof RenderRules {
let cleanedType: keyof RenderRules | "heading" = "unknown";
diff --git a/src/lib/util/groupTextTokens.ts b/src/lib/util/groupTextTokens.ts
index d5c5ccd3..d4478a1e 100644
--- a/src/lib/util/groupTextTokens.ts
+++ b/src/lib/util/groupTextTokens.ts
@@ -1,8 +1,8 @@
-import { Token } from "markdown-it";
+import {Token} from "markdown-it";
import TextToken from "./Token";
export default function groupTextTokens(
- tokens: (Token | TextToken)[]
+ tokens: (Token | TextToken)[],
): (Token | TextToken)[] {
const result: (Token | TextToken)[] = [];
diff --git a/src/lib/util/hasParents.ts b/src/lib/util/hasParents.ts
index d23ecc35..53bf84c1 100644
--- a/src/lib/util/hasParents.ts
+++ b/src/lib/util/hasParents.ts
@@ -1,4 +1,4 @@
-import { ASTNode } from "../types";
+import {ASTNode} from "../types";
export default function hasParents(parents: ASTNode[], type: string): boolean {
return parents.findIndex((el) => el.type === type) > -1;
diff --git a/src/lib/util/omitListItemParagraph.ts b/src/lib/util/omitListItemParagraph.ts
index 7b9c0c0c..ee05abff 100644
--- a/src/lib/util/omitListItemParagraph.ts
+++ b/src/lib/util/omitListItemParagraph.ts
@@ -1,8 +1,8 @@
-import { Token } from "markdown-it";
+import {Token} from "markdown-it";
import TextToken from "./Token";
export default function omitListItemParagraph(
- tokens: (Token | TextToken)[]
+ tokens: (Token | TextToken)[],
): (Token | TextToken)[] {
// used to ensure that we remove the correct ending paragraph token
let depth: number | null = null;
diff --git a/src/lib/util/openUrl.ts b/src/lib/util/openUrl.ts
index dd71856d..06be37cb 100644
--- a/src/lib/util/openUrl.ts
+++ b/src/lib/util/openUrl.ts
@@ -1,15 +1,19 @@
-import { Linking } from "react-native";
+import {Linking} from "react-native";
export default function openUrl(
url: string,
- customCallback?: (url: string) => boolean
+ customCallback?: (url: string) => boolean,
): void {
if (customCallback) {
const result = customCallback(url);
if (url && result && typeof result === "boolean") {
- Linking.openURL(url);
+ Linking.openURL(url).catch((err: unknown) => {
+ console.warn(err);
+ });
}
} else if (url) {
- Linking.openURL(url);
+ Linking.openURL(url).catch((err: unknown) => {
+ console.warn(err);
+ });
}
}
diff --git a/src/lib/util/removeTextStyleProps.ts b/src/lib/util/removeTextStyleProps.ts
index b4e5f740..bb44078f 100644
--- a/src/lib/util/removeTextStyleProps.ts
+++ b/src/lib/util/removeTextStyleProps.ts
@@ -1,15 +1,16 @@
-import { ViewStyle } from "react-native";
+import {ViewStyle} from "react-native";
import textStyleProps from "../data/textStyleProps";
export default function removeTextStyleProps(style: ViewStyle): ViewStyle {
const intersection = textStyleProps.filter((value) =>
- Object.keys(style).includes(value)
+ Object.keys(style).includes(value),
);
- const obj = { ...style };
+ const obj = {...style};
intersection.forEach((value) => {
- // @ts-ignore
+ // @ts-expect-error this is fine
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
delete obj[value];
});
diff --git a/src/lib/util/renderInlineAsText.ts b/src/lib/util/renderInlineAsText.ts
index 3d9101d6..5bf26105 100644
--- a/src/lib/util/renderInlineAsText.ts
+++ b/src/lib/util/renderInlineAsText.ts
@@ -1,9 +1,9 @@
-import { Token } from "markdown-it";
+import {Token} from "markdown-it";
export default function renderInlineAsText(tokens: Token[]): string {
- var result = "";
+ let result = "";
- for (var i = 0, len = tokens.length; i < len; i++) {
+ for (let i = 0, len = tokens.length; i < len; i++) {
if (tokens[i].type === "text") {
result += tokens[i].content;
} else if (tokens[i].type === "image") {
diff --git a/src/lib/util/stringToTokens.ts b/src/lib/util/stringToTokens.ts
index 9d327ae3..ceb48e70 100644
--- a/src/lib/util/stringToTokens.ts
+++ b/src/lib/util/stringToTokens.ts
@@ -1,8 +1,8 @@
-import MarkdownIt, { Token } from "markdown-it";
+import MarkdownIt, {Token} from "markdown-it";
export function stringToTokens(
source: string,
- markdownIt: MarkdownIt
+ markdownIt: MarkdownIt,
): Token[] {
let result: Token[] = [];
try {
diff --git a/src/lib/util/tokensToAST.ts b/src/lib/util/tokensToAST.ts
index dd8f23d2..c132091f 100644
--- a/src/lib/util/tokensToAST.ts
+++ b/src/lib/util/tokensToAST.ts
@@ -1,7 +1,7 @@
-import getUniqueID from "./getUniqueID";
+import {Token} from "markdown-it";
+import {ASTNode} from "../types";
import getTokenTypeByToken from "./getTokenTypeByToken";
-import { Token } from "markdown-it";
-import { ASTNode } from "../types";
+import getUniqueID from "./getUniqueID";
import TextToken from "./Token";
function createNode(token: Token | TextToken, tokenIndex: number): ASTNode {
@@ -13,7 +13,7 @@ function createNode(token: Token | TextToken, tokenIndex: number): ASTNode {
if (token.attrs) {
attributes = token.attrs.reduce((prev, curr) => {
const [name, value] = curr;
- return { ...prev, [name]: value };
+ return {...prev, [name]: value};
}, {});
}
@@ -21,7 +21,7 @@ function createNode(token: Token | TextToken, tokenIndex: number): ASTNode {
type,
sourceType: token.type,
sourceInfo: token.info,
- sourceMeta: token.meta,
+ sourceMeta: token.meta as unknown,
block: token.block,
markup: token.markup,
key: getUniqueID() + "_" + type,
@@ -33,8 +33,8 @@ function createNode(token: Token | TextToken, tokenIndex: number): ASTNode {
};
}
-export default function tokensToAST(tokens: (Token | TextToken)[]): ASTNode[] {
- let stack = [];
+export default function tokensToAST(tokens?: (Token | TextToken)[]): ASTNode[] {
+ const stack = [];
let children: ASTNode[] = [];
if (!tokens || tokens.length === 0) {
diff --git a/tsconfig.tsbuildinfo b/tsconfig.tsbuildinfo
index bc51d918..6bf8f8a4 100644
--- a/tsconfig.tsbuildinfo
+++ b/tsconfig.tsbuildinfo
@@ -1 +1 @@
-{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/@types/linkify-it/build/index.cjs.d.ts","./node_modules/@types/mdurl/build/index.cjs.d.ts","./node_modules/@types/markdown-it/dist/index.cjs.d.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/prop-types/index.d.ts","./node_modules/@types/react/index.d.ts","./node_modules/react-native/types/modules/BatchedBridge.d.ts","./node_modules/react-native/types/modules/Codegen.d.ts","./node_modules/react-native/types/modules/Devtools.d.ts","./node_modules/react-native/types/modules/globals.d.ts","./node_modules/react-native/types/modules/LaunchScreen.d.ts","./node_modules/react-native/types/private/Utilities.d.ts","./node_modules/react-native/types/public/Insets.d.ts","./node_modules/react-native/types/public/ReactNativeTypes.d.ts","./node_modules/react-native/Libraries/Types/CoreEventTypes.d.ts","./node_modules/react-native/types/public/ReactNativeRenderer.d.ts","./node_modules/react-native/Libraries/Components/Touchable/Touchable.d.ts","./node_modules/react-native/Libraries/Components/View/ViewAccessibility.d.ts","./node_modules/react-native/Libraries/Components/View/ViewPropTypes.d.ts","./node_modules/react-native/Libraries/Components/RefreshControl/RefreshControl.d.ts","./node_modules/react-native/Libraries/Components/ScrollView/ScrollView.d.ts","./node_modules/react-native/Libraries/Components/View/View.d.ts","./node_modules/react-native/Libraries/Image/ImageResizeMode.d.ts","./node_modules/react-native/Libraries/Image/ImageSource.d.ts","./node_modules/react-native/Libraries/Image/Image.d.ts","./node_modules/@react-native/virtualized-lists/Lists/VirtualizedList.d.ts","./node_modules/@react-native/virtualized-lists/index.d.ts","./node_modules/react-native/Libraries/Lists/FlatList.d.ts","./node_modules/react-native/Libraries/ReactNative/RendererProxy.d.ts","./node_modules/react-native/Libraries/Lists/SectionList.d.ts","./node_modules/react-native/Libraries/Text/Text.d.ts","./node_modules/react-native/Libraries/Animated/Animated.d.ts","./node_modules/react-native/Libraries/StyleSheet/StyleSheetTypes.d.ts","./node_modules/react-native/Libraries/StyleSheet/StyleSheet.d.ts","./node_modules/react-native/Libraries/StyleSheet/processColor.d.ts","./node_modules/react-native/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts","./node_modules/react-native/Libraries/Alert/Alert.d.ts","./node_modules/react-native/Libraries/Animated/Easing.d.ts","./node_modules/react-native/Libraries/Animated/useAnimatedValue.d.ts","./node_modules/react-native/Libraries/vendor/emitter/EventEmitter.d.ts","./node_modules/react-native/Libraries/EventEmitter/RCTDeviceEventEmitter.d.ts","./node_modules/react-native/Libraries/EventEmitter/RCTNativeAppEventEmitter.d.ts","./node_modules/react-native/Libraries/AppState/AppState.d.ts","./node_modules/react-native/Libraries/BatchedBridge/NativeModules.d.ts","./node_modules/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts","./node_modules/react-native/Libraries/Components/ActivityIndicator/ActivityIndicator.d.ts","./node_modules/react-native/Libraries/Components/Clipboard/Clipboard.d.ts","./node_modules/react-native/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.d.ts","./node_modules/react-native/Libraries/EventEmitter/NativeEventEmitter.d.ts","./node_modules/react-native/Libraries/Components/Keyboard/Keyboard.d.ts","./node_modules/react-native/types/private/TimerMixin.d.ts","./node_modules/react-native/Libraries/Components/Keyboard/KeyboardAvoidingView.d.ts","./node_modules/react-native/Libraries/Components/Pressable/Pressable.d.ts","./node_modules/react-native/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.d.ts","./node_modules/react-native/Libraries/Components/SafeAreaView/SafeAreaView.d.ts","./node_modules/react-native/Libraries/Components/StatusBar/StatusBar.d.ts","./node_modules/react-native/Libraries/Components/Switch/Switch.d.ts","./node_modules/react-native/Libraries/Components/TextInput/InputAccessoryView.d.ts","./node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts","./node_modules/react-native/Libraries/Components/ToastAndroid/ToastAndroid.d.ts","./node_modules/react-native/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts","./node_modules/react-native/Libraries/Components/Touchable/TouchableHighlight.d.ts","./node_modules/react-native/Libraries/Components/Touchable/TouchableOpacity.d.ts","./node_modules/react-native/Libraries/Components/Touchable/TouchableNativeFeedback.d.ts","./node_modules/react-native/Libraries/Components/Button.d.ts","./node_modules/react-native/Libraries/Core/registerCallableModule.d.ts","./node_modules/react-native/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts","./node_modules/react-native/Libraries/Interaction/InteractionManager.d.ts","./node_modules/react-native/Libraries/Interaction/PanResponder.d.ts","./node_modules/react-native/Libraries/LayoutAnimation/LayoutAnimation.d.ts","./node_modules/react-native/Libraries/Linking/Linking.d.ts","./node_modules/react-native/Libraries/LogBox/LogBox.d.ts","./node_modules/react-native/Libraries/Modal/Modal.d.ts","./node_modules/react-native/Libraries/Performance/Systrace.d.ts","./node_modules/react-native/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts","./node_modules/react-native/Libraries/PushNotificationIOS/PushNotificationIOS.d.ts","./node_modules/react-native/Libraries/Utilities/IPerformanceLogger.d.ts","./node_modules/react-native/Libraries/ReactNative/AppRegistry.d.ts","./node_modules/react-native/Libraries/ReactNative/I18nManager.d.ts","./node_modules/react-native/Libraries/ReactNative/RootTag.d.ts","./node_modules/react-native/Libraries/ReactNative/UIManager.d.ts","./node_modules/react-native/Libraries/ReactNative/requireNativeComponent.d.ts","./node_modules/react-native/Libraries/Settings/Settings.d.ts","./node_modules/react-native/Libraries/Share/Share.d.ts","./node_modules/react-native/Libraries/StyleSheet/PlatformColorValueTypesIOS.d.ts","./node_modules/react-native/Libraries/StyleSheet/PlatformColorValueTypes.d.ts","./node_modules/react-native/Libraries/TurboModule/RCTExport.d.ts","./node_modules/react-native/Libraries/TurboModule/TurboModuleRegistry.d.ts","./node_modules/react-native/Libraries/Utilities/Appearance.d.ts","./node_modules/react-native/Libraries/Utilities/BackHandler.d.ts","./node_modules/react-native/Libraries/Utilities/DevSettings.d.ts","./node_modules/react-native/Libraries/Utilities/Dimensions.d.ts","./node_modules/react-native/Libraries/Utilities/PixelRatio.d.ts","./node_modules/react-native/Libraries/Utilities/Platform.d.ts","./node_modules/react-native/Libraries/Vibration/Vibration.d.ts","./node_modules/react-native/Libraries/YellowBox/YellowBoxDeprecated.d.ts","./node_modules/react-native/Libraries/vendor/core/ErrorUtils.d.ts","./node_modules/react-native/types/public/DeprecatedPropertiesAlias.d.ts","./node_modules/react-native/types/index.d.ts","./src/lib/util/getUniqueID.ts","./node_modules/css-to-react-native/index.d.ts","./src/lib/util/convertAdditionalStyles.ts","./src/lib/data/textStyleProps.ts","./src/lib/types.ts","./src/lib/util/hasParents.ts","./src/lib/util/openUrl.ts","./src/lib/renderRules.tsx","./src/lib/AstRenderer.ts","./src/lib/util/Token.ts","./src/lib/util/getTokenTypeByToken.ts","./src/lib/util/tokensToAST.ts","./src/lib/util/stringToTokens.ts","./src/lib/util/flattenInlineTokens.ts","./src/lib/util/renderInlineAsText.ts","./src/lib/util/cleanupTokens.ts","./src/lib/util/groupTextTokens.ts","./src/lib/util/omitListItemParagraph.ts","./src/lib/parser.ts","./src/lib/styles.ts","./src/lib/util/removeTextStyleProps.ts","./src/index.tsx"],"fileIdsList":[[57,150],[77],[51,52],[54,55,56],[85,86],[57,66,72,73,76,79,81,82,85],[83],[93],[57,65,91],[57,63,65,66,70,84,85],[57,85,114,115],[57,63,65,66,70,85],[91,100],[57,63,70,84,85,102],[57,64,66,69,70,73,84,85],[57,63,65,70,85],[57,63,65,70],[57,63,64,66,68,70,71,84,85],[57,85],[57,84,85],[57,63,65,66,69,70,84,85,91,102],[57,64,66],[57,73,84,85,112],[57,63,68,85,112,114],[57,73,112],[57,63,64,66,68,69,84,85,102],[66],[57,64,66,67,68,69,84,85],[91],[92],[57,63,64,65,66,69,74,75,84,85],[66,67],[57,72,73,78,84,85],[57,72,78,80,84,85],[57,66,70],[57,84,128],[57],[57,65],[65],[85],[84],[74,83,85],[57,63,65,66,69,84,85],[138],[100],[58,59,60,61,62,64,65,66,67,68,69,70,71,72,73,74,75,76,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149],[150],[60],[53,57,150,151,154,155,156,157,158,159,162,163,169,170,171],[57,150,151,153,154,155,158],[53,57,155,160,162,163,166,167,168],[57,150,154,155,156,157],[158],[53],[53,160,161,164,165],[152],[53,160],[53,158,160],[155],[150,154],[53,151,155,160,161]],"fileInfos":[{"version":"44e584d4f6444f58791784f1d530875970993129442a847597db702a073ca68c","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"6920e1448680767498a0b77c6a00a8e77d14d62c3da8967b171f1ddffa3c18e4","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"45d8ccb3dfd57355eb29749919142d4321a0aa4df6acdfc54e30433d7176600a","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1a94697425a99354df73d9c8291e2ecd4dddd370aed4023c2d6dee6cccb32666","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3f9fc0ec0b96a9e642f11eda09c0be83a61c7b336977f8b9fdb1e9788e925fe","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"479553e3779be7d4f68e9f40cdb82d038e5ef7592010100410723ceced22a0f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"d3d7b04b45033f57351c8434f60b6be1ea71a2dfec2d0a0c3c83badbb0e3e693","affectsGlobalScope":true,"impliedFormat":1},{"version":"956d27abdea9652e8368ce029bb1e0b9174e9678a273529f426df4b3d90abd60","affectsGlobalScope":true,"impliedFormat":1},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true,"impliedFormat":1},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"742f21debb3937c3839a63245648238555bdab1ea095d43fd10c88a64029bf76","impliedFormat":1},{"version":"0944f27ebff4b20646b71e7e3faaaae50a6debd40bc63e225de1320dd15c5795","impliedFormat":1},{"version":"8a7219b41d3c1c93f3f3b779146f313efade2404eeece88dcd366df7e2364977","impliedFormat":1},{"version":"36a2e4c9a67439aca5f91bb304611d5ae6e20d420503e96c230cf8fcdc948d94","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","impliedFormat":1},{"version":"ed6b820c54de95b2510bb673490d61c7f2187f532a339d8d04981645a918961f","impliedFormat":1},{"version":"aa17748c522bd586f8712b1a308ea23af59c309b2fd278f6d4f406647c72e659","affectsGlobalScope":true,"impliedFormat":1},{"version":"3a909e8789a4f8b5377ef3fb8dc10d0c0a090c03f2e40aab599534727457475a","affectsGlobalScope":true,"impliedFormat":1},{"version":"2b47c8df863142d9383f948c987e1ebd25ade3867aeb4ae60e9d6009035dfe46","impliedFormat":1},{"version":"b8dd45aa6e099a5f564edcabfe8114096b096eb1ffaa343dd6f3fe73f1a6e85e","impliedFormat":1},{"version":"38e8ac2d182bd3f85d28de9bdf1386c19a319f9c0280aa43960204c353b07878","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc4db28f3510994e45bbabba1ee33e9a0d27dab33d4c8a5844cee8c85438a058","impliedFormat":1},{"version":"232f660363b3b189f7be7822ed71e907195d1a85bc8d55d2b7ce3f09b2136938","impliedFormat":1},{"version":"e745388cfad9efb4e5a9a15a2c6b66d54094dd82f8d0c2551064e216f7b51526","impliedFormat":1},{"version":"53390c21d095fb54e6c0b8351cbf7f4008f096ade9717bc5ee75e340bc3dfa30","impliedFormat":1},{"version":"71493b2c538dffa1e3e968b55b70984b542cc6e488012850865f72768ff32630","impliedFormat":1},{"version":"8ebf448e9837fda1a368acbb575b0e28843d5b2a3fda04bce76248b64326ea49","impliedFormat":1},{"version":"91b9f6241fca7843985aa31157cfa08cc724c77d91145a4d834d27cdde099c05","impliedFormat":1},{"version":"8b94ac8c460c9a2578ca3308fecfcf034e21af89e9c287c97710e9717ffae133","impliedFormat":1},{"version":"a7266bcc42f8ec0f31f319c2dd8100411b4d7b8a534235cb00a719f1c8a2a42e","impliedFormat":1},{"version":"3dfa3a6f2a62259b56fa7bcebfbacf886848dfa037298be5bed07c7a0381ee4f","impliedFormat":1},{"version":"a1e3cda52746919d2a95784ce0b1b9ffa22052209aab5f54e079e7b920f5339e","impliedFormat":1},{"version":"1882680f8c88c5648d603408dd1943857ca831a815e33d3126be8368f7a69252","impliedFormat":1},{"version":"f387a979388291b2688ba0f604e3ae78874f5f777616b448d34109762a4f05a9","impliedFormat":1},{"version":"cae0fb826d8a88749189b8a924dfcb5d3ad629e3bc5ec934195fbd83fa48b068","impliedFormat":1},{"version":"376b8482d1224aa83f4521590672304e30ba847d0b87b9e1a62b2e60a5c788f2","impliedFormat":1},{"version":"488242948cc48ee6413a159c60bcaf70de15db01364741737a962662f1a127a5","impliedFormat":1},{"version":"42bacb33cddecbcfe3e043ee1117ba848801749e44f947626765b3e0aec74b1c","impliedFormat":1},{"version":"b326790c20287ad266b5fcd0c388e2a83320a24747856727dcb70c7bbd489dfc","impliedFormat":1},{"version":"cd2156bc8e4d54d52a2817d1b6f4629a5dd3173b1d8bb0fc893ee678d6a78ecd","impliedFormat":1},{"version":"60526d9010e8ccb2a76a59821061463464c3acd5bc7a50320df6d2e4e0d6e4f7","impliedFormat":1},{"version":"562cce1c8e14e8d5a55d1931cb1848b1df49cc7b1024356d56f3550ed57ad67f","impliedFormat":1},{"version":"623fa4efc706bb9956d0ae94b13321c6617655bf8ebdb270c9792bb398f82e44","impliedFormat":1},{"version":"f20c96192f5841cbf982d2c1989c1e9fdef41c4a9db7543edff131007bf1dbfb","impliedFormat":1},{"version":"79d6871ce0da76f4c865a58daa509d5c8a10545d510b804501daa5d0626e7028","impliedFormat":1},{"version":"9054417b5760061bc5fe31f9eee5dc9bf018339b0617d3c65dd1673c8e3c0f25","impliedFormat":1},{"version":"442856ad0787bc213f659e134c204ad0d502179aa216bf700faefb5572208358","impliedFormat":1},{"version":"443702ca8101ef0adc827c2cc530ca93cf98d41e36ce4399efb9bc833ad9cb62","impliedFormat":1},{"version":"c94f70562ae60797cce564c3bebbaaf1752c327d5063d6ac152aa5ca1616c267","impliedFormat":1},{"version":"2aeb5fcdfc884b16015617d263fd8d1a8513f7efe23880be4e5f0bdb3794b37c","impliedFormat":1},{"version":"fd412dd6372493eb8e3e95cae8687d35e4d34dde905a33e0ee47b74224cdd6ab","impliedFormat":1},{"version":"b561170fbe8d4292425e1dfa52406c8d97575681f7a5e420d11d9f72f7c29e38","impliedFormat":1},{"version":"5fe94f3f6411a0f6293f16fdc8e02ee61138941847ce91d6f6800c97fac22fcd","impliedFormat":1},{"version":"7f7c0ecc3eeeef905a3678e540947f4fbbc1a9c76075419dcc5fbfc3df59cb0b","impliedFormat":1},{"version":"df3303018d45c92be73fb4a282d5a242579f96235f5e0f8981983102caf5feca","impliedFormat":1},{"version":"35db266b474b3b9dfd0bc7d25dff3926cc227de45394262f3783b8b174182a16","impliedFormat":1},{"version":"8205e62a7310ac0513747f6d84175400680cff372559bc5fbe2df707194a295d","impliedFormat":1},{"version":"084d0df6805570b6dc6c8b49c3a71d5bdfe59606901e0026c63945b68d4b080a","impliedFormat":1},{"version":"8387fa3287992c71702756fe6ecea68e2f8f2c5aa434493e3afe4817dd4a4787","impliedFormat":1},{"version":"0f066f9654e700a9cf79c75553c934eb14296aa80583bd2b5d07e2d582a3f4ee","impliedFormat":1},{"version":"269c5d54104033b70331343bd931c9933852a882391ed6bd98c3d8b7d6465d22","impliedFormat":1},{"version":"a56b8577aaf471d9e60582065a8193269310e8cae48c1ce4111ed03216f5f715","impliedFormat":1},{"version":"486ae83cd51b813095f6716f06cc9b2cf480ad1d6c7f8ec59674d6c858cd2407","impliedFormat":1},{"version":"fff527e2567a24dd634a30268f1aa8a220315fed9c513d70ee872e54f67f27f3","impliedFormat":1},{"version":"5dd0ff735b3f2e642c3f16bcfb3dc4ecebb679a70e43cfb19ab5fd84d8faaeed","impliedFormat":1},{"version":"d1d78d1ef0f21ac77cdc436d2a4d56592453a8a2e51af2040ec9a69a5d35e4de","impliedFormat":1},{"version":"bc55b91274e43f88030c9cfe2c4217fae57894c3c302173ab6e9743c29484e3d","impliedFormat":1},{"version":"8bb22f70bfd7bf186631fa565c9202ee6a1009ffb961197b7d092b5a1e1d56b1","impliedFormat":1},{"version":"77282216c61bcef9a700db98e142301d5a7d988d3076286029da63e415e98a42","impliedFormat":1},{"version":"6c28f4f95aaa6c3c8b1a0681c29f446b0bf0ed1aa5aa11e8b2ca6fc9e066e9f2","impliedFormat":1},{"version":"64ce8e260a1362d4cadd6c753581a912a9869d4a53ec6e733dc61018f9250f5d","impliedFormat":1},{"version":"85a915dbb768b89cb92f5e6c165d776bfebd065883c34fee4e0219c3ed321b47","impliedFormat":1},{"version":"83df2f39cb14971adea51d1c84e7d146a34e9b7f84ad118450a51bdc3138412c","impliedFormat":1},{"version":"b96364fcb0c9d521e7618346b00acf3fe16ccf9368404ceac1658edee7b6332c","impliedFormat":1},{"version":"bdb2b70c74908c92ec41d8dd8375a195cb3bb07523e4de642b2b2dfbde249ca6","impliedFormat":1},{"version":"7b329f4137a552073f504022acbf8cd90d49cc5e5529791bef508f76ff774854","impliedFormat":1},{"version":"f63bbbffcfc897d22f34cf19ae13405cd267b1783cd21ec47d8a2d02947c98c1","impliedFormat":1},{"version":"7889f4932dfa7b1126cdc17914d85d80b5860cc3d62ba329494007e8aab45430","impliedFormat":1},{"version":"d9725ef7f60a791668f7fb808eb90b1789feaaef989a686fefc0f7546a51dcdc","impliedFormat":1},{"version":"df55b9be6ba19a6f77487e09dc7a94d7c9bf66094d35ea168dbd4bac42c46b8f","impliedFormat":1},{"version":"595125f3e088b883d104622ef10e6b7d5875ff6976bbe4d7dca090a3e2dca513","impliedFormat":1},{"version":"8ebb6f0603bf481e893311c49e4d2e2061413c51b9ba5898cd9b0a01f5ef19c8","impliedFormat":1},{"version":"e0d7eed4ba363df3faadb8e617f95f9fc8adfbb00b87db7ade4a1098d6cf1e90","impliedFormat":1},{"version":"38faab59a79924ce5eb4f2f3e7e7db91e74d425b4183f908cc014be213f0d971","impliedFormat":1},{"version":"de115595321ce012c456f512a799679bfc874f0ac0a4928a8429557bb25086aa","impliedFormat":1},{"version":"cdca67bd898deff48e3acb05fb44500b5ebce16c26a8ec99dee1522cf9879795","impliedFormat":1},{"version":"0524cab11ba9048d151d93cc666d3908fda329eec6b1642e9a936093e6d79f28","impliedFormat":1},{"version":"869073d7523e75f45bd65b2072865c60002d5e0cbd3d17831e999cf011312778","impliedFormat":1},{"version":"bc7b5906a6ce6c5744a640c314e020856be6c50a693e77dc12aff2d77b12ca76","impliedFormat":1},{"version":"56503e377bc1344f155e4e3115a772cb4e59350c0b8131e3e1fb2750ac491608","impliedFormat":1},{"version":"6b579287217ee1320ee1c6cfec5f6730f3a1f91daab000f7131558ee531b2bf8","impliedFormat":1},{"version":"e2ddb2877f5a841866f4fc772a601b58e90ac8399b35f9a06535be81b8e08b47","impliedFormat":1},{"version":"a793636667598e739a52684033037a67dc2d9db37fab727623626ef19aa5abb9","impliedFormat":1},{"version":"b15d6238a86bc0fc2368da429249b96c260debc0cec3eb7b5f838ad32587c129","impliedFormat":1},{"version":"9a9fba3a20769b0a74923e7032997451b61c1bd371c519429b29019399040d74","impliedFormat":1},{"version":"4b10e2fe52cb61035e58df3f1fdd926dd0fe9cf1a2302f92916da324332fb4e0","impliedFormat":1},{"version":"d1092ae8d6017f359f4758115f588e089848cc8fb359f7ba045b1a1cf3668a49","impliedFormat":1},{"version":"ddae9195b0da7b25a585ef43365f4dc5204a746b155fbee71e6ee1a9193fb69f","impliedFormat":1},{"version":"32dbced998ce74c5e76ce87044d0b4071857576dde36b0c6ed1d5957ce9cf5b5","impliedFormat":1},{"version":"5bc29a9918feba88816b71e32960cf11243b77b76630e9e87cad961e5e1d31d0","impliedFormat":1},{"version":"341ffa358628577f490f128f3880c01d50ef31412d1be012bb1cd959b0a383ea","impliedFormat":1},{"version":"ecc1b8878c8033bde0204b85e26fe1af6847805427759e5723882c848a11e134","impliedFormat":1},{"version":"cfc9c32553ad3b5be38342bc8731397438a93531118e1a226a8c79ad255b4f0c","impliedFormat":1},{"version":"16e5b5b023c2a1119c1878a51714861c56255778de0a7fe378391876a15f7433","impliedFormat":1},{"version":"52e8612d284467b4417143ca8fe54d30145fdfc3815f5b5ea9b14b677f422be5","impliedFormat":1},{"version":"a090a8a3b0ef2cceeb089acf4df95df72e7d934215896afe264ff6f734d66d15","impliedFormat":1},{"version":"a0259c6054e3ed2c5fb705b6638e384446cbcdf7fd2072c659b43bd56e214b9a","impliedFormat":1},{"version":"005319c82222e57934c7b211013eb6931829e46b2a61c5d9a1c3c25f8dc3ea90","impliedFormat":1},{"version":"151f422f08c8ca67b77c5c39d49278b4df452ef409237c8219be109ae3cdae9d","impliedFormat":1},{"version":"6466cbb0aa561e1c1a87850a1f066692f1692a0a9513c508a3886cd66a62dae8","affectsGlobalScope":true,"impliedFormat":1},{"version":"bb5cfe79e5f80bd06b0cb8d75274f7710ccb0ba269d35ab06c45dad7bf50a450","signature":"9f2c77b3670856f0be5fd1a504cbc163606ceed481860513eca72634b32d3c7d","impliedFormat":1},{"version":"6d1d31f1786b80ab882f0844f2c99767f6f0c6538e94a4292775e8e741c6a802","impliedFormat":1},{"version":"57271ace81d2865cc16c47eb125f0f34d38ce536989895e8d6c9236f5fca4e1d","signature":"2a9464ab1154680f9a45713ad52ee914229ef5a0100cd8a7dc41e9c8dc8563c3","impliedFormat":1},{"version":"3a72663f675bb47f1c4a42ddf03d0b94442f767d270231af2c3e65a81a195d94","signature":"66b9118e963c55e4311125a3312c9d946106d43d9def22ed3f41bd52462a4c80","impliedFormat":1},{"version":"2c81020b79f5e9f087e7f5b3665533450999dfba029db049020a02581649422a","signature":"43b56e7f904cbc5ea05d44daa7a46044ffa69e065868df65b003157dbd5956fe","impliedFormat":1},{"version":"83c3cf713a4561204ae2316b33266be18e8dd858823f14f8ba02a47ba359d92f","signature":"d728c1eb02f8384410cf59b5698c2d9f52c7ad655e839d6dbb1f1ad64877cadf","impliedFormat":1},{"version":"6bf6420b513f4b548ba2da6baf7fd9ef8c13f7125ddfbdbfb8e04a206131c040","signature":"8158a29454ce0c7ddb8bd1e17062ce64f9c6d2fa4d8c844ade50a4189da2b05d","impliedFormat":1},{"version":"22110b658bd84f2cc193bf941e2313dc799f592424b5376fffd5fe21e1b15f87","signature":"79119a0b05f41118afb2d66ae50d7a36a4df53e9ea25d545ad008513afe7e510","impliedFormat":1},{"version":"eb7fd9013b9782bf257fc968373728f46ee6ed18e0b4530350e143656833ebd6","signature":"8c0faac21b200b337ed21f09ffedab948ed83200b1b41e4b2e5e1c751bd11c3b","impliedFormat":1},{"version":"5d810ff49a73754dbecd14c8936c32d1e1c42af8c3635ec72380d4f1b2009670","signature":"ea588380242774f14bbbbdce180cb43218d5cf788f864d311015910a428a7ec5","impliedFormat":1},{"version":"25057b50fcc66651f1acb841a0f872d844151a32eb9332b49f2b9723ccac711d","signature":"2b3d74e32bb0bd3cd9965f28ba76e5b6587232bf5dbe440f0363231849e42a93","impliedFormat":1},{"version":"b2e3018573b49a4f2a8c6b2b7472fb6c665de88b833a47169c4a565d1518a4af","signature":"b6c08b3fdc441e99db8d4c55838f76fa2024855eb6c64dd86bb77d831b29a449","impliedFormat":1},{"version":"b58f80095cd5db44743fa90aa4c24f70c1e820445f2f42d7cbe5f82450e111ce","signature":"b064caa285e15d91ac315e46f7a970940452b4a8f1c071736ca18a48faa98348","impliedFormat":1},{"version":"5c70463772e79053d76ed4ca991e48a369c8c1a0a55f1b7bdb98964b93c97064","signature":"7214a8af60b4039a192bf3460cf48b16c27272aed494e16c8fb375cbcab8a669","impliedFormat":1},{"version":"ee072494ac2f54647366f670806e13c59d6ac15b95b118c7d489c40d9c1c718f","signature":"d45382d88b9f313315c4693a3aceb2d137db236ed435726ccc3cb5f4f95fb696","impliedFormat":1},{"version":"bffccb7cd6245db255a421592298c1b84e141cf6a1c45c523d54bbf21607b4b3","signature":"ef963a484a85f604c7e9a105f7e53e6176e1d5cdb5d50c69b15188fa94b7ac07","impliedFormat":1},{"version":"4b7a89c94d301e1322e826c3ec402886e290cef23b5cd772e4ed1fceb0820181","signature":"f5d48ed660a093a592fb4d6711e62cacc74112af8ef529921da1d69850cb7246","impliedFormat":1},{"version":"b76ab52fed35ea1483b53a1a5b8065fa196291b29d38516f4310cca617b836a8","signature":"ed66b549cf33c8068d2d68f0e3cb42eb5476e55fcc730fb0d4853e22df31355b","impliedFormat":1},{"version":"ff2bcfc8ea435e32cf3e46979a50badc7cd0ff3adc3a827a6acc264b3c2b04d4","signature":"6d19e497dbbd0db80757a13d2ed759939d8f651a1d063570bc21359319f375b1","impliedFormat":1},{"version":"fabeb2404bc5ee310dd52d7ed4322914f57e1a7e3ec6fc59da04728b80d4f07e","signature":"8660e950fd61b3f60ae718284fef7d215011ed9d19ddf110ab688b9a69fc5e64","impliedFormat":1},{"version":"411aac6f5713c193891ac8c9bcc0db7a37159da7f91e412dd86e827ecc8c61f0","signature":"5ade073342145585fc0e64759dfcec8d0289e94abc75d2fb333522956c4f5a4b","impliedFormat":1},{"version":"d91770e85017b2623e7bc749dcc2357256cdc10bc041ff80eec21b6028158a05","signature":"68e069b7ef4d7fad012b2aab487ccd1ab728fadc06240683ce520642a7961451","impliedFormat":1}],"root":[151,[153,172]],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"declarationMap":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"jsx":1,"module":199,"noImplicitAny":true,"noImplicitThis":true,"noUncheckedIndexedAccess":false,"outDir":"./dist","rootDir":"./src","skipDefaultLibCheck":false,"sourceMap":true,"strict":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":8,"useUnknownInCatchVariables":true},"referencedMap":[[77,1],[78,2],[53,3],[57,4],[87,5],[83,6],[90,7],[94,8],[96,9],[97,10],[116,11],[99,12],[101,13],[103,14],[104,15],[105,16],[71,16],[106,17],[72,18],[107,19],[108,10],[109,20],[110,21],[68,22],[113,23],[115,24],[114,25],[112,26],[73,17],[69,27],[70,28],[100,29],[92,29],[93,30],[76,31],[119,29],[120,32],[122,13],[79,33],[81,34],[124,35],[129,36],[80,37],[131,37],[132,38],[133,39],[135,40],[137,40],[136,40],[85,41],[84,42],[86,40],[82,43],[139,44],[66,38],[140,8],[141,8],[142,45],[143,29],[147,37],[150,46],[59,47],[60,48],[149,47],[67,27],[65,37],[172,49],[159,50],[169,51],[158,52],[170,47],[155,53],[160,54],[166,55],[153,56],[164,57],[161,58],[167,57],[156,59],[168,57],[157,47],[171,60],[165,54],[163,54],[162,61]],"version":"5.6.3"}
\ No newline at end of file
+{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/@types/linkify-it/build/index.cjs.d.ts","./node_modules/@types/mdurl/build/index.cjs.d.ts","./node_modules/@types/markdown-it/dist/index.cjs.d.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/prop-types/index.d.ts","./node_modules/@types/react/index.d.ts","./node_modules/react-native/types/modules/BatchedBridge.d.ts","./node_modules/react-native/types/modules/Codegen.d.ts","./node_modules/react-native/types/modules/Devtools.d.ts","./node_modules/react-native/types/modules/globals.d.ts","./node_modules/react-native/types/modules/LaunchScreen.d.ts","./node_modules/react-native/types/private/Utilities.d.ts","./node_modules/react-native/types/public/Insets.d.ts","./node_modules/react-native/types/public/ReactNativeTypes.d.ts","./node_modules/react-native/Libraries/Types/CoreEventTypes.d.ts","./node_modules/react-native/types/public/ReactNativeRenderer.d.ts","./node_modules/react-native/Libraries/Components/Touchable/Touchable.d.ts","./node_modules/react-native/Libraries/Components/View/ViewAccessibility.d.ts","./node_modules/react-native/Libraries/Components/View/ViewPropTypes.d.ts","./node_modules/react-native/Libraries/Components/RefreshControl/RefreshControl.d.ts","./node_modules/react-native/Libraries/Components/ScrollView/ScrollView.d.ts","./node_modules/react-native/Libraries/Components/View/View.d.ts","./node_modules/react-native/Libraries/Image/ImageResizeMode.d.ts","./node_modules/react-native/Libraries/Image/ImageSource.d.ts","./node_modules/react-native/Libraries/Image/Image.d.ts","./node_modules/@react-native/virtualized-lists/Lists/VirtualizedList.d.ts","./node_modules/@react-native/virtualized-lists/index.d.ts","./node_modules/react-native/Libraries/Lists/FlatList.d.ts","./node_modules/react-native/Libraries/ReactNative/RendererProxy.d.ts","./node_modules/react-native/Libraries/Lists/SectionList.d.ts","./node_modules/react-native/Libraries/Text/Text.d.ts","./node_modules/react-native/Libraries/Animated/Animated.d.ts","./node_modules/react-native/Libraries/StyleSheet/StyleSheetTypes.d.ts","./node_modules/react-native/Libraries/StyleSheet/StyleSheet.d.ts","./node_modules/react-native/Libraries/StyleSheet/processColor.d.ts","./node_modules/react-native/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts","./node_modules/react-native/Libraries/Alert/Alert.d.ts","./node_modules/react-native/Libraries/Animated/Easing.d.ts","./node_modules/react-native/Libraries/Animated/useAnimatedValue.d.ts","./node_modules/react-native/Libraries/vendor/emitter/EventEmitter.d.ts","./node_modules/react-native/Libraries/EventEmitter/RCTDeviceEventEmitter.d.ts","./node_modules/react-native/Libraries/EventEmitter/RCTNativeAppEventEmitter.d.ts","./node_modules/react-native/Libraries/AppState/AppState.d.ts","./node_modules/react-native/Libraries/BatchedBridge/NativeModules.d.ts","./node_modules/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts","./node_modules/react-native/Libraries/Components/ActivityIndicator/ActivityIndicator.d.ts","./node_modules/react-native/Libraries/Components/Clipboard/Clipboard.d.ts","./node_modules/react-native/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.d.ts","./node_modules/react-native/Libraries/EventEmitter/NativeEventEmitter.d.ts","./node_modules/react-native/Libraries/Components/Keyboard/Keyboard.d.ts","./node_modules/react-native/types/private/TimerMixin.d.ts","./node_modules/react-native/Libraries/Components/Keyboard/KeyboardAvoidingView.d.ts","./node_modules/react-native/Libraries/Components/Pressable/Pressable.d.ts","./node_modules/react-native/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.d.ts","./node_modules/react-native/Libraries/Components/SafeAreaView/SafeAreaView.d.ts","./node_modules/react-native/Libraries/Components/StatusBar/StatusBar.d.ts","./node_modules/react-native/Libraries/Components/Switch/Switch.d.ts","./node_modules/react-native/Libraries/Components/TextInput/InputAccessoryView.d.ts","./node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts","./node_modules/react-native/Libraries/Components/ToastAndroid/ToastAndroid.d.ts","./node_modules/react-native/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts","./node_modules/react-native/Libraries/Components/Touchable/TouchableHighlight.d.ts","./node_modules/react-native/Libraries/Components/Touchable/TouchableOpacity.d.ts","./node_modules/react-native/Libraries/Components/Touchable/TouchableNativeFeedback.d.ts","./node_modules/react-native/Libraries/Components/Button.d.ts","./node_modules/react-native/Libraries/Core/registerCallableModule.d.ts","./node_modules/react-native/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts","./node_modules/react-native/Libraries/Interaction/InteractionManager.d.ts","./node_modules/react-native/Libraries/Interaction/PanResponder.d.ts","./node_modules/react-native/Libraries/LayoutAnimation/LayoutAnimation.d.ts","./node_modules/react-native/Libraries/Linking/Linking.d.ts","./node_modules/react-native/Libraries/LogBox/LogBox.d.ts","./node_modules/react-native/Libraries/Modal/Modal.d.ts","./node_modules/react-native/Libraries/Performance/Systrace.d.ts","./node_modules/react-native/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts","./node_modules/react-native/Libraries/PushNotificationIOS/PushNotificationIOS.d.ts","./node_modules/react-native/Libraries/Utilities/IPerformanceLogger.d.ts","./node_modules/react-native/Libraries/ReactNative/AppRegistry.d.ts","./node_modules/react-native/Libraries/ReactNative/I18nManager.d.ts","./node_modules/react-native/Libraries/ReactNative/RootTag.d.ts","./node_modules/react-native/Libraries/ReactNative/UIManager.d.ts","./node_modules/react-native/Libraries/ReactNative/requireNativeComponent.d.ts","./node_modules/react-native/Libraries/Settings/Settings.d.ts","./node_modules/react-native/Libraries/Share/Share.d.ts","./node_modules/react-native/Libraries/StyleSheet/PlatformColorValueTypesIOS.d.ts","./node_modules/react-native/Libraries/StyleSheet/PlatformColorValueTypes.d.ts","./node_modules/react-native/Libraries/TurboModule/RCTExport.d.ts","./node_modules/react-native/Libraries/TurboModule/TurboModuleRegistry.d.ts","./node_modules/react-native/Libraries/Utilities/Appearance.d.ts","./node_modules/react-native/Libraries/Utilities/BackHandler.d.ts","./node_modules/react-native/Libraries/Utilities/DevSettings.d.ts","./node_modules/react-native/Libraries/Utilities/Dimensions.d.ts","./node_modules/react-native/Libraries/Utilities/PixelRatio.d.ts","./node_modules/react-native/Libraries/Utilities/Platform.d.ts","./node_modules/react-native/Libraries/Vibration/Vibration.d.ts","./node_modules/react-native/Libraries/YellowBox/YellowBoxDeprecated.d.ts","./node_modules/react-native/Libraries/vendor/core/ErrorUtils.d.ts","./node_modules/react-native/types/public/DeprecatedPropertiesAlias.d.ts","./node_modules/react-native/types/index.d.ts","./node_modules/css-to-react-native/index.d.ts","./src/lib/util/convertAdditionalStyles.ts","./src/lib/util/getUniqueID.ts","./src/lib/data/textStyleProps.ts","./src/lib/types.ts","./src/lib/util/hasParents.ts","./src/lib/util/openUrl.ts","./src/lib/renderRules.tsx","./src/lib/AstRenderer.ts","./src/lib/util/Token.ts","./src/lib/util/getTokenTypeByToken.ts","./src/lib/util/tokensToAST.ts","./src/lib/util/stringToTokens.ts","./src/lib/util/flattenInlineTokens.ts","./src/lib/util/renderInlineAsText.ts","./src/lib/util/cleanupTokens.ts","./src/lib/util/groupTextTokens.ts","./src/lib/util/omitListItemParagraph.ts","./src/lib/parser.ts","./src/lib/styles.ts","./src/lib/util/removeTextStyleProps.ts","./src/index.tsx"],"fileIdsList":[[57,150],[77],[51,52],[54,55,56],[85,86],[57,66,72,73,76,79,81,82,85],[83],[93],[57,65,91],[57,63,65,66,70,84,85],[57,85,114,115],[57,63,65,66,70,85],[91,100],[57,63,70,84,85,102],[57,64,66,69,70,73,84,85],[57,63,65,70,85],[57,63,65,70],[57,63,64,66,68,70,71,84,85],[57,85],[57,84,85],[57,63,65,66,69,70,84,85,91,102],[57,64,66],[57,73,84,85,112],[57,63,68,85,112,114],[57,73,112],[57,63,64,66,68,69,84,85,102],[66],[57,64,66,67,68,69,84,85],[91],[92],[57,63,64,65,66,69,74,75,84,85],[66,67],[57,72,73,78,84,85],[57,72,78,80,84,85],[57,66,70],[57,84,128],[57],[57,65],[65],[85],[84],[74,83,85],[57,63,65,66,69,84,85],[138],[100],[58,59,60,61,62,64,65,66,67,68,69,70,71,72,73,74,75,76,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149],[150],[60],[53,57,150,153,154,155,156,157,158,159,162,163,169,170,171],[57,150,152,153,154,155,158],[53,57,155,160,162,163,166,167,168],[57,150,154,155,156,157],[158],[53],[53,160,161,164,165],[151],[53,160],[53,158,160],[155],[150,154],[53,153,155,160,161]],"fileInfos":[{"version":"44e584d4f6444f58791784f1d530875970993129442a847597db702a073ca68c","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"6920e1448680767498a0b77c6a00a8e77d14d62c3da8967b171f1ddffa3c18e4","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"45d8ccb3dfd57355eb29749919142d4321a0aa4df6acdfc54e30433d7176600a","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1a94697425a99354df73d9c8291e2ecd4dddd370aed4023c2d6dee6cccb32666","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3f9fc0ec0b96a9e642f11eda09c0be83a61c7b336977f8b9fdb1e9788e925fe","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"479553e3779be7d4f68e9f40cdb82d038e5ef7592010100410723ceced22a0f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"d3d7b04b45033f57351c8434f60b6be1ea71a2dfec2d0a0c3c83badbb0e3e693","affectsGlobalScope":true,"impliedFormat":1},{"version":"956d27abdea9652e8368ce029bb1e0b9174e9678a273529f426df4b3d90abd60","affectsGlobalScope":true,"impliedFormat":1},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true,"impliedFormat":1},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"742f21debb3937c3839a63245648238555bdab1ea095d43fd10c88a64029bf76","impliedFormat":1},{"version":"0944f27ebff4b20646b71e7e3faaaae50a6debd40bc63e225de1320dd15c5795","impliedFormat":1},{"version":"8a7219b41d3c1c93f3f3b779146f313efade2404eeece88dcd366df7e2364977","impliedFormat":1},{"version":"36a2e4c9a67439aca5f91bb304611d5ae6e20d420503e96c230cf8fcdc948d94","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","impliedFormat":1},{"version":"ed6b820c54de95b2510bb673490d61c7f2187f532a339d8d04981645a918961f","impliedFormat":1},{"version":"aa17748c522bd586f8712b1a308ea23af59c309b2fd278f6d4f406647c72e659","affectsGlobalScope":true,"impliedFormat":1},{"version":"3a909e8789a4f8b5377ef3fb8dc10d0c0a090c03f2e40aab599534727457475a","affectsGlobalScope":true,"impliedFormat":1},{"version":"2b47c8df863142d9383f948c987e1ebd25ade3867aeb4ae60e9d6009035dfe46","impliedFormat":1},{"version":"b8dd45aa6e099a5f564edcabfe8114096b096eb1ffaa343dd6f3fe73f1a6e85e","impliedFormat":1},{"version":"38e8ac2d182bd3f85d28de9bdf1386c19a319f9c0280aa43960204c353b07878","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc4db28f3510994e45bbabba1ee33e9a0d27dab33d4c8a5844cee8c85438a058","impliedFormat":1},{"version":"232f660363b3b189f7be7822ed71e907195d1a85bc8d55d2b7ce3f09b2136938","impliedFormat":1},{"version":"e745388cfad9efb4e5a9a15a2c6b66d54094dd82f8d0c2551064e216f7b51526","impliedFormat":1},{"version":"53390c21d095fb54e6c0b8351cbf7f4008f096ade9717bc5ee75e340bc3dfa30","impliedFormat":1},{"version":"71493b2c538dffa1e3e968b55b70984b542cc6e488012850865f72768ff32630","impliedFormat":1},{"version":"8ebf448e9837fda1a368acbb575b0e28843d5b2a3fda04bce76248b64326ea49","impliedFormat":1},{"version":"91b9f6241fca7843985aa31157cfa08cc724c77d91145a4d834d27cdde099c05","impliedFormat":1},{"version":"8b94ac8c460c9a2578ca3308fecfcf034e21af89e9c287c97710e9717ffae133","impliedFormat":1},{"version":"a7266bcc42f8ec0f31f319c2dd8100411b4d7b8a534235cb00a719f1c8a2a42e","impliedFormat":1},{"version":"3dfa3a6f2a62259b56fa7bcebfbacf886848dfa037298be5bed07c7a0381ee4f","impliedFormat":1},{"version":"a1e3cda52746919d2a95784ce0b1b9ffa22052209aab5f54e079e7b920f5339e","impliedFormat":1},{"version":"1882680f8c88c5648d603408dd1943857ca831a815e33d3126be8368f7a69252","impliedFormat":1},{"version":"f387a979388291b2688ba0f604e3ae78874f5f777616b448d34109762a4f05a9","impliedFormat":1},{"version":"cae0fb826d8a88749189b8a924dfcb5d3ad629e3bc5ec934195fbd83fa48b068","impliedFormat":1},{"version":"376b8482d1224aa83f4521590672304e30ba847d0b87b9e1a62b2e60a5c788f2","impliedFormat":1},{"version":"488242948cc48ee6413a159c60bcaf70de15db01364741737a962662f1a127a5","impliedFormat":1},{"version":"42bacb33cddecbcfe3e043ee1117ba848801749e44f947626765b3e0aec74b1c","impliedFormat":1},{"version":"b326790c20287ad266b5fcd0c388e2a83320a24747856727dcb70c7bbd489dfc","impliedFormat":1},{"version":"cd2156bc8e4d54d52a2817d1b6f4629a5dd3173b1d8bb0fc893ee678d6a78ecd","impliedFormat":1},{"version":"60526d9010e8ccb2a76a59821061463464c3acd5bc7a50320df6d2e4e0d6e4f7","impliedFormat":1},{"version":"562cce1c8e14e8d5a55d1931cb1848b1df49cc7b1024356d56f3550ed57ad67f","impliedFormat":1},{"version":"623fa4efc706bb9956d0ae94b13321c6617655bf8ebdb270c9792bb398f82e44","impliedFormat":1},{"version":"f20c96192f5841cbf982d2c1989c1e9fdef41c4a9db7543edff131007bf1dbfb","impliedFormat":1},{"version":"79d6871ce0da76f4c865a58daa509d5c8a10545d510b804501daa5d0626e7028","impliedFormat":1},{"version":"9054417b5760061bc5fe31f9eee5dc9bf018339b0617d3c65dd1673c8e3c0f25","impliedFormat":1},{"version":"442856ad0787bc213f659e134c204ad0d502179aa216bf700faefb5572208358","impliedFormat":1},{"version":"443702ca8101ef0adc827c2cc530ca93cf98d41e36ce4399efb9bc833ad9cb62","impliedFormat":1},{"version":"c94f70562ae60797cce564c3bebbaaf1752c327d5063d6ac152aa5ca1616c267","impliedFormat":1},{"version":"2aeb5fcdfc884b16015617d263fd8d1a8513f7efe23880be4e5f0bdb3794b37c","impliedFormat":1},{"version":"fd412dd6372493eb8e3e95cae8687d35e4d34dde905a33e0ee47b74224cdd6ab","impliedFormat":1},{"version":"b561170fbe8d4292425e1dfa52406c8d97575681f7a5e420d11d9f72f7c29e38","impliedFormat":1},{"version":"5fe94f3f6411a0f6293f16fdc8e02ee61138941847ce91d6f6800c97fac22fcd","impliedFormat":1},{"version":"7f7c0ecc3eeeef905a3678e540947f4fbbc1a9c76075419dcc5fbfc3df59cb0b","impliedFormat":1},{"version":"df3303018d45c92be73fb4a282d5a242579f96235f5e0f8981983102caf5feca","impliedFormat":1},{"version":"35db266b474b3b9dfd0bc7d25dff3926cc227de45394262f3783b8b174182a16","impliedFormat":1},{"version":"8205e62a7310ac0513747f6d84175400680cff372559bc5fbe2df707194a295d","impliedFormat":1},{"version":"084d0df6805570b6dc6c8b49c3a71d5bdfe59606901e0026c63945b68d4b080a","impliedFormat":1},{"version":"8387fa3287992c71702756fe6ecea68e2f8f2c5aa434493e3afe4817dd4a4787","impliedFormat":1},{"version":"0f066f9654e700a9cf79c75553c934eb14296aa80583bd2b5d07e2d582a3f4ee","impliedFormat":1},{"version":"269c5d54104033b70331343bd931c9933852a882391ed6bd98c3d8b7d6465d22","impliedFormat":1},{"version":"a56b8577aaf471d9e60582065a8193269310e8cae48c1ce4111ed03216f5f715","impliedFormat":1},{"version":"486ae83cd51b813095f6716f06cc9b2cf480ad1d6c7f8ec59674d6c858cd2407","impliedFormat":1},{"version":"fff527e2567a24dd634a30268f1aa8a220315fed9c513d70ee872e54f67f27f3","impliedFormat":1},{"version":"5dd0ff735b3f2e642c3f16bcfb3dc4ecebb679a70e43cfb19ab5fd84d8faaeed","impliedFormat":1},{"version":"d1d78d1ef0f21ac77cdc436d2a4d56592453a8a2e51af2040ec9a69a5d35e4de","impliedFormat":1},{"version":"bc55b91274e43f88030c9cfe2c4217fae57894c3c302173ab6e9743c29484e3d","impliedFormat":1},{"version":"8bb22f70bfd7bf186631fa565c9202ee6a1009ffb961197b7d092b5a1e1d56b1","impliedFormat":1},{"version":"77282216c61bcef9a700db98e142301d5a7d988d3076286029da63e415e98a42","impliedFormat":1},{"version":"6c28f4f95aaa6c3c8b1a0681c29f446b0bf0ed1aa5aa11e8b2ca6fc9e066e9f2","impliedFormat":1},{"version":"64ce8e260a1362d4cadd6c753581a912a9869d4a53ec6e733dc61018f9250f5d","impliedFormat":1},{"version":"85a915dbb768b89cb92f5e6c165d776bfebd065883c34fee4e0219c3ed321b47","impliedFormat":1},{"version":"83df2f39cb14971adea51d1c84e7d146a34e9b7f84ad118450a51bdc3138412c","impliedFormat":1},{"version":"b96364fcb0c9d521e7618346b00acf3fe16ccf9368404ceac1658edee7b6332c","impliedFormat":1},{"version":"bdb2b70c74908c92ec41d8dd8375a195cb3bb07523e4de642b2b2dfbde249ca6","impliedFormat":1},{"version":"7b329f4137a552073f504022acbf8cd90d49cc5e5529791bef508f76ff774854","impliedFormat":1},{"version":"f63bbbffcfc897d22f34cf19ae13405cd267b1783cd21ec47d8a2d02947c98c1","impliedFormat":1},{"version":"7889f4932dfa7b1126cdc17914d85d80b5860cc3d62ba329494007e8aab45430","impliedFormat":1},{"version":"d9725ef7f60a791668f7fb808eb90b1789feaaef989a686fefc0f7546a51dcdc","impliedFormat":1},{"version":"df55b9be6ba19a6f77487e09dc7a94d7c9bf66094d35ea168dbd4bac42c46b8f","impliedFormat":1},{"version":"595125f3e088b883d104622ef10e6b7d5875ff6976bbe4d7dca090a3e2dca513","impliedFormat":1},{"version":"8ebb6f0603bf481e893311c49e4d2e2061413c51b9ba5898cd9b0a01f5ef19c8","impliedFormat":1},{"version":"e0d7eed4ba363df3faadb8e617f95f9fc8adfbb00b87db7ade4a1098d6cf1e90","impliedFormat":1},{"version":"38faab59a79924ce5eb4f2f3e7e7db91e74d425b4183f908cc014be213f0d971","impliedFormat":1},{"version":"de115595321ce012c456f512a799679bfc874f0ac0a4928a8429557bb25086aa","impliedFormat":1},{"version":"cdca67bd898deff48e3acb05fb44500b5ebce16c26a8ec99dee1522cf9879795","impliedFormat":1},{"version":"0524cab11ba9048d151d93cc666d3908fda329eec6b1642e9a936093e6d79f28","impliedFormat":1},{"version":"869073d7523e75f45bd65b2072865c60002d5e0cbd3d17831e999cf011312778","impliedFormat":1},{"version":"bc7b5906a6ce6c5744a640c314e020856be6c50a693e77dc12aff2d77b12ca76","impliedFormat":1},{"version":"56503e377bc1344f155e4e3115a772cb4e59350c0b8131e3e1fb2750ac491608","impliedFormat":1},{"version":"6b579287217ee1320ee1c6cfec5f6730f3a1f91daab000f7131558ee531b2bf8","impliedFormat":1},{"version":"e2ddb2877f5a841866f4fc772a601b58e90ac8399b35f9a06535be81b8e08b47","impliedFormat":1},{"version":"a793636667598e739a52684033037a67dc2d9db37fab727623626ef19aa5abb9","impliedFormat":1},{"version":"b15d6238a86bc0fc2368da429249b96c260debc0cec3eb7b5f838ad32587c129","impliedFormat":1},{"version":"9a9fba3a20769b0a74923e7032997451b61c1bd371c519429b29019399040d74","impliedFormat":1},{"version":"4b10e2fe52cb61035e58df3f1fdd926dd0fe9cf1a2302f92916da324332fb4e0","impliedFormat":1},{"version":"d1092ae8d6017f359f4758115f588e089848cc8fb359f7ba045b1a1cf3668a49","impliedFormat":1},{"version":"ddae9195b0da7b25a585ef43365f4dc5204a746b155fbee71e6ee1a9193fb69f","impliedFormat":1},{"version":"32dbced998ce74c5e76ce87044d0b4071857576dde36b0c6ed1d5957ce9cf5b5","impliedFormat":1},{"version":"5bc29a9918feba88816b71e32960cf11243b77b76630e9e87cad961e5e1d31d0","impliedFormat":1},{"version":"341ffa358628577f490f128f3880c01d50ef31412d1be012bb1cd959b0a383ea","impliedFormat":1},{"version":"ecc1b8878c8033bde0204b85e26fe1af6847805427759e5723882c848a11e134","impliedFormat":1},{"version":"cfc9c32553ad3b5be38342bc8731397438a93531118e1a226a8c79ad255b4f0c","impliedFormat":1},{"version":"16e5b5b023c2a1119c1878a51714861c56255778de0a7fe378391876a15f7433","impliedFormat":1},{"version":"52e8612d284467b4417143ca8fe54d30145fdfc3815f5b5ea9b14b677f422be5","impliedFormat":1},{"version":"a090a8a3b0ef2cceeb089acf4df95df72e7d934215896afe264ff6f734d66d15","impliedFormat":1},{"version":"a0259c6054e3ed2c5fb705b6638e384446cbcdf7fd2072c659b43bd56e214b9a","impliedFormat":1},{"version":"005319c82222e57934c7b211013eb6931829e46b2a61c5d9a1c3c25f8dc3ea90","impliedFormat":1},{"version":"151f422f08c8ca67b77c5c39d49278b4df452ef409237c8219be109ae3cdae9d","impliedFormat":1},{"version":"6466cbb0aa561e1c1a87850a1f066692f1692a0a9513c508a3886cd66a62dae8","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d1d31f1786b80ab882f0844f2c99767f6f0c6538e94a4292775e8e741c6a802","impliedFormat":1},{"version":"4fed47227c29f71b82b4d21a9448e15492cdcc8b0858db30220178f05bbbeaa5","signature":"2a9464ab1154680f9a45713ad52ee914229ef5a0100cd8a7dc41e9c8dc8563c3","impliedFormat":1},{"version":"bb5cfe79e5f80bd06b0cb8d75274f7710ccb0ba269d35ab06c45dad7bf50a450","signature":"9f2c77b3670856f0be5fd1a504cbc163606ceed481860513eca72634b32d3c7d","impliedFormat":1},{"version":"c01cfa0f58e00bf8da8d4c5735784e1f181d5400a4ac81eedb7945788c0f0202","signature":"66b9118e963c55e4311125a3312c9d946106d43d9def22ed3f41bd52462a4c80","impliedFormat":1},{"version":"b411b5e0d027fad8b10c853e0bca6deb5c853c33434ba036b4b1c1aeed40cd14","signature":"74059c61aa14513a42afb684f2f27e698094baa9895f8e4b04a65b94375f5c40","impliedFormat":1},{"version":"fe5ee97529518a08f57ed224e67bfa96301e005bd08b5a5417344fcff97b3ac0","signature":"d728c1eb02f8384410cf59b5698c2d9f52c7ad655e839d6dbb1f1ad64877cadf","impliedFormat":1},{"version":"be7661a81fd349aa2baf5a7c29d0bd983a83ad685f4aa39c78dbc792c75e2ed9","signature":"8158a29454ce0c7ddb8bd1e17062ce64f9c6d2fa4d8c844ade50a4189da2b05d","impliedFormat":1},{"version":"083095f34bdcebdab08299946c14711451b411c27fce43b36c581c7872320281","signature":"79119a0b05f41118afb2d66ae50d7a36a4df53e9ea25d545ad008513afe7e510","impliedFormat":1},{"version":"9af86084a8ebbdad91aaae097e5a8a7da9fa391af3b5c23a92792d99e76f4677","signature":"d1ebadbf2f41d122d2910386bdc3e6080bce2b5d9707eb827acfc2736f2d911a","impliedFormat":1},{"version":"d66a64bd5ba6d512d47ccc0074cf9db23d7ea162de0739e8fcf77f0aeea37f3f","signature":"510cee1c8ec65773a4b4f970a8b04848bca6d2bfb4673fda9e7fe79cf669215c","impliedFormat":1},{"version":"f4f0f246a8a08617301f3b78229759623855253757b7b83f87447f2607a9e411","signature":"2b3d74e32bb0bd3cd9965f28ba76e5b6587232bf5dbe440f0363231849e42a93","impliedFormat":1},{"version":"c6c8073aa43181b3fb62e1db3462a8ed7d69980f44fb3ef805dc5d76114a443d","signature":"d160d34450c71d714ba809b84ab233881c3cbd582f2c129f8d7e20de2ea2e830","impliedFormat":1},{"version":"3561dd3bf6bb6e1afac607f92542b34e00203dd62a283d60f33c358b875de50f","signature":"b064caa285e15d91ac315e46f7a970940452b4a8f1c071736ca18a48faa98348","impliedFormat":1},{"version":"1bf3e9968191c32ae06a3d7bfd42555330950550c7319ac62d589da1c80e7e9f","signature":"7214a8af60b4039a192bf3460cf48b16c27272aed494e16c8fb375cbcab8a669","impliedFormat":1},{"version":"486302e6935a1024c28a1e21c4c2c6780bb32f24738b2e7ae576bf3515be21ec","signature":"d45382d88b9f313315c4693a3aceb2d137db236ed435726ccc3cb5f4f95fb696","impliedFormat":1},{"version":"98e00c2a3eab378b7026c6e83b0c8f89cffdec8bf39b96db5994951f457c9c84","signature":"ef963a484a85f604c7e9a105f7e53e6176e1d5cdb5d50c69b15188fa94b7ac07","impliedFormat":1},{"version":"a433d0f67aad0528586fb70ffd3a412221a98867fca8dc3df6eabcafbd2c1bd8","signature":"f5d48ed660a093a592fb4d6711e62cacc74112af8ef529921da1d69850cb7246","impliedFormat":1},{"version":"3944301fc3fecdfa3419d986f5e70a1ed82ddb44916072e076e42008877d66eb","signature":"ed66b549cf33c8068d2d68f0e3cb42eb5476e55fcc730fb0d4853e22df31355b","impliedFormat":1},{"version":"69202e2cda90a7dcf9eeb0ca62dec22f92acf669076829b44b627625c05830db","signature":"6d19e497dbbd0db80757a13d2ed759939d8f651a1d063570bc21359319f375b1","impliedFormat":1},{"version":"d4495febc498e1b9ebb71d5bec3120c93fc3971244b4a6a52da7b3006356aa39","signature":"8660e950fd61b3f60ae718284fef7d215011ed9d19ddf110ab688b9a69fc5e64","impliedFormat":1},{"version":"49c886c9ab3bedd4456c156d8d7b2cc02a167a1cb70a590a026f6ba54ebd2236","signature":"5ade073342145585fc0e64759dfcec8d0289e94abc75d2fb333522956c4f5a4b","impliedFormat":1},{"version":"9e2125dd17fd8f9b4546de01a8b30d8b45e8755a2461982c99e1638350f76a82","signature":"68e069b7ef4d7fad012b2aab487ccd1ab728fadc06240683ce520642a7961451","impliedFormat":1}],"root":[[152,172]],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"declarationMap":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"jsx":1,"module":199,"noImplicitAny":true,"noImplicitThis":true,"noUncheckedIndexedAccess":false,"outDir":"./dist","rootDir":"./src","skipDefaultLibCheck":false,"sourceMap":true,"strict":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":8,"useUnknownInCatchVariables":true},"referencedMap":[[77,1],[78,2],[53,3],[57,4],[87,5],[83,6],[90,7],[94,8],[96,9],[97,10],[116,11],[99,12],[101,13],[103,14],[104,15],[105,16],[71,16],[106,17],[72,18],[107,19],[108,10],[109,20],[110,21],[68,22],[113,23],[115,24],[114,25],[112,26],[73,17],[69,27],[70,28],[100,29],[92,29],[93,30],[76,31],[119,29],[120,32],[122,13],[79,33],[81,34],[124,35],[129,36],[80,37],[131,37],[132,38],[133,39],[135,40],[137,40],[136,40],[85,41],[84,42],[86,40],[82,43],[139,44],[66,38],[140,8],[141,8],[142,45],[143,29],[147,37],[150,46],[59,47],[60,48],[149,47],[67,27],[65,37],[172,49],[159,50],[169,51],[158,52],[170,47],[155,53],[160,54],[166,55],[152,56],[164,57],[161,58],[167,57],[156,59],[168,57],[157,47],[171,60],[165,54],[163,54],[162,61]],"affectedFilesPendingEmit":[[172,51],[159,51],[154,51],[169,51],[158,51],[170,51],[155,51],[160,51],[166,51],[152,51],[164,51],[161,51],[167,51],[156,51],[168,51],[157,51],[171,51],[165,51],[163,51],[162,51]],"version":"5.6.3"}
\ No newline at end of file
From 1be241b011b228ce48e41cf9c77618d070d5c248 Mon Sep 17 00:00:00 2001
From: Joshua Tag Howard
Date: Mon, 28 Oct 2024 21:31:30 +0000
Subject: [PATCH 4/8] Update .npmignore and package.json
---
.npmignore | 1 +
README.md | 10 ++++++++--
package.json | 5 +++--
tsconfig.tsbuildinfo | 2 +-
4 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/.npmignore b/.npmignore
index 5a3dd218..f34c5929 100644
--- a/.npmignore
+++ b/.npmignore
@@ -3,3 +3,4 @@
/bin
/docs
/doc
+/dist
\ No newline at end of file
diff --git a/README.md b/README.md
index 55087f5d..b58958a2 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,15 @@
# React Native Markdown Display [![npm version](https://badge.fury.io/js/react-native-markdown-display.svg)](https://badge.fury.io/js/react-native-markdown-display) [![Known Vulnerabilities](https://snyk.io/test/github/iamacup/react-native-markdown-display/badge.svg)](https://snyk.io/test/github/iamacup/react-native-markdown-display)
-\*\*This is a vendored copy of [@jonasmerlin/react-native-markdown-display](https://github.com/jonasmerlin/react-native-markdown-display)
-
It a 100% compatible CommonMark renderer, a react-native markdown renderer done right. This is **not** a web-view markdown renderer but a renderer that uses native components for all its elements. These components can be overwritten and styled as needed.
+## Credit
+
+- [mientjan/react-native-markdown-renderer](https://github.com/mientjan/react-native-markdown-renderer): Original library
+- [iamacup/react-native-markdown-display](https://github.com/iamacup/react-native-markdown-display): Fork
+- [jonasmerlin/react-native-markdown-display](https://github.com/jonasmerlin/react-native-markdown-display): Second Fork
+- [@jthoward64](https://github.com/jthoward64): Typescript port
+
+
### Compatibility with react-native-markdown-renderer
This is intended to be a replacement for react-native-markdown-renderer, with a variety of bug fixes and enhancements - **Due to how the new style rules work, there may be some tweaking needed**, [see how to style stuff section below](#How-to-style-stuff)
diff --git a/package.json b/package.json
index 1af7596b..0549e4fe 100644
--- a/package.json
+++ b/package.json
@@ -3,6 +3,7 @@
"description": "Markdown renderer for react-native, with CommonMark spec support + adds syntax extensions & sugar (URL autolinking, typographer), originally created by Mient-jan Stelling as react-native-markdown-renderer",
"main": "src/index.js",
"types": "src/index.d.ts",
+ "version": "0.1.0",
"scripts": {
"build": "tsc",
"watch": "tsc -w",
@@ -14,7 +15,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://github.com/jonasmerlin/react-native-markdown-display.git"
+ "url": "git+https://github.com/ukdanceblue/react-native-markdown-display.git"
},
"keywords": [
"react",
@@ -24,7 +25,7 @@
"commonmark",
"markdown-it"
],
- "author": "Mient-jan Stelling and Tom Pickard + others from the community",
+ "author": "Mient-jan Stelling and Tom Pickard + others from the community, ported to TypeScript by Tag Howard",
"license": "MIT",
"dependencies": {
"css-to-react-native": "^3.2.0",
diff --git a/tsconfig.tsbuildinfo b/tsconfig.tsbuildinfo
index 6bf8f8a4..0100964e 100644
--- a/tsconfig.tsbuildinfo
+++ b/tsconfig.tsbuildinfo
@@ -1 +1 @@
-{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/@types/linkify-it/build/index.cjs.d.ts","./node_modules/@types/mdurl/build/index.cjs.d.ts","./node_modules/@types/markdown-it/dist/index.cjs.d.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/prop-types/index.d.ts","./node_modules/@types/react/index.d.ts","./node_modules/react-native/types/modules/BatchedBridge.d.ts","./node_modules/react-native/types/modules/Codegen.d.ts","./node_modules/react-native/types/modules/Devtools.d.ts","./node_modules/react-native/types/modules/globals.d.ts","./node_modules/react-native/types/modules/LaunchScreen.d.ts","./node_modules/react-native/types/private/Utilities.d.ts","./node_modules/react-native/types/public/Insets.d.ts","./node_modules/react-native/types/public/ReactNativeTypes.d.ts","./node_modules/react-native/Libraries/Types/CoreEventTypes.d.ts","./node_modules/react-native/types/public/ReactNativeRenderer.d.ts","./node_modules/react-native/Libraries/Components/Touchable/Touchable.d.ts","./node_modules/react-native/Libraries/Components/View/ViewAccessibility.d.ts","./node_modules/react-native/Libraries/Components/View/ViewPropTypes.d.ts","./node_modules/react-native/Libraries/Components/RefreshControl/RefreshControl.d.ts","./node_modules/react-native/Libraries/Components/ScrollView/ScrollView.d.ts","./node_modules/react-native/Libraries/Components/View/View.d.ts","./node_modules/react-native/Libraries/Image/ImageResizeMode.d.ts","./node_modules/react-native/Libraries/Image/ImageSource.d.ts","./node_modules/react-native/Libraries/Image/Image.d.ts","./node_modules/@react-native/virtualized-lists/Lists/VirtualizedList.d.ts","./node_modules/@react-native/virtualized-lists/index.d.ts","./node_modules/react-native/Libraries/Lists/FlatList.d.ts","./node_modules/react-native/Libraries/ReactNative/RendererProxy.d.ts","./node_modules/react-native/Libraries/Lists/SectionList.d.ts","./node_modules/react-native/Libraries/Text/Text.d.ts","./node_modules/react-native/Libraries/Animated/Animated.d.ts","./node_modules/react-native/Libraries/StyleSheet/StyleSheetTypes.d.ts","./node_modules/react-native/Libraries/StyleSheet/StyleSheet.d.ts","./node_modules/react-native/Libraries/StyleSheet/processColor.d.ts","./node_modules/react-native/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts","./node_modules/react-native/Libraries/Alert/Alert.d.ts","./node_modules/react-native/Libraries/Animated/Easing.d.ts","./node_modules/react-native/Libraries/Animated/useAnimatedValue.d.ts","./node_modules/react-native/Libraries/vendor/emitter/EventEmitter.d.ts","./node_modules/react-native/Libraries/EventEmitter/RCTDeviceEventEmitter.d.ts","./node_modules/react-native/Libraries/EventEmitter/RCTNativeAppEventEmitter.d.ts","./node_modules/react-native/Libraries/AppState/AppState.d.ts","./node_modules/react-native/Libraries/BatchedBridge/NativeModules.d.ts","./node_modules/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts","./node_modules/react-native/Libraries/Components/ActivityIndicator/ActivityIndicator.d.ts","./node_modules/react-native/Libraries/Components/Clipboard/Clipboard.d.ts","./node_modules/react-native/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.d.ts","./node_modules/react-native/Libraries/EventEmitter/NativeEventEmitter.d.ts","./node_modules/react-native/Libraries/Components/Keyboard/Keyboard.d.ts","./node_modules/react-native/types/private/TimerMixin.d.ts","./node_modules/react-native/Libraries/Components/Keyboard/KeyboardAvoidingView.d.ts","./node_modules/react-native/Libraries/Components/Pressable/Pressable.d.ts","./node_modules/react-native/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.d.ts","./node_modules/react-native/Libraries/Components/SafeAreaView/SafeAreaView.d.ts","./node_modules/react-native/Libraries/Components/StatusBar/StatusBar.d.ts","./node_modules/react-native/Libraries/Components/Switch/Switch.d.ts","./node_modules/react-native/Libraries/Components/TextInput/InputAccessoryView.d.ts","./node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts","./node_modules/react-native/Libraries/Components/ToastAndroid/ToastAndroid.d.ts","./node_modules/react-native/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts","./node_modules/react-native/Libraries/Components/Touchable/TouchableHighlight.d.ts","./node_modules/react-native/Libraries/Components/Touchable/TouchableOpacity.d.ts","./node_modules/react-native/Libraries/Components/Touchable/TouchableNativeFeedback.d.ts","./node_modules/react-native/Libraries/Components/Button.d.ts","./node_modules/react-native/Libraries/Core/registerCallableModule.d.ts","./node_modules/react-native/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts","./node_modules/react-native/Libraries/Interaction/InteractionManager.d.ts","./node_modules/react-native/Libraries/Interaction/PanResponder.d.ts","./node_modules/react-native/Libraries/LayoutAnimation/LayoutAnimation.d.ts","./node_modules/react-native/Libraries/Linking/Linking.d.ts","./node_modules/react-native/Libraries/LogBox/LogBox.d.ts","./node_modules/react-native/Libraries/Modal/Modal.d.ts","./node_modules/react-native/Libraries/Performance/Systrace.d.ts","./node_modules/react-native/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts","./node_modules/react-native/Libraries/PushNotificationIOS/PushNotificationIOS.d.ts","./node_modules/react-native/Libraries/Utilities/IPerformanceLogger.d.ts","./node_modules/react-native/Libraries/ReactNative/AppRegistry.d.ts","./node_modules/react-native/Libraries/ReactNative/I18nManager.d.ts","./node_modules/react-native/Libraries/ReactNative/RootTag.d.ts","./node_modules/react-native/Libraries/ReactNative/UIManager.d.ts","./node_modules/react-native/Libraries/ReactNative/requireNativeComponent.d.ts","./node_modules/react-native/Libraries/Settings/Settings.d.ts","./node_modules/react-native/Libraries/Share/Share.d.ts","./node_modules/react-native/Libraries/StyleSheet/PlatformColorValueTypesIOS.d.ts","./node_modules/react-native/Libraries/StyleSheet/PlatformColorValueTypes.d.ts","./node_modules/react-native/Libraries/TurboModule/RCTExport.d.ts","./node_modules/react-native/Libraries/TurboModule/TurboModuleRegistry.d.ts","./node_modules/react-native/Libraries/Utilities/Appearance.d.ts","./node_modules/react-native/Libraries/Utilities/BackHandler.d.ts","./node_modules/react-native/Libraries/Utilities/DevSettings.d.ts","./node_modules/react-native/Libraries/Utilities/Dimensions.d.ts","./node_modules/react-native/Libraries/Utilities/PixelRatio.d.ts","./node_modules/react-native/Libraries/Utilities/Platform.d.ts","./node_modules/react-native/Libraries/Vibration/Vibration.d.ts","./node_modules/react-native/Libraries/YellowBox/YellowBoxDeprecated.d.ts","./node_modules/react-native/Libraries/vendor/core/ErrorUtils.d.ts","./node_modules/react-native/types/public/DeprecatedPropertiesAlias.d.ts","./node_modules/react-native/types/index.d.ts","./node_modules/css-to-react-native/index.d.ts","./src/lib/util/convertAdditionalStyles.ts","./src/lib/util/getUniqueID.ts","./src/lib/data/textStyleProps.ts","./src/lib/types.ts","./src/lib/util/hasParents.ts","./src/lib/util/openUrl.ts","./src/lib/renderRules.tsx","./src/lib/AstRenderer.ts","./src/lib/util/Token.ts","./src/lib/util/getTokenTypeByToken.ts","./src/lib/util/tokensToAST.ts","./src/lib/util/stringToTokens.ts","./src/lib/util/flattenInlineTokens.ts","./src/lib/util/renderInlineAsText.ts","./src/lib/util/cleanupTokens.ts","./src/lib/util/groupTextTokens.ts","./src/lib/util/omitListItemParagraph.ts","./src/lib/parser.ts","./src/lib/styles.ts","./src/lib/util/removeTextStyleProps.ts","./src/index.tsx"],"fileIdsList":[[57,150],[77],[51,52],[54,55,56],[85,86],[57,66,72,73,76,79,81,82,85],[83],[93],[57,65,91],[57,63,65,66,70,84,85],[57,85,114,115],[57,63,65,66,70,85],[91,100],[57,63,70,84,85,102],[57,64,66,69,70,73,84,85],[57,63,65,70,85],[57,63,65,70],[57,63,64,66,68,70,71,84,85],[57,85],[57,84,85],[57,63,65,66,69,70,84,85,91,102],[57,64,66],[57,73,84,85,112],[57,63,68,85,112,114],[57,73,112],[57,63,64,66,68,69,84,85,102],[66],[57,64,66,67,68,69,84,85],[91],[92],[57,63,64,65,66,69,74,75,84,85],[66,67],[57,72,73,78,84,85],[57,72,78,80,84,85],[57,66,70],[57,84,128],[57],[57,65],[65],[85],[84],[74,83,85],[57,63,65,66,69,84,85],[138],[100],[58,59,60,61,62,64,65,66,67,68,69,70,71,72,73,74,75,76,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149],[150],[60],[53,57,150,153,154,155,156,157,158,159,162,163,169,170,171],[57,150,152,153,154,155,158],[53,57,155,160,162,163,166,167,168],[57,150,154,155,156,157],[158],[53],[53,160,161,164,165],[151],[53,160],[53,158,160],[155],[150,154],[53,153,155,160,161]],"fileInfos":[{"version":"44e584d4f6444f58791784f1d530875970993129442a847597db702a073ca68c","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"6920e1448680767498a0b77c6a00a8e77d14d62c3da8967b171f1ddffa3c18e4","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"45d8ccb3dfd57355eb29749919142d4321a0aa4df6acdfc54e30433d7176600a","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1a94697425a99354df73d9c8291e2ecd4dddd370aed4023c2d6dee6cccb32666","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3f9fc0ec0b96a9e642f11eda09c0be83a61c7b336977f8b9fdb1e9788e925fe","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"479553e3779be7d4f68e9f40cdb82d038e5ef7592010100410723ceced22a0f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"d3d7b04b45033f57351c8434f60b6be1ea71a2dfec2d0a0c3c83badbb0e3e693","affectsGlobalScope":true,"impliedFormat":1},{"version":"956d27abdea9652e8368ce029bb1e0b9174e9678a273529f426df4b3d90abd60","affectsGlobalScope":true,"impliedFormat":1},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true,"impliedFormat":1},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"742f21debb3937c3839a63245648238555bdab1ea095d43fd10c88a64029bf76","impliedFormat":1},{"version":"0944f27ebff4b20646b71e7e3faaaae50a6debd40bc63e225de1320dd15c5795","impliedFormat":1},{"version":"8a7219b41d3c1c93f3f3b779146f313efade2404eeece88dcd366df7e2364977","impliedFormat":1},{"version":"36a2e4c9a67439aca5f91bb304611d5ae6e20d420503e96c230cf8fcdc948d94","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","impliedFormat":1},{"version":"ed6b820c54de95b2510bb673490d61c7f2187f532a339d8d04981645a918961f","impliedFormat":1},{"version":"aa17748c522bd586f8712b1a308ea23af59c309b2fd278f6d4f406647c72e659","affectsGlobalScope":true,"impliedFormat":1},{"version":"3a909e8789a4f8b5377ef3fb8dc10d0c0a090c03f2e40aab599534727457475a","affectsGlobalScope":true,"impliedFormat":1},{"version":"2b47c8df863142d9383f948c987e1ebd25ade3867aeb4ae60e9d6009035dfe46","impliedFormat":1},{"version":"b8dd45aa6e099a5f564edcabfe8114096b096eb1ffaa343dd6f3fe73f1a6e85e","impliedFormat":1},{"version":"38e8ac2d182bd3f85d28de9bdf1386c19a319f9c0280aa43960204c353b07878","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc4db28f3510994e45bbabba1ee33e9a0d27dab33d4c8a5844cee8c85438a058","impliedFormat":1},{"version":"232f660363b3b189f7be7822ed71e907195d1a85bc8d55d2b7ce3f09b2136938","impliedFormat":1},{"version":"e745388cfad9efb4e5a9a15a2c6b66d54094dd82f8d0c2551064e216f7b51526","impliedFormat":1},{"version":"53390c21d095fb54e6c0b8351cbf7f4008f096ade9717bc5ee75e340bc3dfa30","impliedFormat":1},{"version":"71493b2c538dffa1e3e968b55b70984b542cc6e488012850865f72768ff32630","impliedFormat":1},{"version":"8ebf448e9837fda1a368acbb575b0e28843d5b2a3fda04bce76248b64326ea49","impliedFormat":1},{"version":"91b9f6241fca7843985aa31157cfa08cc724c77d91145a4d834d27cdde099c05","impliedFormat":1},{"version":"8b94ac8c460c9a2578ca3308fecfcf034e21af89e9c287c97710e9717ffae133","impliedFormat":1},{"version":"a7266bcc42f8ec0f31f319c2dd8100411b4d7b8a534235cb00a719f1c8a2a42e","impliedFormat":1},{"version":"3dfa3a6f2a62259b56fa7bcebfbacf886848dfa037298be5bed07c7a0381ee4f","impliedFormat":1},{"version":"a1e3cda52746919d2a95784ce0b1b9ffa22052209aab5f54e079e7b920f5339e","impliedFormat":1},{"version":"1882680f8c88c5648d603408dd1943857ca831a815e33d3126be8368f7a69252","impliedFormat":1},{"version":"f387a979388291b2688ba0f604e3ae78874f5f777616b448d34109762a4f05a9","impliedFormat":1},{"version":"cae0fb826d8a88749189b8a924dfcb5d3ad629e3bc5ec934195fbd83fa48b068","impliedFormat":1},{"version":"376b8482d1224aa83f4521590672304e30ba847d0b87b9e1a62b2e60a5c788f2","impliedFormat":1},{"version":"488242948cc48ee6413a159c60bcaf70de15db01364741737a962662f1a127a5","impliedFormat":1},{"version":"42bacb33cddecbcfe3e043ee1117ba848801749e44f947626765b3e0aec74b1c","impliedFormat":1},{"version":"b326790c20287ad266b5fcd0c388e2a83320a24747856727dcb70c7bbd489dfc","impliedFormat":1},{"version":"cd2156bc8e4d54d52a2817d1b6f4629a5dd3173b1d8bb0fc893ee678d6a78ecd","impliedFormat":1},{"version":"60526d9010e8ccb2a76a59821061463464c3acd5bc7a50320df6d2e4e0d6e4f7","impliedFormat":1},{"version":"562cce1c8e14e8d5a55d1931cb1848b1df49cc7b1024356d56f3550ed57ad67f","impliedFormat":1},{"version":"623fa4efc706bb9956d0ae94b13321c6617655bf8ebdb270c9792bb398f82e44","impliedFormat":1},{"version":"f20c96192f5841cbf982d2c1989c1e9fdef41c4a9db7543edff131007bf1dbfb","impliedFormat":1},{"version":"79d6871ce0da76f4c865a58daa509d5c8a10545d510b804501daa5d0626e7028","impliedFormat":1},{"version":"9054417b5760061bc5fe31f9eee5dc9bf018339b0617d3c65dd1673c8e3c0f25","impliedFormat":1},{"version":"442856ad0787bc213f659e134c204ad0d502179aa216bf700faefb5572208358","impliedFormat":1},{"version":"443702ca8101ef0adc827c2cc530ca93cf98d41e36ce4399efb9bc833ad9cb62","impliedFormat":1},{"version":"c94f70562ae60797cce564c3bebbaaf1752c327d5063d6ac152aa5ca1616c267","impliedFormat":1},{"version":"2aeb5fcdfc884b16015617d263fd8d1a8513f7efe23880be4e5f0bdb3794b37c","impliedFormat":1},{"version":"fd412dd6372493eb8e3e95cae8687d35e4d34dde905a33e0ee47b74224cdd6ab","impliedFormat":1},{"version":"b561170fbe8d4292425e1dfa52406c8d97575681f7a5e420d11d9f72f7c29e38","impliedFormat":1},{"version":"5fe94f3f6411a0f6293f16fdc8e02ee61138941847ce91d6f6800c97fac22fcd","impliedFormat":1},{"version":"7f7c0ecc3eeeef905a3678e540947f4fbbc1a9c76075419dcc5fbfc3df59cb0b","impliedFormat":1},{"version":"df3303018d45c92be73fb4a282d5a242579f96235f5e0f8981983102caf5feca","impliedFormat":1},{"version":"35db266b474b3b9dfd0bc7d25dff3926cc227de45394262f3783b8b174182a16","impliedFormat":1},{"version":"8205e62a7310ac0513747f6d84175400680cff372559bc5fbe2df707194a295d","impliedFormat":1},{"version":"084d0df6805570b6dc6c8b49c3a71d5bdfe59606901e0026c63945b68d4b080a","impliedFormat":1},{"version":"8387fa3287992c71702756fe6ecea68e2f8f2c5aa434493e3afe4817dd4a4787","impliedFormat":1},{"version":"0f066f9654e700a9cf79c75553c934eb14296aa80583bd2b5d07e2d582a3f4ee","impliedFormat":1},{"version":"269c5d54104033b70331343bd931c9933852a882391ed6bd98c3d8b7d6465d22","impliedFormat":1},{"version":"a56b8577aaf471d9e60582065a8193269310e8cae48c1ce4111ed03216f5f715","impliedFormat":1},{"version":"486ae83cd51b813095f6716f06cc9b2cf480ad1d6c7f8ec59674d6c858cd2407","impliedFormat":1},{"version":"fff527e2567a24dd634a30268f1aa8a220315fed9c513d70ee872e54f67f27f3","impliedFormat":1},{"version":"5dd0ff735b3f2e642c3f16bcfb3dc4ecebb679a70e43cfb19ab5fd84d8faaeed","impliedFormat":1},{"version":"d1d78d1ef0f21ac77cdc436d2a4d56592453a8a2e51af2040ec9a69a5d35e4de","impliedFormat":1},{"version":"bc55b91274e43f88030c9cfe2c4217fae57894c3c302173ab6e9743c29484e3d","impliedFormat":1},{"version":"8bb22f70bfd7bf186631fa565c9202ee6a1009ffb961197b7d092b5a1e1d56b1","impliedFormat":1},{"version":"77282216c61bcef9a700db98e142301d5a7d988d3076286029da63e415e98a42","impliedFormat":1},{"version":"6c28f4f95aaa6c3c8b1a0681c29f446b0bf0ed1aa5aa11e8b2ca6fc9e066e9f2","impliedFormat":1},{"version":"64ce8e260a1362d4cadd6c753581a912a9869d4a53ec6e733dc61018f9250f5d","impliedFormat":1},{"version":"85a915dbb768b89cb92f5e6c165d776bfebd065883c34fee4e0219c3ed321b47","impliedFormat":1},{"version":"83df2f39cb14971adea51d1c84e7d146a34e9b7f84ad118450a51bdc3138412c","impliedFormat":1},{"version":"b96364fcb0c9d521e7618346b00acf3fe16ccf9368404ceac1658edee7b6332c","impliedFormat":1},{"version":"bdb2b70c74908c92ec41d8dd8375a195cb3bb07523e4de642b2b2dfbde249ca6","impliedFormat":1},{"version":"7b329f4137a552073f504022acbf8cd90d49cc5e5529791bef508f76ff774854","impliedFormat":1},{"version":"f63bbbffcfc897d22f34cf19ae13405cd267b1783cd21ec47d8a2d02947c98c1","impliedFormat":1},{"version":"7889f4932dfa7b1126cdc17914d85d80b5860cc3d62ba329494007e8aab45430","impliedFormat":1},{"version":"d9725ef7f60a791668f7fb808eb90b1789feaaef989a686fefc0f7546a51dcdc","impliedFormat":1},{"version":"df55b9be6ba19a6f77487e09dc7a94d7c9bf66094d35ea168dbd4bac42c46b8f","impliedFormat":1},{"version":"595125f3e088b883d104622ef10e6b7d5875ff6976bbe4d7dca090a3e2dca513","impliedFormat":1},{"version":"8ebb6f0603bf481e893311c49e4d2e2061413c51b9ba5898cd9b0a01f5ef19c8","impliedFormat":1},{"version":"e0d7eed4ba363df3faadb8e617f95f9fc8adfbb00b87db7ade4a1098d6cf1e90","impliedFormat":1},{"version":"38faab59a79924ce5eb4f2f3e7e7db91e74d425b4183f908cc014be213f0d971","impliedFormat":1},{"version":"de115595321ce012c456f512a799679bfc874f0ac0a4928a8429557bb25086aa","impliedFormat":1},{"version":"cdca67bd898deff48e3acb05fb44500b5ebce16c26a8ec99dee1522cf9879795","impliedFormat":1},{"version":"0524cab11ba9048d151d93cc666d3908fda329eec6b1642e9a936093e6d79f28","impliedFormat":1},{"version":"869073d7523e75f45bd65b2072865c60002d5e0cbd3d17831e999cf011312778","impliedFormat":1},{"version":"bc7b5906a6ce6c5744a640c314e020856be6c50a693e77dc12aff2d77b12ca76","impliedFormat":1},{"version":"56503e377bc1344f155e4e3115a772cb4e59350c0b8131e3e1fb2750ac491608","impliedFormat":1},{"version":"6b579287217ee1320ee1c6cfec5f6730f3a1f91daab000f7131558ee531b2bf8","impliedFormat":1},{"version":"e2ddb2877f5a841866f4fc772a601b58e90ac8399b35f9a06535be81b8e08b47","impliedFormat":1},{"version":"a793636667598e739a52684033037a67dc2d9db37fab727623626ef19aa5abb9","impliedFormat":1},{"version":"b15d6238a86bc0fc2368da429249b96c260debc0cec3eb7b5f838ad32587c129","impliedFormat":1},{"version":"9a9fba3a20769b0a74923e7032997451b61c1bd371c519429b29019399040d74","impliedFormat":1},{"version":"4b10e2fe52cb61035e58df3f1fdd926dd0fe9cf1a2302f92916da324332fb4e0","impliedFormat":1},{"version":"d1092ae8d6017f359f4758115f588e089848cc8fb359f7ba045b1a1cf3668a49","impliedFormat":1},{"version":"ddae9195b0da7b25a585ef43365f4dc5204a746b155fbee71e6ee1a9193fb69f","impliedFormat":1},{"version":"32dbced998ce74c5e76ce87044d0b4071857576dde36b0c6ed1d5957ce9cf5b5","impliedFormat":1},{"version":"5bc29a9918feba88816b71e32960cf11243b77b76630e9e87cad961e5e1d31d0","impliedFormat":1},{"version":"341ffa358628577f490f128f3880c01d50ef31412d1be012bb1cd959b0a383ea","impliedFormat":1},{"version":"ecc1b8878c8033bde0204b85e26fe1af6847805427759e5723882c848a11e134","impliedFormat":1},{"version":"cfc9c32553ad3b5be38342bc8731397438a93531118e1a226a8c79ad255b4f0c","impliedFormat":1},{"version":"16e5b5b023c2a1119c1878a51714861c56255778de0a7fe378391876a15f7433","impliedFormat":1},{"version":"52e8612d284467b4417143ca8fe54d30145fdfc3815f5b5ea9b14b677f422be5","impliedFormat":1},{"version":"a090a8a3b0ef2cceeb089acf4df95df72e7d934215896afe264ff6f734d66d15","impliedFormat":1},{"version":"a0259c6054e3ed2c5fb705b6638e384446cbcdf7fd2072c659b43bd56e214b9a","impliedFormat":1},{"version":"005319c82222e57934c7b211013eb6931829e46b2a61c5d9a1c3c25f8dc3ea90","impliedFormat":1},{"version":"151f422f08c8ca67b77c5c39d49278b4df452ef409237c8219be109ae3cdae9d","impliedFormat":1},{"version":"6466cbb0aa561e1c1a87850a1f066692f1692a0a9513c508a3886cd66a62dae8","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d1d31f1786b80ab882f0844f2c99767f6f0c6538e94a4292775e8e741c6a802","impliedFormat":1},{"version":"4fed47227c29f71b82b4d21a9448e15492cdcc8b0858db30220178f05bbbeaa5","signature":"2a9464ab1154680f9a45713ad52ee914229ef5a0100cd8a7dc41e9c8dc8563c3","impliedFormat":1},{"version":"bb5cfe79e5f80bd06b0cb8d75274f7710ccb0ba269d35ab06c45dad7bf50a450","signature":"9f2c77b3670856f0be5fd1a504cbc163606ceed481860513eca72634b32d3c7d","impliedFormat":1},{"version":"c01cfa0f58e00bf8da8d4c5735784e1f181d5400a4ac81eedb7945788c0f0202","signature":"66b9118e963c55e4311125a3312c9d946106d43d9def22ed3f41bd52462a4c80","impliedFormat":1},{"version":"b411b5e0d027fad8b10c853e0bca6deb5c853c33434ba036b4b1c1aeed40cd14","signature":"74059c61aa14513a42afb684f2f27e698094baa9895f8e4b04a65b94375f5c40","impliedFormat":1},{"version":"fe5ee97529518a08f57ed224e67bfa96301e005bd08b5a5417344fcff97b3ac0","signature":"d728c1eb02f8384410cf59b5698c2d9f52c7ad655e839d6dbb1f1ad64877cadf","impliedFormat":1},{"version":"be7661a81fd349aa2baf5a7c29d0bd983a83ad685f4aa39c78dbc792c75e2ed9","signature":"8158a29454ce0c7ddb8bd1e17062ce64f9c6d2fa4d8c844ade50a4189da2b05d","impliedFormat":1},{"version":"083095f34bdcebdab08299946c14711451b411c27fce43b36c581c7872320281","signature":"79119a0b05f41118afb2d66ae50d7a36a4df53e9ea25d545ad008513afe7e510","impliedFormat":1},{"version":"9af86084a8ebbdad91aaae097e5a8a7da9fa391af3b5c23a92792d99e76f4677","signature":"d1ebadbf2f41d122d2910386bdc3e6080bce2b5d9707eb827acfc2736f2d911a","impliedFormat":1},{"version":"d66a64bd5ba6d512d47ccc0074cf9db23d7ea162de0739e8fcf77f0aeea37f3f","signature":"510cee1c8ec65773a4b4f970a8b04848bca6d2bfb4673fda9e7fe79cf669215c","impliedFormat":1},{"version":"f4f0f246a8a08617301f3b78229759623855253757b7b83f87447f2607a9e411","signature":"2b3d74e32bb0bd3cd9965f28ba76e5b6587232bf5dbe440f0363231849e42a93","impliedFormat":1},{"version":"c6c8073aa43181b3fb62e1db3462a8ed7d69980f44fb3ef805dc5d76114a443d","signature":"d160d34450c71d714ba809b84ab233881c3cbd582f2c129f8d7e20de2ea2e830","impliedFormat":1},{"version":"3561dd3bf6bb6e1afac607f92542b34e00203dd62a283d60f33c358b875de50f","signature":"b064caa285e15d91ac315e46f7a970940452b4a8f1c071736ca18a48faa98348","impliedFormat":1},{"version":"1bf3e9968191c32ae06a3d7bfd42555330950550c7319ac62d589da1c80e7e9f","signature":"7214a8af60b4039a192bf3460cf48b16c27272aed494e16c8fb375cbcab8a669","impliedFormat":1},{"version":"486302e6935a1024c28a1e21c4c2c6780bb32f24738b2e7ae576bf3515be21ec","signature":"d45382d88b9f313315c4693a3aceb2d137db236ed435726ccc3cb5f4f95fb696","impliedFormat":1},{"version":"98e00c2a3eab378b7026c6e83b0c8f89cffdec8bf39b96db5994951f457c9c84","signature":"ef963a484a85f604c7e9a105f7e53e6176e1d5cdb5d50c69b15188fa94b7ac07","impliedFormat":1},{"version":"a433d0f67aad0528586fb70ffd3a412221a98867fca8dc3df6eabcafbd2c1bd8","signature":"f5d48ed660a093a592fb4d6711e62cacc74112af8ef529921da1d69850cb7246","impliedFormat":1},{"version":"3944301fc3fecdfa3419d986f5e70a1ed82ddb44916072e076e42008877d66eb","signature":"ed66b549cf33c8068d2d68f0e3cb42eb5476e55fcc730fb0d4853e22df31355b","impliedFormat":1},{"version":"69202e2cda90a7dcf9eeb0ca62dec22f92acf669076829b44b627625c05830db","signature":"6d19e497dbbd0db80757a13d2ed759939d8f651a1d063570bc21359319f375b1","impliedFormat":1},{"version":"d4495febc498e1b9ebb71d5bec3120c93fc3971244b4a6a52da7b3006356aa39","signature":"8660e950fd61b3f60ae718284fef7d215011ed9d19ddf110ab688b9a69fc5e64","impliedFormat":1},{"version":"49c886c9ab3bedd4456c156d8d7b2cc02a167a1cb70a590a026f6ba54ebd2236","signature":"5ade073342145585fc0e64759dfcec8d0289e94abc75d2fb333522956c4f5a4b","impliedFormat":1},{"version":"9e2125dd17fd8f9b4546de01a8b30d8b45e8755a2461982c99e1638350f76a82","signature":"68e069b7ef4d7fad012b2aab487ccd1ab728fadc06240683ce520642a7961451","impliedFormat":1}],"root":[[152,172]],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"declarationMap":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"jsx":1,"module":199,"noImplicitAny":true,"noImplicitThis":true,"noUncheckedIndexedAccess":false,"outDir":"./dist","rootDir":"./src","skipDefaultLibCheck":false,"sourceMap":true,"strict":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":8,"useUnknownInCatchVariables":true},"referencedMap":[[77,1],[78,2],[53,3],[57,4],[87,5],[83,6],[90,7],[94,8],[96,9],[97,10],[116,11],[99,12],[101,13],[103,14],[104,15],[105,16],[71,16],[106,17],[72,18],[107,19],[108,10],[109,20],[110,21],[68,22],[113,23],[115,24],[114,25],[112,26],[73,17],[69,27],[70,28],[100,29],[92,29],[93,30],[76,31],[119,29],[120,32],[122,13],[79,33],[81,34],[124,35],[129,36],[80,37],[131,37],[132,38],[133,39],[135,40],[137,40],[136,40],[85,41],[84,42],[86,40],[82,43],[139,44],[66,38],[140,8],[141,8],[142,45],[143,29],[147,37],[150,46],[59,47],[60,48],[149,47],[67,27],[65,37],[172,49],[159,50],[169,51],[158,52],[170,47],[155,53],[160,54],[166,55],[152,56],[164,57],[161,58],[167,57],[156,59],[168,57],[157,47],[171,60],[165,54],[163,54],[162,61]],"affectedFilesPendingEmit":[[172,51],[159,51],[154,51],[169,51],[158,51],[170,51],[155,51],[160,51],[166,51],[152,51],[164,51],[161,51],[167,51],[156,51],[168,51],[157,51],[171,51],[165,51],[163,51],[162,51]],"version":"5.6.3"}
\ No newline at end of file
+{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/@types/linkify-it/build/index.cjs.d.ts","./node_modules/@types/mdurl/build/index.cjs.d.ts","./node_modules/@types/markdown-it/dist/index.cjs.d.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/prop-types/index.d.ts","./node_modules/@types/react/index.d.ts","./node_modules/react-native/types/modules/BatchedBridge.d.ts","./node_modules/react-native/types/modules/Codegen.d.ts","./node_modules/react-native/types/modules/Devtools.d.ts","./node_modules/react-native/types/modules/globals.d.ts","./node_modules/react-native/types/modules/LaunchScreen.d.ts","./node_modules/react-native/types/private/Utilities.d.ts","./node_modules/react-native/types/public/Insets.d.ts","./node_modules/react-native/types/public/ReactNativeTypes.d.ts","./node_modules/react-native/Libraries/Types/CoreEventTypes.d.ts","./node_modules/react-native/types/public/ReactNativeRenderer.d.ts","./node_modules/react-native/Libraries/Components/Touchable/Touchable.d.ts","./node_modules/react-native/Libraries/Components/View/ViewAccessibility.d.ts","./node_modules/react-native/Libraries/Components/View/ViewPropTypes.d.ts","./node_modules/react-native/Libraries/Components/RefreshControl/RefreshControl.d.ts","./node_modules/react-native/Libraries/Components/ScrollView/ScrollView.d.ts","./node_modules/react-native/Libraries/Components/View/View.d.ts","./node_modules/react-native/Libraries/Image/ImageResizeMode.d.ts","./node_modules/react-native/Libraries/Image/ImageSource.d.ts","./node_modules/react-native/Libraries/Image/Image.d.ts","./node_modules/@react-native/virtualized-lists/Lists/VirtualizedList.d.ts","./node_modules/@react-native/virtualized-lists/index.d.ts","./node_modules/react-native/Libraries/Lists/FlatList.d.ts","./node_modules/react-native/Libraries/ReactNative/RendererProxy.d.ts","./node_modules/react-native/Libraries/Lists/SectionList.d.ts","./node_modules/react-native/Libraries/Text/Text.d.ts","./node_modules/react-native/Libraries/Animated/Animated.d.ts","./node_modules/react-native/Libraries/StyleSheet/StyleSheetTypes.d.ts","./node_modules/react-native/Libraries/StyleSheet/StyleSheet.d.ts","./node_modules/react-native/Libraries/StyleSheet/processColor.d.ts","./node_modules/react-native/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts","./node_modules/react-native/Libraries/Alert/Alert.d.ts","./node_modules/react-native/Libraries/Animated/Easing.d.ts","./node_modules/react-native/Libraries/Animated/useAnimatedValue.d.ts","./node_modules/react-native/Libraries/vendor/emitter/EventEmitter.d.ts","./node_modules/react-native/Libraries/EventEmitter/RCTDeviceEventEmitter.d.ts","./node_modules/react-native/Libraries/EventEmitter/RCTNativeAppEventEmitter.d.ts","./node_modules/react-native/Libraries/AppState/AppState.d.ts","./node_modules/react-native/Libraries/BatchedBridge/NativeModules.d.ts","./node_modules/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts","./node_modules/react-native/Libraries/Components/ActivityIndicator/ActivityIndicator.d.ts","./node_modules/react-native/Libraries/Components/Clipboard/Clipboard.d.ts","./node_modules/react-native/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.d.ts","./node_modules/react-native/Libraries/EventEmitter/NativeEventEmitter.d.ts","./node_modules/react-native/Libraries/Components/Keyboard/Keyboard.d.ts","./node_modules/react-native/types/private/TimerMixin.d.ts","./node_modules/react-native/Libraries/Components/Keyboard/KeyboardAvoidingView.d.ts","./node_modules/react-native/Libraries/Components/Pressable/Pressable.d.ts","./node_modules/react-native/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.d.ts","./node_modules/react-native/Libraries/Components/SafeAreaView/SafeAreaView.d.ts","./node_modules/react-native/Libraries/Components/StatusBar/StatusBar.d.ts","./node_modules/react-native/Libraries/Components/Switch/Switch.d.ts","./node_modules/react-native/Libraries/Components/TextInput/InputAccessoryView.d.ts","./node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts","./node_modules/react-native/Libraries/Components/ToastAndroid/ToastAndroid.d.ts","./node_modules/react-native/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts","./node_modules/react-native/Libraries/Components/Touchable/TouchableHighlight.d.ts","./node_modules/react-native/Libraries/Components/Touchable/TouchableOpacity.d.ts","./node_modules/react-native/Libraries/Components/Touchable/TouchableNativeFeedback.d.ts","./node_modules/react-native/Libraries/Components/Button.d.ts","./node_modules/react-native/Libraries/Core/registerCallableModule.d.ts","./node_modules/react-native/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts","./node_modules/react-native/Libraries/Interaction/InteractionManager.d.ts","./node_modules/react-native/Libraries/Interaction/PanResponder.d.ts","./node_modules/react-native/Libraries/LayoutAnimation/LayoutAnimation.d.ts","./node_modules/react-native/Libraries/Linking/Linking.d.ts","./node_modules/react-native/Libraries/LogBox/LogBox.d.ts","./node_modules/react-native/Libraries/Modal/Modal.d.ts","./node_modules/react-native/Libraries/Performance/Systrace.d.ts","./node_modules/react-native/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts","./node_modules/react-native/Libraries/PushNotificationIOS/PushNotificationIOS.d.ts","./node_modules/react-native/Libraries/Utilities/IPerformanceLogger.d.ts","./node_modules/react-native/Libraries/ReactNative/AppRegistry.d.ts","./node_modules/react-native/Libraries/ReactNative/I18nManager.d.ts","./node_modules/react-native/Libraries/ReactNative/RootTag.d.ts","./node_modules/react-native/Libraries/ReactNative/UIManager.d.ts","./node_modules/react-native/Libraries/ReactNative/requireNativeComponent.d.ts","./node_modules/react-native/Libraries/Settings/Settings.d.ts","./node_modules/react-native/Libraries/Share/Share.d.ts","./node_modules/react-native/Libraries/StyleSheet/PlatformColorValueTypesIOS.d.ts","./node_modules/react-native/Libraries/StyleSheet/PlatformColorValueTypes.d.ts","./node_modules/react-native/Libraries/TurboModule/RCTExport.d.ts","./node_modules/react-native/Libraries/TurboModule/TurboModuleRegistry.d.ts","./node_modules/react-native/Libraries/Utilities/Appearance.d.ts","./node_modules/react-native/Libraries/Utilities/BackHandler.d.ts","./node_modules/react-native/Libraries/Utilities/DevSettings.d.ts","./node_modules/react-native/Libraries/Utilities/Dimensions.d.ts","./node_modules/react-native/Libraries/Utilities/PixelRatio.d.ts","./node_modules/react-native/Libraries/Utilities/Platform.d.ts","./node_modules/react-native/Libraries/Vibration/Vibration.d.ts","./node_modules/react-native/Libraries/YellowBox/YellowBoxDeprecated.d.ts","./node_modules/react-native/Libraries/vendor/core/ErrorUtils.d.ts","./node_modules/react-native/types/public/DeprecatedPropertiesAlias.d.ts","./node_modules/react-native/types/index.d.ts","./node_modules/css-to-react-native/index.d.ts","./src/lib/util/convertAdditionalStyles.ts","./src/lib/util/getUniqueID.ts","./src/lib/data/textStyleProps.ts","./src/lib/types.ts","./src/lib/util/hasParents.ts","./src/lib/util/openUrl.ts","./src/lib/renderRules.tsx","./src/lib/AstRenderer.ts","./src/lib/util/Token.ts","./src/lib/util/getTokenTypeByToken.ts","./src/lib/util/tokensToAST.ts","./src/lib/util/stringToTokens.ts","./src/lib/util/flattenInlineTokens.ts","./src/lib/util/renderInlineAsText.ts","./src/lib/util/cleanupTokens.ts","./src/lib/util/groupTextTokens.ts","./src/lib/util/omitListItemParagraph.ts","./src/lib/parser.ts","./src/lib/styles.ts","./src/lib/util/removeTextStyleProps.ts","./src/index.tsx"],"fileIdsList":[[57,150],[77],[51,52],[54,55,56],[85,86],[57,66,72,73,76,79,81,82,85],[83],[93],[57,65,91],[57,63,65,66,70,84,85],[57,85,114,115],[57,63,65,66,70,85],[91,100],[57,63,70,84,85,102],[57,64,66,69,70,73,84,85],[57,63,65,70,85],[57,63,65,70],[57,63,64,66,68,70,71,84,85],[57,85],[57,84,85],[57,63,65,66,69,70,84,85,91,102],[57,64,66],[57,73,84,85,112],[57,63,68,85,112,114],[57,73,112],[57,63,64,66,68,69,84,85,102],[66],[57,64,66,67,68,69,84,85],[91],[92],[57,63,64,65,66,69,74,75,84,85],[66,67],[57,72,73,78,84,85],[57,72,78,80,84,85],[57,66,70],[57,84,128],[57],[57,65],[65],[85],[84],[74,83,85],[57,63,65,66,69,84,85],[138],[100],[58,59,60,61,62,64,65,66,67,68,69,70,71,72,73,74,75,76,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149],[150],[60],[53,57,150,153,154,155,156,157,158,159,162,163,169,170,171],[57,150,152,153,154,155,158],[53,57,155,160,162,163,166,167,168],[57,150,154,155,156,157],[158],[53],[53,160,161,164,165],[151],[53,160],[53,158,160],[155],[150,154],[53,153,155,160,161]],"fileInfos":[{"version":"44e584d4f6444f58791784f1d530875970993129442a847597db702a073ca68c","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"6920e1448680767498a0b77c6a00a8e77d14d62c3da8967b171f1ddffa3c18e4","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"45d8ccb3dfd57355eb29749919142d4321a0aa4df6acdfc54e30433d7176600a","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1a94697425a99354df73d9c8291e2ecd4dddd370aed4023c2d6dee6cccb32666","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3f9fc0ec0b96a9e642f11eda09c0be83a61c7b336977f8b9fdb1e9788e925fe","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"479553e3779be7d4f68e9f40cdb82d038e5ef7592010100410723ceced22a0f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"d3d7b04b45033f57351c8434f60b6be1ea71a2dfec2d0a0c3c83badbb0e3e693","affectsGlobalScope":true,"impliedFormat":1},{"version":"956d27abdea9652e8368ce029bb1e0b9174e9678a273529f426df4b3d90abd60","affectsGlobalScope":true,"impliedFormat":1},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true,"impliedFormat":1},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"742f21debb3937c3839a63245648238555bdab1ea095d43fd10c88a64029bf76","impliedFormat":1},{"version":"0944f27ebff4b20646b71e7e3faaaae50a6debd40bc63e225de1320dd15c5795","impliedFormat":1},{"version":"8a7219b41d3c1c93f3f3b779146f313efade2404eeece88dcd366df7e2364977","impliedFormat":1},{"version":"36a2e4c9a67439aca5f91bb304611d5ae6e20d420503e96c230cf8fcdc948d94","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","impliedFormat":1},{"version":"ed6b820c54de95b2510bb673490d61c7f2187f532a339d8d04981645a918961f","impliedFormat":1},{"version":"aa17748c522bd586f8712b1a308ea23af59c309b2fd278f6d4f406647c72e659","affectsGlobalScope":true,"impliedFormat":1},{"version":"3a909e8789a4f8b5377ef3fb8dc10d0c0a090c03f2e40aab599534727457475a","affectsGlobalScope":true,"impliedFormat":1},{"version":"2b47c8df863142d9383f948c987e1ebd25ade3867aeb4ae60e9d6009035dfe46","impliedFormat":1},{"version":"b8dd45aa6e099a5f564edcabfe8114096b096eb1ffaa343dd6f3fe73f1a6e85e","impliedFormat":1},{"version":"38e8ac2d182bd3f85d28de9bdf1386c19a319f9c0280aa43960204c353b07878","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc4db28f3510994e45bbabba1ee33e9a0d27dab33d4c8a5844cee8c85438a058","impliedFormat":1},{"version":"232f660363b3b189f7be7822ed71e907195d1a85bc8d55d2b7ce3f09b2136938","impliedFormat":1},{"version":"e745388cfad9efb4e5a9a15a2c6b66d54094dd82f8d0c2551064e216f7b51526","impliedFormat":1},{"version":"53390c21d095fb54e6c0b8351cbf7f4008f096ade9717bc5ee75e340bc3dfa30","impliedFormat":1},{"version":"71493b2c538dffa1e3e968b55b70984b542cc6e488012850865f72768ff32630","impliedFormat":1},{"version":"8ebf448e9837fda1a368acbb575b0e28843d5b2a3fda04bce76248b64326ea49","impliedFormat":1},{"version":"91b9f6241fca7843985aa31157cfa08cc724c77d91145a4d834d27cdde099c05","impliedFormat":1},{"version":"8b94ac8c460c9a2578ca3308fecfcf034e21af89e9c287c97710e9717ffae133","impliedFormat":1},{"version":"a7266bcc42f8ec0f31f319c2dd8100411b4d7b8a534235cb00a719f1c8a2a42e","impliedFormat":1},{"version":"3dfa3a6f2a62259b56fa7bcebfbacf886848dfa037298be5bed07c7a0381ee4f","impliedFormat":1},{"version":"a1e3cda52746919d2a95784ce0b1b9ffa22052209aab5f54e079e7b920f5339e","impliedFormat":1},{"version":"1882680f8c88c5648d603408dd1943857ca831a815e33d3126be8368f7a69252","impliedFormat":1},{"version":"f387a979388291b2688ba0f604e3ae78874f5f777616b448d34109762a4f05a9","impliedFormat":1},{"version":"cae0fb826d8a88749189b8a924dfcb5d3ad629e3bc5ec934195fbd83fa48b068","impliedFormat":1},{"version":"376b8482d1224aa83f4521590672304e30ba847d0b87b9e1a62b2e60a5c788f2","impliedFormat":1},{"version":"488242948cc48ee6413a159c60bcaf70de15db01364741737a962662f1a127a5","impliedFormat":1},{"version":"42bacb33cddecbcfe3e043ee1117ba848801749e44f947626765b3e0aec74b1c","impliedFormat":1},{"version":"b326790c20287ad266b5fcd0c388e2a83320a24747856727dcb70c7bbd489dfc","impliedFormat":1},{"version":"cd2156bc8e4d54d52a2817d1b6f4629a5dd3173b1d8bb0fc893ee678d6a78ecd","impliedFormat":1},{"version":"60526d9010e8ccb2a76a59821061463464c3acd5bc7a50320df6d2e4e0d6e4f7","impliedFormat":1},{"version":"562cce1c8e14e8d5a55d1931cb1848b1df49cc7b1024356d56f3550ed57ad67f","impliedFormat":1},{"version":"623fa4efc706bb9956d0ae94b13321c6617655bf8ebdb270c9792bb398f82e44","impliedFormat":1},{"version":"f20c96192f5841cbf982d2c1989c1e9fdef41c4a9db7543edff131007bf1dbfb","impliedFormat":1},{"version":"79d6871ce0da76f4c865a58daa509d5c8a10545d510b804501daa5d0626e7028","impliedFormat":1},{"version":"9054417b5760061bc5fe31f9eee5dc9bf018339b0617d3c65dd1673c8e3c0f25","impliedFormat":1},{"version":"442856ad0787bc213f659e134c204ad0d502179aa216bf700faefb5572208358","impliedFormat":1},{"version":"443702ca8101ef0adc827c2cc530ca93cf98d41e36ce4399efb9bc833ad9cb62","impliedFormat":1},{"version":"c94f70562ae60797cce564c3bebbaaf1752c327d5063d6ac152aa5ca1616c267","impliedFormat":1},{"version":"2aeb5fcdfc884b16015617d263fd8d1a8513f7efe23880be4e5f0bdb3794b37c","impliedFormat":1},{"version":"fd412dd6372493eb8e3e95cae8687d35e4d34dde905a33e0ee47b74224cdd6ab","impliedFormat":1},{"version":"b561170fbe8d4292425e1dfa52406c8d97575681f7a5e420d11d9f72f7c29e38","impliedFormat":1},{"version":"5fe94f3f6411a0f6293f16fdc8e02ee61138941847ce91d6f6800c97fac22fcd","impliedFormat":1},{"version":"7f7c0ecc3eeeef905a3678e540947f4fbbc1a9c76075419dcc5fbfc3df59cb0b","impliedFormat":1},{"version":"df3303018d45c92be73fb4a282d5a242579f96235f5e0f8981983102caf5feca","impliedFormat":1},{"version":"35db266b474b3b9dfd0bc7d25dff3926cc227de45394262f3783b8b174182a16","impliedFormat":1},{"version":"8205e62a7310ac0513747f6d84175400680cff372559bc5fbe2df707194a295d","impliedFormat":1},{"version":"084d0df6805570b6dc6c8b49c3a71d5bdfe59606901e0026c63945b68d4b080a","impliedFormat":1},{"version":"8387fa3287992c71702756fe6ecea68e2f8f2c5aa434493e3afe4817dd4a4787","impliedFormat":1},{"version":"0f066f9654e700a9cf79c75553c934eb14296aa80583bd2b5d07e2d582a3f4ee","impliedFormat":1},{"version":"269c5d54104033b70331343bd931c9933852a882391ed6bd98c3d8b7d6465d22","impliedFormat":1},{"version":"a56b8577aaf471d9e60582065a8193269310e8cae48c1ce4111ed03216f5f715","impliedFormat":1},{"version":"486ae83cd51b813095f6716f06cc9b2cf480ad1d6c7f8ec59674d6c858cd2407","impliedFormat":1},{"version":"fff527e2567a24dd634a30268f1aa8a220315fed9c513d70ee872e54f67f27f3","impliedFormat":1},{"version":"5dd0ff735b3f2e642c3f16bcfb3dc4ecebb679a70e43cfb19ab5fd84d8faaeed","impliedFormat":1},{"version":"d1d78d1ef0f21ac77cdc436d2a4d56592453a8a2e51af2040ec9a69a5d35e4de","impliedFormat":1},{"version":"bc55b91274e43f88030c9cfe2c4217fae57894c3c302173ab6e9743c29484e3d","impliedFormat":1},{"version":"8bb22f70bfd7bf186631fa565c9202ee6a1009ffb961197b7d092b5a1e1d56b1","impliedFormat":1},{"version":"77282216c61bcef9a700db98e142301d5a7d988d3076286029da63e415e98a42","impliedFormat":1},{"version":"6c28f4f95aaa6c3c8b1a0681c29f446b0bf0ed1aa5aa11e8b2ca6fc9e066e9f2","impliedFormat":1},{"version":"64ce8e260a1362d4cadd6c753581a912a9869d4a53ec6e733dc61018f9250f5d","impliedFormat":1},{"version":"85a915dbb768b89cb92f5e6c165d776bfebd065883c34fee4e0219c3ed321b47","impliedFormat":1},{"version":"83df2f39cb14971adea51d1c84e7d146a34e9b7f84ad118450a51bdc3138412c","impliedFormat":1},{"version":"b96364fcb0c9d521e7618346b00acf3fe16ccf9368404ceac1658edee7b6332c","impliedFormat":1},{"version":"bdb2b70c74908c92ec41d8dd8375a195cb3bb07523e4de642b2b2dfbde249ca6","impliedFormat":1},{"version":"7b329f4137a552073f504022acbf8cd90d49cc5e5529791bef508f76ff774854","impliedFormat":1},{"version":"f63bbbffcfc897d22f34cf19ae13405cd267b1783cd21ec47d8a2d02947c98c1","impliedFormat":1},{"version":"7889f4932dfa7b1126cdc17914d85d80b5860cc3d62ba329494007e8aab45430","impliedFormat":1},{"version":"d9725ef7f60a791668f7fb808eb90b1789feaaef989a686fefc0f7546a51dcdc","impliedFormat":1},{"version":"df55b9be6ba19a6f77487e09dc7a94d7c9bf66094d35ea168dbd4bac42c46b8f","impliedFormat":1},{"version":"595125f3e088b883d104622ef10e6b7d5875ff6976bbe4d7dca090a3e2dca513","impliedFormat":1},{"version":"8ebb6f0603bf481e893311c49e4d2e2061413c51b9ba5898cd9b0a01f5ef19c8","impliedFormat":1},{"version":"e0d7eed4ba363df3faadb8e617f95f9fc8adfbb00b87db7ade4a1098d6cf1e90","impliedFormat":1},{"version":"38faab59a79924ce5eb4f2f3e7e7db91e74d425b4183f908cc014be213f0d971","impliedFormat":1},{"version":"de115595321ce012c456f512a799679bfc874f0ac0a4928a8429557bb25086aa","impliedFormat":1},{"version":"cdca67bd898deff48e3acb05fb44500b5ebce16c26a8ec99dee1522cf9879795","impliedFormat":1},{"version":"0524cab11ba9048d151d93cc666d3908fda329eec6b1642e9a936093e6d79f28","impliedFormat":1},{"version":"869073d7523e75f45bd65b2072865c60002d5e0cbd3d17831e999cf011312778","impliedFormat":1},{"version":"bc7b5906a6ce6c5744a640c314e020856be6c50a693e77dc12aff2d77b12ca76","impliedFormat":1},{"version":"56503e377bc1344f155e4e3115a772cb4e59350c0b8131e3e1fb2750ac491608","impliedFormat":1},{"version":"6b579287217ee1320ee1c6cfec5f6730f3a1f91daab000f7131558ee531b2bf8","impliedFormat":1},{"version":"e2ddb2877f5a841866f4fc772a601b58e90ac8399b35f9a06535be81b8e08b47","impliedFormat":1},{"version":"a793636667598e739a52684033037a67dc2d9db37fab727623626ef19aa5abb9","impliedFormat":1},{"version":"b15d6238a86bc0fc2368da429249b96c260debc0cec3eb7b5f838ad32587c129","impliedFormat":1},{"version":"9a9fba3a20769b0a74923e7032997451b61c1bd371c519429b29019399040d74","impliedFormat":1},{"version":"4b10e2fe52cb61035e58df3f1fdd926dd0fe9cf1a2302f92916da324332fb4e0","impliedFormat":1},{"version":"d1092ae8d6017f359f4758115f588e089848cc8fb359f7ba045b1a1cf3668a49","impliedFormat":1},{"version":"ddae9195b0da7b25a585ef43365f4dc5204a746b155fbee71e6ee1a9193fb69f","impliedFormat":1},{"version":"32dbced998ce74c5e76ce87044d0b4071857576dde36b0c6ed1d5957ce9cf5b5","impliedFormat":1},{"version":"5bc29a9918feba88816b71e32960cf11243b77b76630e9e87cad961e5e1d31d0","impliedFormat":1},{"version":"341ffa358628577f490f128f3880c01d50ef31412d1be012bb1cd959b0a383ea","impliedFormat":1},{"version":"ecc1b8878c8033bde0204b85e26fe1af6847805427759e5723882c848a11e134","impliedFormat":1},{"version":"cfc9c32553ad3b5be38342bc8731397438a93531118e1a226a8c79ad255b4f0c","impliedFormat":1},{"version":"16e5b5b023c2a1119c1878a51714861c56255778de0a7fe378391876a15f7433","impliedFormat":1},{"version":"52e8612d284467b4417143ca8fe54d30145fdfc3815f5b5ea9b14b677f422be5","impliedFormat":1},{"version":"a090a8a3b0ef2cceeb089acf4df95df72e7d934215896afe264ff6f734d66d15","impliedFormat":1},{"version":"a0259c6054e3ed2c5fb705b6638e384446cbcdf7fd2072c659b43bd56e214b9a","impliedFormat":1},{"version":"005319c82222e57934c7b211013eb6931829e46b2a61c5d9a1c3c25f8dc3ea90","impliedFormat":1},{"version":"151f422f08c8ca67b77c5c39d49278b4df452ef409237c8219be109ae3cdae9d","impliedFormat":1},{"version":"6466cbb0aa561e1c1a87850a1f066692f1692a0a9513c508a3886cd66a62dae8","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d1d31f1786b80ab882f0844f2c99767f6f0c6538e94a4292775e8e741c6a802","impliedFormat":1},{"version":"4fed47227c29f71b82b4d21a9448e15492cdcc8b0858db30220178f05bbbeaa5","signature":"2a9464ab1154680f9a45713ad52ee914229ef5a0100cd8a7dc41e9c8dc8563c3","impliedFormat":1},{"version":"bb5cfe79e5f80bd06b0cb8d75274f7710ccb0ba269d35ab06c45dad7bf50a450","signature":"9f2c77b3670856f0be5fd1a504cbc163606ceed481860513eca72634b32d3c7d","impliedFormat":1},{"version":"c01cfa0f58e00bf8da8d4c5735784e1f181d5400a4ac81eedb7945788c0f0202","signature":"66b9118e963c55e4311125a3312c9d946106d43d9def22ed3f41bd52462a4c80","impliedFormat":1},{"version":"b411b5e0d027fad8b10c853e0bca6deb5c853c33434ba036b4b1c1aeed40cd14","signature":"74059c61aa14513a42afb684f2f27e698094baa9895f8e4b04a65b94375f5c40","impliedFormat":1},{"version":"fe5ee97529518a08f57ed224e67bfa96301e005bd08b5a5417344fcff97b3ac0","signature":"d728c1eb02f8384410cf59b5698c2d9f52c7ad655e839d6dbb1f1ad64877cadf","impliedFormat":1},{"version":"be7661a81fd349aa2baf5a7c29d0bd983a83ad685f4aa39c78dbc792c75e2ed9","signature":"8158a29454ce0c7ddb8bd1e17062ce64f9c6d2fa4d8c844ade50a4189da2b05d","impliedFormat":1},{"version":"083095f34bdcebdab08299946c14711451b411c27fce43b36c581c7872320281","signature":"79119a0b05f41118afb2d66ae50d7a36a4df53e9ea25d545ad008513afe7e510","impliedFormat":1},{"version":"9af86084a8ebbdad91aaae097e5a8a7da9fa391af3b5c23a92792d99e76f4677","signature":"d1ebadbf2f41d122d2910386bdc3e6080bce2b5d9707eb827acfc2736f2d911a","impliedFormat":1},{"version":"d66a64bd5ba6d512d47ccc0074cf9db23d7ea162de0739e8fcf77f0aeea37f3f","signature":"510cee1c8ec65773a4b4f970a8b04848bca6d2bfb4673fda9e7fe79cf669215c","impliedFormat":1},{"version":"f4f0f246a8a08617301f3b78229759623855253757b7b83f87447f2607a9e411","signature":"2b3d74e32bb0bd3cd9965f28ba76e5b6587232bf5dbe440f0363231849e42a93","impliedFormat":1},{"version":"c6c8073aa43181b3fb62e1db3462a8ed7d69980f44fb3ef805dc5d76114a443d","signature":"d160d34450c71d714ba809b84ab233881c3cbd582f2c129f8d7e20de2ea2e830","impliedFormat":1},{"version":"3561dd3bf6bb6e1afac607f92542b34e00203dd62a283d60f33c358b875de50f","signature":"b064caa285e15d91ac315e46f7a970940452b4a8f1c071736ca18a48faa98348","impliedFormat":1},{"version":"1bf3e9968191c32ae06a3d7bfd42555330950550c7319ac62d589da1c80e7e9f","signature":"7214a8af60b4039a192bf3460cf48b16c27272aed494e16c8fb375cbcab8a669","impliedFormat":1},{"version":"486302e6935a1024c28a1e21c4c2c6780bb32f24738b2e7ae576bf3515be21ec","signature":"d45382d88b9f313315c4693a3aceb2d137db236ed435726ccc3cb5f4f95fb696","impliedFormat":1},{"version":"98e00c2a3eab378b7026c6e83b0c8f89cffdec8bf39b96db5994951f457c9c84","signature":"ef963a484a85f604c7e9a105f7e53e6176e1d5cdb5d50c69b15188fa94b7ac07","impliedFormat":1},{"version":"a433d0f67aad0528586fb70ffd3a412221a98867fca8dc3df6eabcafbd2c1bd8","signature":"f5d48ed660a093a592fb4d6711e62cacc74112af8ef529921da1d69850cb7246","impliedFormat":1},{"version":"3944301fc3fecdfa3419d986f5e70a1ed82ddb44916072e076e42008877d66eb","signature":"ed66b549cf33c8068d2d68f0e3cb42eb5476e55fcc730fb0d4853e22df31355b","impliedFormat":1},{"version":"69202e2cda90a7dcf9eeb0ca62dec22f92acf669076829b44b627625c05830db","signature":"6d19e497dbbd0db80757a13d2ed759939d8f651a1d063570bc21359319f375b1","impliedFormat":1},{"version":"d4495febc498e1b9ebb71d5bec3120c93fc3971244b4a6a52da7b3006356aa39","signature":"8660e950fd61b3f60ae718284fef7d215011ed9d19ddf110ab688b9a69fc5e64","impliedFormat":1},{"version":"49c886c9ab3bedd4456c156d8d7b2cc02a167a1cb70a590a026f6ba54ebd2236","signature":"5ade073342145585fc0e64759dfcec8d0289e94abc75d2fb333522956c4f5a4b","impliedFormat":1},{"version":"9e2125dd17fd8f9b4546de01a8b30d8b45e8755a2461982c99e1638350f76a82","signature":"68e069b7ef4d7fad012b2aab487ccd1ab728fadc06240683ce520642a7961451","impliedFormat":1}],"root":[[152,172]],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"declarationMap":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"jsx":1,"module":199,"noImplicitAny":true,"noImplicitThis":true,"noUncheckedIndexedAccess":false,"outDir":"./dist","rootDir":"./src","skipDefaultLibCheck":false,"sourceMap":true,"strict":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":8,"useUnknownInCatchVariables":true},"referencedMap":[[77,1],[78,2],[53,3],[57,4],[87,5],[83,6],[90,7],[94,8],[96,9],[97,10],[116,11],[99,12],[101,13],[103,14],[104,15],[105,16],[71,16],[106,17],[72,18],[107,19],[108,10],[109,20],[110,21],[68,22],[113,23],[115,24],[114,25],[112,26],[73,17],[69,27],[70,28],[100,29],[92,29],[93,30],[76,31],[119,29],[120,32],[122,13],[79,33],[81,34],[124,35],[129,36],[80,37],[131,37],[132,38],[133,39],[135,40],[137,40],[136,40],[85,41],[84,42],[86,40],[82,43],[139,44],[66,38],[140,8],[141,8],[142,45],[143,29],[147,37],[150,46],[59,47],[60,48],[149,47],[67,27],[65,37],[172,49],[159,50],[169,51],[158,52],[170,47],[155,53],[160,54],[166,55],[152,56],[164,57],[161,58],[167,57],[156,59],[168,57],[157,47],[171,60],[165,54],[163,54],[162,61]],"version":"5.6.3"}
\ No newline at end of file
From 1299c190e2e96cfc6090ac62531a922f5285b5fb Mon Sep 17 00:00:00 2001
From: Joshua Tag Howard
Date: Mon, 28 Oct 2024 21:39:10 +0000
Subject: [PATCH 5/8] Update .gitignore and package.json
---
.gitignore | 3 ++-
package.json | 50 +++++++++++++++++++++++++-------------------
tsconfig.json | 2 +-
tsconfig.tsbuildinfo | 1 -
4 files changed, 32 insertions(+), 24 deletions(-)
delete mode 100644 tsconfig.tsbuildinfo
diff --git a/.gitignore b/.gitignore
index e1e826b7..68b7c6f6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,4 +5,5 @@ package-lock.json
yarn-error.log
yarn.lock
.eslintcache
-/dist
\ No newline at end of file
+/dist
+tsconfig.tsbuildinfo
\ No newline at end of file
diff --git a/package.json b/package.json
index 0549e4fe..35c039b7 100644
--- a/package.json
+++ b/package.json
@@ -1,22 +1,7 @@
{
"name": "@ukdanceblue/react-native-markdown-display",
- "description": "Markdown renderer for react-native, with CommonMark spec support + adds syntax extensions & sugar (URL autolinking, typographer), originally created by Mient-jan Stelling as react-native-markdown-renderer",
- "main": "src/index.js",
- "types": "src/index.d.ts",
"version": "0.1.0",
- "scripts": {
- "build": "tsc",
- "watch": "tsc -w",
- "lint": "eslint .",
- "lint-fix": "eslint . --fix",
- "format": "prettier . --check",
- "format-fix": "prettier . --write",
- "check": "npm run lint && npm run format && npm run build -- --noEmit"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/ukdanceblue/react-native-markdown-display.git"
- },
+ "description": "Markdown renderer for react-native, with CommonMark spec support + adds syntax extensions & sugar (URL autolinking, typographer), originally created by Mient-jan Stelling as react-native-markdown-renderer",
"keywords": [
"react",
"react-native",
@@ -25,16 +10,35 @@
"commonmark",
"markdown-it"
],
- "author": "Mient-jan Stelling and Tom Pickard + others from the community, ported to TypeScript by Tag Howard",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/ukdanceblue/react-native-markdown-display.git"
+ },
"license": "MIT",
+ "author": "Mient-jan Stelling and Tom Pickard + others from the community, ported to TypeScript by Tag Howard",
+ "type": "module",
+ "exports": {
+ ".": {
+ "react-native": "./dist/index.js",
+ "default": "./dist/index.js",
+ "types": "./dist/index.d.ts"
+ }
+ },
+ "main": "dist/index.js",
+ "types": "dist/index.d.ts",
+ "scripts": {
+ "build": "tsc",
+ "check": "npm run lint && npm run format && npm run build -- --noEmit",
+ "format": "prettier . --check",
+ "format-fix": "prettier . --write",
+ "lint": "eslint .",
+ "lint-fix": "eslint . --fix",
+ "watch": "tsc -w"
+ },
"dependencies": {
"css-to-react-native": "^3.2.0",
"markdown-it": "^14.1.0"
},
- "peerDependencies": {
- "react": ">=18.0.0",
- "react-native": ">=0.76.0"
- },
"devDependencies": {
"@eslint/js": "^9.13.0",
"@types/eslint__js": "^8.42.3",
@@ -45,5 +49,9 @@
"react-native": "^0.76.0",
"typescript": "^5.6.3",
"typescript-eslint": "^8.12.0"
+ },
+ "peerDependencies": {
+ "react": ">=18.0.0",
+ "react-native": ">=0.76.0"
}
}
diff --git a/tsconfig.json b/tsconfig.json
index 49844674..44dfd82f 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -15,7 +15,7 @@
"ES2021",
"ES2022.Error"
] /* Specify a set of bundled library declaration files that describe the target runtime environment. */,
- "jsx": "preserve" /* Specify what JSX code is generated. */,
+ "jsx": "react-native" /* Specify what JSX code is generated. */,
"experimentalDecorators": true /* Enable experimental support for TC39 stage 2 draft decorators. */,
"emitDecoratorMetadata": true /* Emit design-type metadata for decorated declarations in source files. */,
// "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */
diff --git a/tsconfig.tsbuildinfo b/tsconfig.tsbuildinfo
deleted file mode 100644
index 0100964e..00000000
--- a/tsconfig.tsbuildinfo
+++ /dev/null
@@ -1 +0,0 @@
-{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/@types/linkify-it/build/index.cjs.d.ts","./node_modules/@types/mdurl/build/index.cjs.d.ts","./node_modules/@types/markdown-it/dist/index.cjs.d.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/prop-types/index.d.ts","./node_modules/@types/react/index.d.ts","./node_modules/react-native/types/modules/BatchedBridge.d.ts","./node_modules/react-native/types/modules/Codegen.d.ts","./node_modules/react-native/types/modules/Devtools.d.ts","./node_modules/react-native/types/modules/globals.d.ts","./node_modules/react-native/types/modules/LaunchScreen.d.ts","./node_modules/react-native/types/private/Utilities.d.ts","./node_modules/react-native/types/public/Insets.d.ts","./node_modules/react-native/types/public/ReactNativeTypes.d.ts","./node_modules/react-native/Libraries/Types/CoreEventTypes.d.ts","./node_modules/react-native/types/public/ReactNativeRenderer.d.ts","./node_modules/react-native/Libraries/Components/Touchable/Touchable.d.ts","./node_modules/react-native/Libraries/Components/View/ViewAccessibility.d.ts","./node_modules/react-native/Libraries/Components/View/ViewPropTypes.d.ts","./node_modules/react-native/Libraries/Components/RefreshControl/RefreshControl.d.ts","./node_modules/react-native/Libraries/Components/ScrollView/ScrollView.d.ts","./node_modules/react-native/Libraries/Components/View/View.d.ts","./node_modules/react-native/Libraries/Image/ImageResizeMode.d.ts","./node_modules/react-native/Libraries/Image/ImageSource.d.ts","./node_modules/react-native/Libraries/Image/Image.d.ts","./node_modules/@react-native/virtualized-lists/Lists/VirtualizedList.d.ts","./node_modules/@react-native/virtualized-lists/index.d.ts","./node_modules/react-native/Libraries/Lists/FlatList.d.ts","./node_modules/react-native/Libraries/ReactNative/RendererProxy.d.ts","./node_modules/react-native/Libraries/Lists/SectionList.d.ts","./node_modules/react-native/Libraries/Text/Text.d.ts","./node_modules/react-native/Libraries/Animated/Animated.d.ts","./node_modules/react-native/Libraries/StyleSheet/StyleSheetTypes.d.ts","./node_modules/react-native/Libraries/StyleSheet/StyleSheet.d.ts","./node_modules/react-native/Libraries/StyleSheet/processColor.d.ts","./node_modules/react-native/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts","./node_modules/react-native/Libraries/Alert/Alert.d.ts","./node_modules/react-native/Libraries/Animated/Easing.d.ts","./node_modules/react-native/Libraries/Animated/useAnimatedValue.d.ts","./node_modules/react-native/Libraries/vendor/emitter/EventEmitter.d.ts","./node_modules/react-native/Libraries/EventEmitter/RCTDeviceEventEmitter.d.ts","./node_modules/react-native/Libraries/EventEmitter/RCTNativeAppEventEmitter.d.ts","./node_modules/react-native/Libraries/AppState/AppState.d.ts","./node_modules/react-native/Libraries/BatchedBridge/NativeModules.d.ts","./node_modules/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts","./node_modules/react-native/Libraries/Components/ActivityIndicator/ActivityIndicator.d.ts","./node_modules/react-native/Libraries/Components/Clipboard/Clipboard.d.ts","./node_modules/react-native/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.d.ts","./node_modules/react-native/Libraries/EventEmitter/NativeEventEmitter.d.ts","./node_modules/react-native/Libraries/Components/Keyboard/Keyboard.d.ts","./node_modules/react-native/types/private/TimerMixin.d.ts","./node_modules/react-native/Libraries/Components/Keyboard/KeyboardAvoidingView.d.ts","./node_modules/react-native/Libraries/Components/Pressable/Pressable.d.ts","./node_modules/react-native/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.d.ts","./node_modules/react-native/Libraries/Components/SafeAreaView/SafeAreaView.d.ts","./node_modules/react-native/Libraries/Components/StatusBar/StatusBar.d.ts","./node_modules/react-native/Libraries/Components/Switch/Switch.d.ts","./node_modules/react-native/Libraries/Components/TextInput/InputAccessoryView.d.ts","./node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts","./node_modules/react-native/Libraries/Components/ToastAndroid/ToastAndroid.d.ts","./node_modules/react-native/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts","./node_modules/react-native/Libraries/Components/Touchable/TouchableHighlight.d.ts","./node_modules/react-native/Libraries/Components/Touchable/TouchableOpacity.d.ts","./node_modules/react-native/Libraries/Components/Touchable/TouchableNativeFeedback.d.ts","./node_modules/react-native/Libraries/Components/Button.d.ts","./node_modules/react-native/Libraries/Core/registerCallableModule.d.ts","./node_modules/react-native/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts","./node_modules/react-native/Libraries/Interaction/InteractionManager.d.ts","./node_modules/react-native/Libraries/Interaction/PanResponder.d.ts","./node_modules/react-native/Libraries/LayoutAnimation/LayoutAnimation.d.ts","./node_modules/react-native/Libraries/Linking/Linking.d.ts","./node_modules/react-native/Libraries/LogBox/LogBox.d.ts","./node_modules/react-native/Libraries/Modal/Modal.d.ts","./node_modules/react-native/Libraries/Performance/Systrace.d.ts","./node_modules/react-native/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts","./node_modules/react-native/Libraries/PushNotificationIOS/PushNotificationIOS.d.ts","./node_modules/react-native/Libraries/Utilities/IPerformanceLogger.d.ts","./node_modules/react-native/Libraries/ReactNative/AppRegistry.d.ts","./node_modules/react-native/Libraries/ReactNative/I18nManager.d.ts","./node_modules/react-native/Libraries/ReactNative/RootTag.d.ts","./node_modules/react-native/Libraries/ReactNative/UIManager.d.ts","./node_modules/react-native/Libraries/ReactNative/requireNativeComponent.d.ts","./node_modules/react-native/Libraries/Settings/Settings.d.ts","./node_modules/react-native/Libraries/Share/Share.d.ts","./node_modules/react-native/Libraries/StyleSheet/PlatformColorValueTypesIOS.d.ts","./node_modules/react-native/Libraries/StyleSheet/PlatformColorValueTypes.d.ts","./node_modules/react-native/Libraries/TurboModule/RCTExport.d.ts","./node_modules/react-native/Libraries/TurboModule/TurboModuleRegistry.d.ts","./node_modules/react-native/Libraries/Utilities/Appearance.d.ts","./node_modules/react-native/Libraries/Utilities/BackHandler.d.ts","./node_modules/react-native/Libraries/Utilities/DevSettings.d.ts","./node_modules/react-native/Libraries/Utilities/Dimensions.d.ts","./node_modules/react-native/Libraries/Utilities/PixelRatio.d.ts","./node_modules/react-native/Libraries/Utilities/Platform.d.ts","./node_modules/react-native/Libraries/Vibration/Vibration.d.ts","./node_modules/react-native/Libraries/YellowBox/YellowBoxDeprecated.d.ts","./node_modules/react-native/Libraries/vendor/core/ErrorUtils.d.ts","./node_modules/react-native/types/public/DeprecatedPropertiesAlias.d.ts","./node_modules/react-native/types/index.d.ts","./node_modules/css-to-react-native/index.d.ts","./src/lib/util/convertAdditionalStyles.ts","./src/lib/util/getUniqueID.ts","./src/lib/data/textStyleProps.ts","./src/lib/types.ts","./src/lib/util/hasParents.ts","./src/lib/util/openUrl.ts","./src/lib/renderRules.tsx","./src/lib/AstRenderer.ts","./src/lib/util/Token.ts","./src/lib/util/getTokenTypeByToken.ts","./src/lib/util/tokensToAST.ts","./src/lib/util/stringToTokens.ts","./src/lib/util/flattenInlineTokens.ts","./src/lib/util/renderInlineAsText.ts","./src/lib/util/cleanupTokens.ts","./src/lib/util/groupTextTokens.ts","./src/lib/util/omitListItemParagraph.ts","./src/lib/parser.ts","./src/lib/styles.ts","./src/lib/util/removeTextStyleProps.ts","./src/index.tsx"],"fileIdsList":[[57,150],[77],[51,52],[54,55,56],[85,86],[57,66,72,73,76,79,81,82,85],[83],[93],[57,65,91],[57,63,65,66,70,84,85],[57,85,114,115],[57,63,65,66,70,85],[91,100],[57,63,70,84,85,102],[57,64,66,69,70,73,84,85],[57,63,65,70,85],[57,63,65,70],[57,63,64,66,68,70,71,84,85],[57,85],[57,84,85],[57,63,65,66,69,70,84,85,91,102],[57,64,66],[57,73,84,85,112],[57,63,68,85,112,114],[57,73,112],[57,63,64,66,68,69,84,85,102],[66],[57,64,66,67,68,69,84,85],[91],[92],[57,63,64,65,66,69,74,75,84,85],[66,67],[57,72,73,78,84,85],[57,72,78,80,84,85],[57,66,70],[57,84,128],[57],[57,65],[65],[85],[84],[74,83,85],[57,63,65,66,69,84,85],[138],[100],[58,59,60,61,62,64,65,66,67,68,69,70,71,72,73,74,75,76,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149],[150],[60],[53,57,150,153,154,155,156,157,158,159,162,163,169,170,171],[57,150,152,153,154,155,158],[53,57,155,160,162,163,166,167,168],[57,150,154,155,156,157],[158],[53],[53,160,161,164,165],[151],[53,160],[53,158,160],[155],[150,154],[53,153,155,160,161]],"fileInfos":[{"version":"44e584d4f6444f58791784f1d530875970993129442a847597db702a073ca68c","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"6920e1448680767498a0b77c6a00a8e77d14d62c3da8967b171f1ddffa3c18e4","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"45d8ccb3dfd57355eb29749919142d4321a0aa4df6acdfc54e30433d7176600a","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1a94697425a99354df73d9c8291e2ecd4dddd370aed4023c2d6dee6cccb32666","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3f9fc0ec0b96a9e642f11eda09c0be83a61c7b336977f8b9fdb1e9788e925fe","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"479553e3779be7d4f68e9f40cdb82d038e5ef7592010100410723ceced22a0f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"d3d7b04b45033f57351c8434f60b6be1ea71a2dfec2d0a0c3c83badbb0e3e693","affectsGlobalScope":true,"impliedFormat":1},{"version":"956d27abdea9652e8368ce029bb1e0b9174e9678a273529f426df4b3d90abd60","affectsGlobalScope":true,"impliedFormat":1},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true,"impliedFormat":1},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"742f21debb3937c3839a63245648238555bdab1ea095d43fd10c88a64029bf76","impliedFormat":1},{"version":"0944f27ebff4b20646b71e7e3faaaae50a6debd40bc63e225de1320dd15c5795","impliedFormat":1},{"version":"8a7219b41d3c1c93f3f3b779146f313efade2404eeece88dcd366df7e2364977","impliedFormat":1},{"version":"36a2e4c9a67439aca5f91bb304611d5ae6e20d420503e96c230cf8fcdc948d94","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","impliedFormat":1},{"version":"ed6b820c54de95b2510bb673490d61c7f2187f532a339d8d04981645a918961f","impliedFormat":1},{"version":"aa17748c522bd586f8712b1a308ea23af59c309b2fd278f6d4f406647c72e659","affectsGlobalScope":true,"impliedFormat":1},{"version":"3a909e8789a4f8b5377ef3fb8dc10d0c0a090c03f2e40aab599534727457475a","affectsGlobalScope":true,"impliedFormat":1},{"version":"2b47c8df863142d9383f948c987e1ebd25ade3867aeb4ae60e9d6009035dfe46","impliedFormat":1},{"version":"b8dd45aa6e099a5f564edcabfe8114096b096eb1ffaa343dd6f3fe73f1a6e85e","impliedFormat":1},{"version":"38e8ac2d182bd3f85d28de9bdf1386c19a319f9c0280aa43960204c353b07878","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc4db28f3510994e45bbabba1ee33e9a0d27dab33d4c8a5844cee8c85438a058","impliedFormat":1},{"version":"232f660363b3b189f7be7822ed71e907195d1a85bc8d55d2b7ce3f09b2136938","impliedFormat":1},{"version":"e745388cfad9efb4e5a9a15a2c6b66d54094dd82f8d0c2551064e216f7b51526","impliedFormat":1},{"version":"53390c21d095fb54e6c0b8351cbf7f4008f096ade9717bc5ee75e340bc3dfa30","impliedFormat":1},{"version":"71493b2c538dffa1e3e968b55b70984b542cc6e488012850865f72768ff32630","impliedFormat":1},{"version":"8ebf448e9837fda1a368acbb575b0e28843d5b2a3fda04bce76248b64326ea49","impliedFormat":1},{"version":"91b9f6241fca7843985aa31157cfa08cc724c77d91145a4d834d27cdde099c05","impliedFormat":1},{"version":"8b94ac8c460c9a2578ca3308fecfcf034e21af89e9c287c97710e9717ffae133","impliedFormat":1},{"version":"a7266bcc42f8ec0f31f319c2dd8100411b4d7b8a534235cb00a719f1c8a2a42e","impliedFormat":1},{"version":"3dfa3a6f2a62259b56fa7bcebfbacf886848dfa037298be5bed07c7a0381ee4f","impliedFormat":1},{"version":"a1e3cda52746919d2a95784ce0b1b9ffa22052209aab5f54e079e7b920f5339e","impliedFormat":1},{"version":"1882680f8c88c5648d603408dd1943857ca831a815e33d3126be8368f7a69252","impliedFormat":1},{"version":"f387a979388291b2688ba0f604e3ae78874f5f777616b448d34109762a4f05a9","impliedFormat":1},{"version":"cae0fb826d8a88749189b8a924dfcb5d3ad629e3bc5ec934195fbd83fa48b068","impliedFormat":1},{"version":"376b8482d1224aa83f4521590672304e30ba847d0b87b9e1a62b2e60a5c788f2","impliedFormat":1},{"version":"488242948cc48ee6413a159c60bcaf70de15db01364741737a962662f1a127a5","impliedFormat":1},{"version":"42bacb33cddecbcfe3e043ee1117ba848801749e44f947626765b3e0aec74b1c","impliedFormat":1},{"version":"b326790c20287ad266b5fcd0c388e2a83320a24747856727dcb70c7bbd489dfc","impliedFormat":1},{"version":"cd2156bc8e4d54d52a2817d1b6f4629a5dd3173b1d8bb0fc893ee678d6a78ecd","impliedFormat":1},{"version":"60526d9010e8ccb2a76a59821061463464c3acd5bc7a50320df6d2e4e0d6e4f7","impliedFormat":1},{"version":"562cce1c8e14e8d5a55d1931cb1848b1df49cc7b1024356d56f3550ed57ad67f","impliedFormat":1},{"version":"623fa4efc706bb9956d0ae94b13321c6617655bf8ebdb270c9792bb398f82e44","impliedFormat":1},{"version":"f20c96192f5841cbf982d2c1989c1e9fdef41c4a9db7543edff131007bf1dbfb","impliedFormat":1},{"version":"79d6871ce0da76f4c865a58daa509d5c8a10545d510b804501daa5d0626e7028","impliedFormat":1},{"version":"9054417b5760061bc5fe31f9eee5dc9bf018339b0617d3c65dd1673c8e3c0f25","impliedFormat":1},{"version":"442856ad0787bc213f659e134c204ad0d502179aa216bf700faefb5572208358","impliedFormat":1},{"version":"443702ca8101ef0adc827c2cc530ca93cf98d41e36ce4399efb9bc833ad9cb62","impliedFormat":1},{"version":"c94f70562ae60797cce564c3bebbaaf1752c327d5063d6ac152aa5ca1616c267","impliedFormat":1},{"version":"2aeb5fcdfc884b16015617d263fd8d1a8513f7efe23880be4e5f0bdb3794b37c","impliedFormat":1},{"version":"fd412dd6372493eb8e3e95cae8687d35e4d34dde905a33e0ee47b74224cdd6ab","impliedFormat":1},{"version":"b561170fbe8d4292425e1dfa52406c8d97575681f7a5e420d11d9f72f7c29e38","impliedFormat":1},{"version":"5fe94f3f6411a0f6293f16fdc8e02ee61138941847ce91d6f6800c97fac22fcd","impliedFormat":1},{"version":"7f7c0ecc3eeeef905a3678e540947f4fbbc1a9c76075419dcc5fbfc3df59cb0b","impliedFormat":1},{"version":"df3303018d45c92be73fb4a282d5a242579f96235f5e0f8981983102caf5feca","impliedFormat":1},{"version":"35db266b474b3b9dfd0bc7d25dff3926cc227de45394262f3783b8b174182a16","impliedFormat":1},{"version":"8205e62a7310ac0513747f6d84175400680cff372559bc5fbe2df707194a295d","impliedFormat":1},{"version":"084d0df6805570b6dc6c8b49c3a71d5bdfe59606901e0026c63945b68d4b080a","impliedFormat":1},{"version":"8387fa3287992c71702756fe6ecea68e2f8f2c5aa434493e3afe4817dd4a4787","impliedFormat":1},{"version":"0f066f9654e700a9cf79c75553c934eb14296aa80583bd2b5d07e2d582a3f4ee","impliedFormat":1},{"version":"269c5d54104033b70331343bd931c9933852a882391ed6bd98c3d8b7d6465d22","impliedFormat":1},{"version":"a56b8577aaf471d9e60582065a8193269310e8cae48c1ce4111ed03216f5f715","impliedFormat":1},{"version":"486ae83cd51b813095f6716f06cc9b2cf480ad1d6c7f8ec59674d6c858cd2407","impliedFormat":1},{"version":"fff527e2567a24dd634a30268f1aa8a220315fed9c513d70ee872e54f67f27f3","impliedFormat":1},{"version":"5dd0ff735b3f2e642c3f16bcfb3dc4ecebb679a70e43cfb19ab5fd84d8faaeed","impliedFormat":1},{"version":"d1d78d1ef0f21ac77cdc436d2a4d56592453a8a2e51af2040ec9a69a5d35e4de","impliedFormat":1},{"version":"bc55b91274e43f88030c9cfe2c4217fae57894c3c302173ab6e9743c29484e3d","impliedFormat":1},{"version":"8bb22f70bfd7bf186631fa565c9202ee6a1009ffb961197b7d092b5a1e1d56b1","impliedFormat":1},{"version":"77282216c61bcef9a700db98e142301d5a7d988d3076286029da63e415e98a42","impliedFormat":1},{"version":"6c28f4f95aaa6c3c8b1a0681c29f446b0bf0ed1aa5aa11e8b2ca6fc9e066e9f2","impliedFormat":1},{"version":"64ce8e260a1362d4cadd6c753581a912a9869d4a53ec6e733dc61018f9250f5d","impliedFormat":1},{"version":"85a915dbb768b89cb92f5e6c165d776bfebd065883c34fee4e0219c3ed321b47","impliedFormat":1},{"version":"83df2f39cb14971adea51d1c84e7d146a34e9b7f84ad118450a51bdc3138412c","impliedFormat":1},{"version":"b96364fcb0c9d521e7618346b00acf3fe16ccf9368404ceac1658edee7b6332c","impliedFormat":1},{"version":"bdb2b70c74908c92ec41d8dd8375a195cb3bb07523e4de642b2b2dfbde249ca6","impliedFormat":1},{"version":"7b329f4137a552073f504022acbf8cd90d49cc5e5529791bef508f76ff774854","impliedFormat":1},{"version":"f63bbbffcfc897d22f34cf19ae13405cd267b1783cd21ec47d8a2d02947c98c1","impliedFormat":1},{"version":"7889f4932dfa7b1126cdc17914d85d80b5860cc3d62ba329494007e8aab45430","impliedFormat":1},{"version":"d9725ef7f60a791668f7fb808eb90b1789feaaef989a686fefc0f7546a51dcdc","impliedFormat":1},{"version":"df55b9be6ba19a6f77487e09dc7a94d7c9bf66094d35ea168dbd4bac42c46b8f","impliedFormat":1},{"version":"595125f3e088b883d104622ef10e6b7d5875ff6976bbe4d7dca090a3e2dca513","impliedFormat":1},{"version":"8ebb6f0603bf481e893311c49e4d2e2061413c51b9ba5898cd9b0a01f5ef19c8","impliedFormat":1},{"version":"e0d7eed4ba363df3faadb8e617f95f9fc8adfbb00b87db7ade4a1098d6cf1e90","impliedFormat":1},{"version":"38faab59a79924ce5eb4f2f3e7e7db91e74d425b4183f908cc014be213f0d971","impliedFormat":1},{"version":"de115595321ce012c456f512a799679bfc874f0ac0a4928a8429557bb25086aa","impliedFormat":1},{"version":"cdca67bd898deff48e3acb05fb44500b5ebce16c26a8ec99dee1522cf9879795","impliedFormat":1},{"version":"0524cab11ba9048d151d93cc666d3908fda329eec6b1642e9a936093e6d79f28","impliedFormat":1},{"version":"869073d7523e75f45bd65b2072865c60002d5e0cbd3d17831e999cf011312778","impliedFormat":1},{"version":"bc7b5906a6ce6c5744a640c314e020856be6c50a693e77dc12aff2d77b12ca76","impliedFormat":1},{"version":"56503e377bc1344f155e4e3115a772cb4e59350c0b8131e3e1fb2750ac491608","impliedFormat":1},{"version":"6b579287217ee1320ee1c6cfec5f6730f3a1f91daab000f7131558ee531b2bf8","impliedFormat":1},{"version":"e2ddb2877f5a841866f4fc772a601b58e90ac8399b35f9a06535be81b8e08b47","impliedFormat":1},{"version":"a793636667598e739a52684033037a67dc2d9db37fab727623626ef19aa5abb9","impliedFormat":1},{"version":"b15d6238a86bc0fc2368da429249b96c260debc0cec3eb7b5f838ad32587c129","impliedFormat":1},{"version":"9a9fba3a20769b0a74923e7032997451b61c1bd371c519429b29019399040d74","impliedFormat":1},{"version":"4b10e2fe52cb61035e58df3f1fdd926dd0fe9cf1a2302f92916da324332fb4e0","impliedFormat":1},{"version":"d1092ae8d6017f359f4758115f588e089848cc8fb359f7ba045b1a1cf3668a49","impliedFormat":1},{"version":"ddae9195b0da7b25a585ef43365f4dc5204a746b155fbee71e6ee1a9193fb69f","impliedFormat":1},{"version":"32dbced998ce74c5e76ce87044d0b4071857576dde36b0c6ed1d5957ce9cf5b5","impliedFormat":1},{"version":"5bc29a9918feba88816b71e32960cf11243b77b76630e9e87cad961e5e1d31d0","impliedFormat":1},{"version":"341ffa358628577f490f128f3880c01d50ef31412d1be012bb1cd959b0a383ea","impliedFormat":1},{"version":"ecc1b8878c8033bde0204b85e26fe1af6847805427759e5723882c848a11e134","impliedFormat":1},{"version":"cfc9c32553ad3b5be38342bc8731397438a93531118e1a226a8c79ad255b4f0c","impliedFormat":1},{"version":"16e5b5b023c2a1119c1878a51714861c56255778de0a7fe378391876a15f7433","impliedFormat":1},{"version":"52e8612d284467b4417143ca8fe54d30145fdfc3815f5b5ea9b14b677f422be5","impliedFormat":1},{"version":"a090a8a3b0ef2cceeb089acf4df95df72e7d934215896afe264ff6f734d66d15","impliedFormat":1},{"version":"a0259c6054e3ed2c5fb705b6638e384446cbcdf7fd2072c659b43bd56e214b9a","impliedFormat":1},{"version":"005319c82222e57934c7b211013eb6931829e46b2a61c5d9a1c3c25f8dc3ea90","impliedFormat":1},{"version":"151f422f08c8ca67b77c5c39d49278b4df452ef409237c8219be109ae3cdae9d","impliedFormat":1},{"version":"6466cbb0aa561e1c1a87850a1f066692f1692a0a9513c508a3886cd66a62dae8","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d1d31f1786b80ab882f0844f2c99767f6f0c6538e94a4292775e8e741c6a802","impliedFormat":1},{"version":"4fed47227c29f71b82b4d21a9448e15492cdcc8b0858db30220178f05bbbeaa5","signature":"2a9464ab1154680f9a45713ad52ee914229ef5a0100cd8a7dc41e9c8dc8563c3","impliedFormat":1},{"version":"bb5cfe79e5f80bd06b0cb8d75274f7710ccb0ba269d35ab06c45dad7bf50a450","signature":"9f2c77b3670856f0be5fd1a504cbc163606ceed481860513eca72634b32d3c7d","impliedFormat":1},{"version":"c01cfa0f58e00bf8da8d4c5735784e1f181d5400a4ac81eedb7945788c0f0202","signature":"66b9118e963c55e4311125a3312c9d946106d43d9def22ed3f41bd52462a4c80","impliedFormat":1},{"version":"b411b5e0d027fad8b10c853e0bca6deb5c853c33434ba036b4b1c1aeed40cd14","signature":"74059c61aa14513a42afb684f2f27e698094baa9895f8e4b04a65b94375f5c40","impliedFormat":1},{"version":"fe5ee97529518a08f57ed224e67bfa96301e005bd08b5a5417344fcff97b3ac0","signature":"d728c1eb02f8384410cf59b5698c2d9f52c7ad655e839d6dbb1f1ad64877cadf","impliedFormat":1},{"version":"be7661a81fd349aa2baf5a7c29d0bd983a83ad685f4aa39c78dbc792c75e2ed9","signature":"8158a29454ce0c7ddb8bd1e17062ce64f9c6d2fa4d8c844ade50a4189da2b05d","impliedFormat":1},{"version":"083095f34bdcebdab08299946c14711451b411c27fce43b36c581c7872320281","signature":"79119a0b05f41118afb2d66ae50d7a36a4df53e9ea25d545ad008513afe7e510","impliedFormat":1},{"version":"9af86084a8ebbdad91aaae097e5a8a7da9fa391af3b5c23a92792d99e76f4677","signature":"d1ebadbf2f41d122d2910386bdc3e6080bce2b5d9707eb827acfc2736f2d911a","impliedFormat":1},{"version":"d66a64bd5ba6d512d47ccc0074cf9db23d7ea162de0739e8fcf77f0aeea37f3f","signature":"510cee1c8ec65773a4b4f970a8b04848bca6d2bfb4673fda9e7fe79cf669215c","impliedFormat":1},{"version":"f4f0f246a8a08617301f3b78229759623855253757b7b83f87447f2607a9e411","signature":"2b3d74e32bb0bd3cd9965f28ba76e5b6587232bf5dbe440f0363231849e42a93","impliedFormat":1},{"version":"c6c8073aa43181b3fb62e1db3462a8ed7d69980f44fb3ef805dc5d76114a443d","signature":"d160d34450c71d714ba809b84ab233881c3cbd582f2c129f8d7e20de2ea2e830","impliedFormat":1},{"version":"3561dd3bf6bb6e1afac607f92542b34e00203dd62a283d60f33c358b875de50f","signature":"b064caa285e15d91ac315e46f7a970940452b4a8f1c071736ca18a48faa98348","impliedFormat":1},{"version":"1bf3e9968191c32ae06a3d7bfd42555330950550c7319ac62d589da1c80e7e9f","signature":"7214a8af60b4039a192bf3460cf48b16c27272aed494e16c8fb375cbcab8a669","impliedFormat":1},{"version":"486302e6935a1024c28a1e21c4c2c6780bb32f24738b2e7ae576bf3515be21ec","signature":"d45382d88b9f313315c4693a3aceb2d137db236ed435726ccc3cb5f4f95fb696","impliedFormat":1},{"version":"98e00c2a3eab378b7026c6e83b0c8f89cffdec8bf39b96db5994951f457c9c84","signature":"ef963a484a85f604c7e9a105f7e53e6176e1d5cdb5d50c69b15188fa94b7ac07","impliedFormat":1},{"version":"a433d0f67aad0528586fb70ffd3a412221a98867fca8dc3df6eabcafbd2c1bd8","signature":"f5d48ed660a093a592fb4d6711e62cacc74112af8ef529921da1d69850cb7246","impliedFormat":1},{"version":"3944301fc3fecdfa3419d986f5e70a1ed82ddb44916072e076e42008877d66eb","signature":"ed66b549cf33c8068d2d68f0e3cb42eb5476e55fcc730fb0d4853e22df31355b","impliedFormat":1},{"version":"69202e2cda90a7dcf9eeb0ca62dec22f92acf669076829b44b627625c05830db","signature":"6d19e497dbbd0db80757a13d2ed759939d8f651a1d063570bc21359319f375b1","impliedFormat":1},{"version":"d4495febc498e1b9ebb71d5bec3120c93fc3971244b4a6a52da7b3006356aa39","signature":"8660e950fd61b3f60ae718284fef7d215011ed9d19ddf110ab688b9a69fc5e64","impliedFormat":1},{"version":"49c886c9ab3bedd4456c156d8d7b2cc02a167a1cb70a590a026f6ba54ebd2236","signature":"5ade073342145585fc0e64759dfcec8d0289e94abc75d2fb333522956c4f5a4b","impliedFormat":1},{"version":"9e2125dd17fd8f9b4546de01a8b30d8b45e8755a2461982c99e1638350f76a82","signature":"68e069b7ef4d7fad012b2aab487ccd1ab728fadc06240683ce520642a7961451","impliedFormat":1}],"root":[[152,172]],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"declarationMap":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"jsx":1,"module":199,"noImplicitAny":true,"noImplicitThis":true,"noUncheckedIndexedAccess":false,"outDir":"./dist","rootDir":"./src","skipDefaultLibCheck":false,"sourceMap":true,"strict":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":8,"useUnknownInCatchVariables":true},"referencedMap":[[77,1],[78,2],[53,3],[57,4],[87,5],[83,6],[90,7],[94,8],[96,9],[97,10],[116,11],[99,12],[101,13],[103,14],[104,15],[105,16],[71,16],[106,17],[72,18],[107,19],[108,10],[109,20],[110,21],[68,22],[113,23],[115,24],[114,25],[112,26],[73,17],[69,27],[70,28],[100,29],[92,29],[93,30],[76,31],[119,29],[120,32],[122,13],[79,33],[81,34],[124,35],[129,36],[80,37],[131,37],[132,38],[133,39],[135,40],[137,40],[136,40],[85,41],[84,42],[86,40],[82,43],[139,44],[66,38],[140,8],[141,8],[142,45],[143,29],[147,37],[150,46],[59,47],[60,48],[149,47],[67,27],[65,37],[172,49],[159,50],[169,51],[158,52],[170,47],[155,53],[160,54],[166,55],[152,56],[164,57],[161,58],[167,57],[156,59],[168,57],[157,47],[171,60],[165,54],[163,54],[162,61]],"version":"5.6.3"}
\ No newline at end of file
From db387091fd9cafe27c649b80252e979949908448 Mon Sep 17 00:00:00 2001
From: Joshua Tag Howard
Date: Mon, 28 Oct 2024 21:53:07 +0000
Subject: [PATCH 6/8] Update dependencies and add TypeScript support
---
README.md | 16 ++++-----------
package.json | 3 ++-
src/index.tsx | 56 ++++++++++++++++++++++++++-------------------------
3 files changed, 35 insertions(+), 40 deletions(-)
diff --git a/README.md b/README.md
index b58958a2..ef107361 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# React Native Markdown Display [![npm version](https://badge.fury.io/js/react-native-markdown-display.svg)](https://badge.fury.io/js/react-native-markdown-display) [![Known Vulnerabilities](https://snyk.io/test/github/iamacup/react-native-markdown-display/badge.svg)](https://snyk.io/test/github/iamacup/react-native-markdown-display)
+# React Native Markdown Display
It a 100% compatible CommonMark renderer, a react-native markdown renderer done right. This is **not** a web-view markdown renderer but a renderer that uses native components for all its elements. These components can be overwritten and styled as needed.
@@ -16,16 +16,8 @@ This is intended to be a replacement for react-native-markdown-renderer, with a
### Install
-#### Yarn
-
-```npm
-yarn add react-native-markdown-display
-```
-
-#### NPM
-
-```npm
-npm install -S react-native-markdown-display
+```sh
+npm install @ukdanceblue/react-native-markdown-display
```
### Get Started
@@ -34,7 +26,7 @@ npm install -S react-native-markdown-display
import React from 'react';
import { SafeAreaView, ScrollView, StatusBar } from 'react-native';
-import Markdown from 'react-native-markdown-display';
+import Markdown from '@ukdanceblue/react-native-markdown-display';
const copy = `# h1 Heading 8-)
diff --git a/package.json b/package.json
index 35c039b7..422efd03 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@ukdanceblue/react-native-markdown-display",
- "version": "0.1.0",
+ "version": "0.1.1",
"description": "Markdown renderer for react-native, with CommonMark spec support + adds syntax extensions & sugar (URL autolinking, typographer), originally created by Mient-jan Stelling as react-native-markdown-renderer",
"keywords": [
"react",
@@ -14,6 +14,7 @@
"type": "git",
"url": "git+https://github.com/ukdanceblue/react-native-markdown-display.git"
},
+ "private": false,
"license": "MIT",
"author": "Mient-jan Stelling and Tom Pickard + others from the community, ported to TypeScript by Tag Howard",
"type": "module",
diff --git a/src/index.tsx b/src/index.tsx
index 4aed590c..06e8a008 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -1,15 +1,15 @@
import MarkdownIt from "markdown-it";
-import type {ReactNode} from "react";
-import React, {useMemo} from "react";
-import type {TextStyle, ViewStyle} from "react-native";
-import {StyleSheet, Text} from "react-native";
+import type { ReactNode } from "react";
+import React, { useMemo } from "react";
+import type { TextStyle, ViewStyle } from "react-native";
+import { StyleSheet, Text } from "react-native";
import AstRenderer from "./lib/AstRenderer";
import parser from "./lib/parser";
-import type {RenderRules} from "./lib/renderRules";
+import type { RenderRules } from "./lib/renderRules";
import renderRules from "./lib/renderRules";
-import {styles} from "./lib/styles";
-import type {ASTNode} from "./lib/types";
+import { styles } from "./lib/styles";
+import type { ASTNode } from "./lib/types";
import removeTextStyleProps from "./lib/util/removeTextStyleProps";
function getStyle(
@@ -127,10 +127,10 @@ export interface MarkdownProps {
const Markdown: React.FC<
MarkdownProps & {
- maxTopLevelChildren: number | null;
- topLevelMaxExceededItem: React.ReactNode;
- allowedImageHandlers: string[];
- defaultImageHandler: string;
+ maxTopLevelChildren?: number | null;
+ topLevelMaxExceededItem?: React.ReactNode;
+ allowedImageHandlers?: string[];
+ defaultImageHandler?: string;
}
> = React.memo(
({
@@ -155,10 +155,10 @@ const Markdown: React.FC<
defaultImageHandler = "https://",
debugPrintTree = false,
}: MarkdownProps & {
- maxTopLevelChildren: number | null;
- topLevelMaxExceededItem: React.ReactNode;
- allowedImageHandlers: string[];
- defaultImageHandler: string;
+ maxTopLevelChildren?: number | null;
+ topLevelMaxExceededItem?: React.ReactNode;
+ allowedImageHandlers?: string[];
+ defaultImageHandler?: string;
}) => {
const momoizedRenderer = useMemo(
() =>
@@ -200,15 +200,17 @@ const Markdown: React.FC<
export default Markdown;
-export {default as MarkdownIt} from "markdown-it";
-export {default as AstRenderer} from "./lib/AstRenderer";
-export {default as textStyleProps} from "./lib/data/textStyleProps";
-export {default as parser} from "./lib/parser";
-export {default as renderRules} from "./lib/renderRules";
-export {styles} from "./lib/styles";
-export {default as getUniqueID} from "./lib/util/getUniqueID";
-export {default as hasParents} from "./lib/util/hasParents";
-export {default as openUrl} from "./lib/util/openUrl";
-export {default as removeTextStyleProps} from "./lib/util/removeTextStyleProps";
-export {stringToTokens} from "./lib/util/stringToTokens";
-export {default as tokensToAST} from "./lib/util/tokensToAST";
+export { default as MarkdownIt } from "markdown-it";
+export { default as AstRenderer } from "./lib/AstRenderer";
+export { default as textStyleProps } from "./lib/data/textStyleProps";
+export { default as parser } from "./lib/parser";
+export { default as renderRules } from "./lib/renderRules";
+export { styles } from "./lib/styles";
+export type { ASTNode } from "./lib/types";
+export { default as getUniqueID } from "./lib/util/getUniqueID";
+export { default as hasParents } from "./lib/util/hasParents";
+export { default as openUrl } from "./lib/util/openUrl";
+export { default as removeTextStyleProps } from "./lib/util/removeTextStyleProps";
+export { stringToTokens } from "./lib/util/stringToTokens";
+export { default as tokensToAST } from "./lib/util/tokensToAST";
+
From 2f9ac63ff4140481ff1a2eb621bb1847260877e7 Mon Sep 17 00:00:00 2001
From: Joshua Tag Howard
Date: Mon, 28 Oct 2024 22:46:13 +0000
Subject: [PATCH 7/8] Add demo
---
demo/.gitignore | 35 +++++
demo/App.tsx | 55 ++++++++
demo/app.json | 27 ++++
demo/assets/adaptive-icon.png | Bin 0 -> 17547 bytes
demo/assets/favicon.png | Bin 0 -> 1466 bytes
demo/assets/icon.png | Bin 0 -> 22380 bytes
demo/assets/splash.png | Bin 0 -> 47346 bytes
demo/babel.config.js | 6 +
demo/package.json | 29 ++++
demo/sampleFiles.ts | 246 ++++++++++++++++++++++++++++++++++
demo/tsconfig.json | 6 +
package.json | 4 +-
tsconfig.json | 4 +-
13 files changed, 408 insertions(+), 4 deletions(-)
create mode 100644 demo/.gitignore
create mode 100644 demo/App.tsx
create mode 100644 demo/app.json
create mode 100644 demo/assets/adaptive-icon.png
create mode 100644 demo/assets/favicon.png
create mode 100644 demo/assets/icon.png
create mode 100644 demo/assets/splash.png
create mode 100644 demo/babel.config.js
create mode 100644 demo/package.json
create mode 100644 demo/sampleFiles.ts
create mode 100644 demo/tsconfig.json
diff --git a/demo/.gitignore b/demo/.gitignore
new file mode 100644
index 00000000..05647d55
--- /dev/null
+++ b/demo/.gitignore
@@ -0,0 +1,35 @@
+# Learn more https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files
+
+# dependencies
+node_modules/
+
+# Expo
+.expo/
+dist/
+web-build/
+
+# Native
+*.orig.*
+*.jks
+*.p8
+*.p12
+*.key
+*.mobileprovision
+
+# Metro
+.metro-health-check*
+
+# debug
+npm-debug.*
+yarn-debug.*
+yarn-error.*
+
+# macOS
+.DS_Store
+*.pem
+
+# local env files
+.env*.local
+
+# typescript
+*.tsbuildinfo
diff --git a/demo/App.tsx b/demo/App.tsx
new file mode 100644
index 00000000..d304476b
--- /dev/null
+++ b/demo/App.tsx
@@ -0,0 +1,55 @@
+import { StatusBar } from "expo-status-bar";
+import { Text, View } from "react-native";
+
+import Markdown from "@ukdanceblue/react-native-markdown-display";
+import { useState } from "react";
+import Picker from "react-native-picker-select";
+import * as Samples from "./sampleFiles";
+
+const sampleList = Object.entries(Samples);
+
+export default function App() {
+ const [selectedSample, setSelectedSample] = useState(sampleList[0][1]);
+
+ return (
+
+
+ ({label: key, value}))}
+ onValueChange={(value: string) => {
+ setSelectedSample(value);
+ }}
+ />
+
+
+ {selectedSample}
+
+
+ {selectedSample}
+
+
+
+ );
+}
diff --git a/demo/app.json b/demo/app.json
new file mode 100644
index 00000000..bc8f04e8
--- /dev/null
+++ b/demo/app.json
@@ -0,0 +1,27 @@
+{
+ "expo": {
+ "name": "demo",
+ "slug": "demo",
+ "version": "1.0.0",
+ "orientation": "portrait",
+ "icon": "./assets/icon.png",
+ "userInterfaceStyle": "light",
+ "splash": {
+ "image": "./assets/splash.png",
+ "resizeMode": "contain",
+ "backgroundColor": "#ffffff"
+ },
+ "ios": {
+ "supportsTablet": true
+ },
+ "android": {
+ "adaptiveIcon": {
+ "foregroundImage": "./assets/adaptive-icon.png",
+ "backgroundColor": "#ffffff"
+ }
+ },
+ "web": {
+ "favicon": "./assets/favicon.png"
+ }
+ }
+}
diff --git a/demo/assets/adaptive-icon.png b/demo/assets/adaptive-icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..03d6f6b6c6727954aec1d8206222769afd178d8d
GIT binary patch
literal 17547
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
literal 0
HcmV?d00001
diff --git a/demo/assets/icon.png b/demo/assets/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..a0b1526fc7b78680fd8d733dbc6113e1af695487
GIT binary patch
literal 22380
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