preact-render-to-string 3.7.1 → 3.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,293 +1,2 @@
1
- (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
3
- typeof define === 'function' && define.amd ? define(factory) :
4
- (global.preactRenderToString = factory());
5
- }(this, (function () {
6
-
7
- var NON_DIMENSION_PROPS = {
8
- boxFlex: 1, boxFlexGroup: 1, columnCount: 1, fillOpacity: 1, flex: 1, flexGrow: 1,
9
- flexPositive: 1, flexShrink: 1, flexNegative: 1, fontWeight: 1, lineClamp: 1, lineHeight: 1,
10
- opacity: 1, order: 1, orphans: 1, strokeOpacity: 1, widows: 1, zIndex: 1, zoom: 1
11
- };
12
-
13
- var ESC = {
14
- '<': '&lt;',
15
- '>': '&gt;',
16
- '"': '&quot;',
17
- '&': '&amp;'
18
- };
19
-
20
- var objectKeys = Object.keys || function (obj) {
21
- var keys = [];
22
- for (var i in obj) {
23
- if (obj.hasOwnProperty(i)) keys.push(i);
24
- }return keys;
25
- };
26
-
27
- var encodeEntities = function encodeEntities(s) {
28
- return String(s).replace(/[<>"&]/g, escapeChar);
29
- };
30
-
31
- var escapeChar = function escapeChar(a) {
32
- return ESC[a] || a;
33
- };
34
-
35
- var falsey = function falsey(v) {
36
- return v == null || v === false;
37
- };
38
-
39
- var memoize = function memoize(fn) {
40
- var mem = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
41
- return function (v) {
42
- return mem[v] || (mem[v] = fn(v));
43
- };
44
- };
45
-
46
- var indent = function indent(s, char) {
47
- return String(s).replace(/(\n+)/g, '$1' + (char || '\t'));
48
- };
49
-
50
- var isLargeString = function isLargeString(s, length, ignoreLines) {
51
- return String(s).length > (length || 40) || !ignoreLines && String(s).indexOf('\n') !== -1 || String(s).indexOf('<') !== -1;
52
- };
53
-
54
- function styleObjToCss(s) {
55
- var str = '';
56
- for (var prop in s) {
57
- var val = s[prop];
58
- if (val != null) {
59
- if (str) str += ' ';
60
- str += jsToCss(prop);
61
- str += ': ';
62
- str += val;
63
- if (typeof val === 'number' && !NON_DIMENSION_PROPS[prop]) {
64
- str += 'px';
65
- }
66
- str += ';';
67
- }
68
- }
69
- return str || undefined;
70
- }
71
-
72
- function hashToClassName(c) {
73
- var str = '';
74
- for (var prop in c) {
75
- if (c[prop]) {
76
- if (str) str += ' ';
77
- str += prop;
78
- }
79
- }
80
- return str;
81
- }
82
-
83
- var jsToCss = memoize(function (s) {
84
- return s.replace(/([A-Z])/g, '-$1').toLowerCase();
85
- });
86
-
87
- function assign(obj, props) {
88
- for (var i in props) {
89
- obj[i] = props[i];
90
- }return obj;
91
- }
92
-
93
- function getNodeProps(vnode) {
94
- var defaultProps = vnode.nodeName.defaultProps,
95
- props = assign({}, defaultProps || vnode.attributes);
96
- if (defaultProps) assign(props, vnode.attributes);
97
- if (vnode.children) props.children = vnode.children;
98
- return props;
99
- }
100
-
101
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
102
-
103
- var SHALLOW = { shallow: true };
104
-
105
- var UNNAMED = [];
106
-
107
- var EMPTY = {};
108
-
109
- var VOID_ELEMENTS = ['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wbr'];
110
-
111
- renderToString.render = renderToString;
112
-
113
- var shallowRender = function shallowRender(vnode, context) {
114
- return renderToString(vnode, context, SHALLOW);
115
- };
116
-
117
- function renderToString(vnode, context, opts, inner, isSvgMode) {
118
- var _ref = vnode || EMPTY,
119
- nodeName = _ref.nodeName,
120
- attributes = _ref.attributes,
121
- children = _ref.children,
122
- isComponent = false;
123
-
124
- context = context || {};
125
- opts = opts || {};
126
-
127
- var pretty = opts.pretty,
128
- indentChar = typeof pretty === 'string' ? pretty : '\t';
129
-
130
- if (vnode == null || typeof vnode === 'boolean') {
131
- return '';
132
- }
133
-
134
- if ((typeof vnode === 'undefined' ? 'undefined' : _typeof(vnode)) !== 'object' && !nodeName) {
135
- return encodeEntities(vnode);
136
- }
137
-
138
- if (typeof nodeName === 'function') {
139
- isComponent = true;
140
- if (opts.shallow && (inner || opts.renderRootComponent === false)) {
141
- nodeName = getComponentName(nodeName);
142
- } else {
143
- var props = getNodeProps(vnode),
144
- rendered = void 0;
145
-
146
- if (!nodeName.prototype || typeof nodeName.prototype.render !== 'function') {
147
- rendered = nodeName(props, context);
148
- } else {
149
- var c = new nodeName(props, context);
150
-
151
- c._disable = c.__x = true;
152
- c.props = props;
153
- c.context = context;
154
- if (c.componentWillMount) c.componentWillMount();
155
- rendered = c.render(c.props, c.state, c.context);
156
-
157
- if (c.getChildContext) {
158
- context = assign(assign({}, context), c.getChildContext());
159
- }
160
- }
161
-
162
- return renderToString(rendered, context, opts, opts.shallowHighOrder !== false);
163
- }
164
- }
165
-
166
- var s = '',
167
- html = void 0;
168
-
169
- if (attributes) {
170
- var attrs = objectKeys(attributes);
171
-
172
- if (opts && opts.sortAttributes === true) attrs.sort();
173
-
174
- for (var i = 0; i < attrs.length; i++) {
175
- var name = attrs[i],
176
- v = attributes[name];
177
- if (name === 'children') continue;
178
-
179
- if (name.match(/[\s\n\/='"\0<>]/)) continue;
180
-
181
- if (!(opts && opts.allAttributes) && (name === 'key' || name === 'ref')) continue;
182
-
183
- if (name === 'className') {
184
- if (attributes['class']) continue;
185
- name = 'class';
186
- } else if (isSvgMode && name.match(/^xlink\:?(.+)/)) {
187
- name = name.toLowerCase().replace(/^xlink\:?(.+)/, 'xlink:$1');
188
- }
189
-
190
- if (name === 'class' && v && (typeof v === 'undefined' ? 'undefined' : _typeof(v)) === 'object') {
191
- v = hashToClassName(v);
192
- } else if (name === 'style' && v && (typeof v === 'undefined' ? 'undefined' : _typeof(v)) === 'object') {
193
- v = styleObjToCss(v);
194
- }
195
-
196
- var hooked = opts.attributeHook && opts.attributeHook(name, v, context, opts, isComponent);
197
- if (hooked || hooked === '') {
198
- s += hooked;
199
- continue;
200
- }
201
-
202
- if (name === 'dangerouslySetInnerHTML') {
203
- html = v && v.__html;
204
- } else if ((v || v === 0 || v === '') && typeof v !== 'function') {
205
- if (v === true || v === '') {
206
- v = name;
207
-
208
- if (!opts || !opts.xml) {
209
- s += ' ' + name;
210
- continue;
211
- }
212
- }
213
- s += ' ' + name + '="' + encodeEntities(v) + '"';
214
- }
215
- }
216
- }
217
-
218
- var sub = s.replace(/^\n\s*/, ' ');
219
- if (sub !== s && !~sub.indexOf('\n')) s = sub;else if (pretty && ~s.indexOf('\n')) s += '\n';
220
-
221
- s = '<' + nodeName + s + '>';
222
-
223
- if (VOID_ELEMENTS.indexOf(nodeName) > -1) {
224
- s = s.replace(/>$/, ' />');
225
- }
226
-
227
- if (html) {
228
- if (pretty && isLargeString(html)) {
229
- html = '\n' + indentChar + indent(html, indentChar);
230
- }
231
- s += html;
232
- } else {
233
- var len = children && children.length,
234
- pieces = [],
235
- hasLarge = ~s.indexOf('\n');
236
- for (var _i = 0; _i < len; _i++) {
237
- var child = children[_i];
238
- if (!falsey(child)) {
239
- var childSvgMode = nodeName === 'svg' ? true : nodeName === 'foreignObject' ? false : isSvgMode,
240
- ret = renderToString(child, context, opts, true, childSvgMode);
241
- if (!hasLarge && pretty && isLargeString(ret)) hasLarge = true;
242
- if (ret) pieces.push(ret);
243
- }
244
- }
245
- if (pretty && hasLarge) {
246
- for (var _i2 = pieces.length; _i2--;) {
247
- pieces[_i2] = '\n' + indentChar + indent(pieces[_i2], indentChar);
248
- }
249
- }
250
- if (pieces.length) {
251
- s += pieces.join('');
252
- } else if (opts && opts.xml) {
253
- return s.substring(0, s.length - 1) + ' />';
254
- }
255
- }
256
-
257
- if (VOID_ELEMENTS.indexOf(nodeName) === -1) {
258
- if (pretty && ~s.indexOf('\n')) s += '\n';
259
- s += '</' + nodeName + '>';
260
- }
261
-
262
- return s;
263
- }
264
-
265
- function getComponentName(component) {
266
- return component.displayName || component !== Function && component.name || getFallbackComponentName(component);
267
- }
268
-
269
- function getFallbackComponentName(component) {
270
- var str = Function.prototype.toString.call(component),
271
- name = (str.match(/^\s*function\s+([^\( ]+)/) || EMPTY)[1];
272
- if (!name) {
273
- var index = -1;
274
- for (var i = UNNAMED.length; i--;) {
275
- if (UNNAMED[i] === component) {
276
- index = i;
277
- break;
278
- }
279
- }
280
-
281
- if (index < 0) {
282
- index = UNNAMED.push(component) - 1;
283
- }
284
- name = 'UnnamedComponent' + index;
285
- }
286
- return name;
287
- }
288
- renderToString.shallowRender = shallowRender;
289
-
290
- return renderToString;
291
-
292
- })));
1
+ !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):e.preactRenderToString=n()}(this,function(){var e=/acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i,n=Object.keys||function(e){var n=[];for(var t in e)e.hasOwnProperty(t)&&n.push(t);return n},t=function(e){return String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")},r=function(e,n){return String(e).replace(/(\n+)/g,"$1"+(n||"\t"))},o=function(e,n,t){return String(e).length>(n||40)||!t&&-1!==String(e).indexOf("\n")||-1!==String(e).indexOf("<")},i={};function a(n){var t="";for(var r in n){var o=n[r];null!=o&&(t&&(t+=" "),t+=i[r]||(i[r]=r.replace(/([A-Z])/g,"-$1").toLowerCase()),t+=": ",t+=o,"number"==typeof o&&!1===e.test(r)&&(t+="px"),t+=";")}return t||void 0}function f(e,n){for(var t in n)e[t]=n[t];return e}var l={shallow:!0},c=[],u=/^(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/;s.render=s;function s(e,i,l,p,d){if(null==e||"boolean"==typeof e)return"";var h=e.nodeName,g=e.attributes,v=!1;i=i||{};var m,y=(l=l||{}).pretty,b="string"==typeof y?y:"\t";if("object"!=typeof e&&!h)return t(e);if("function"==typeof h){if(v=!0,!l.shallow||!p&&!1!==l.renderRootComponent){var x,w=function(e){var n=f({},e.attributes);n.children=e.children;var t=e.nodeName.defaultProps;if(void 0!==t)for(var r in t)void 0===n[r]&&(n[r]=t[r]);return n}(e);if(h.prototype&&"function"==typeof h.prototype.render){var k=new h(w,i);k._disable=k.__x=!0,k.props=w,k.context=i,k.componentWillMount&&k.componentWillMount(),x=k.render(k.props,k.state,k.context),k.getChildContext&&(i=f(f({},i),k.getChildContext()))}else x=h(w,i);return s(x,i,l,!1!==l.shallowHighOrder)}h=(m=h).displayName||m!==Function&&m.name||function(e){var n=(Function.prototype.toString.call(e).match(/^\s*function\s+([^( ]+)/)||"")[1];if(!n){for(var t=-1,r=c.length;r--;)if(c[r]===e){t=r;break}t<0&&(t=c.push(e)-1),n="UnnamedComponent"+t}return n}(m)}var O,S="";if(g){var C=n(g);l&&!0===l.sortAttributes&&C.sort();for(var j=0;j<C.length;j++){var $=C[j],_=g[$];if("children"!==$&&(!$.match(/[\s\n\\/='"\0<>]/)&&(l&&l.allAttributes||"key"!==$&&"ref"!==$))){if("className"===$){if(g.class)continue;$="class"}else d&&$.match(/^xlink:?./)&&($=$.toLowerCase().replace(/^xlink:?/,"xlink:"));"style"===$&&_&&"object"==typeof _&&(_=a(_));var H=l.attributeHook&&l.attributeHook($,_,i,l,v);if(H||""===H)S+=H;else if("dangerouslySetInnerHTML"===$)O=_&&_.__html;else if((_||0===_||""===_)&&"function"!=typeof _){if(!(!0!==_&&""!==_||(_=$,l&&l.xml))){S+=" "+$;continue}S+=" "+$+'="'+t(_)+'"'}}}}var N=S.replace(/^\n\s*/," ");if(N===S||~N.indexOf("\n")?y&&~S.indexOf("\n")&&(S+="\n"):S=N,S="<"+h+S+">",String(h).match(/[\s\n\\/='"\0<>]/))throw S;var A=String(h).match(u);A&&(S=S.replace(/>$/," />"));var L=[];if(O)y&&o(O)&&(O="\n"+b+r(O,b)),S+=O;else if(e.children){for(var M=~S.indexOf("\n"),R=0;R<e.children.length;R++){var F=e.children[R];if(null!=F&&!1!==F){var P=s(F,i,l,!0,"svg"===h||"foreignObject"!==h&&d);!M&&y&&o(P)&&(M=!0),P&&L.push(P)}}if(y&&M)for(var T=L.length;T--;)L[T]="\n"+b+r(L[T],b)}if(L.length)S+=L.join("");else if(l&&l.xml)return S.substring(0,S.length-1)+" />";return A||(y&&~S.indexOf("\n")&&(S+="\n"),S+="</"+h+">"),S}return s.shallowRender=function(e,n){return s(e,n,l)},s});
293
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":["../src/util.js","../src/index.js"],"sourcesContent":["// DOM properties that should NOT have \"px\" added when numeric\nexport const NON_DIMENSION_PROPS = {\n\tboxFlex:1, boxFlexGroup:1, columnCount:1, fillOpacity:1, flex:1, flexGrow:1,\n\tflexPositive:1, flexShrink:1, flexNegative:1, fontWeight:1, lineClamp:1, lineHeight:1,\n\topacity:1, order:1, orphans:1, strokeOpacity:1, widows:1, zIndex:1, zoom:1\n};\n\nconst ESC = {\n\t'<': '&lt;',\n\t'>': '&gt;',\n\t'\"': '&quot;',\n\t'&': '&amp;'\n};\n\nexport const objectKeys = Object.keys || (obj => {\n\tlet keys = [];\n\tfor (let i in obj) if (obj.hasOwnProperty(i)) keys.push(i);\n\treturn keys;\n});\n\nexport let encodeEntities = s => String(s).replace(/[<>\"&]/g, escapeChar);\n\nlet escapeChar = a => ESC[a] || a;\n\nexport let falsey = v => v==null || v===false;\n\nexport let memoize = (fn, mem={}) => v => mem[v] || (mem[v] = fn(v));\n\nexport let indent = (s, char) => String(s).replace(/(\\n+)/g, '$1' + (char || '\\t'));\n\nexport let isLargeString = (s, length, ignoreLines) => (String(s).length>(length || 40) || (!ignoreLines && String(s).indexOf('\\n')!==-1) || String(s).indexOf('<')!==-1);\n\n// Convert an Object style to a CSSText string\nexport function styleObjToCss(s) {\n\tlet str = '';\n\tfor (let prop in s) {\n\t\tlet val = s[prop];\n\t\tif (val!=null) {\n\t\t\tif (str) str += ' ';\n\t\t\tstr += jsToCss(prop);\n\t\t\tstr += ': ';\n\t\t\tstr += val;\n\t\t\tif (typeof val==='number' && !NON_DIMENSION_PROPS[prop]) {\n\t\t\t\tstr += 'px';\n\t\t\t}\n\t\t\tstr += ';';\n\t\t}\n\t}\n\treturn str || undefined;\n}\n\n\n// See https://github.com/developit/preact/blob/master/src/util.js#L61\nexport function hashToClassName(c) {\n\tlet str = '';\n\tfor (let prop in c) {\n\t\tif (c[prop]) {\n\t\t\tif (str) str += ' ';\n\t\t\tstr += prop;\n\t\t}\n\t}\n\treturn str;\n}\n\n// Convert a JavaScript camel-case CSS property name to a CSS property name\nexport let jsToCss = memoize( s => s.replace(/([A-Z])/g,'-$1').toLowerCase() );\n\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn obj;\n}\n\nexport function getNodeProps(vnode) {\n\tlet defaultProps = vnode.nodeName.defaultProps,\n\t\tprops = assign({}, defaultProps || vnode.attributes);\n\tif (defaultProps) assign(props, vnode.attributes);\n\tif (vnode.children) props.children = vnode.children;\n\treturn props;\n}\n","import { objectKeys, encodeEntities, falsey, memoize, indent, isLargeString, styleObjToCss, hashToClassName, assign, getNodeProps } from './util';\n\nconst SHALLOW = { shallow: true };\n\n// components without names, kept as a hash for later comparison to return consistent UnnamedComponentXX names.\nconst UNNAMED = [];\n\nconst EMPTY = {};\n\nconst VOID_ELEMENTS = [\n\t'area',\n\t'base',\n\t'br',\n\t'col',\n\t'embed',\n\t'hr',\n\t'img',\n\t'input',\n\t'link',\n\t'meta',\n\t'param',\n\t'source',\n\t'track',\n\t'wbr'\n];\n\n\n/** Render Preact JSX + Components to an HTML string.\n *\t@name render\n *\t@function\n *\t@param {VNode} vnode\tJSX VNode to render.\n *\t@param {Object} [context={}]\tOptionally pass an initial context object through the render path.\n *\t@param {Object} [options={}]\tRendering options\n *\t@param {Boolean} [options.shallow=false]\tIf `true`, renders nested Components as HTML elements (`<Foo a=\"b\" />`).\n *\t@param {Boolean} [options.xml=false]\t\tIf `true`, uses self-closing tags for elements without children.\n *\t@param {Boolean} [options.pretty=false]\t\tIf `true`, adds whitespace for readability\n */\nrenderToString.render = renderToString;\n\n\n/** Only render elements, leaving Components inline as `<ComponentName ... />`.\n *\tThis method is just a convenience alias for `render(vnode, context, { shallow:true })`\n *\t@name shallow\n *\t@function\n *\t@param {VNode} vnode\tJSX VNode to render.\n *\t@param {Object} [context={}]\tOptionally pass an initial context object through the render path.\n */\nlet shallowRender = (vnode, context) => renderToString(vnode, context, SHALLOW);\n\n\n/** The default export is an alias of `render()`. */\nexport default function renderToString(vnode, context, opts, inner, isSvgMode) {\n\tlet { nodeName, attributes, children } = vnode || EMPTY,\n\t\tisComponent = false;\n\tcontext = context || {};\n\topts = opts || {};\n\n\tlet pretty = opts.pretty,\n\t\tindentChar = typeof pretty==='string' ? pretty : '\\t';\n\n\tif (vnode==null || typeof vnode==='boolean') {\n\t\treturn '';\n\t}\n\n\t// #text nodes\n\tif (typeof vnode!=='object' && !nodeName) {\n\t\treturn encodeEntities(vnode);\n\t}\n\n\t// components\n\tif (typeof nodeName==='function') {\n\t\tisComponent = true;\n\t\tif (opts.shallow && (inner || opts.renderRootComponent===false)) {\n\t\t\tnodeName = getComponentName(nodeName);\n\t\t}\n\t\telse {\n\t\t\tlet props = getNodeProps(vnode),\n\t\t\t\trendered;\n\n\t\t\tif (!nodeName.prototype || typeof nodeName.prototype.render!=='function') {\n\t\t\t\t// stateless functional components\n\t\t\t\trendered = nodeName(props, context);\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// class-based components\n\t\t\t\tlet c = new nodeName(props, context);\n\t\t\t\t// turn off stateful re-rendering:\n\t\t\t\tc._disable = c.__x = true;\n\t\t\t\tc.props = props;\n\t\t\t\tc.context = context;\n\t\t\t\tif (c.componentWillMount) c.componentWillMount();\n\t\t\t\trendered = c.render(c.props, c.state, c.context);\n\n\t\t\t\tif (c.getChildContext) {\n\t\t\t\t\tcontext = assign(assign({}, context), c.getChildContext());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn renderToString(rendered, context, opts, opts.shallowHighOrder!==false);\n\t\t}\n\t}\n\n\t// render JSX to HTML\n\tlet s = '', html;\n\n\tif (attributes) {\n\t\tlet attrs = objectKeys(attributes);\n\n\t\t// allow sorting lexicographically for more determinism (useful for tests, such as via preact-jsx-chai)\n\t\tif (opts && opts.sortAttributes===true) attrs.sort();\n\n\t\tfor (let i=0; i<attrs.length; i++) {\n\t\t\tlet name = attrs[i],\n\t\t\t\tv = attributes[name];\n\t\t\tif (name==='children') continue;\n\n\t\t\tif (name.match(/[\\s\\n\\/='\"\\0<>]/)) continue;\n\n\t\t\tif (!(opts && opts.allAttributes) && (name==='key' || name==='ref')) continue;\n\n\t\t\tif (name==='className') {\n\t\t\t\tif (attributes['class']) continue;\n\t\t\t\tname = 'class';\n\t\t\t}\n\t\t\telse if (isSvgMode && name.match(/^xlink\\:?(.+)/)) {\n\t\t\t\tname = name.toLowerCase().replace(/^xlink\\:?(.+)/, 'xlink:$1');\n\t\t\t}\n\n\t\t\tif (name==='class' && v && typeof v==='object') {\n\t\t\t\tv = hashToClassName(v);\n\t\t\t}\n\t\t\telse if (name==='style' && v && typeof v==='object') {\n\t\t\t\tv = styleObjToCss(v);\n\t\t\t}\n\n\t\t\tlet hooked = opts.attributeHook && opts.attributeHook(name, v, context, opts, isComponent);\n\t\t\tif (hooked || hooked==='') {\n\t\t\t\ts += hooked;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (name==='dangerouslySetInnerHTML') {\n\t\t\t\thtml = v && v.__html;\n\t\t\t}\n\t\t\telse if ((v || v===0 || v==='') && typeof v!=='function') {\n\t\t\t\tif (v===true || v==='') {\n\t\t\t\t\tv = name;\n\t\t\t\t\t// in non-xml mode, allow boolean attributes\n\t\t\t\t\tif (!opts || !opts.xml) {\n\t\t\t\t\t\ts += ' ' + name;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ts += ` ${name}=\"${encodeEntities(v)}\"`;\n\t\t\t}\n\t\t}\n\t}\n\n\t// account for >1 multiline attribute\n\tlet sub = s.replace(/^\\n\\s*/, ' ');\n\tif (sub!==s && !~sub.indexOf('\\n')) s = sub;\n\telse if (pretty && ~s.indexOf('\\n')) s += '\\n';\n\n\ts = `<${nodeName}${s}>`;\n\n\tif (VOID_ELEMENTS.indexOf(nodeName)>-1) {\n\t\ts = s.replace(/>$/, ' />');\n\t}\n\n\tif (html) {\n\t\t// if multiline, indent.\n\t\tif (pretty && isLargeString(html)) {\n\t\t\thtml = '\\n' + indentChar + indent(html, indentChar);\n\t\t}\n\t\ts += html;\n\t}\n\telse {\n\t\tlet len = children && children.length,\n\t\t\tpieces = [],\n\t\t\thasLarge = ~s.indexOf('\\n');\n\t\tfor (let i=0; i<len; i++) {\n\t\t\tlet child = children[i];\n\t\t\tif (!falsey(child)) {\n\t\t\t\tlet childSvgMode = nodeName==='svg' ? true : nodeName==='foreignObject' ? false : isSvgMode,\n\t\t\t\t\tret = renderToString(child, context, opts, true, childSvgMode);\n\t\t\t\tif (!hasLarge && pretty && isLargeString(ret)) hasLarge = true;\n\t\t\t\tif (ret) pieces.push(ret);\n\t\t\t}\n\t\t}\n\t\tif (pretty && hasLarge) {\n\t\t\tfor (let i=pieces.length; i--; ) {\n\t\t\t\tpieces[i] = '\\n' + indentChar + indent(pieces[i], indentChar);\n\t\t\t}\n\t\t}\n\t\tif (pieces.length) {\n\t\t\ts += pieces.join('');\n\t\t}\n\t\telse if (opts && opts.xml) {\n\t\t\treturn s.substring(0, s.length-1) + ' />';\n\t\t}\n\t}\n\n\tif (VOID_ELEMENTS.indexOf(nodeName)===-1) {\n\t\tif (pretty && ~s.indexOf('\\n')) s += '\\n';\n\t\ts += `</${nodeName}>`;\n\t}\n\n\treturn s;\n}\n\nfunction getComponentName(component) {\n\treturn component.displayName || component!==Function && component.name || getFallbackComponentName(component);\n}\n\nfunction getFallbackComponentName(component) {\n\tlet str = Function.prototype.toString.call(component),\n\t\tname = (str.match(/^\\s*function\\s+([^\\( ]+)/) || EMPTY)[1];\n\tif (!name) {\n\t\t// search for an existing indexed name for the given component:\n\t\tlet index = -1;\n\t\tfor (let i=UNNAMED.length; i--; ) {\n\t\t\tif (UNNAMED[i]===component) {\n\t\t\t\tindex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t// not found, create a new indexed name:\n\t\tif (index<0) {\n\t\t\tindex = UNNAMED.push(component) - 1;\n\t\t}\n\t\tname = `UnnamedComponent${index}`;\n\t}\n\treturn name;\n}\nrenderToString.shallowRender = shallowRender;\n\n\nexport {\n\trenderToString as render,\n\trenderToString,\n\tshallowRender\n};\n"],"names":["NON_DIMENSION_PROPS","boxFlexGroup","columnCount","fillOpacity","flex","flexGrow","flexShrink","flexNegative","fontWeight","lineClamp","lineHeight","order","orphans","strokeOpacity","widows","zIndex","zoom","ESC","objectKeys","Object","keys","i","obj","hasOwnProperty","push","encodeEntities","String","s","replace","escapeChar","a","falsey","v","memoize","fn","mem","indent","char","isLargeString","length","ignoreLines","indexOf","styleObjToCss","str","prop","val","jsToCss","undefined","hashToClassName","c","toLowerCase","assign","props","getNodeProps","vnode","defaultProps","nodeName","attributes","children","SHALLOW","shallow","UNNAMED","EMPTY","VOID_ELEMENTS","renderToString","render","shallowRender","context","opts","inner","isSvgMode","isComponent","pretty","indentChar","renderRootComponent","getComponentName","rendered","prototype","_disable","__x","componentWillMount","state","getChildContext","shallowHighOrder","html","attrs","sortAttributes","sort","name","match","allAttributes","hooked","attributeHook","__html","xml","sub","len","pieces","hasLarge","child","childSvgMode","ret","join","substring","component","displayName","Function","getFallbackComponentName","toString","call","index"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/util.js","../src/index.js"],"sourcesContent":["// DOM properties that should NOT have \"px\" added when numeric\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n\nexport const objectKeys = Object.keys || (obj => {\n\tlet keys = [];\n\tfor (let i in obj) if (obj.hasOwnProperty(i)) keys.push(i);\n\treturn keys;\n});\n\nexport let encodeEntities = s => String(s)\n\t.replace(/&/g, '&amp;')\n\t.replace(/</g, '&lt;')\n\t.replace(/>/g, '&gt;')\n\t.replace(/\"/g, '&quot;');\n\nexport let indent = (s, char) => String(s).replace(/(\\n+)/g, '$1' + (char || '\\t'));\n\nexport let isLargeString = (s, length, ignoreLines) => (String(s).length>(length || 40) || (!ignoreLines && String(s).indexOf('\\n')!==-1) || String(s).indexOf('<')!==-1);\n\nconst JS_TO_CSS = {};\n\n// Convert an Object style to a CSSText string\nexport function styleObjToCss(s) {\n\tlet str = '';\n\tfor (let prop in s) {\n\t\tlet val = s[prop];\n\t\tif (val!=null) {\n\t\t\tif (str) str += ' ';\n\t\t\t// str += jsToCss(prop);\n\t\t\tstr += JS_TO_CSS[prop] || (JS_TO_CSS[prop] = prop.replace(/([A-Z])/g,'-$1').toLowerCase());\n\t\t\tstr += ': ';\n\t\t\tstr += val;\n\t\t\tif (typeof val==='number' && IS_NON_DIMENSIONAL.test(prop)===false) {\n\t\t\t\tstr += 'px';\n\t\t\t}\n\t\t\tstr += ';';\n\t\t}\n\t}\n\treturn str || undefined;\n}\n\n/**\n * Copy all properties from `props` onto `obj`.\n * @param {object} obj Object onto which properties should be copied.\n * @param {object} props Object from which to copy properties.\n * @returns {object}\n * @private\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn obj;\n}\n\n/**\n * Reconstruct Component-style `props` from a VNode.\n * Ensures default/fallback values from `defaultProps`:\n * Own-properties of `defaultProps` not present in `vnode.attributes` are added.\n * @param {import('preact').VNode} vnode The VNode to get props for\n * @returns {object} The props to use for this VNode\n */\nexport function getNodeProps(vnode) {\n\tlet props = assign({}, vnode.attributes);\n\tprops.children = vnode.children;\n\n\tlet defaultProps = vnode.nodeName.defaultProps;\n\tif (defaultProps!==undefined) {\n\t\tfor (let i in defaultProps) {\n\t\t\tif (props[i]===undefined) {\n\t\t\t\tprops[i] = defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn props;\n}\n","import { objectKeys, encodeEntities, indent, isLargeString, styleObjToCss, assign, getNodeProps } from './util';\n\nconst SHALLOW = { shallow: true };\n\n// components without names, kept as a hash for later comparison to return consistent UnnamedComponentXX names.\nconst UNNAMED = [];\n\nconst VOID_ELEMENTS = /^(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/;\n\n\n/** Render Preact JSX + Components to an HTML string.\n *\t@name render\n *\t@function\n *\t@param {VNode} vnode\tJSX VNode to render.\n *\t@param {Object} [context={}]\tOptionally pass an initial context object through the render path.\n *\t@param {Object} [options={}]\tRendering options\n *\t@param {Boolean} [options.shallow=false]\tIf `true`, renders nested Components as HTML elements (`<Foo a=\"b\" />`).\n *\t@param {Boolean} [options.xml=false]\t\tIf `true`, uses self-closing tags for elements without children.\n *\t@param {Boolean} [options.pretty=false]\t\tIf `true`, adds whitespace for readability\n */\nrenderToString.render = renderToString;\n\n\n/** Only render elements, leaving Components inline as `<ComponentName ... />`.\n *\tThis method is just a convenience alias for `render(vnode, context, { shallow:true })`\n *\t@name shallow\n *\t@function\n *\t@param {VNode} vnode\tJSX VNode to render.\n *\t@param {Object} [context={}]\tOptionally pass an initial context object through the render path.\n */\nlet shallowRender = (vnode, context) => renderToString(vnode, context, SHALLOW);\n\n\n/** The default export is an alias of `render()`. */\nfunction renderToString(vnode, context, opts, inner, isSvgMode) {\n\tif (vnode==null || typeof vnode==='boolean') {\n\t\treturn '';\n\t}\n\n\tlet nodeName = vnode.nodeName,\n\t\tattributes = vnode.attributes,\n\t\tisComponent = false;\n\tcontext = context || {};\n\topts = opts || {};\n\n\tlet pretty = opts.pretty,\n\t\tindentChar = typeof pretty==='string' ? pretty : '\\t';\n\n\t// #text nodes\n\tif (typeof vnode!=='object' && !nodeName) {\n\t\treturn encodeEntities(vnode);\n\t}\n\n\t// components\n\tif (typeof nodeName==='function') {\n\t\tisComponent = true;\n\t\tif (opts.shallow && (inner || opts.renderRootComponent===false)) {\n\t\t\tnodeName = getComponentName(nodeName);\n\t\t}\n\t\telse {\n\t\t\tlet props = getNodeProps(vnode),\n\t\t\t\trendered;\n\n\t\t\tif (!nodeName.prototype || typeof nodeName.prototype.render!=='function') {\n\t\t\t\t// stateless functional components\n\t\t\t\trendered = nodeName(props, context);\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// class-based components\n\t\t\t\tlet c = new nodeName(props, context);\n\t\t\t\t// turn off stateful re-rendering:\n\t\t\t\tc._disable = c.__x = true;\n\t\t\t\tc.props = props;\n\t\t\t\tc.context = context;\n\t\t\t\tif (c.componentWillMount) c.componentWillMount();\n\t\t\t\trendered = c.render(c.props, c.state, c.context);\n\n\t\t\t\tif (c.getChildContext) {\n\t\t\t\t\tcontext = assign(assign({}, context), c.getChildContext());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn renderToString(rendered, context, opts, opts.shallowHighOrder!==false);\n\t\t}\n\t}\n\n\t// render JSX to HTML\n\tlet s = '', html;\n\n\tif (attributes) {\n\t\tlet attrs = objectKeys(attributes);\n\n\t\t// allow sorting lexicographically for more determinism (useful for tests, such as via preact-jsx-chai)\n\t\tif (opts && opts.sortAttributes===true) attrs.sort();\n\n\t\tfor (let i=0; i<attrs.length; i++) {\n\t\t\tlet name = attrs[i],\n\t\t\t\tv = attributes[name];\n\t\t\tif (name==='children') continue;\n\n\t\t\tif (name.match(/[\\s\\n\\\\/='\"\\0<>]/)) continue;\n\n\t\t\tif (!(opts && opts.allAttributes) && (name==='key' || name==='ref')) continue;\n\n\t\t\tif (name==='className') {\n\t\t\t\tif (attributes.class) continue;\n\t\t\t\tname = 'class';\n\t\t\t}\n\t\t\telse if (isSvgMode && name.match(/^xlink:?./)) {\n\t\t\t\tname = name.toLowerCase().replace(/^xlink:?/, 'xlink:');\n\t\t\t}\n\n\t\t\tif (name==='style' && v && typeof v==='object') {\n\t\t\t\tv = styleObjToCss(v);\n\t\t\t}\n\n\t\t\tlet hooked = opts.attributeHook && opts.attributeHook(name, v, context, opts, isComponent);\n\t\t\tif (hooked || hooked==='') {\n\t\t\t\ts += hooked;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (name==='dangerouslySetInnerHTML') {\n\t\t\t\thtml = v && v.__html;\n\t\t\t}\n\t\t\telse if ((v || v===0 || v==='') && typeof v!=='function') {\n\t\t\t\tif (v===true || v==='') {\n\t\t\t\t\tv = name;\n\t\t\t\t\t// in non-xml mode, allow boolean attributes\n\t\t\t\t\tif (!opts || !opts.xml) {\n\t\t\t\t\t\ts += ' ' + name;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ts += ` ${name}=\"${encodeEntities(v)}\"`;\n\t\t\t}\n\t\t}\n\t}\n\n\t// account for >1 multiline attribute\n\tlet sub = s.replace(/^\\n\\s*/, ' ');\n\tif (sub!==s && !~sub.indexOf('\\n')) s = sub;\n\telse if (pretty && ~s.indexOf('\\n')) s += '\\n';\n\n\ts = `<${nodeName}${s}>`;\n\tif (String(nodeName).match(/[\\s\\n\\\\/='\"\\0<>]/)) throw s;\n\n\tlet isVoid = String(nodeName).match(VOID_ELEMENTS);\n\tif (isVoid) s = s.replace(/>$/, ' />');\n\n\tlet pieces = [];\n\tif (html) {\n\t\t// if multiline, indent.\n\t\tif (pretty && isLargeString(html)) {\n\t\t\thtml = '\\n' + indentChar + indent(html, indentChar);\n\t\t}\n\t\ts += html;\n\t}\n\telse if (vnode.children) {\n\t\tlet hasLarge = ~s.indexOf('\\n');\n\t\tfor (let i=0; i<vnode.children.length; i++) {\n\t\t\tlet child = vnode.children[i];\n\t\t\tif (child!=null && child!==false) {\n\t\t\t\tlet childSvgMode = nodeName==='svg' ? true : nodeName==='foreignObject' ? false : isSvgMode,\n\t\t\t\t\tret = renderToString(child, context, opts, true, childSvgMode);\n\t\t\t\tif (!hasLarge && pretty && isLargeString(ret)) hasLarge = true;\n\t\t\t\tif (ret) pieces.push(ret);\n\t\t\t}\n\t\t}\n\t\tif (pretty && hasLarge) {\n\t\t\tfor (let i=pieces.length; i--; ) {\n\t\t\t\tpieces[i] = '\\n' + indentChar + indent(pieces[i], indentChar);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (pieces.length) {\n\t\ts += pieces.join('');\n\t}\n\telse if (opts && opts.xml) {\n\t\treturn s.substring(0, s.length-1) + ' />';\n\t}\n\n\tif (!isVoid) {\n\t\tif (pretty && ~s.indexOf('\\n')) s += '\\n';\n\t\ts += `</${nodeName}>`;\n\t}\n\n\treturn s;\n}\n\nfunction getComponentName(component) {\n\treturn component.displayName || component!==Function && component.name || getFallbackComponentName(component);\n}\n\nfunction getFallbackComponentName(component) {\n\tlet str = Function.prototype.toString.call(component),\n\t\tname = (str.match(/^\\s*function\\s+([^( ]+)/) || '')[1];\n\tif (!name) {\n\t\t// search for an existing indexed name for the given component:\n\t\tlet index = -1;\n\t\tfor (let i=UNNAMED.length; i--; ) {\n\t\t\tif (UNNAMED[i]===component) {\n\t\t\t\tindex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t// not found, create a new indexed name:\n\t\tif (index<0) {\n\t\t\tindex = UNNAMED.push(component) - 1;\n\t\t}\n\t\tname = `UnnamedComponent${index}`;\n\t}\n\treturn name;\n}\nrenderToString.shallowRender = shallowRender;\n\nexport default renderToString;\n\nexport {\n\trenderToString as render,\n\trenderToString,\n\tshallowRender\n};\n"],"names":["const","IS_NON_DIMENSIONAL","objectKeys","Object","keys","obj","let","i","hasOwnProperty","push","encodeEntities","s","String","replace","indent","char","isLargeString","length","ignoreLines","indexOf","JS_TO_CSS","styleObjToCss","str","prop","val","toLowerCase","test","undefined","assign","props","SHALLOW","shallow","UNNAMED","VOID_ELEMENTS","renderToString","render","vnode","context","opts","inner","isSvgMode","nodeName","attributes","isComponent","component","pretty","indentChar","renderRootComponent","rendered","children","defaultProps","getNodeProps","prototype","c","_disable","__x","componentWillMount","state","getChildContext","shallowHighOrder","displayName","Function","name","toString","call","match","index","getFallbackComponentName","html","attrs","sortAttributes","sort","v","allAttributes","class","hooked","attributeHook","__html","xml","sub","isVoid","pieces","hasLarge","child","ret","join","substring","shallowRender"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- var e=/acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i,n=Object.keys||function(e){var n=[];for(var t in e)e.hasOwnProperty(t)&&n.push(t);return n},t=function(e){return String(e).replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/&/g,"&amp;")},r=function(e,n){return String(e).replace(/(\n+)/g,"$1"+(n||"\t"))},o=function(e,n,t){return String(e).length>(n||40)||!t&&-1!==String(e).indexOf("\n")||-1!==String(e).indexOf("<")},i={};function a(n){var t="";for(var r in n){var o=n[r];null!=o&&(t&&(t+=" "),t+=i[r]||(i[r]=r.replace(/([A-Z])/g,"-$1").toLowerCase()),t+=": ",t+=o,"number"==typeof o&&!1===e.test(r)&&(t+="px"),t+=";")}return t||void 0}function l(e,n){for(var t in n)e[t]=n[t];return e}var f={shallow:!0},u=[],c={},s=["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"];d.render=d;var p=function(e,n){return d(e,n,f)};function d(e,i,f,p,g){var h=e||c,v=h.nodeName,m=h.attributes,x=h.children,b=!1;i=i||{};var y,O=(f=f||{}).pretty,w="string"==typeof O?O:"\t";if(null==e||"boolean"==typeof e)return"";if("object"!=typeof e&&!v)return t(e);if("function"==typeof v){if(b=!0,!f.shallow||!p&&!1!==f.renderRootComponent){var k,C=function(e){var n=e.nodeName.defaultProps,t=l({},n||e.attributes);return n&&l(t,e.attributes),e.children&&(t.children=e.children),t}(e);if(v.prototype&&"function"==typeof v.prototype.render){var S=new v(C,i);S._disable=S.__x=!0,S.props=C,S.context=i,S.componentWillMount&&S.componentWillMount(),k=S.render(S.props,S.state,S.context),S.getChildContext&&(i=l(l({},i),S.getChildContext()))}else k=v(C,i);return d(k,i,f,!1!==f.shallowHighOrder)}v=(y=v).displayName||y!==Function&&y.name||function(e){var n=(Function.prototype.toString.call(e).match(/^\s*function\s+([^\( ]+)/)||c)[1];if(!n){for(var t=-1,r=u.length;r--;)if(u[r]===e){t=r;break}t<0&&(t=u.push(e)-1),n="UnnamedComponent"+t}return n}(y)}var j,_="";if(m){var H=n(m);f&&!0===f.sortAttributes&&H.sort();for(var N=0;N<H.length;N++){var $=H[N],A=m[$];if("children"!==$&&(f&&f.allAttributes||"key"!==$&&"ref"!==$)){if("className"===$){if(m.class)continue;$="class"}else g&&$.match(/^xlink\:?./)&&($=$.toLowerCase().replace(/^xlink\:?/,"xlink:"));"style"===$&&A&&"object"==typeof A&&(A=a(A));var L=f.attributeHook&&f.attributeHook($,A,i,f,b);if(L||""===L)_+=L;else if("dangerouslySetInnerHTML"===$)j=A&&A.__html;else if((A||0===A||""===A)&&"function"!=typeof A){if(!(!0!==A&&""!==A||(A=$,f&&f.xml))){_+=" "+$;continue}_+=" "+$+'="'+t(A)+'"'}}}}var M=_.replace(/^\n\s*/," ");if(M===_||~M.indexOf("\n")?O&&~_.indexOf("\n")&&(_+="\n"):_=M,_="<"+v+_+">",s.indexOf(v)>-1&&(_=_.replace(/>$/," />")),j)O&&o(j)&&(j="\n"+w+r(j,w)),_+=j;else{for(var F=x&&x.length,P=[],R=~_.indexOf("\n"),W=0;W<F;W++){var q=x[W];if(null!=q&&!1!==q){var z=d(q,i,f,!0,"svg"===v||"foreignObject"!==v&&g);!R&&O&&o(z)&&(R=!0),z&&P.push(z)}}if(O&&R)for(var I=P.length;I--;)P[I]="\n"+w+r(P[I],w);if(P.length)_+=P.join("");else if(f&&f.xml)return _.substring(0,_.length-1)+" />"}return-1===s.indexOf(v)&&(O&&~_.indexOf("\n")&&(_+="\n"),_+="</"+v+">"),_}d.shallowRender=p;export default d;export{d as render,d as renderToString,p as shallowRender};
1
+ var e=/acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i,n=Object.keys||function(e){var n=[];for(var r in e)e.hasOwnProperty(r)&&n.push(r);return n},r=function(e){return String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")},t=function(e,n){return String(e).replace(/(\n+)/g,"$1"+(n||"\t"))},o=function(e,n,r){return String(e).length>(n||40)||!r&&-1!==String(e).indexOf("\n")||-1!==String(e).indexOf("<")},i={};function a(n){var r="";for(var t in n){var o=n[t];null!=o&&(r&&(r+=" "),r+=i[t]||(i[t]=t.replace(/([A-Z])/g,"-$1").toLowerCase()),r+=": ",r+=o,"number"==typeof o&&!1===e.test(t)&&(r+="px"),r+=";")}return r||void 0}function l(e,n){for(var r in n)e[r]=n[r];return e}var f={shallow:!0},c=[],u=/^(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/;p.render=p;var s=function(e,n){return p(e,n,f)};function p(e,i,f,s,d){if(null==e||"boolean"==typeof e)return"";var h=e.nodeName,v=e.attributes,g=!1;i=i||{};var m,x=(f=f||{}).pretty,b="string"==typeof x?x:"\t";if("object"!=typeof e&&!h)return r(e);if("function"==typeof h){if(g=!0,!f.shallow||!s&&!1!==f.renderRootComponent){var y,w=function(e){var n=l({},e.attributes);n.children=e.children;var r=e.nodeName.defaultProps;if(void 0!==r)for(var t in r)void 0===n[t]&&(n[t]=r[t]);return n}(e);if(h.prototype&&"function"==typeof h.prototype.render){var k=new h(w,i);k._disable=k.__x=!0,k.props=w,k.context=i,k.componentWillMount&&k.componentWillMount(),y=k.render(k.props,k.state,k.context),k.getChildContext&&(i=l(l({},i),k.getChildContext()))}else y=h(w,i);return p(y,i,f,!1!==f.shallowHighOrder)}h=(m=h).displayName||m!==Function&&m.name||function(e){var n=(Function.prototype.toString.call(e).match(/^\s*function\s+([^( ]+)/)||"")[1];if(!n){for(var r=-1,t=c.length;t--;)if(c[t]===e){r=t;break}r<0&&(r=c.push(e)-1),n="UnnamedComponent"+r}return n}(m)}var O,S="";if(v){var C=n(v);f&&!0===f.sortAttributes&&C.sort();for(var j=0;j<C.length;j++){var $=C[j],_=v[$];if("children"!==$&&(!$.match(/[\s\n\\/='"\0<>]/)&&(f&&f.allAttributes||"key"!==$&&"ref"!==$))){if("className"===$){if(v.class)continue;$="class"}else d&&$.match(/^xlink:?./)&&($=$.toLowerCase().replace(/^xlink:?/,"xlink:"));"style"===$&&_&&"object"==typeof _&&(_=a(_));var H=f.attributeHook&&f.attributeHook($,_,i,f,g);if(H||""===H)S+=H;else if("dangerouslySetInnerHTML"===$)O=_&&_.__html;else if((_||0===_||""===_)&&"function"!=typeof _){if(!(!0!==_&&""!==_||(_=$,f&&f.xml))){S+=" "+$;continue}S+=" "+$+'="'+r(_)+'"'}}}}var N=S.replace(/^\n\s*/," ");if(N===S||~N.indexOf("\n")?x&&~S.indexOf("\n")&&(S+="\n"):S=N,S="<"+h+S+">",String(h).match(/[\s\n\\/='"\0<>]/))throw S;var A=String(h).match(u);A&&(S=S.replace(/>$/," />"));var L=[];if(O)x&&o(O)&&(O="\n"+b+t(O,b)),S+=O;else if(e.children){for(var M=~S.indexOf("\n"),F=0;F<e.children.length;F++){var P=e.children[F];if(null!=P&&!1!==P){var R=p(P,i,f,!0,"svg"===h||"foreignObject"!==h&&d);!M&&x&&o(R)&&(M=!0),R&&L.push(R)}}if(x&&M)for(var W=L.length;W--;)L[W]="\n"+b+t(L[W],b)}if(L.length)S+=L.join("");else if(f&&f.xml)return S.substring(0,S.length-1)+" />";return A||(x&&~S.indexOf("\n")&&(S+="\n"),S+="</"+h+">"),S}p.shallowRender=s;export default p;export{p as render,p as renderToString,s as shallowRender};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/util.js","../src/index.js"],"sourcesContent":["// DOM properties that should NOT have \"px\" added when numeric\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n\nexport const objectKeys = Object.keys || (obj => {\n\tlet keys = [];\n\tfor (let i in obj) if (obj.hasOwnProperty(i)) keys.push(i);\n\treturn keys;\n});\n\nexport let encodeEntities = s => String(s)\n\t.replace(/</g, '&lt;')\n\t.replace(/>/g, '&gt;')\n\t.replace(/\"/g, '&quot;')\n\t.replace(/&/g, '&amp;');\n\nexport let indent = (s, char) => String(s).replace(/(\\n+)/g, '$1' + (char || '\\t'));\n\nexport let isLargeString = (s, length, ignoreLines) => (String(s).length>(length || 40) || (!ignoreLines && String(s).indexOf('\\n')!==-1) || String(s).indexOf('<')!==-1);\n\nconst JS_TO_CSS = {};\n\n// Convert an Object style to a CSSText string\nexport function styleObjToCss(s) {\n\tlet str = '';\n\tfor (let prop in s) {\n\t\tlet val = s[prop];\n\t\tif (val!=null) {\n\t\t\tif (str) str += ' ';\n\t\t\t// str += jsToCss(prop);\n\t\t\tstr += JS_TO_CSS[prop] || (JS_TO_CSS[prop] = prop.replace(/([A-Z])/g,'-$1').toLowerCase());\n\t\t\tstr += ': ';\n\t\t\tstr += val;\n\t\t\tif (typeof val==='number' && IS_NON_DIMENSIONAL.test(prop)===false) {\n\t\t\t\tstr += 'px';\n\t\t\t}\n\t\t\tstr += ';';\n\t\t}\n\t}\n\treturn str || undefined;\n}\n\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn obj;\n}\n\nexport function getNodeProps(vnode) {\n\tlet defaultProps = vnode.nodeName.defaultProps,\n\t\tprops = assign({}, defaultProps || vnode.attributes);\n\tif (defaultProps) assign(props, vnode.attributes);\n\tif (vnode.children) props.children = vnode.children;\n\treturn props;\n}\n","import { objectKeys, encodeEntities, indent, isLargeString, styleObjToCss, assign, getNodeProps } from './util';\n\nconst SHALLOW = { shallow: true };\n\n// components without names, kept as a hash for later comparison to return consistent UnnamedComponentXX names.\nconst UNNAMED = [];\n\nconst EMPTY = {};\n\nconst VOID_ELEMENTS = [\n\t'area',\n\t'base',\n\t'br',\n\t'col',\n\t'embed',\n\t'hr',\n\t'img',\n\t'input',\n\t'link',\n\t'meta',\n\t'param',\n\t'source',\n\t'track',\n\t'wbr'\n];\n\n\n/** Render Preact JSX + Components to an HTML string.\n *\t@name render\n *\t@function\n *\t@param {VNode} vnode\tJSX VNode to render.\n *\t@param {Object} [context={}]\tOptionally pass an initial context object through the render path.\n *\t@param {Object} [options={}]\tRendering options\n *\t@param {Boolean} [options.shallow=false]\tIf `true`, renders nested Components as HTML elements (`<Foo a=\"b\" />`).\n *\t@param {Boolean} [options.xml=false]\t\tIf `true`, uses self-closing tags for elements without children.\n *\t@param {Boolean} [options.pretty=false]\t\tIf `true`, adds whitespace for readability\n */\nrenderToString.render = renderToString;\n\n\n/** Only render elements, leaving Components inline as `<ComponentName ... />`.\n *\tThis method is just a convenience alias for `render(vnode, context, { shallow:true })`\n *\t@name shallow\n *\t@function\n *\t@param {VNode} vnode\tJSX VNode to render.\n *\t@param {Object} [context={}]\tOptionally pass an initial context object through the render path.\n */\nlet shallowRender = (vnode, context) => renderToString(vnode, context, SHALLOW);\n\n\n/** The default export is an alias of `render()`. */\nexport default function renderToString(vnode, context, opts, inner, isSvgMode) {\n\tlet { nodeName, attributes, children } = vnode || EMPTY,\n\t\tisComponent = false;\n\tcontext = context || {};\n\topts = opts || {};\n\n\tlet pretty = opts.pretty,\n\t\tindentChar = typeof pretty==='string' ? pretty : '\\t';\n\n\tif (vnode==null || typeof vnode==='boolean') {\n\t\treturn '';\n\t}\n\n\t// #text nodes\n\tif (typeof vnode!=='object' && !nodeName) {\n\t\treturn encodeEntities(vnode);\n\t}\n\n\t// components\n\tif (typeof nodeName==='function') {\n\t\tisComponent = true;\n\t\tif (opts.shallow && (inner || opts.renderRootComponent===false)) {\n\t\t\tnodeName = getComponentName(nodeName);\n\t\t}\n\t\telse {\n\t\t\tlet props = getNodeProps(vnode),\n\t\t\t\trendered;\n\n\t\t\tif (!nodeName.prototype || typeof nodeName.prototype.render!=='function') {\n\t\t\t\t// stateless functional components\n\t\t\t\trendered = nodeName(props, context);\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// class-based components\n\t\t\t\tlet c = new nodeName(props, context);\n\t\t\t\t// turn off stateful re-rendering:\n\t\t\t\tc._disable = c.__x = true;\n\t\t\t\tc.props = props;\n\t\t\t\tc.context = context;\n\t\t\t\tif (c.componentWillMount) c.componentWillMount();\n\t\t\t\trendered = c.render(c.props, c.state, c.context);\n\n\t\t\t\tif (c.getChildContext) {\n\t\t\t\t\tcontext = assign(assign({}, context), c.getChildContext());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn renderToString(rendered, context, opts, opts.shallowHighOrder!==false);\n\t\t}\n\t}\n\n\t// render JSX to HTML\n\tlet s = '', html;\n\n\tif (attributes) {\n\t\tlet attrs = objectKeys(attributes);\n\n\t\t// allow sorting lexicographically for more determinism (useful for tests, such as via preact-jsx-chai)\n\t\tif (opts && opts.sortAttributes===true) attrs.sort();\n\n\t\tfor (let i=0; i<attrs.length; i++) {\n\t\t\tlet name = attrs[i],\n\t\t\t\tv = attributes[name];\n\t\t\tif (name==='children') continue;\n\t\t\tif (!(opts && opts.allAttributes) && (name==='key' || name==='ref')) continue;\n\n\t\t\tif (name==='className') {\n\t\t\t\tif (attributes['class']) continue;\n\t\t\t\tname = 'class';\n\t\t\t}\n\t\t\telse if (isSvgMode && name.match(/^xlink\\:?./)) {\n\t\t\t\tname = name.toLowerCase().replace(/^xlink\\:?/, 'xlink:');\n\t\t\t}\n\n\t\t\tif (name==='style' && v && typeof v==='object') {\n\t\t\t\tv = styleObjToCss(v);\n\t\t\t}\n\n\t\t\tlet hooked = opts.attributeHook && opts.attributeHook(name, v, context, opts, isComponent);\n\t\t\tif (hooked || hooked==='') {\n\t\t\t\ts += hooked;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (name==='dangerouslySetInnerHTML') {\n\t\t\t\thtml = v && v.__html;\n\t\t\t}\n\t\t\telse if ((v || v===0 || v==='') && typeof v!=='function') {\n\t\t\t\tif (v===true || v==='') {\n\t\t\t\t\tv = name;\n\t\t\t\t\t// in non-xml mode, allow boolean attributes\n\t\t\t\t\tif (!opts || !opts.xml) {\n\t\t\t\t\t\ts += ' ' + name;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ts += ` ${name}=\"${encodeEntities(v)}\"`;\n\t\t\t}\n\t\t}\n\t}\n\n\t// account for >1 multiline attribute\n\tlet sub = s.replace(/^\\n\\s*/, ' ');\n\tif (sub!==s && !~sub.indexOf('\\n')) s = sub;\n\telse if (pretty && ~s.indexOf('\\n')) s += '\\n';\n\n\ts = `<${nodeName}${s}>`;\n\n\tif (VOID_ELEMENTS.indexOf(nodeName)>-1) {\n\t\ts = s.replace(/>$/, ' />');\n\t}\n\n\tif (html) {\n\t\t// if multiline, indent.\n\t\tif (pretty && isLargeString(html)) {\n\t\t\thtml = '\\n' + indentChar + indent(html, indentChar);\n\t\t}\n\t\ts += html;\n\t}\n\telse {\n\t\tlet len = children && children.length,\n\t\t\tpieces = [],\n\t\t\thasLarge = ~s.indexOf('\\n');\n\t\tfor (let i=0; i<len; i++) {\n\t\t\tlet child = children[i];\n\t\t\tif (child!=null && child!==false) {\n\t\t\t\tlet childSvgMode = nodeName==='svg' ? true : nodeName==='foreignObject' ? false : isSvgMode,\n\t\t\t\t\tret = renderToString(child, context, opts, true, childSvgMode);\n\t\t\t\tif (!hasLarge && pretty && isLargeString(ret)) hasLarge = true;\n\t\t\t\tif (ret) pieces.push(ret);\n\t\t\t}\n\t\t}\n\t\tif (pretty && hasLarge) {\n\t\t\tfor (let i=pieces.length; i--; ) {\n\t\t\t\tpieces[i] = '\\n' + indentChar + indent(pieces[i], indentChar);\n\t\t\t}\n\t\t}\n\t\tif (pieces.length) {\n\t\t\ts += pieces.join('');\n\t\t}\n\t\telse if (opts && opts.xml) {\n\t\t\treturn s.substring(0, s.length-1) + ' />';\n\t\t}\n\t}\n\n\tif (VOID_ELEMENTS.indexOf(nodeName)===-1) {\n\t\tif (pretty && ~s.indexOf('\\n')) s += '\\n';\n\t\ts += `</${nodeName}>`;\n\t}\n\n\treturn s;\n}\n\nfunction getComponentName(component) {\n\treturn component.displayName || component!==Function && component.name || getFallbackComponentName(component);\n}\n\nfunction getFallbackComponentName(component) {\n\tlet str = Function.prototype.toString.call(component),\n\t\tname = (str.match(/^\\s*function\\s+([^\\( ]+)/) || EMPTY)[1];\n\tif (!name) {\n\t\t// search for an existing indexed name for the given component:\n\t\tlet index = -1;\n\t\tfor (let i=UNNAMED.length; i--; ) {\n\t\t\tif (UNNAMED[i]===component) {\n\t\t\t\tindex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t// not found, create a new indexed name:\n\t\tif (index<0) {\n\t\t\tindex = UNNAMED.push(component) - 1;\n\t\t}\n\t\tname = `UnnamedComponent${index}`;\n\t}\n\treturn name;\n}\nrenderToString.shallowRender = shallowRender;\n\n\nexport {\n\trenderToString as render,\n\trenderToString,\n\tshallowRender\n};\n"],"names":["const","IS_NON_DIMENSIONAL","objectKeys","Object","keys","obj","let","i","hasOwnProperty","push","encodeEntities","s","String","replace","indent","char","isLargeString","length","ignoreLines","indexOf","JS_TO_CSS","styleObjToCss","str","prop","val","toLowerCase","test","undefined","assign","props","SHALLOW","shallow","UNNAMED","EMPTY","VOID_ELEMENTS","renderToString","render","shallowRender","vnode","context","opts","inner","isSvgMode","isComponent","component","pretty","indentChar","nodeName","renderRootComponent","rendered","defaultProps","attributes","children","getNodeProps","prototype","c","_disable","__x","componentWillMount","state","getChildContext","shallowHighOrder","displayName","Function","name","toString","call","match","index","getFallbackComponentName","html","attrs","sortAttributes","sort","v","allAttributes","hooked","attributeHook","__html","xml","sub","len","pieces","hasLarge","child","ret","join","substring"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/util.js","../src/index.js"],"sourcesContent":["// DOM properties that should NOT have \"px\" added when numeric\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n\nexport const objectKeys = Object.keys || (obj => {\n\tlet keys = [];\n\tfor (let i in obj) if (obj.hasOwnProperty(i)) keys.push(i);\n\treturn keys;\n});\n\nexport let encodeEntities = s => String(s)\n\t.replace(/&/g, '&amp;')\n\t.replace(/</g, '&lt;')\n\t.replace(/>/g, '&gt;')\n\t.replace(/\"/g, '&quot;');\n\nexport let indent = (s, char) => String(s).replace(/(\\n+)/g, '$1' + (char || '\\t'));\n\nexport let isLargeString = (s, length, ignoreLines) => (String(s).length>(length || 40) || (!ignoreLines && String(s).indexOf('\\n')!==-1) || String(s).indexOf('<')!==-1);\n\nconst JS_TO_CSS = {};\n\n// Convert an Object style to a CSSText string\nexport function styleObjToCss(s) {\n\tlet str = '';\n\tfor (let prop in s) {\n\t\tlet val = s[prop];\n\t\tif (val!=null) {\n\t\t\tif (str) str += ' ';\n\t\t\t// str += jsToCss(prop);\n\t\t\tstr += JS_TO_CSS[prop] || (JS_TO_CSS[prop] = prop.replace(/([A-Z])/g,'-$1').toLowerCase());\n\t\t\tstr += ': ';\n\t\t\tstr += val;\n\t\t\tif (typeof val==='number' && IS_NON_DIMENSIONAL.test(prop)===false) {\n\t\t\t\tstr += 'px';\n\t\t\t}\n\t\t\tstr += ';';\n\t\t}\n\t}\n\treturn str || undefined;\n}\n\n/**\n * Copy all properties from `props` onto `obj`.\n * @param {object} obj Object onto which properties should be copied.\n * @param {object} props Object from which to copy properties.\n * @returns {object}\n * @private\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn obj;\n}\n\n/**\n * Reconstruct Component-style `props` from a VNode.\n * Ensures default/fallback values from `defaultProps`:\n * Own-properties of `defaultProps` not present in `vnode.attributes` are added.\n * @param {import('preact').VNode} vnode The VNode to get props for\n * @returns {object} The props to use for this VNode\n */\nexport function getNodeProps(vnode) {\n\tlet props = assign({}, vnode.attributes);\n\tprops.children = vnode.children;\n\n\tlet defaultProps = vnode.nodeName.defaultProps;\n\tif (defaultProps!==undefined) {\n\t\tfor (let i in defaultProps) {\n\t\t\tif (props[i]===undefined) {\n\t\t\t\tprops[i] = defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn props;\n}\n","import { objectKeys, encodeEntities, indent, isLargeString, styleObjToCss, assign, getNodeProps } from './util';\n\nconst SHALLOW = { shallow: true };\n\n// components without names, kept as a hash for later comparison to return consistent UnnamedComponentXX names.\nconst UNNAMED = [];\n\nconst VOID_ELEMENTS = /^(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/;\n\n\n/** Render Preact JSX + Components to an HTML string.\n *\t@name render\n *\t@function\n *\t@param {VNode} vnode\tJSX VNode to render.\n *\t@param {Object} [context={}]\tOptionally pass an initial context object through the render path.\n *\t@param {Object} [options={}]\tRendering options\n *\t@param {Boolean} [options.shallow=false]\tIf `true`, renders nested Components as HTML elements (`<Foo a=\"b\" />`).\n *\t@param {Boolean} [options.xml=false]\t\tIf `true`, uses self-closing tags for elements without children.\n *\t@param {Boolean} [options.pretty=false]\t\tIf `true`, adds whitespace for readability\n */\nrenderToString.render = renderToString;\n\n\n/** Only render elements, leaving Components inline as `<ComponentName ... />`.\n *\tThis method is just a convenience alias for `render(vnode, context, { shallow:true })`\n *\t@name shallow\n *\t@function\n *\t@param {VNode} vnode\tJSX VNode to render.\n *\t@param {Object} [context={}]\tOptionally pass an initial context object through the render path.\n */\nlet shallowRender = (vnode, context) => renderToString(vnode, context, SHALLOW);\n\n\n/** The default export is an alias of `render()`. */\nfunction renderToString(vnode, context, opts, inner, isSvgMode) {\n\tif (vnode==null || typeof vnode==='boolean') {\n\t\treturn '';\n\t}\n\n\tlet nodeName = vnode.nodeName,\n\t\tattributes = vnode.attributes,\n\t\tisComponent = false;\n\tcontext = context || {};\n\topts = opts || {};\n\n\tlet pretty = opts.pretty,\n\t\tindentChar = typeof pretty==='string' ? pretty : '\\t';\n\n\t// #text nodes\n\tif (typeof vnode!=='object' && !nodeName) {\n\t\treturn encodeEntities(vnode);\n\t}\n\n\t// components\n\tif (typeof nodeName==='function') {\n\t\tisComponent = true;\n\t\tif (opts.shallow && (inner || opts.renderRootComponent===false)) {\n\t\t\tnodeName = getComponentName(nodeName);\n\t\t}\n\t\telse {\n\t\t\tlet props = getNodeProps(vnode),\n\t\t\t\trendered;\n\n\t\t\tif (!nodeName.prototype || typeof nodeName.prototype.render!=='function') {\n\t\t\t\t// stateless functional components\n\t\t\t\trendered = nodeName(props, context);\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// class-based components\n\t\t\t\tlet c = new nodeName(props, context);\n\t\t\t\t// turn off stateful re-rendering:\n\t\t\t\tc._disable = c.__x = true;\n\t\t\t\tc.props = props;\n\t\t\t\tc.context = context;\n\t\t\t\tif (c.componentWillMount) c.componentWillMount();\n\t\t\t\trendered = c.render(c.props, c.state, c.context);\n\n\t\t\t\tif (c.getChildContext) {\n\t\t\t\t\tcontext = assign(assign({}, context), c.getChildContext());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn renderToString(rendered, context, opts, opts.shallowHighOrder!==false);\n\t\t}\n\t}\n\n\t// render JSX to HTML\n\tlet s = '', html;\n\n\tif (attributes) {\n\t\tlet attrs = objectKeys(attributes);\n\n\t\t// allow sorting lexicographically for more determinism (useful for tests, such as via preact-jsx-chai)\n\t\tif (opts && opts.sortAttributes===true) attrs.sort();\n\n\t\tfor (let i=0; i<attrs.length; i++) {\n\t\t\tlet name = attrs[i],\n\t\t\t\tv = attributes[name];\n\t\t\tif (name==='children') continue;\n\n\t\t\tif (name.match(/[\\s\\n\\\\/='\"\\0<>]/)) continue;\n\n\t\t\tif (!(opts && opts.allAttributes) && (name==='key' || name==='ref')) continue;\n\n\t\t\tif (name==='className') {\n\t\t\t\tif (attributes.class) continue;\n\t\t\t\tname = 'class';\n\t\t\t}\n\t\t\telse if (isSvgMode && name.match(/^xlink:?./)) {\n\t\t\t\tname = name.toLowerCase().replace(/^xlink:?/, 'xlink:');\n\t\t\t}\n\n\t\t\tif (name==='style' && v && typeof v==='object') {\n\t\t\t\tv = styleObjToCss(v);\n\t\t\t}\n\n\t\t\tlet hooked = opts.attributeHook && opts.attributeHook(name, v, context, opts, isComponent);\n\t\t\tif (hooked || hooked==='') {\n\t\t\t\ts += hooked;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (name==='dangerouslySetInnerHTML') {\n\t\t\t\thtml = v && v.__html;\n\t\t\t}\n\t\t\telse if ((v || v===0 || v==='') && typeof v!=='function') {\n\t\t\t\tif (v===true || v==='') {\n\t\t\t\t\tv = name;\n\t\t\t\t\t// in non-xml mode, allow boolean attributes\n\t\t\t\t\tif (!opts || !opts.xml) {\n\t\t\t\t\t\ts += ' ' + name;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ts += ` ${name}=\"${encodeEntities(v)}\"`;\n\t\t\t}\n\t\t}\n\t}\n\n\t// account for >1 multiline attribute\n\tlet sub = s.replace(/^\\n\\s*/, ' ');\n\tif (sub!==s && !~sub.indexOf('\\n')) s = sub;\n\telse if (pretty && ~s.indexOf('\\n')) s += '\\n';\n\n\ts = `<${nodeName}${s}>`;\n\tif (String(nodeName).match(/[\\s\\n\\\\/='\"\\0<>]/)) throw s;\n\n\tlet isVoid = String(nodeName).match(VOID_ELEMENTS);\n\tif (isVoid) s = s.replace(/>$/, ' />');\n\n\tlet pieces = [];\n\tif (html) {\n\t\t// if multiline, indent.\n\t\tif (pretty && isLargeString(html)) {\n\t\t\thtml = '\\n' + indentChar + indent(html, indentChar);\n\t\t}\n\t\ts += html;\n\t}\n\telse if (vnode.children) {\n\t\tlet hasLarge = ~s.indexOf('\\n');\n\t\tfor (let i=0; i<vnode.children.length; i++) {\n\t\t\tlet child = vnode.children[i];\n\t\t\tif (child!=null && child!==false) {\n\t\t\t\tlet childSvgMode = nodeName==='svg' ? true : nodeName==='foreignObject' ? false : isSvgMode,\n\t\t\t\t\tret = renderToString(child, context, opts, true, childSvgMode);\n\t\t\t\tif (!hasLarge && pretty && isLargeString(ret)) hasLarge = true;\n\t\t\t\tif (ret) pieces.push(ret);\n\t\t\t}\n\t\t}\n\t\tif (pretty && hasLarge) {\n\t\t\tfor (let i=pieces.length; i--; ) {\n\t\t\t\tpieces[i] = '\\n' + indentChar + indent(pieces[i], indentChar);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (pieces.length) {\n\t\ts += pieces.join('');\n\t}\n\telse if (opts && opts.xml) {\n\t\treturn s.substring(0, s.length-1) + ' />';\n\t}\n\n\tif (!isVoid) {\n\t\tif (pretty && ~s.indexOf('\\n')) s += '\\n';\n\t\ts += `</${nodeName}>`;\n\t}\n\n\treturn s;\n}\n\nfunction getComponentName(component) {\n\treturn component.displayName || component!==Function && component.name || getFallbackComponentName(component);\n}\n\nfunction getFallbackComponentName(component) {\n\tlet str = Function.prototype.toString.call(component),\n\t\tname = (str.match(/^\\s*function\\s+([^( ]+)/) || '')[1];\n\tif (!name) {\n\t\t// search for an existing indexed name for the given component:\n\t\tlet index = -1;\n\t\tfor (let i=UNNAMED.length; i--; ) {\n\t\t\tif (UNNAMED[i]===component) {\n\t\t\t\tindex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t// not found, create a new indexed name:\n\t\tif (index<0) {\n\t\t\tindex = UNNAMED.push(component) - 1;\n\t\t}\n\t\tname = `UnnamedComponent${index}`;\n\t}\n\treturn name;\n}\nrenderToString.shallowRender = shallowRender;\n\nexport default renderToString;\n\nexport {\n\trenderToString as render,\n\trenderToString,\n\tshallowRender\n};\n"],"names":["const","IS_NON_DIMENSIONAL","objectKeys","Object","keys","obj","let","i","hasOwnProperty","push","encodeEntities","s","String","replace","indent","char","isLargeString","length","ignoreLines","indexOf","JS_TO_CSS","styleObjToCss","str","prop","val","toLowerCase","test","undefined","assign","props","SHALLOW","shallow","UNNAMED","VOID_ELEMENTS","renderToString","render","shallowRender","vnode","context","opts","inner","isSvgMode","nodeName","attributes","isComponent","component","pretty","indentChar","renderRootComponent","rendered","children","defaultProps","getNodeProps","prototype","c","_disable","__x","componentWillMount","state","getChildContext","shallowHighOrder","displayName","Function","name","toString","call","match","index","getFallbackComponentName","html","attrs","sortAttributes","sort","v","allAttributes","class","hooked","attributeHook","__html","xml","sub","isVoid","pieces","hasLarge","child","ret","join","substring"],"mappings":"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"}