preact-render-to-string 6.0.0 → 6.0.1

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/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- The MIT License (MIT)
2
-
3
- Copyright (c) 2015 Jason Miller
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2015 Jason Miller
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,147 +1,147 @@
1
- # preact-render-to-string
2
-
3
- [![NPM](http://img.shields.io/npm/v/preact-render-to-string.svg)](https://www.npmjs.com/package/preact-render-to-string)
4
- [![Build status](https://github.com/preactjs/preact-render-to-string/actions/workflows/ci.yml/badge.svg)](https://github.com/preactjs/preact-render-to-string/actions/workflows/ci.yml)
5
-
6
- Render JSX and [Preact](https://github.com/preactjs/preact) components to an HTML string.
7
-
8
- Works in Node & the browser, making it useful for universal/isomorphic rendering.
9
-
10
- \>\> **[Cute Fox-Related Demo](http://codepen.io/developit/pen/dYZqjE?editors=001)** _(@ CodePen)_ <<
11
-
12
- ---
13
-
14
- ### Render JSX/VDOM to HTML
15
-
16
- ```js
17
- import { render } from 'preact-render-to-string';
18
- import { h } from 'preact';
19
- /** @jsx h */
20
-
21
- let vdom = <div class="foo">content</div>;
22
-
23
- let html = render(vdom);
24
- console.log(html);
25
- // <div class="foo">content</div>
26
- ```
27
-
28
- ### Render Preact Components to HTML
29
-
30
- ```js
31
- import { render } from 'preact-render-to-string';
32
- import { h, Component } from 'preact';
33
- /** @jsx h */
34
-
35
- // Classical components work
36
- class Fox extends Component {
37
- render({ name }) {
38
- return <span class="fox">{name}</span>;
39
- }
40
- }
41
-
42
- // ... and so do pure functional components:
43
- const Box = ({ type, children }) => (
44
- <div class={`box box-${type}`}>{children}</div>
45
- );
46
-
47
- let html = render(
48
- <Box type="open">
49
- <Fox name="Finn" />
50
- </Box>
51
- );
52
-
53
- console.log(html);
54
- // <div class="box box-open"><span class="fox">Finn</span></div>
55
- ```
56
-
57
- ---
58
-
59
- ### Render JSX / Preact / Whatever via Express!
60
-
61
- ```js
62
- import express from 'express';
63
- import { h } from 'preact';
64
- import { render } from 'preact-render-to-string';
65
- /** @jsx h */
66
-
67
- // silly example component:
68
- const Fox = ({ name }) => (
69
- <div class="fox">
70
- <h5>{name}</h5>
71
- <p>This page is all about {name}.</p>
72
- </div>
73
- );
74
-
75
- // basic HTTP server via express:
76
- const app = express();
77
- app.listen(8080);
78
-
79
- // on each request, render and return a component:
80
- app.get('/:fox', (req, res) => {
81
- let html = render(<Fox name={req.params.fox} />);
82
- // send it back wrapped up as an HTML5 document:
83
- res.send(`<!DOCTYPE html><html><body>${html}</body></html>`);
84
- });
85
- ```
86
-
87
- ---
88
-
89
- ### `Suspense` & `lazy` components with [`preact/compat`](https://www.npmjs.com/package/preact) & [`preact-ssr-prepass`](https://www.npmjs.com/package/preact-ssr-prepass)
90
-
91
- ```bash
92
- npm install preact preact-render-to-string preact-ssr-prepass
93
- ```
94
-
95
- ```jsx
96
- export default () => {
97
- return (
98
- <h1>Home page</h1>
99
- )
100
- }
101
- ```
102
-
103
- ```jsx
104
- import { Suspense, lazy } from "preact/compat"
105
-
106
- // Creation of the lazy component
107
- const HomePage = lazy(() => import("./pages/home"))
108
-
109
- const Main = () => {
110
- return (
111
- <Suspense fallback={<p>Loading</p>}>
112
- <HomePage />
113
- </Suspense>
114
- )
115
- }
116
- ```
117
-
118
- ```jsx
119
- import { render } from "preact-render-to-string"
120
- import prepass from "preact-ssr-prepass"
121
- import { Main } from "./main"
122
-
123
- const main = async () => {
124
- // Creation of the virtual DOM
125
- const vdom = <Main />
126
-
127
- // Pre-rendering of lazy components
128
- await prepass(vdom)
129
-
130
- // Rendering of components
131
- const html = render(vdom)
132
-
133
- console.log(html)
134
- // <h1>Home page</h1>
135
- }
136
-
137
- // Execution & error handling
138
- main().catch(error => {
139
- console.error(error)
140
- })
141
- ```
142
-
143
- ---
144
-
145
- ### License
146
-
147
- [MIT](http://choosealicense.com/licenses/mit/)
1
+ # preact-render-to-string
2
+
3
+ [![NPM](http://img.shields.io/npm/v/preact-render-to-string.svg)](https://www.npmjs.com/package/preact-render-to-string)
4
+ [![Build status](https://github.com/preactjs/preact-render-to-string/actions/workflows/ci.yml/badge.svg)](https://github.com/preactjs/preact-render-to-string/actions/workflows/ci.yml)
5
+
6
+ Render JSX and [Preact](https://github.com/preactjs/preact) components to an HTML string.
7
+
8
+ Works in Node & the browser, making it useful for universal/isomorphic rendering.
9
+
10
+ \>\> **[Cute Fox-Related Demo](http://codepen.io/developit/pen/dYZqjE?editors=001)** _(@ CodePen)_ <<
11
+
12
+ ---
13
+
14
+ ### Render JSX/VDOM to HTML
15
+
16
+ ```js
17
+ import { render } from 'preact-render-to-string';
18
+ import { h } from 'preact';
19
+ /** @jsx h */
20
+
21
+ let vdom = <div class="foo">content</div>;
22
+
23
+ let html = render(vdom);
24
+ console.log(html);
25
+ // <div class="foo">content</div>
26
+ ```
27
+
28
+ ### Render Preact Components to HTML
29
+
30
+ ```js
31
+ import { render } from 'preact-render-to-string';
32
+ import { h, Component } from 'preact';
33
+ /** @jsx h */
34
+
35
+ // Classical components work
36
+ class Fox extends Component {
37
+ render({ name }) {
38
+ return <span class="fox">{name}</span>;
39
+ }
40
+ }
41
+
42
+ // ... and so do pure functional components:
43
+ const Box = ({ type, children }) => (
44
+ <div class={`box box-${type}`}>{children}</div>
45
+ );
46
+
47
+ let html = render(
48
+ <Box type="open">
49
+ <Fox name="Finn" />
50
+ </Box>
51
+ );
52
+
53
+ console.log(html);
54
+ // <div class="box box-open"><span class="fox">Finn</span></div>
55
+ ```
56
+
57
+ ---
58
+
59
+ ### Render JSX / Preact / Whatever via Express!
60
+
61
+ ```js
62
+ import express from 'express';
63
+ import { h } from 'preact';
64
+ import { render } from 'preact-render-to-string';
65
+ /** @jsx h */
66
+
67
+ // silly example component:
68
+ const Fox = ({ name }) => (
69
+ <div class="fox">
70
+ <h5>{name}</h5>
71
+ <p>This page is all about {name}.</p>
72
+ </div>
73
+ );
74
+
75
+ // basic HTTP server via express:
76
+ const app = express();
77
+ app.listen(8080);
78
+
79
+ // on each request, render and return a component:
80
+ app.get('/:fox', (req, res) => {
81
+ let html = render(<Fox name={req.params.fox} />);
82
+ // send it back wrapped up as an HTML5 document:
83
+ res.send(`<!DOCTYPE html><html><body>${html}</body></html>`);
84
+ });
85
+ ```
86
+
87
+ ---
88
+
89
+ ### `Suspense` & `lazy` components with [`preact/compat`](https://www.npmjs.com/package/preact) & [`preact-ssr-prepass`](https://www.npmjs.com/package/preact-ssr-prepass)
90
+
91
+ ```bash
92
+ npm install preact preact-render-to-string preact-ssr-prepass
93
+ ```
94
+
95
+ ```jsx
96
+ export default () => {
97
+ return (
98
+ <h1>Home page</h1>
99
+ )
100
+ }
101
+ ```
102
+
103
+ ```jsx
104
+ import { Suspense, lazy } from "preact/compat"
105
+
106
+ // Creation of the lazy component
107
+ const HomePage = lazy(() => import("./pages/home"))
108
+
109
+ const Main = () => {
110
+ return (
111
+ <Suspense fallback={<p>Loading</p>}>
112
+ <HomePage />
113
+ </Suspense>
114
+ )
115
+ }
116
+ ```
117
+
118
+ ```jsx
119
+ import { render } from "preact-render-to-string"
120
+ import prepass from "preact-ssr-prepass"
121
+ import { Main } from "./main"
122
+
123
+ const main = async () => {
124
+ // Creation of the virtual DOM
125
+ const vdom = <Main />
126
+
127
+ // Pre-rendering of lazy components
128
+ await prepass(vdom)
129
+
130
+ // Rendering of components
131
+ const html = render(vdom)
132
+
133
+ console.log(html)
134
+ // <h1>Home page</h1>
135
+ }
136
+
137
+ // Execution & error handling
138
+ main().catch(error => {
139
+ console.error(error)
140
+ })
141
+ ```
142
+
143
+ ---
144
+
145
+ ### License
146
+
147
+ [MIT](http://choosealicense.com/licenses/mit/)
package/dist/commonjs.js CHANGED
@@ -1,2 +1,2 @@
1
- var e=require("preact"),t=/[\s\n\\/='"\0<>]/,r=/^xlink:?./,o=/["&<]/;function n(e){if(0===e.length||!1===o.test(e))return e;for(var t=0,r=0,n="",a="";r<e.length;r++){switch(e.charCodeAt(r)){case 34:a="&quot;";break;case 38:a="&amp;";break;case 60:a="&lt;";break;default:continue}r!==t&&(n+=e.slice(t,r)),n+=a,t=r+1}return r!==t&&(n+=e.slice(t,r)),n}var a={},i=new Set(["animation-iteration-count","border-image-outset","border-image-slice","border-image-width","box-flex","box-flex-group","box-ordinal-group","column-count","fill-opacity","flex","flex-grow","flex-negative","flex-order","flex-positive","flex-shrink","flood-opacity","font-weight","grid-column","grid-row","line-clamp","line-height","opacity","order","orphans","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","widows","z-index","zoom"]),s=/[A-Z]/g;function l(e){var t="";for(var r in e){var o=e[r];if(null!=o&&""!==o){var n="-"==r[0]?r:a[r]||(a[r]=r.replace(s,"-$&").toLowerCase()),l=";";"number"!=typeof o||n.startsWith("--")||i.has(n)||(l="px;"),t=t+n+":"+o+l}}return t||void 0}var c,u,p,f,_=[],d=Array.isArray,v=Object.assign;function h(){this.__d=!0}var g={};function m(e,t){var r=e.type,o=new r(e.props,t);return e.__c=o,o.__v=e,o.props=e.props,o.context=t,o.__d=!0,null==o.state&&(o.state=g),null==o.__s&&(o.__s=o.state),r.getDerivedStateFromProps?o.state=v({},o.state,r.getDerivedStateFromProps(o.props,o.state)):o.componentWillMount&&(o.componentWillMount(),o.state=o.__s!==o.state?o.__s:o.state),p&&p(e),o.render(o.props,o.state,t)}function y(o,a,i,s,_){if(null==o||!0===o||!1===o||""===o)return"";if("object"!=typeof o)return"function"==typeof o?"":n(o+"");if(d(o)){var g="";_.__k=o;for(var x=0;x<o.length;x++){var w=o[x];null!=w&&"boolean"!=typeof w&&(g+=y(w,a,i,s,_))}return g}if(void 0!==o.constructor)return"";o.__=_,c&&c(o);var C,S,F,j=o.type,A=o.props,L=a;if("function"==typeof j){if(j===e.Fragment)S=A.children;else{if(null!=(C=j.contextType)){var M=a[C.__c];L=M?M.props.value:C.__}if(j.prototype&&"function"==typeof j.prototype.render)S=m(o,L),F=o.__c;else{o.__c=F={__v:o,props:A,context:L,setState:h,forceUpdate:h,__d:!0,__h:[]};for(var z=0;F.__d&&z++<25;)F.__d=!1,p&&p(o),S=j.call(F,A,L);F.__d=!0}null!=F.getChildContext&&(a=v({},a,F.getChildContext()))}var T=y(S=null!=S&&S.type===e.Fragment&&null==S.key?S.props.children:S,a,i,s,o);return u&&u(o),o.__=void 0,f&&f(o),T}var W,q="<"+j,D="";for(var H in A){var O=A[H];switch(H){case"children":W=O;continue;case"key":case"ref":case"__self":case"__source":continue;case"htmlFor":if("for"in A)continue;H="for";break;case"className":if("class"in A)continue;H="class";break;case"defaultChecked":H="checked";break;case"defaultSelected":H="selected";break;case"defaultValue":case"value":switch(H="value",j){case"textarea":W=O;continue;case"select":s=O;continue;case"option":s!=O||"selected"in A||(q+=" selected")}break;case"dangerouslySetInnerHTML":D=O&&O.__html;continue;case"style":"object"==typeof O&&(O=l(O));break;default:if(i&&r.test(H))H=H.toLowerCase().replace(b,"xlink:");else{if(t.test(H))continue;"-"!==H[4]&&"draggable"!==H||null==O||(O+="")}}null!=O&&!1!==O&&"function"!=typeof O&&(q=!0===O||""===O?q+" "+H:q+" "+H+'="'+n(O+"")+'"')}if(t.test(j))throw new Error(j+" is not a valid HTML tag name in "+q+">");return D||("string"==typeof W?D=n(W):null!=W&&!1!==W&&!0!==W&&(D=y(W,a,"svg"===j||"foreignObject"!==j&&i,s,o))),u&&u(o),o.__=void 0,f&&f(o),!D&&k.has(j)?q+"/>":q+">"+D+"</"+j+">"}var b=/^xlink:?/,k=new Set(["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"]);module.exports=function(t,r){var o=e.options.__s;e.options.__s=!0,c=e.options.__b,u=e.options.diffed,p=e.options.__r,f=e.options.unmount;var n=e.h(e.Fragment,null);n.__k=[t];try{return y(t,r||g,!1,void 0,n)}finally{e.options.__c&&e.options.__c(t,_),e.options.__s=o,_.length=0}};
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("preact")):"function"==typeof define&&define.amd?define(["exports","preact"],t):t((e||self).preactRenderToString={},e.preact)}(this,function(e,t){var n=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|^--/i,r=/^(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/,o=/[\s\n\\/='"\0<>]/,i=/^xlink:?./,s=/["&<]/;function a(e){if(!1===s.test(e+=""))return e;for(var t=0,n=0,r="",o="";n<e.length;n++){switch(e.charCodeAt(n)){case 34:o="&quot;";break;case 38:o="&amp;";break;case 60:o="&lt;";break;default:continue}n!==t&&(r+=e.slice(t,n)),r+=o,t=n+1}return n!==t&&(r+=e.slice(t,n)),r}var l=function(e,t){return String(e).replace(/(\n+)/g,"$1"+(t||"\t"))},f=function(e,t,n){return String(e).length>(t||40)||!n&&-1!==String(e).indexOf("\n")||-1!==String(e).indexOf("<")},u={},p=/([A-Z])/g;function c(e){var t="";for(var r in e){var o=e[r];null!=o&&""!==o&&(t&&(t+=" "),t+="-"==r[0]?r:u[r]||(u[r]=r.replace(p,"-$1").toLowerCase()),t="number"==typeof o&&!1===n.test(r)?t+": "+o+"px;":t+": "+o+";")}return t||void 0}function _(e,t){return Array.isArray(t)?t.reduce(_,e):null!=t&&!1!==t&&e.push(t),e}function d(){this.__d=!0}function v(e,t){return{__v:e,context:t,props:e.props,setState:d,forceUpdate:d,__d:!0,__h:[]}}function g(e,t){var n=e.contextType,r=n&&t[n.__c];return null!=n?r?r.props.value:n.__:t}var h=[];function y(e,n,s,u,p,d){if(null==e||"boolean"==typeof e)return"";if("object"!=typeof e)return"function"==typeof e?"":a(e);var m=s.pretty,b=m&&"string"==typeof m?m:"\t";if(Array.isArray(e)){for(var x="",k=0;k<e.length;k++)m&&k>0&&(x+="\n"),x+=y(e[k],n,s,u,p,d);return x}if(void 0!==e.constructor)return"";var S,w=e.type,C=e.props,O=!1;if("function"==typeof w){if(O=!0,!s.shallow||!u&&!1!==s.renderRootComponent){if(w===t.Fragment){var j=[];return _(j,e.props.children),y(j,n,s,!1!==s.shallowHighOrder,p,d)}var F,A=e.__c=v(e,n);t.options.__b&&t.options.__b(e);var T=t.options.__r;if(w.prototype&&"function"==typeof w.prototype.render){var H=g(w,n);(A=e.__c=new w(C,H)).__v=e,A._dirty=A.__d=!0,A.props=C,null==A.state&&(A.state={}),null==A._nextState&&null==A.__s&&(A._nextState=A.__s=A.state),A.context=H,w.getDerivedStateFromProps?A.state=Object.assign({},A.state,w.getDerivedStateFromProps(A.props,A.state)):A.componentWillMount&&(A.componentWillMount(),A.state=A._nextState!==A.state?A._nextState:A.__s!==A.state?A.__s:A.state),T&&T(e),F=A.render(A.props,A.state,A.context)}else for(var M=g(w,n),L=0;A.__d&&L++<25;)A.__d=!1,T&&T(e),F=w.call(e.__c,C,M);return A.getChildContext&&(n=Object.assign({},n,A.getChildContext())),t.options.diffed&&t.options.diffed(e),y(F,n,s,!1!==s.shallowHighOrder,p,d)}w=(S=w).displayName||S!==Function&&S.name||function(e){var t=(Function.prototype.toString.call(e).match(/^\s*function\s+([^( ]+)/)||"")[1];if(!t){for(var n=-1,r=h.length;r--;)if(h[r]===e){n=r;break}n<0&&(n=h.push(e)-1),t="UnnamedComponent"+n}return t}(S)}var E,$,D="<"+w;if(C){var N=Object.keys(C);s&&!0===s.sortAttributes&&N.sort();for(var P=0;P<N.length;P++){var R=N[P],W=C[R];if("children"!==R){if(!o.test(R)&&(s&&s.allAttributes||"key"!==R&&"ref"!==R&&"__self"!==R&&"__source"!==R)){if("defaultValue"===R)R="value";else if("defaultChecked"===R)R="checked";else if("defaultSelected"===R)R="selected";else if("className"===R){if(void 0!==C.class)continue;R="class"}else p&&i.test(R)&&(R=R.toLowerCase().replace(/^xlink:?/,"xlink:"));if("htmlFor"===R){if(C.for)continue;R="for"}"style"===R&&W&&"object"==typeof W&&(W=c(W)),"a"===R[0]&&"r"===R[1]&&"boolean"==typeof W&&(W=String(W));var q=s.attributeHook&&s.attributeHook(R,W,n,s,O);if(q||""===q)D+=q;else if("dangerouslySetInnerHTML"===R)$=W&&W.__html;else if("textarea"===w&&"value"===R)E=W;else if((W||0===W||""===W)&&"function"!=typeof W){if(!(!0!==W&&""!==W||(W=R,s&&s.xml))){D=D+" "+R;continue}if("value"===R){if("select"===w){d=W;continue}"option"===w&&d==W&&void 0===C.selected&&(D+=" selected")}D=D+" "+R+'="'+a(W)+'"'}}}else E=W}}if(m){var I=D.replace(/\n\s*/," ");I===D||~I.indexOf("\n")?m&&~D.indexOf("\n")&&(D+="\n"):D=I}if(D+=">",o.test(w))throw new Error(w+" is not a valid HTML tag name in "+D);var U,V=r.test(w)||s.voidElements&&s.voidElements.test(w),z=[];if($)m&&f($)&&($="\n"+b+l($,b)),D+=$;else if(null!=E&&_(U=[],E).length){for(var Z=m&&~D.indexOf("\n"),B=!1,G=0;G<U.length;G++){var J=U[G];if(null!=J&&!1!==J){var K=y(J,n,s,!0,"svg"===w||"foreignObject"!==w&&p,d);if(m&&!Z&&f(K)&&(Z=!0),K)if(m){var Q=K.length>0&&"<"!=K[0];B&&Q?z[z.length-1]+=K:z.push(K),B=Q}else z.push(K)}}if(m&&Z)for(var X=z.length;X--;)z[X]="\n"+b+l(z[X],b)}if(z.length||$)D+=z.join("");else if(s&&s.xml)return D.substring(0,D.length-1)+" />";return!V||U||$?(m&&~D.indexOf("\n")&&(D+="\n"),D=D+"</"+w+">"):D=D.replace(/>$/," />"),D}var m={shallow:!0};k.render=k;var b=function(e,t){return k(e,t,m)},x=[];function k(e,n,r){n=n||{};var o=t.options.__s;t.options.__s=!0;var i,s=t.h(t.Fragment,null);return s.__k=[e],i=r&&(r.pretty||r.voidElements||r.sortAttributes||r.shallow||r.allAttributes||r.xml||r.attributeHook)?y(e,n,r):F(e,n,!1,void 0,s),t.options.__c&&t.options.__c(e,x),t.options.__s=o,x.length=0,i}function S(e){return null==e||"boolean"==typeof e?null:"string"==typeof e||"number"==typeof e||"bigint"==typeof e?t.h(null,null,e):e}function w(e,t){return"className"===e?"class":"htmlFor"===e?"for":"defaultValue"===e?"value":"defaultChecked"===e?"checked":"defaultSelected"===e?"selected":t&&i.test(e)?e.toLowerCase().replace(/^xlink:?/,"xlink:"):e}function C(e,t){return"style"===e&&null!=t&&"object"==typeof t?c(t):"a"===e[0]&&"r"===e[1]&&"boolean"==typeof t?String(t):t}var O=Array.isArray,j=Object.assign;function F(e,n,i,s,l){if(null==e||!0===e||!1===e||""===e)return"";if("object"!=typeof e)return"function"==typeof e?"":a(e);if(O(e)){var f="";l.__k=e;for(var u=0;u<e.length;u++)f+=F(e[u],n,i,s,l),e[u]=S(e[u]);return f}if(void 0!==e.constructor)return"";e.__=l,t.options.__b&&t.options.__b(e);var p=e.type,c=e.props;if("function"==typeof p){var _;if(p===t.Fragment)_=c.children;else{_=p.prototype&&"function"==typeof p.prototype.render?function(e,n){var r=e.type,o=g(r,n),i=new r(e.props,o);e.__c=i,i.__v=e,i.__d=!0,i.props=e.props,null==i.state&&(i.state={}),null==i.__s&&(i.__s=i.state),i.context=o,r.getDerivedStateFromProps?i.state=j({},i.state,r.getDerivedStateFromProps(i.props,i.state)):i.componentWillMount&&(i.componentWillMount(),i.state=i.__s!==i.state?i.__s:i.state);var s=t.options.__r;return s&&s(e),i.render(i.props,i.state,i.context)}(e,n):function(e,n){var r,o=v(e,n),i=g(e.type,n);e.__c=o;for(var s=t.options.__r,a=0;o.__d&&a++<25;)o.__d=!1,s&&s(e),r=e.type.call(o,e.props,i);return r}(e,n);var d=e.__c;d.getChildContext&&(n=j({},n,d.getChildContext()))}var h=F(_=null!=_&&_.type===t.Fragment&&null==_.key?_.props.children:_,n,i,s,e);return t.options.diffed&&t.options.diffed(e),e.__=void 0,t.options.unmount&&t.options.unmount(e),h}var y,m,b="<";if(b+=p,c)for(var x in y=c.children,c){var k=c[x];if(!("key"===x||"ref"===x||"__self"===x||"__source"===x||"children"===x||"className"===x&&"class"in c||"htmlFor"===x&&"for"in c||o.test(x)))if(k=C(x=w(x,i),k),"dangerouslySetInnerHTML"===x)m=k&&k.__html;else if("textarea"===p&&"value"===x)y=k;else if((k||0===k||""===k)&&"function"!=typeof k){if(!0===k||""===k){k=x,b=b+" "+x;continue}if("value"===x){if("select"===p){s=k;continue}"option"!==p||s!=k||"selected"in c||(b+=" selected")}b=b+" "+x+'="'+a(k)+'"'}}var A=b;if(b+=">",o.test(p))throw new Error(p+" is not a valid HTML tag name in "+b);var T="",H=!1;if(m)T+=m,H=!0;else if("string"==typeof y)T+=a(y),H=!0;else if(O(y)){e.__k=y;for(var M=0;M<y.length;M++){var L=y[M];if(y[M]=S(L),null!=L&&!1!==L){var E=F(L,n,"svg"===p||"foreignObject"!==p&&i,s,e);E&&(T+=E,H=!0)}}}else if(null!=y&&!1!==y&&!0!==y){e.__k=[S(y)];var $=F(y,n,"svg"===p||"foreignObject"!==p&&i,s,e);$&&(T+=$,H=!0)}if(t.options.diffed&&t.options.diffed(e),e.__=void 0,t.options.unmount&&t.options.unmount(e),H)b+=T;else if(r.test(p))return A+" />";return b+"</"+p+">"}k.shallowRender=b,e.default=k,e.render=k,e.renderToStaticMarkup=k,e.renderToString=k,e.shallowRender=b});
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/util.js","../src/index.js"],"sourcesContent":["export const VOID_ELEMENTS = /^(?:area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/;\r\nexport const UNSAFE_NAME = /[\\s\\n\\\\/='\"\\0<>]/;\r\nexport const XLINK = /^xlink:?./;\r\n\r\n// DOM properties that should NOT have \"px\" added when numeric\r\nconst ENCODED_ENTITIES = /[\"&<]/;\r\n\r\n/** @param {string} str */\r\nexport function encodeEntities(str) {\r\n\t// Skip all work for strings with no entities needing encoding:\r\n\tif (str.length === 0 || ENCODED_ENTITIES.test(str) === false) return str;\r\n\r\n\tlet last = 0,\r\n\t\ti = 0,\r\n\t\tout = '',\r\n\t\tch = '';\r\n\r\n\t// Seek forward in str until the next entity char:\r\n\tfor (; i < str.length; i++) {\r\n\t\tswitch (str.charCodeAt(i)) {\r\n\t\t\tcase 34:\r\n\t\t\t\tch = '&quot;';\r\n\t\t\t\tbreak;\r\n\t\t\tcase 38:\r\n\t\t\t\tch = '&amp;';\r\n\t\t\t\tbreak;\r\n\t\t\tcase 60:\r\n\t\t\t\tch = '&lt;';\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tcontinue;\r\n\t\t}\r\n\t\t// Append skipped/buffered characters and the encoded entity:\r\n\t\tif (i !== last) out += str.slice(last, i);\r\n\t\tout += ch;\r\n\t\t// Start the next seek/buffer after the entity's offset:\r\n\t\tlast = i + 1;\r\n\t}\r\n\tif (i !== last) out += str.slice(last, i);\r\n\treturn out;\r\n}\r\n\r\nexport let indent = (s, char) =>\r\n\tString(s).replace(/(\\n+)/g, '$1' + (char || '\\t'));\r\n\r\nexport let isLargeString = (s, length, ignoreLines) =>\r\n\tString(s).length > (length || 40) ||\r\n\t(!ignoreLines && String(s).indexOf('\\n') !== -1) ||\r\n\tString(s).indexOf('<') !== -1;\r\n\r\nconst JS_TO_CSS = {};\r\n\r\nconst IS_NON_DIMENSIONAL = new Set([\r\n\t'animation-iteration-count',\r\n\t'border-image-outset',\r\n\t'border-image-slice',\r\n\t'border-image-width',\r\n\t'box-flex',\r\n\t'box-flex-group',\r\n\t'box-ordinal-group',\r\n\t'column-count',\r\n\t'fill-opacity',\r\n\t'flex',\r\n\t'flex-grow',\r\n\t'flex-negative',\r\n\t'flex-order',\r\n\t'flex-positive',\r\n\t'flex-shrink',\r\n\t'flood-opacity',\r\n\t'font-weight',\r\n\t'grid-column',\r\n\t'grid-row',\r\n\t'line-clamp',\r\n\t'line-height',\r\n\t'opacity',\r\n\t'order',\r\n\t'orphans',\r\n\t'stop-opacity',\r\n\t'stroke-dasharray',\r\n\t'stroke-dashoffset',\r\n\t'stroke-miterlimit',\r\n\t'stroke-opacity',\r\n\t'stroke-width',\r\n\t'tab-size',\r\n\t'widows',\r\n\t'z-index',\r\n\t'zoom'\r\n]);\r\n\r\nconst CSS_REGEX = /[A-Z]/g;\r\n// Convert an Object style to a CSSText string\r\nexport function styleObjToCss(s) {\r\n\tlet str = '';\r\n\tfor (let prop in s) {\r\n\t\tlet val = s[prop];\r\n\t\tif (val != null && val !== '') {\r\n\t\t\tconst name =\r\n\t\t\t\tprop[0] == '-'\r\n\t\t\t\t\t? prop\r\n\t\t\t\t\t: JS_TO_CSS[prop] ||\r\n\t\t\t\t\t (JS_TO_CSS[prop] = prop.replace(CSS_REGEX, '-$&').toLowerCase());\r\n\r\n\t\t\tlet suffix = ';';\r\n\t\t\tif (\r\n\t\t\t\ttypeof val === 'number' &&\r\n\t\t\t\t// Exclude custom-attributes\r\n\t\t\t\t!name.startsWith('--') &&\r\n\t\t\t\t!IS_NON_DIMENSIONAL.has(name)\r\n\t\t\t) {\r\n\t\t\t\tsuffix = 'px;';\r\n\t\t\t}\r\n\t\t\tstr = str + name + ':' + val + suffix;\r\n\t\t}\r\n\t}\r\n\treturn str || undefined;\r\n}\r\n\r\n/**\r\n * Get flattened children from the children prop\r\n * @param {Array} accumulator\r\n * @param {any} children A `props.children` opaque object.\r\n * @returns {Array} accumulator\r\n * @private\r\n */\r\nexport function getChildren(accumulator, children) {\r\n\tif (Array.isArray(children)) {\r\n\t\tchildren.reduce(getChildren, accumulator);\r\n\t} else if (children != null && children !== false) {\r\n\t\taccumulator.push(children);\r\n\t}\r\n\treturn accumulator;\r\n}\r\n\r\nfunction markAsDirty() {\r\n\tthis.__d = true;\r\n}\r\n\r\nexport function createComponent(vnode, context) {\r\n\treturn {\r\n\t\t__v: vnode,\r\n\t\tcontext,\r\n\t\tprops: vnode.props,\r\n\t\t// silently drop state updates\r\n\t\tsetState: markAsDirty,\r\n\t\tforceUpdate: markAsDirty,\r\n\t\t__d: true,\r\n\t\t// hooks\r\n\t\t__h: []\r\n\t};\r\n}\r\n","import { encodeEntities, styleObjToCss, UNSAFE_NAME, XLINK } from './util';\r\nimport { options, h, Fragment } from 'preact';\r\nimport {\r\n\tCHILDREN,\r\n\tCOMMIT,\r\n\tCOMPONENT,\r\n\tDIFF,\r\n\tDIFFED,\r\n\tDIRTY,\r\n\tNEXT_STATE,\r\n\tPARENT,\r\n\tRENDER,\r\n\tSKIP_EFFECTS,\r\n\tVNODE\r\n} from './constants';\r\n\r\n/** @typedef {import('preact').VNode} VNode */\r\n\r\nconst EMPTY_ARR = [];\r\nconst isArray = Array.isArray;\r\nconst assign = Object.assign;\r\n\r\n// Global state for the current render pass\r\nlet beforeDiff, afterDiff, renderHook, ummountHook;\r\n\r\n/**\r\n * Render Preact JSX + Components to an HTML string.\r\n * @param {VNode} vnode\tJSX Element / VNode to render\r\n * @param {Object} [context={}] Initial root context object\r\n * @returns {string} serialized HTML\r\n */\r\nexport default function renderToString(vnode, context) {\r\n\t// Performance optimization: `renderToString` is synchronous and we\r\n\t// therefore don't execute any effects. To do that we pass an empty\r\n\t// array to `options._commit` (`__c`). But we can go one step further\r\n\t// and avoid a lot of dirty checks and allocations by setting\r\n\t// `options._skipEffects` (`__s`) too.\r\n\tconst previousSkipEffects = options[SKIP_EFFECTS];\r\n\toptions[SKIP_EFFECTS] = true;\r\n\r\n\t// store options hooks once before each synchronous render call\r\n\tbeforeDiff = options[DIFF];\r\n\tafterDiff = options[DIFFED];\r\n\trenderHook = options[RENDER];\r\n\tummountHook = options.unmount;\r\n\r\n\tconst parent = h(Fragment, null);\r\n\tparent[CHILDREN] = [vnode];\r\n\r\n\ttry {\r\n\t\treturn _renderToString(\r\n\t\t\tvnode,\r\n\t\t\tcontext || EMPTY_OBJ,\r\n\t\t\tfalse,\r\n\t\t\tundefined,\r\n\t\t\tparent\r\n\t\t);\r\n\t} finally {\r\n\t\t// options._commit, we don't schedule any effects in this library right now,\r\n\t\t// so we can pass an empty queue to this hook.\r\n\t\tif (options[COMMIT]) options[COMMIT](vnode, EMPTY_ARR);\r\n\t\toptions[SKIP_EFFECTS] = previousSkipEffects;\r\n\t\tEMPTY_ARR.length = 0;\r\n\t}\r\n}\r\n\r\n// Installed as setState/forceUpdate for function components\r\nfunction markAsDirty() {\r\n\tthis.__d = true;\r\n}\r\n\r\nconst EMPTY_OBJ = {};\r\n\r\n/**\r\n * @param {VNode} vnode\r\n * @param {Record<string, unknown>} context\r\n */\r\nfunction renderClassComponent(vnode, context) {\r\n\tlet type = /** @type {import(\"preact\").ComponentClass<typeof vnode.props>} */ (vnode.type);\r\n\r\n\tlet c = new type(vnode.props, context);\r\n\r\n\tvnode[COMPONENT] = c;\r\n\tc[VNODE] = vnode;\r\n\r\n\tc.props = vnode.props;\r\n\tc.context = context;\r\n\t// turn off stateful re-rendering:\r\n\tc[DIRTY] = true;\r\n\r\n\tif (c.state == null) c.state = EMPTY_OBJ;\r\n\r\n\tif (c[NEXT_STATE] == null) {\r\n\t\tc[NEXT_STATE] = c.state;\r\n\t}\r\n\r\n\tif (type.getDerivedStateFromProps) {\r\n\t\tc.state = assign(\r\n\t\t\t{},\r\n\t\t\tc.state,\r\n\t\t\ttype.getDerivedStateFromProps(c.props, c.state)\r\n\t\t);\r\n\t} else if (c.componentWillMount) {\r\n\t\tc.componentWillMount();\r\n\r\n\t\t// If the user called setState in cWM we need to flush pending,\r\n\t\t// state updates. This is the same behaviour in React.\r\n\t\tc.state = c[NEXT_STATE] !== c.state ? c[NEXT_STATE] : c.state;\r\n\t}\r\n\r\n\tif (renderHook) renderHook(vnode);\r\n\r\n\treturn c.render(c.props, c.state, context);\r\n}\r\n\r\n/**\r\n * Recursively render VNodes to HTML.\r\n * @param {VNode|any} vnode\r\n * @param {any} context\r\n * @param {boolean} isSvgMode\r\n * @param {any} selectValue\r\n * @param {VNode} parent\r\n * @returns {string}\r\n */\r\nfunction _renderToString(vnode, context, isSvgMode, selectValue, parent) {\r\n\t// Ignore non-rendered VNodes/values\r\n\tif (vnode == null || vnode === true || vnode === false || vnode === '') {\r\n\t\treturn '';\r\n\t}\r\n\r\n\t// Text VNodes: escape as HTML\r\n\tif (typeof vnode !== 'object') {\r\n\t\tif (typeof vnode === 'function') return '';\r\n\t\treturn encodeEntities(vnode + '');\r\n\t}\r\n\r\n\t// Recurse into children / Arrays\r\n\tif (isArray(vnode)) {\r\n\t\tlet rendered = '';\r\n\t\tparent[CHILDREN] = vnode;\r\n\t\tfor (let i = 0; i < vnode.length; i++) {\r\n\t\t\tlet child = vnode[i];\r\n\t\t\tif (child == null || typeof child === 'boolean') continue;\r\n\r\n\t\t\trendered =\r\n\t\t\t\trendered +\r\n\t\t\t\t_renderToString(child, context, isSvgMode, selectValue, parent);\r\n\t\t}\r\n\t\treturn rendered;\r\n\t}\r\n\r\n\t// VNodes have {constructor:undefined} to prevent JSON injection:\r\n\tif (vnode.constructor !== undefined) return '';\r\n\r\n\tvnode[PARENT] = parent;\r\n\tif (beforeDiff) beforeDiff(vnode);\r\n\r\n\tlet type = vnode.type,\r\n\t\tprops = vnode.props,\r\n\t\tcctx = context,\r\n\t\tcontextType,\r\n\t\trendered,\r\n\t\tcomponent;\r\n\r\n\t// Invoke rendering on Components\r\n\tif (typeof type === 'function') {\r\n\t\tif (type === Fragment) {\r\n\t\t\trendered = props.children;\r\n\t\t} else {\r\n\t\t\tcontextType = type.contextType;\r\n\t\t\tif (contextType != null) {\r\n\t\t\t\tlet provider = context[contextType.__c];\r\n\t\t\t\tcctx = provider ? provider.props.value : contextType.__;\r\n\t\t\t}\r\n\r\n\t\t\tif (type.prototype && typeof type.prototype.render === 'function') {\r\n\t\t\t\trendered = /**#__NOINLINE__**/ renderClassComponent(vnode, cctx);\r\n\t\t\t\tcomponent = vnode[COMPONENT];\r\n\t\t\t} else {\r\n\t\t\t\tcomponent = {\r\n\t\t\t\t\t__v: vnode,\r\n\t\t\t\t\tprops,\r\n\t\t\t\t\tcontext: cctx,\r\n\t\t\t\t\t// silently drop state updates\r\n\t\t\t\t\tsetState: markAsDirty,\r\n\t\t\t\t\tforceUpdate: markAsDirty,\r\n\t\t\t\t\t__d: true,\r\n\t\t\t\t\t// hooks\r\n\t\t\t\t\t__h: []\r\n\t\t\t\t};\r\n\t\t\t\tvnode[COMPONENT] = component;\r\n\r\n\t\t\t\t// If a hook invokes setState() to invalidate the component during rendering,\r\n\t\t\t\t// re-render it up to 25 times to allow \"settling\" of memoized states.\r\n\t\t\t\t// Note:\r\n\t\t\t\t// This will need to be updated for Preact 11 to use internal.flags rather than component._dirty:\r\n\t\t\t\t// https://github.com/preactjs/preact/blob/d4ca6fdb19bc715e49fd144e69f7296b2f4daa40/src/diff/component.js#L35-L44\r\n\t\t\t\tlet count = 0;\r\n\t\t\t\twhile (component[DIRTY] && count++ < 25) {\r\n\t\t\t\t\tcomponent[DIRTY] = false;\r\n\r\n\t\t\t\t\tif (renderHook) renderHook(vnode);\r\n\r\n\t\t\t\t\trendered = type.call(component, props, cctx);\r\n\t\t\t\t}\r\n\t\t\t\tcomponent[DIRTY] = true;\r\n\t\t\t}\r\n\r\n\t\t\tif (component.getChildContext != null) {\r\n\t\t\t\tcontext = assign({}, context, component.getChildContext());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// When a component returns a Fragment node we flatten it in core, so we\r\n\t\t// need to mirror that logic here too\r\n\t\tlet isTopLevelFragment =\r\n\t\t\trendered != null && rendered.type === Fragment && rendered.key == null;\r\n\t\trendered = isTopLevelFragment ? rendered.props.children : rendered;\r\n\r\n\t\t// Recurse into children before invoking the after-diff hook\r\n\t\tconst str = _renderToString(\r\n\t\t\trendered,\r\n\t\t\tcontext,\r\n\t\t\tisSvgMode,\r\n\t\t\tselectValue,\r\n\t\t\tvnode\r\n\t\t);\r\n\t\tif (afterDiff) afterDiff(vnode);\r\n\t\tvnode[PARENT] = undefined;\r\n\r\n\t\tif (ummountHook) ummountHook(vnode);\r\n\r\n\t\treturn str;\r\n\t}\r\n\r\n\t// Serialize Element VNodes to HTML\r\n\tlet s = '<' + type,\r\n\t\thtml = '',\r\n\t\tchildren;\r\n\r\n\tfor (let name in props) {\r\n\t\tlet v = props[name];\r\n\r\n\t\tswitch (name) {\r\n\t\t\tcase 'children':\r\n\t\t\t\tchildren = v;\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\t// VDOM-specific props\r\n\t\t\tcase 'key':\r\n\t\t\tcase 'ref':\r\n\t\t\tcase '__self':\r\n\t\t\tcase '__source':\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\t// prefer for/class over htmlFor/className\r\n\t\t\tcase 'htmlFor':\r\n\t\t\t\tif ('for' in props) continue;\r\n\t\t\t\tname = 'for';\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'className':\r\n\t\t\t\tif ('class' in props) continue;\r\n\t\t\t\tname = 'class';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t// Form element reflected properties\r\n\t\t\tcase 'defaultChecked':\r\n\t\t\t\tname = 'checked';\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'defaultSelected':\r\n\t\t\t\tname = 'selected';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t// Special value attribute handling\r\n\t\t\tcase 'defaultValue':\r\n\t\t\tcase 'value':\r\n\t\t\t\tname = 'value';\r\n\t\t\t\tswitch (type) {\r\n\t\t\t\t\t// <textarea value=\"a&b\"> --> <textarea>a&amp;b</textarea>\r\n\t\t\t\t\tcase 'textarea':\r\n\t\t\t\t\t\tchildren = v;\r\n\t\t\t\t\t\tcontinue;\r\n\r\n\t\t\t\t\t// <select value> is serialized as a selected attribute on the matching option child\r\n\t\t\t\t\tcase 'select':\r\n\t\t\t\t\t\tselectValue = v;\r\n\t\t\t\t\t\tcontinue;\r\n\r\n\t\t\t\t\t// Add a selected attribute to <option> if its value matches the parent <select> value\r\n\t\t\t\t\tcase 'option':\r\n\t\t\t\t\t\tif (selectValue == v && !('selected' in props)) {\r\n\t\t\t\t\t\t\ts = s + ' selected';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'dangerouslySetInnerHTML':\r\n\t\t\t\thtml = v && v.__html;\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\t// serialize object styles to a CSS string\r\n\t\t\tcase 'style':\r\n\t\t\t\tif (typeof v === 'object') {\r\n\t\t\t\t\tv = styleObjToCss(v);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault: {\r\n\t\t\t\tif (isSvgMode && XLINK.test(name)) {\r\n\t\t\t\t\tname = name.toLowerCase().replace(XLINK_REPLACE_REGEX, 'xlink:');\r\n\t\t\t\t} else if (UNSAFE_NAME.test(name)) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t} else if ((name[4] === '-' || name === 'draggable') && v != null) {\r\n\t\t\t\t\t// serialize boolean aria-xyz or draggable attribute values as strings\r\n\t\t\t\t\t// `draggable` is an enumerated attribute and not Boolean. A value of `true` or `false` is mandatory\r\n\t\t\t\t\t// https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/draggable\r\n\t\t\t\t\tv += '';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// write this attribute to the buffer\r\n\t\tif (v != null && v !== false && typeof v !== 'function') {\r\n\t\t\tif (v === true || v === '') {\r\n\t\t\t\ts = s + ' ' + name;\r\n\t\t\t} else {\r\n\t\t\t\ts = s + ' ' + name + '=\"' + encodeEntities(v + '') + '\"';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (UNSAFE_NAME.test(type)) {\r\n\t\t// this seems to performs a lot better than throwing\r\n\t\t// return '<!-- -->';\r\n\t\tthrow new Error(`${type} is not a valid HTML tag name in ${s}>`);\r\n\t}\r\n\r\n\tif (html) {\r\n\t\t// dangerouslySetInnerHTML defined this node's contents\r\n\t} else if (typeof children === 'string') {\r\n\t\t// single text child\r\n\t\thtml = encodeEntities(children);\r\n\t} else if (children != null && children !== false && children !== true) {\r\n\t\t// recurse into this element VNode's children\r\n\t\tlet childSvgMode =\r\n\t\t\ttype === 'svg' || (type !== 'foreignObject' && isSvgMode);\r\n\t\thtml = _renderToString(children, context, childSvgMode, selectValue, vnode);\r\n\t}\r\n\r\n\tif (afterDiff) afterDiff(vnode);\r\n\tvnode[PARENT] = undefined;\r\n\tif (ummountHook) ummountHook(vnode);\r\n\r\n\t// Emit self-closing tag for empty void elements:\r\n\tif (!html && SELF_CLOSING.has(type)) {\r\n\t\treturn s + '/>';\r\n\t}\r\n\r\n\treturn s + '>' + html + '</' + type + '>';\r\n}\r\n\r\nconst XLINK_REPLACE_REGEX = /^xlink:?/;\r\nconst SELF_CLOSING = new Set([\r\n\t'area',\r\n\t'base',\r\n\t'br',\r\n\t'col',\r\n\t'command',\r\n\t'embed',\r\n\t'hr',\r\n\t'img',\r\n\t'input',\r\n\t'keygen',\r\n\t'link',\r\n\t'meta',\r\n\t'param',\r\n\t'source',\r\n\t'track',\r\n\t'wbr'\r\n]);\r\n"],"names":["UNSAFE_NAME","XLINK","ENCODED_ENTITIES","encodeEntities","str","length","test","last","i","out","ch","charCodeAt","slice","JS_TO_CSS","IS_NON_DIMENSIONAL","Set","CSS_REGEX","styleObjToCss","s","prop","val","name","replace","toLowerCase","suffix","startsWith","has","undefined","beforeDiff","afterDiff","renderHook","ummountHook","EMPTY_ARR","isArray","Array","assign","Object","markAsDirty","this","__d","EMPTY_OBJ","renderClassComponent","vnode","context","type","c","props","state","getDerivedStateFromProps","componentWillMount","render","_renderToString","isSvgMode","selectValue","parent","rendered","child","constructor","contextType","component","cctx","Fragment","children","provider","__c","value","__","prototype","__v","setState","forceUpdate","__h","count","call","getChildContext","key","html","v","__html","XLINK_REPLACE_REGEX","Error","SELF_CLOSING","previousSkipEffects","options","unmount","h"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/util.js","../src/pretty.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|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|^--/i;\nexport const VOID_ELEMENTS = /^(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/;\nexport const UNSAFE_NAME = /[\\s\\n\\\\/='\"\\0<>]/;\nexport const XLINK = /^xlink:?./;\n\nconst ENCODED_ENTITIES = /[\"&<]/;\n\nexport function encodeEntities(str) {\n\t// Ensure we're always parsing and returning a string:\n\tstr += '';\n\n\t// Skip all work for strings with no entities needing encoding:\n\tif (ENCODED_ENTITIES.test(str) === false) return str;\n\n\tlet last = 0,\n\t\ti = 0,\n\t\tout = '',\n\t\tch = '';\n\n\t// Seek forward in str until the next entity char:\n\tfor (; i < str.length; i++) {\n\t\tswitch (str.charCodeAt(i)) {\n\t\t\tcase 34:\n\t\t\t\tch = '&quot;';\n\t\t\t\tbreak;\n\t\t\tcase 38:\n\t\t\t\tch = '&amp;';\n\t\t\t\tbreak;\n\t\t\tcase 60:\n\t\t\t\tch = '&lt;';\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tcontinue;\n\t\t}\n\t\t// Append skipped/buffered characters and the encoded entity:\n\t\tif (i !== last) out += str.slice(last, i);\n\t\tout += ch;\n\t\t// Start the next seek/buffer after the entity's offset:\n\t\tlast = i + 1;\n\t}\n\tif (i !== last) out += str.slice(last, i);\n\treturn out;\n}\n\nexport let indent = (s, char) =>\n\tString(s).replace(/(\\n+)/g, '$1' + (char || '\\t'));\n\nexport let isLargeString = (s, length, ignoreLines) =>\n\tString(s).length > (length || 40) ||\n\t(!ignoreLines && String(s).indexOf('\\n') !== -1) ||\n\tString(s).indexOf('<') !== -1;\n\nconst JS_TO_CSS = {};\n\nconst CSS_REGEX = /([A-Z])/g;\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 && val !== '') {\n\t\t\tif (str) str += ' ';\n\t\t\t// str += jsToCss(prop);\n\t\t\tstr +=\n\t\t\t\tprop[0] == '-'\n\t\t\t\t\t? prop\n\t\t\t\t\t: JS_TO_CSS[prop] ||\n\t\t\t\t\t (JS_TO_CSS[prop] = prop.replace(CSS_REGEX, '-$1').toLowerCase());\n\n\t\t\tif (typeof val === 'number' && IS_NON_DIMENSIONAL.test(prop) === false) {\n\t\t\t\tstr = str + ': ' + val + 'px;';\n\t\t\t} else {\n\t\t\t\tstr = str + ': ' + val + ';';\n\t\t\t}\n\t\t}\n\t}\n\treturn str || undefined;\n}\n\n/**\n * Get flattened children from the children prop\n * @param {Array} accumulator\n * @param {any} children A `props.children` opaque object.\n * @returns {Array} accumulator\n * @private\n */\nexport function getChildren(accumulator, children) {\n\tif (Array.isArray(children)) {\n\t\tchildren.reduce(getChildren, accumulator);\n\t} else if (children != null && children !== false) {\n\t\taccumulator.push(children);\n\t}\n\treturn accumulator;\n}\n\nfunction markAsDirty() {\n\tthis.__d = true;\n}\n\nexport function createComponent(vnode, context) {\n\treturn {\n\t\t__v: vnode,\n\t\tcontext,\n\t\tprops: vnode.props,\n\t\t// silently drop state updates\n\t\tsetState: markAsDirty,\n\t\tforceUpdate: markAsDirty,\n\t\t__d: true,\n\t\t// hooks\n\t\t__h: []\n\t};\n}\n\n// Necessary for createContext api. Setting this property will pass\n// the context value as `this.context` just for this component.\nexport function getContext(nodeName, context) {\n\tlet cxType = nodeName.contextType;\n\tlet provider = cxType && context[cxType.__c];\n\treturn cxType != null\n\t\t? provider\n\t\t\t? provider.props.value\n\t\t\t: cxType.__\n\t\t: context;\n}\n","import {\n\tencodeEntities,\n\tindent,\n\tisLargeString,\n\tstyleObjToCss,\n\tgetChildren,\n\tcreateComponent,\n\tgetContext,\n\tUNSAFE_NAME,\n\tXLINK,\n\tVOID_ELEMENTS\n} from './util';\nimport { options, Fragment } from 'preact';\n\n// components without names, kept as a hash for later comparison to return consistent UnnamedComponentXX names.\nconst UNNAMED = [];\n\nexport function _renderToStringPretty(\n\tvnode,\n\tcontext,\n\topts,\n\tinner,\n\tisSvgMode,\n\tselectValue\n) {\n\tif (vnode == null || typeof vnode === 'boolean') {\n\t\treturn '';\n\t}\n\n\t// #text nodes\n\tif (typeof vnode !== 'object') {\n\t\tif (typeof vnode === 'function') return '';\n\t\treturn encodeEntities(vnode);\n\t}\n\n\tlet pretty = opts.pretty,\n\t\tindentChar = pretty && typeof pretty === 'string' ? pretty : '\\t';\n\n\tif (Array.isArray(vnode)) {\n\t\tlet rendered = '';\n\t\tfor (let i = 0; i < vnode.length; i++) {\n\t\t\tif (pretty && i > 0) rendered = rendered + '\\n';\n\t\t\trendered =\n\t\t\t\trendered +\n\t\t\t\t_renderToStringPretty(\n\t\t\t\t\tvnode[i],\n\t\t\t\t\tcontext,\n\t\t\t\t\topts,\n\t\t\t\t\tinner,\n\t\t\t\t\tisSvgMode,\n\t\t\t\t\tselectValue\n\t\t\t\t);\n\t\t}\n\t\treturn rendered;\n\t}\n\n\t// VNodes have {constructor:undefined} to prevent JSON injection:\n\tif (vnode.constructor !== undefined) return '';\n\n\tlet nodeName = vnode.type,\n\t\tprops = vnode.props,\n\t\tisComponent = false;\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} else if (nodeName === Fragment) {\n\t\t\tconst children = [];\n\t\t\tgetChildren(children, vnode.props.children);\n\t\t\treturn _renderToStringPretty(\n\t\t\t\tchildren,\n\t\t\t\tcontext,\n\t\t\t\topts,\n\t\t\t\topts.shallowHighOrder !== false,\n\t\t\t\tisSvgMode,\n\t\t\t\tselectValue\n\t\t\t);\n\t\t} else {\n\t\t\tlet rendered;\n\n\t\t\tlet c = (vnode.__c = createComponent(vnode, context));\n\n\t\t\t// options._diff\n\t\t\tif (options.__b) options.__b(vnode);\n\n\t\t\t// options._render\n\t\t\tlet renderHook = options.__r;\n\n\t\t\tif (\n\t\t\t\t!nodeName.prototype ||\n\t\t\t\ttypeof nodeName.prototype.render !== 'function'\n\t\t\t) {\n\t\t\t\tlet cctx = getContext(nodeName, context);\n\n\t\t\t\t// If a hook invokes setState() to invalidate the component during rendering,\n\t\t\t\t// re-render it up to 25 times to allow \"settling\" of memoized states.\n\t\t\t\t// Note:\n\t\t\t\t// This will need to be updated for Preact 11 to use internal.flags rather than component._dirty:\n\t\t\t\t// https://github.com/preactjs/preact/blob/d4ca6fdb19bc715e49fd144e69f7296b2f4daa40/src/diff/component.js#L35-L44\n\t\t\t\tlet count = 0;\n\t\t\t\twhile (c.__d && count++ < 25) {\n\t\t\t\t\tc.__d = false;\n\n\t\t\t\t\tif (renderHook) renderHook(vnode);\n\n\t\t\t\t\t// stateless functional components\n\t\t\t\t\trendered = nodeName.call(vnode.__c, props, cctx);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tlet cctx = getContext(nodeName, context);\n\n\t\t\t\t// c = new nodeName(props, context);\n\t\t\t\tc = vnode.__c = new nodeName(props, cctx);\n\t\t\t\tc.__v = vnode;\n\t\t\t\t// turn off stateful re-rendering:\n\t\t\t\tc._dirty = c.__d = true;\n\t\t\t\tc.props = props;\n\t\t\t\tif (c.state == null) c.state = {};\n\n\t\t\t\tif (c._nextState == null && c.__s == null) {\n\t\t\t\t\tc._nextState = c.__s = c.state;\n\t\t\t\t}\n\n\t\t\t\tc.context = cctx;\n\t\t\t\tif (nodeName.getDerivedStateFromProps)\n\t\t\t\t\tc.state = Object.assign(\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tc.state,\n\t\t\t\t\t\tnodeName.getDerivedStateFromProps(c.props, c.state)\n\t\t\t\t\t);\n\t\t\t\telse if (c.componentWillMount) {\n\t\t\t\t\tc.componentWillMount();\n\n\t\t\t\t\t// If the user called setState in cWM we need to flush pending,\n\t\t\t\t\t// state updates. This is the same behaviour in React.\n\t\t\t\t\tc.state =\n\t\t\t\t\t\tc._nextState !== c.state\n\t\t\t\t\t\t\t? c._nextState\n\t\t\t\t\t\t\t: c.__s !== c.state\n\t\t\t\t\t\t\t? c.__s\n\t\t\t\t\t\t\t: c.state;\n\t\t\t\t}\n\n\t\t\t\tif (renderHook) renderHook(vnode);\n\n\t\t\t\trendered = c.render(c.props, c.state, c.context);\n\t\t\t}\n\n\t\t\tif (c.getChildContext) {\n\t\t\t\tcontext = Object.assign({}, context, c.getChildContext());\n\t\t\t}\n\n\t\t\tif (options.diffed) options.diffed(vnode);\n\t\t\treturn _renderToStringPretty(\n\t\t\t\trendered,\n\t\t\t\tcontext,\n\t\t\t\topts,\n\t\t\t\topts.shallowHighOrder !== false,\n\t\t\t\tisSvgMode,\n\t\t\t\tselectValue\n\t\t\t);\n\t\t}\n\t}\n\n\t// render JSX to HTML\n\tlet s = '<' + nodeName,\n\t\tpropChildren,\n\t\thtml;\n\n\tif (props) {\n\t\tlet attrs = Object.keys(props);\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 = props[name];\n\t\t\tif (name === 'children') {\n\t\t\t\tpropChildren = v;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (UNSAFE_NAME.test(name)) continue;\n\n\t\t\tif (\n\t\t\t\t!(opts && opts.allAttributes) &&\n\t\t\t\t(name === 'key' ||\n\t\t\t\t\tname === 'ref' ||\n\t\t\t\t\tname === '__self' ||\n\t\t\t\t\tname === '__source')\n\t\t\t)\n\t\t\t\tcontinue;\n\n\t\t\tif (name === 'defaultValue') {\n\t\t\t\tname = 'value';\n\t\t\t} else if (name === 'defaultChecked') {\n\t\t\t\tname = 'checked';\n\t\t\t} else if (name === 'defaultSelected') {\n\t\t\t\tname = 'selected';\n\t\t\t} else if (name === 'className') {\n\t\t\t\tif (typeof props.class !== 'undefined') continue;\n\t\t\t\tname = 'class';\n\t\t\t} else if (isSvgMode && XLINK.test(name)) {\n\t\t\t\tname = name.toLowerCase().replace(/^xlink:?/, 'xlink:');\n\t\t\t}\n\n\t\t\tif (name === 'htmlFor') {\n\t\t\t\tif (props.for) continue;\n\t\t\t\tname = 'for';\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\t// always use string values instead of booleans for aria attributes\n\t\t\t// also see https://github.com/preactjs/preact/pull/2347/files\n\t\t\tif (name[0] === 'a' && name['1'] === 'r' && typeof v === 'boolean') {\n\t\t\t\tv = String(v);\n\t\t\t}\n\n\t\t\tlet hooked =\n\t\t\t\topts.attributeHook &&\n\t\t\t\topts.attributeHook(name, v, context, opts, isComponent);\n\t\t\tif (hooked || hooked === '') {\n\t\t\t\ts = s + 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} else if (nodeName === 'textarea' && name === 'value') {\n\t\t\t\t// <textarea value=\"a&b\"> --> <textarea>a&amp;b</textarea>\n\t\t\t\tpropChildren = v;\n\t\t\t} else 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 = s + ' ' + name;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (name === 'value') {\n\t\t\t\t\tif (nodeName === 'select') {\n\t\t\t\t\t\tselectValue = v;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else if (\n\t\t\t\t\t\t// If we're looking at an <option> and it's the currently selected one\n\t\t\t\t\t\tnodeName === 'option' &&\n\t\t\t\t\t\tselectValue == v &&\n\t\t\t\t\t\t// and the <option> doesn't already have a selected attribute on it\n\t\t\t\t\t\ttypeof props.selected === 'undefined'\n\t\t\t\t\t) {\n\t\t\t\t\t\ts = s + ` selected`;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ts = s + ` ${name}=\"${encodeEntities(v)}\"`;\n\t\t\t}\n\t\t}\n\t}\n\n\t// account for >1 multiline attribute\n\tif (pretty) {\n\t\tlet sub = s.replace(/\\n\\s*/, ' ');\n\t\tif (sub !== s && !~sub.indexOf('\\n')) s = sub;\n\t\telse if (pretty && ~s.indexOf('\\n')) s = s + '\\n';\n\t}\n\n\ts = s + '>';\n\n\tif (UNSAFE_NAME.test(nodeName))\n\t\tthrow new Error(`${nodeName} is not a valid HTML tag name in ${s}`);\n\n\tlet isVoid =\n\t\tVOID_ELEMENTS.test(nodeName) ||\n\t\t(opts.voidElements && opts.voidElements.test(nodeName));\n\tlet pieces = [];\n\n\tlet children;\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 = s + html;\n\t} else if (\n\t\tpropChildren != null &&\n\t\tgetChildren((children = []), propChildren).length\n\t) {\n\t\tlet hasLarge = pretty && ~s.indexOf('\\n');\n\t\tlet lastWasText = false;\n\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\tlet child = children[i];\n\n\t\t\tif (child != null && child !== false) {\n\t\t\t\tlet childSvgMode =\n\t\t\t\t\t\tnodeName === 'svg'\n\t\t\t\t\t\t\t? true\n\t\t\t\t\t\t\t: nodeName === 'foreignObject'\n\t\t\t\t\t\t\t? false\n\t\t\t\t\t\t\t: isSvgMode,\n\t\t\t\t\tret = _renderToStringPretty(\n\t\t\t\t\t\tchild,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\topts,\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\tchildSvgMode,\n\t\t\t\t\t\tselectValue\n\t\t\t\t\t);\n\n\t\t\t\tif (pretty && !hasLarge && isLargeString(ret)) hasLarge = true;\n\n\t\t\t\t// Skip if we received an empty string\n\t\t\t\tif (ret) {\n\t\t\t\t\tif (pretty) {\n\t\t\t\t\t\tlet isText = ret.length > 0 && ret[0] != '<';\n\n\t\t\t\t\t\t// We merge adjacent text nodes, otherwise each piece would be printed\n\t\t\t\t\t\t// on a new line.\n\t\t\t\t\t\tif (lastWasText && isText) {\n\t\t\t\t\t\t\tpieces[pieces.length - 1] += ret;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpieces.push(ret);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlastWasText = isText;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpieces.push(ret);\n\t\t\t\t\t}\n\t\t\t\t}\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 || html) {\n\t\ts = s + pieces.join('');\n\t} else if (opts && opts.xml) {\n\t\treturn s.substring(0, s.length - 1) + ' />';\n\t}\n\n\tif (isVoid && !children && !html) {\n\t\ts = s.replace(/>$/, ' />');\n\t} else {\n\t\tif (pretty && ~s.indexOf('\\n')) s = s + '\\n';\n\t\ts = s + `</${nodeName}>`;\n\t}\n\n\treturn s;\n}\n\nfunction getComponentName(component) {\n\treturn (\n\t\tcomponent.displayName ||\n\t\t(component !== Function && component.name) ||\n\t\tgetFallbackComponentName(component)\n\t);\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}\n","import {\n\tencodeEntities,\n\tstyleObjToCss,\n\tgetContext,\n\tcreateComponent,\n\tUNSAFE_NAME,\n\tXLINK,\n\tVOID_ELEMENTS\n} from './util';\nimport { options, h, Fragment } from 'preact';\nimport { _renderToStringPretty } from './pretty';\nimport {\n\tCOMMIT,\n\tCOMPONENT,\n\tDIFF,\n\tDIFFED,\n\tDIRTY,\n\tNEXT_STATE,\n\tPARENT,\n\tRENDER,\n\tSKIP_EFFECTS,\n\tVNODE,\n\tCHILDREN\n} from './constants';\n\n/** @typedef {import('preact').VNode} VNode */\n\nconst SHALLOW = { shallow: true };\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 *\t@param {RegExp|undefined} [options.voidElements] RegeEx that matches elements that are considered void (self-closing)\n */\nrenderToString.render = renderToString;\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\nconst EMPTY_ARR = [];\nfunction renderToString(vnode, context, opts) {\n\tcontext = context || {};\n\n\t// Performance optimization: `renderToString` is synchronous and we\n\t// therefore don't execute any effects. To do that we pass an empty\n\t// array to `options._commit` (`__c`). But we can go one step further\n\t// and avoid a lot of dirty checks and allocations by setting\n\t// `options._skipEffects` (`__s`) too.\n\tconst previousSkipEffects = options[SKIP_EFFECTS];\n\toptions[SKIP_EFFECTS] = true;\n\n\tconst parent = h(Fragment, null);\n\tparent[CHILDREN] = [vnode];\n\n\tlet res;\n\tif (\n\t\topts &&\n\t\t(opts.pretty ||\n\t\t\topts.voidElements ||\n\t\t\topts.sortAttributes ||\n\t\t\topts.shallow ||\n\t\t\topts.allAttributes ||\n\t\t\topts.xml ||\n\t\t\topts.attributeHook)\n\t) {\n\t\tres = _renderToStringPretty(vnode, context, opts);\n\t} else {\n\t\tres = _renderToString(vnode, context, false, undefined, parent);\n\t}\n\n\t// options._commit, we don't schedule any effects in this library right now,\n\t// so we can pass an empty queue to this hook.\n\tif (options[COMMIT]) options[COMMIT](vnode, EMPTY_ARR);\n\toptions[SKIP_EFFECTS] = previousSkipEffects;\n\tEMPTY_ARR.length = 0;\n\n\treturn res;\n}\n\n/**\n * @param {VNode} vnode\n * @param {Record<string, unknown>} context\n * @returns {string}\n */\nfunction renderFunctionComponent(vnode, context) {\n\t// eslint-disable-next-line lines-around-comment\n\t/** @type {string} */\n\tlet rendered,\n\t\tc = createComponent(vnode, context),\n\t\tcctx = getContext(vnode.type, context);\n\n\tvnode[COMPONENT] = c;\n\n\t// If a hook invokes setState() to invalidate the component during rendering,\n\t// re-render it up to 25 times to allow \"settling\" of memoized states.\n\t// Note:\n\t// This will need to be updated for Preact 11 to use internal.flags rather than component._dirty:\n\t// https://github.com/preactjs/preact/blob/d4ca6fdb19bc715e49fd144e69f7296b2f4daa40/src/diff/component.js#L35-L44\n\tlet renderHook = options[RENDER];\n\tlet count = 0;\n\twhile (c[DIRTY] && count++ < 25) {\n\t\tc[DIRTY] = false;\n\n\t\tif (renderHook) renderHook(vnode);\n\n\t\t// stateless functional components\n\t\trendered = vnode.type.call(c, vnode.props, cctx);\n\t}\n\n\treturn rendered;\n}\n\n/**\n * @param {VNode} vnode\n * @param {Record<string, unknown>} context\n * @returns {VNode}\n */\nfunction renderClassComponent(vnode, context) {\n\tlet nodeName = vnode.type,\n\t\tcctx = getContext(nodeName, context);\n\n\t/** @type {import(\"preact\").Component} */\n\tlet c = new nodeName(vnode.props, cctx);\n\tvnode[COMPONENT] = c;\n\tc[VNODE] = vnode;\n\t// turn off stateful re-rendering:\n\tc[DIRTY] = true;\n\tc.props = vnode.props;\n\tif (c.state == null) c.state = {};\n\n\tif (c[NEXT_STATE] == null) {\n\t\tc[NEXT_STATE] = c.state;\n\t}\n\n\tc.context = cctx;\n\tif (nodeName.getDerivedStateFromProps) {\n\t\tc.state = assign(\n\t\t\t{},\n\t\t\tc.state,\n\t\t\tnodeName.getDerivedStateFromProps(c.props, c.state)\n\t\t);\n\t} else if (c.componentWillMount) {\n\t\tc.componentWillMount();\n\n\t\t// If the user called setState in cWM we need to flush pending,\n\t\t// state updates. This is the same behaviour in React.\n\t\tc.state = c[NEXT_STATE] !== c.state ? c[NEXT_STATE] : c.state;\n\t}\n\n\tlet renderHook = options[RENDER];\n\tif (renderHook) renderHook(vnode);\n\n\treturn c.render(c.props, c.state, c.context);\n}\n\n/**\n * @param {any} vnode\n * @returns {VNode}\n */\nfunction normalizeVNode(vnode) {\n\tif (vnode == null || typeof vnode == 'boolean') {\n\t\treturn null;\n\t} else if (\n\t\ttypeof vnode == 'string' ||\n\t\ttypeof vnode == 'number' ||\n\t\ttypeof vnode == 'bigint'\n\t) {\n\t\treturn h(null, null, vnode);\n\t}\n\treturn vnode;\n}\n\n/**\n * @param {string} name\n * @param {boolean} isSvgMode\n * @returns {string}\n */\nfunction normalizePropName(name, isSvgMode) {\n\tif (name === 'className') {\n\t\treturn 'class';\n\t} else if (name === 'htmlFor') {\n\t\treturn 'for';\n\t} else if (name === 'defaultValue') {\n\t\treturn 'value';\n\t} else if (name === 'defaultChecked') {\n\t\treturn 'checked';\n\t} else if (name === 'defaultSelected') {\n\t\treturn 'selected';\n\t} else if (isSvgMode && XLINK.test(name)) {\n\t\treturn name.toLowerCase().replace(/^xlink:?/, 'xlink:');\n\t}\n\n\treturn name;\n}\n\n/**\n * @param {string} name\n * @param {string | Record<string, unknown>} v\n * @returns {string}\n */\nfunction normalizePropValue(name, v) {\n\tif (name === 'style' && v != null && typeof v === 'object') {\n\t\treturn styleObjToCss(v);\n\t} else if (name[0] === 'a' && name[1] === 'r' && typeof v === 'boolean') {\n\t\t// always use string values instead of booleans for aria attributes\n\t\t// also see https://github.com/preactjs/preact/pull/2347/files\n\t\treturn String(v);\n\t}\n\n\treturn v;\n}\n\nconst isArray = Array.isArray;\nconst assign = Object.assign;\n\n/**\n * The default export is an alias of `render()`.\n * @param {any} vnode\n * @param {Record<string, unknown>} context\n * @param {boolean} isSvgMode\n * @param {any} selectValue\n * @param {VNode | null} parent\n * @returns {string}\n */\nfunction _renderToString(vnode, context, isSvgMode, selectValue, parent) {\n\t// Ignore non-rendered VNodes/values\n\tif (vnode == null || vnode === true || vnode === false || vnode === '') {\n\t\treturn '';\n\t}\n\n\t// Text VNodes: escape as HTML\n\tif (typeof vnode !== 'object') {\n\t\tif (typeof vnode === 'function') return '';\n\t\treturn encodeEntities(vnode);\n\t}\n\n\t// Recurse into children / Arrays\n\tif (isArray(vnode)) {\n\t\tlet rendered = '';\n\t\tparent[CHILDREN] = vnode;\n\t\tfor (let i = 0; i < vnode.length; i++) {\n\t\t\trendered =\n\t\t\t\trendered +\n\t\t\t\t_renderToString(vnode[i], context, isSvgMode, selectValue, parent);\n\n\t\t\tvnode[i] = normalizeVNode(vnode[i]);\n\t\t}\n\t\treturn rendered;\n\t}\n\n\t// VNodes have {constructor:undefined} to prevent JSON injection:\n\tif (vnode.constructor !== undefined) return '';\n\n\tvnode[PARENT] = parent;\n\tif (options[DIFF]) options[DIFF](vnode);\n\n\tlet type = vnode.type,\n\t\tprops = vnode.props;\n\n\t// Invoke rendering on Components\n\tconst isComponent = typeof type === 'function';\n\tif (isComponent) {\n\t\tlet rendered;\n\t\tif (type === Fragment) {\n\t\t\trendered = props.children;\n\t\t} else {\n\t\t\tif (type.prototype && typeof type.prototype.render === 'function') {\n\t\t\t\trendered = renderClassComponent(vnode, context);\n\t\t\t} else {\n\t\t\t\trendered = renderFunctionComponent(vnode, context);\n\t\t\t}\n\n\t\t\tlet component = vnode[COMPONENT];\n\t\t\tif (component.getChildContext) {\n\t\t\t\tcontext = assign({}, context, component.getChildContext());\n\t\t\t}\n\t\t}\n\n\t\t// When a component returns a Fragment node we flatten it in core, so we\n\t\t// need to mirror that logic here too\n\t\tlet isTopLevelFragment =\n\t\t\trendered != null && rendered.type === Fragment && rendered.key == null;\n\t\trendered = isTopLevelFragment ? rendered.props.children : rendered;\n\n\t\t// Recurse into children before invoking the after-diff hook\n\t\tconst str = _renderToString(\n\t\t\trendered,\n\t\t\tcontext,\n\t\t\tisSvgMode,\n\t\t\tselectValue,\n\t\t\tvnode\n\t\t);\n\n\t\tif (options[DIFFED]) options[DIFFED](vnode);\n\t\tvnode[PARENT] = undefined;\n\n\t\tif (options.unmount) options.unmount(vnode);\n\n\t\treturn str;\n\t}\n\n\t// Serialize Element VNodes to HTML\n\tlet s = '<',\n\t\tchildren,\n\t\thtml;\n\n\ts = s + type;\n\n\tif (props) {\n\t\tchildren = props.children;\n\t\tfor (let name in props) {\n\t\t\tlet v = props[name];\n\n\t\t\tif (\n\t\t\t\tname === 'key' ||\n\t\t\t\tname === 'ref' ||\n\t\t\t\tname === '__self' ||\n\t\t\t\tname === '__source' ||\n\t\t\t\tname === 'children' ||\n\t\t\t\t(name === 'className' && 'class' in props) ||\n\t\t\t\t(name === 'htmlFor' && 'for' in props)\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (UNSAFE_NAME.test(name)) continue;\n\n\t\t\tname = normalizePropName(name, isSvgMode);\n\t\t\tv = normalizePropValue(name, v);\n\n\t\t\tif (name === 'dangerouslySetInnerHTML') {\n\t\t\t\thtml = v && v.__html;\n\t\t\t} else if (type === 'textarea' && name === 'value') {\n\t\t\t\t// <textarea value=\"a&b\"> --> <textarea>a&amp;b</textarea>\n\t\t\t\tchildren = v;\n\t\t\t} else 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\ts = s + ' ' + name;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (name === 'value') {\n\t\t\t\t\tif (type === 'select') {\n\t\t\t\t\t\tselectValue = v;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else if (\n\t\t\t\t\t\t// If we're looking at an <option> and it's the currently selected one\n\t\t\t\t\t\ttype === 'option' &&\n\t\t\t\t\t\tselectValue == v &&\n\t\t\t\t\t\t// and the <option> doesn't already have a selected attribute on it\n\t\t\t\t\t\t!('selected' in props)\n\t\t\t\t\t) {\n\t\t\t\t\t\ts = s + ' selected';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ts = s + ' ' + name + '=\"' + encodeEntities(v) + '\"';\n\t\t\t}\n\t\t}\n\t}\n\n\tlet startElement = s;\n\ts = s + '>';\n\n\tif (UNSAFE_NAME.test(type)) {\n\t\tthrow new Error(`${type} is not a valid HTML tag name in ${s}`);\n\t}\n\n\tlet pieces = '';\n\tlet hasChildren = false;\n\n\tif (html) {\n\t\tpieces = pieces + html;\n\t\thasChildren = true;\n\t} else if (typeof children === 'string') {\n\t\tpieces = pieces + encodeEntities(children);\n\t\thasChildren = true;\n\t} else if (isArray(children)) {\n\t\tvnode[CHILDREN] = children;\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\tlet child = children[i];\n\t\t\tchildren[i] = normalizeVNode(child);\n\n\t\t\tif (child != null && child !== false) {\n\t\t\t\tlet childSvgMode =\n\t\t\t\t\ttype === 'svg' || (type !== 'foreignObject' && isSvgMode);\n\t\t\t\tlet ret = _renderToString(\n\t\t\t\t\tchild,\n\t\t\t\t\tcontext,\n\t\t\t\t\tchildSvgMode,\n\t\t\t\t\tselectValue,\n\t\t\t\t\tvnode\n\t\t\t\t);\n\n\t\t\t\t// Skip if we received an empty string\n\t\t\t\tif (ret) {\n\t\t\t\t\tpieces = pieces + ret;\n\t\t\t\t\thasChildren = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else if (children != null && children !== false && children !== true) {\n\t\tvnode[CHILDREN] = [normalizeVNode(children)];\n\t\tlet childSvgMode =\n\t\t\ttype === 'svg' || (type !== 'foreignObject' && isSvgMode);\n\t\tlet ret = _renderToString(\n\t\t\tchildren,\n\t\t\tcontext,\n\t\t\tchildSvgMode,\n\t\t\tselectValue,\n\t\t\tvnode\n\t\t);\n\n\t\t// Skip if we received an empty string\n\t\tif (ret) {\n\t\t\tpieces = pieces + ret;\n\t\t\thasChildren = true;\n\t\t}\n\t}\n\n\tif (options[DIFFED]) options[DIFFED](vnode);\n\tvnode[PARENT] = undefined;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif (hasChildren) {\n\t\ts = s + pieces;\n\t} else if (VOID_ELEMENTS.test(type)) {\n\t\treturn startElement + ' />';\n\t}\n\n\treturn s + '</' + type + '>';\n}\n\n/** The default export is an alias of `render()`. */\n\nrenderToString.shallowRender = shallowRender;\n\nexport default renderToString;\n\nexport {\n\trenderToString as render,\n\trenderToString as renderToStaticMarkup,\n\trenderToString,\n\tshallowRender\n};\n"],"names":["IS_NON_DIMENSIONAL","VOID_ELEMENTS","UNSAFE_NAME","XLINK","ENCODED_ENTITIES","encodeEntities","str","test","last","i","out","ch","length","charCodeAt","slice","indent","s","char","String","replace","isLargeString","ignoreLines","indexOf","JS_TO_CSS","CSS_REGEX","styleObjToCss","prop","val","toLowerCase","undefined","getChildren","accumulator","children","Array","isArray","reduce","push","markAsDirty","this","__d","createComponent","vnode","context","__v","props","setState","forceUpdate","__h","getContext","nodeName","cxType","contextType","provider","__c","value","__","UNNAMED","_renderToStringPretty","opts","inner","isSvgMode","selectValue","pretty","indentChar","rendered","constructor","component","type","isComponent","shallow","renderRootComponent","Fragment","shallowHighOrder","c","options","__b","renderHook","__r","prototype","render","cctx","_dirty","state","_nextState","__s","getDerivedStateFromProps","Object","assign","componentWillMount","count","call","getChildContext","diffed","displayName","Function","name","toString","match","index","getFallbackComponentName","propChildren","html","attrs","keys","sortAttributes","sort","v","allAttributes","hooked","attributeHook","__html","xml","selected","sub","Error","isVoid","voidElements","pieces","hasLarge","lastWasText","child","ret","isText","join","substring","SHALLOW","renderToString","shallowRender","EMPTY_ARR","previousSkipEffects","res","parent","h","_renderToString","normalizeVNode","normalizePropName","normalizePropValue","renderClassComponent","renderFunctionComponent","key","unmount","startElement","hasChildren"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { VNode } from 'preact';
2
-
3
- export default function renderToString(vnode: VNode, context?: any): string;
1
+ import { VNode } from 'preact';
2
+
3
+ export default function renderToString(vnode: VNode, context?: any): string;
package/dist/index.js CHANGED
@@ -1 +1,2 @@
1
- module.exports = require('./commonjs').default;
1
+ var e=require("preact"),t=/[\s\n\\/='"\0<>]/,r=/^xlink:?./,o=/["&<]/;function n(e){if(0===e.length||!1===o.test(e))return e;for(var t=0,r=0,n="",a="";r<e.length;r++){switch(e.charCodeAt(r)){case 34:a="&quot;";break;case 38:a="&amp;";break;case 60:a="&lt;";break;default:continue}r!==t&&(n+=e.slice(t,r)),n+=a,t=r+1}return r!==t&&(n+=e.slice(t,r)),n}var a={},i=new Set(["animation-iteration-count","border-image-outset","border-image-slice","border-image-width","box-flex","box-flex-group","box-ordinal-group","column-count","fill-opacity","flex","flex-grow","flex-negative","flex-order","flex-positive","flex-shrink","flood-opacity","font-weight","grid-column","grid-row","line-clamp","line-height","opacity","order","orphans","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","widows","z-index","zoom"]),s=/[A-Z]/g;function l(e){var t="";for(var r in e){var o=e[r];if(null!=o&&""!==o){var n="-"==r[0]?r:a[r]||(a[r]=r.replace(s,"-$&").toLowerCase()),l=";";"number"!=typeof o||n.startsWith("--")||i.has(n)||(l="px;"),t=t+n+":"+o+l}}return t||void 0}var c,u,p,f,_=[],d=Array.isArray,v=Object.assign;function h(){this.__d=!0}var g={};function m(o,a,i,s,_){if(null==o||!0===o||!1===o||""===o)return"";if("object"!=typeof o)return"function"==typeof o?"":n(o+"");if(d(o)){var k="";_.__k=o;for(var x=0;x<o.length;x++){var w=o[x];null!=w&&"boolean"!=typeof w&&(k+=m(w,a,i,s,_))}return k}if(void 0!==o.constructor)return"";o.__=_,c&&c(o);var C,S,F,j=o.type,A=o.props,L=a;if("function"==typeof j){if(j===e.Fragment)S=A.children;else{if(null!=(C=j.contextType)){var M=a[C.__c];L=M?M.props.value:C.__}if(j.prototype&&"function"==typeof j.prototype.render)S=function(e,t){var r=e.type,o=new r(e.props,t);return e.__c=o,o.__v=e,o.props=e.props,o.context=t,o.__d=!0,null==o.state&&(o.state=g),null==o.__s&&(o.__s=o.state),r.getDerivedStateFromProps?o.state=v({},o.state,r.getDerivedStateFromProps(o.props,o.state)):o.componentWillMount&&(o.componentWillMount(),o.state=o.__s!==o.state?o.__s:o.state),p&&p(e),o.render(o.props,o.state,t)}(o,L),F=o.__c;else{o.__c=F={__v:o,props:A,context:L,setState:h,forceUpdate:h,__d:!0,__h:[]};for(var z=0;F.__d&&z++<25;)F.__d=!1,p&&p(o),S=j.call(F,A,L);F.__d=!0}null!=F.getChildContext&&(a=v({},a,F.getChildContext()))}var T=m(S=null!=S&&S.type===e.Fragment&&null==S.key?S.props.children:S,a,i,s,o);return u&&u(o),o.__=void 0,f&&f(o),T}var W,q="<"+j,D="";for(var H in A){var O=A[H];switch(H){case"children":W=O;continue;case"key":case"ref":case"__self":case"__source":continue;case"htmlFor":if("for"in A)continue;H="for";break;case"className":if("class"in A)continue;H="class";break;case"defaultChecked":H="checked";break;case"defaultSelected":H="selected";break;case"defaultValue":case"value":switch(H="value",j){case"textarea":W=O;continue;case"select":s=O;continue;case"option":s!=O||"selected"in A||(q+=" selected")}break;case"dangerouslySetInnerHTML":D=O&&O.__html;continue;case"style":"object"==typeof O&&(O=l(O));break;default:if(i&&r.test(H))H=H.toLowerCase().replace(y,"xlink:");else{if(t.test(H))continue;"-"!==H[4]&&"draggable"!==H||null==O||(O+="")}}null!=O&&!1!==O&&"function"!=typeof O&&(q=!0===O||""===O?q+" "+H:q+" "+H+'="'+n(O+"")+'"')}if(t.test(j))throw new Error(j+" is not a valid HTML tag name in "+q+">");return D||("string"==typeof W?D=n(W):null!=W&&!1!==W&&!0!==W&&(D=m(W,a,"svg"===j||"foreignObject"!==j&&i,s,o))),u&&u(o),o.__=void 0,f&&f(o),!D&&b.has(j)?q+"/>":q+">"+D+"</"+j+">"}var y=/^xlink:?/,b=new Set(["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"]);module.exports=function(t,r){var o=e.options.__s;e.options.__s=!0,c=e.options.__b,u=e.options.diffed,p=e.options.__r,f=e.options.unmount;var n=e.h(e.Fragment,null);n.__k=[t];try{return m(t,r||g,!1,void 0,n)}finally{e.options.__c&&e.options.__c(t,_),e.options.__s=o,_.length=0}};
2
+ //# sourceMappingURL=index.js.map