UNPKG

1.45 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports['default'] = render;
7
8var _object = require('object.assign');
9
10var _object2 = _interopRequireDefault(_object);
11
12var _cheerio = require('cheerio');
13
14var _cheerio2 = _interopRequireDefault(_cheerio);
15
16var _getAdapter = require('./getAdapter');
17
18var _getAdapter2 = _interopRequireDefault(_getAdapter);
19
20function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
21
22/**
23 * Renders a react component into static HTML and provides a cheerio wrapper around it. This is
24 * somewhat asymmetric with `mount` and `shallow`, which don't use any external libraries, but
25 * Cheerio's API is pretty close to what we actually want and has a significant amount of utility
26 * that would be recreating the wheel if we didn't use it.
27 *
28 * I think there are a lot of good use cases to use `render` instead of `shallow` or `mount`, and
29 * thus I'd like to keep this API in here even though it's not really "ours".
30 *
31 * @param node
32 * @param options
33 * @returns {Cheerio}
34 */
35
36function render(node) {
37 var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
38
39 var adapter = (0, _getAdapter2['default'])(options);
40 var renderer = adapter.createRenderer((0, _object2['default'])({ mode: 'string' }, options));
41 var html = renderer.render(node, options.context);
42 return _cheerio2['default'].load('')(html);
43}
\No newline at end of file