1 | (function (global, factory) {
|
2 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@bbob/core'), require('@bbob/plugin-helper')) :
|
3 | typeof define === 'function' && define.amd ? define(['exports', '@bbob/core', '@bbob/plugin-helper'], factory) :
|
4 | (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.BbobHtml = {}, global.core, global.pluginHelper));
|
5 | })(this, (function (exports, core, pluginHelper) { 'use strict';
|
6 |
|
7 | const SELFCLOSE_END_TAG = '/>';
|
8 | const CLOSE_START_TAG = '</';
|
9 | const START_TAG = '<';
|
10 | const END_TAG = '>';
|
11 | const renderNode = (node, { stripTags =false })=>{
|
12 | if (!node) return '';
|
13 | const type = typeof node;
|
14 | if (type === 'string' || type === 'number') {
|
15 | return node;
|
16 | }
|
17 | if (type === 'object') {
|
18 | if (stripTags === true) {
|
19 |
|
20 | return renderNodes(node.content, {
|
21 | stripTags
|
22 | });
|
23 | }
|
24 | if (node.content === null) {
|
25 | return [
|
26 | START_TAG,
|
27 | node.tag,
|
28 | pluginHelper.attrsToString(node.attrs),
|
29 | SELFCLOSE_END_TAG
|
30 | ].join('');
|
31 | }
|
32 |
|
33 | return [
|
34 | START_TAG,
|
35 | node.tag,
|
36 | pluginHelper.attrsToString(node.attrs),
|
37 | END_TAG,
|
38 | renderNodes(node.content),
|
39 | CLOSE_START_TAG,
|
40 | node.tag,
|
41 | END_TAG
|
42 | ].join('');
|
43 | }
|
44 | if (Array.isArray(node)) {
|
45 |
|
46 | return renderNodes(node, {
|
47 | stripTags
|
48 | });
|
49 | }
|
50 | return '';
|
51 | };
|
52 | const renderNodes = (nodes, { stripTags =false } = {})=>[].concat(nodes).reduce((r, node)=>r + renderNode(node, {
|
53 | stripTags
|
54 | }), '');
|
55 | const toHTML = (source, plugins, options)=>core(plugins).process(source, {
|
56 | ...options,
|
57 | render: renderNodes
|
58 | }).html;
|
59 | const render = renderNodes;
|
60 |
|
61 | exports.default = toHTML;
|
62 | exports.render = render;
|
63 |
|
64 | Object.defineProperty(exports, '__esModule', { value: true });
|
65 |
|
66 | }));
|