UNPKG

react-native-markdown-renderer

Version:

Markdown renderer for react-native, with CommonMark spec support + adds syntax extensions & sugar (URL autolinking, typographer).

154 lines (153 loc) 4.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "AstRenderer", { enumerable: true, get: function () { return _AstRenderer.default; } }); Object.defineProperty(exports, "MarkdownIt", { enumerable: true, get: function () { return _markdownIt.default; } }); Object.defineProperty(exports, "PluginContainer", { enumerable: true, get: function () { return _PluginContainer.default; } }); Object.defineProperty(exports, "applyStyle", { enumerable: true, get: function () { return _applyStyle.default; } }); Object.defineProperty(exports, "blockPlugin", { enumerable: true, get: function () { return _blockPlugin.default; } }); exports.default = Markdown; Object.defineProperty(exports, "getUniqueID", { enumerable: true, get: function () { return _getUniqueID.default; } }); Object.defineProperty(exports, "hasParents", { enumerable: true, get: function () { return _hasParents.default; } }); Object.defineProperty(exports, "openUrl", { enumerable: true, get: function () { return _openUrl.default; } }); Object.defineProperty(exports, "parser", { enumerable: true, get: function () { return _parser.default; } }); Object.defineProperty(exports, "renderRules", { enumerable: true, get: function () { return _renderRules.default; } }); Object.defineProperty(exports, "stringToTokens", { enumerable: true, get: function () { return _stringToTokens.stringToTokens; } }); Object.defineProperty(exports, "styles", { enumerable: true, get: function () { return _styles.styles; } }); Object.defineProperty(exports, "tokensToAST", { enumerable: true, get: function () { return _tokensToAST.default; } }); var _react = require("react"); var _parser = _interopRequireDefault(require("./lib/parser")); var _applyStyle = _interopRequireDefault(require("./lib/util/applyStyle")); var _getUniqueID = _interopRequireDefault(require("./lib/util/getUniqueID")); var _hasParents = _interopRequireDefault(require("./lib/util/hasParents")); var _openUrl = _interopRequireDefault(require("./lib/util/openUrl")); var _tokensToAST = _interopRequireDefault(require("./lib/util/tokensToAST")); var _renderRules = _interopRequireDefault(require("./lib/renderRules")); var _AstRenderer = _interopRequireDefault(require("./lib/AstRenderer")); var _markdownIt = _interopRequireDefault(require("markdown-it")); var _PluginContainer = _interopRequireDefault(require("./lib/plugin/PluginContainer")); var _blockPlugin = _interopRequireDefault(require("./lib/plugin/blockPlugin")); var _styles = require("./lib/styles"); var _stringToTokens = require("./lib/util/stringToTokens"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const defaultMarkdownIt = (0, _markdownIt.default)({ typographer: true }); function Markdown({ children, rules, style, renderer: rendererProp, markdownit = defaultMarkdownIt, plugins = [] }) { if (rendererProp && rules) { console.warn('react-native-markdown-renderer you are using renderer and rules at the same time. This is not possible, props.rules is ignored'); } if (rendererProp && style) { console.warn('react-native-markdown-renderer you are using renderer and style at the same time. This is not possible, props.style is ignored'); } const markdownParser = (0, _react.useMemo)(() => { let md = markdownit; if (plugins.length > 0) { plugins.forEach(plugin => { // eslint-disable-next-line @typescript-eslint/no-explicit-any, prefer-spread md = md.use(...plugin.toArray()); }); } return md; }, [markdownit, plugins]); const resolvedRenderer = (0, _react.useMemo)(() => { if (rendererProp) { if (typeof rendererProp === 'function') { return { render: rendererProp }; } if (rendererProp instanceof _AstRenderer.default) { return rendererProp; } throw new Error('Provided renderer is not compatible with function or AstRenderer. please change'); } return new _AstRenderer.default({ ..._renderRules.default, ...(rules || {}) }, { ..._styles.styles, ...style }); }, [rendererProp, rules, style]); const copy = (0, _react.useMemo)(() => { return Array.isArray(children) ? children.join('') : children; }, [children]); return (0, _react.useMemo)(() => { return (0, _parser.default)(copy, resolvedRenderer.render, markdownParser); }, [copy, resolvedRenderer, markdownParser]); } //# sourceMappingURL=index.js.map