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
JavaScript
;
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