UNPKG

928 BJavaScriptView Raw
1import map from 'lodash/fp/map';
2import toPairs from 'lodash/fp/toPairs';
3import kebabCase from 'lodash/fp/kebabCase';
4import { createElement } from 'react';
5import { renderToStaticMarkup } from 'react-dom/server';
6
7const DefaultProvider = ({ children }) => children;
8
9const toHelpers = (components, Provider = DefaultProvider) => {
10 const toHelper = ([componentName, Component]) => {
11 return (dust, options) => {
12 dust.helpers[kebabCase(componentName)] = (chunk, context, bodies, props) => {
13 const providerPropsAttribute = props.context;
14 const providerProps = providerPropsAttribute ? context.get(providerPropsAttribute) : {};
15
16 const html = renderToStaticMarkup(createElement(Provider, providerProps, createElement(Component, props)));
17
18 chunk.write(html);
19 };
20 };
21 };
22
23 return map(toHelper, toPairs(components));
24};
25
26export default toHelpers;
27//# sourceMappingURL=index.js.map
\No newline at end of file