diff --git a/README.md b/README.md index c897df5..6d18790 100644 --- a/README.md +++ b/README.md @@ -88,7 +88,7 @@ import {render} from 'react-dom' import bbobReactRender from '@bbob/react/es/render' import presetReact from '@bbob/preset-react' -console.log(render({bbobReactRender(`[i]Text[/i]`, presetReact())})); // Text +console.log(render({bbobReactRender(`[i]Text[/i]`, presetReact(), { onlyAllowTags: ['i'] })})); // Text ``` ### Presets @@ -165,7 +165,7 @@ import BBCode from '@bbob/react/es/Component' import reactPreset from '@bbob/preset-react/es' const MyComponent = () => ( - + [quote]Text[/quote] ) diff --git a/packages/bbob-react/src/Component.js b/packages/bbob-react/src/Component.js index 8dfd942..78f6411 100644 --- a/packages/bbob-react/src/Component.js +++ b/packages/bbob-react/src/Component.js @@ -2,11 +2,11 @@ import React from 'react'; import PropTypes from 'prop-types'; import { render } from './render'; -const content = (children, plugins) => React.Children.map(children, child => - (typeof child === 'string' ? render(child, plugins) : child)); +const content = (children, plugins, options) => React.Children.map(children, child => + (typeof child === 'string' ? render(child, plugins, options) : child)); const Component = props => - React.createElement(props.container, {}, content(props.children, props.plugins)); + React.createElement(props.container, {}, content(props.children, props.plugins, props.options)); if (process.env.NODE_ENV !== 'production') { Component.propTypes = { @@ -19,6 +19,7 @@ if (process.env.NODE_ENV !== 'production') { Component.defaultProps = { container: 'span', plugins: [], + options: {}, }; export default Component; diff --git a/packages/bbob-react/src/render.js b/packages/bbob-react/src/render.js index d9f9d00..54a6679 100644 --- a/packages/bbob-react/src/render.js +++ b/packages/bbob-react/src/render.js @@ -4,8 +4,9 @@ import * as html from '@bbob/html'; import { isTagNode, isStringNode } from '@bbob/plugin-helper'; -const toAST = (source, plugins) => core(plugins) +const toAST = (source, plugins, options) => core(plugins) .process(source, { + ...options, render: input => html.render(input, { stripTags: true }), }).tree; @@ -32,8 +33,8 @@ function renderToReactNodes(nodes) { return els; } -function render(source, plugins) { - return renderToReactNodes(toAST(source, plugins)); +function render(source, plugins, options) { + return renderToReactNodes(toAST(source, plugins, options)); } export { render };