preact-render-to-string
Version:
Render JSX to an HTML string, with support for Preact components.
3 lines (2 loc) • 4.64 kB
JavaScript
import{options as e,createElement as t,Fragment as r}from"preact";var n,o,i=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|^--/i,a=/[&<>"]/g,l={"&":"&","<":"<",">":">",'"':"""},s=function(e){return l[e]||e},f=(n=function(e){return"string"!=typeof e&&(e=String(e)),e.replace(a,s)},o=new Map,function(e){var t=o.get(e);return t||(t=n(e),o.set(e,t)),t}),u=function(e,t){return String(e).replace(/(\n+)/g,"$1"+(t||"\t"))},c=function(e,t,r){return String(e).length>(t||40)||!r&&-1!==String(e).indexOf("\n")||-1!==String(e).indexOf("<")},p={};function _(e){var t="";for(var r in e){var n=e[r];null!=n&&(t&&(t+=" "),t+="-"==r[0]?r:p[r]||(p[r]=r.replace(/([A-Z])/g,"-$1").toLowerCase()),t+=": ",t+=n,"number"==typeof n&&!1===i.test(r)&&(t+="px"),t+=";")}return t||void 0}function v(e,t){for(var r in t)e[r]=t[r];return e}function d(e,t){return Array.isArray(t)?t.reduce(d,e):null!=t&&!1!==t&&e.push(t),e}var g={shallow:!0},h=[],m=/^(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/,x=/[\s\n\\/='"\0<>]/,y=function(){};w.render=w;var b=function(e,t){return w(e,t,g)},S=[];function w(t,r,n){var o=k(t,r,n);return e.__c&&e.__c(t,S),o}function k(n,o,i,a,l,s){if(null==n||"boolean"==typeof n)return"";Array.isArray(n)&&(n=t(r,null,n));var p=n.type,g=n.props,b=!1;o=o||{};var S,w=(i=i||{}).pretty,O=w&&"string"==typeof w?w:"\t";if("object"!=typeof n&&!p)return f(n);if("function"==typeof p){if(b=!0,!i.shallow||!a&&!1!==i.renderRootComponent){if(p===r){var C="",A=[];d(A,n.props.children);for(var H=0;H<A.length;H++)C+=(H>0&&w?"\n":"")+k(A[H],o,i,!1!==i.shallowHighOrder,l,s);return C}var M,j=n.__c={__v:n,context:o,props:n.props,setState:y,forceUpdate:y,__h:[]};if(e.__b&&e.__b(n),e.__r&&e.__r(n),p.prototype&&"function"==typeof p.prototype.render){var F=p.contextType,T=F&&o[F.__c],$=null!=F?T?T.props.value:F.__:o;(j=n.__c=new p(g,$)).__v=n,j._dirty=j.__d=!0,j.props=g,null==j.state&&(j.state={}),null==j._nextState&&null==j.__s&&(j._nextState=j.__s=j.state),j.context=$,p.getDerivedStateFromProps?j.state=v(v({},j.state),p.getDerivedStateFromProps(j.props,j.state)):j.componentWillMount&&(j.componentWillMount(),j.state=j._nextState!==j.state?j._nextState:j.__s!==j.state?j.__s:j.state),M=j.render(j.props,j.state,j.context)}else{var L=p.contextType,E=L&&o[L.__c];M=p.call(n.__c,g,null!=L?E?E.props.value:L.__:o)}return j.getChildContext&&(o=v(v({},o),j.getChildContext())),e.diffed&&e.diffed(n),k(M,o,i,!1!==i.shallowHighOrder,l,s)}p=(S=p).displayName||S!==Function&&S.name||function(e){var t=(Function.prototype.toString.call(e).match(/^\s*function\s+([^( ]+)/)||"")[1];if(!t){for(var r=-1,n=h.length;n--;)if(h[n]===e){r=n;break}r<0&&(r=h.push(e)-1),t="UnnamedComponent"+r}return t}(S)}var D,N,P="";if(g){var R=Object.keys(g);i&&!0===i.sortAttributes&&R.sort();for(var U=0;U<R.length;U++){var W=R[U],q=g[W];if("children"!==W){if(!W.match(/[\s\n\\/='"\0<>]/)&&(i&&i.allAttributes||"key"!==W&&"ref"!==W&&"__self"!==W&&"__source"!==W&&"defaultValue"!==W)){if("className"===W){if(g.class)continue;W="class"}else l&&W.match(/^xlink:?./)&&(W=W.toLowerCase().replace(/^xlink:?/,"xlink:"));if("htmlFor"===W){if(g.for)continue;W="for"}"style"===W&&q&&"object"==typeof q&&(q=_(q)),"a"===W[0]&&"r"===W[1]&&"boolean"==typeof q&&(q=String(q));var z=i.attributeHook&&i.attributeHook(W,q,o,i,b);if(z||""===z)P+=z;else if("dangerouslySetInnerHTML"===W)N=q&&q.__html;else if("textarea"===p&&"value"===W)D=q;else if((q||0===q||""===q)&&"function"!=typeof q){if(!(!0!==q&&""!==q||(q=W,i&&i.xml))){P+=" "+W;continue}if("value"===W){if("select"===p){s=q;continue}"option"===p&&s==q&&(P+=" selected")}P+=" "+W+'="'+f(q)+'"'}}}else D=q}}if(w){var I=P.replace(/^\n\s*/," ");I===P||~I.indexOf("\n")?w&&~P.indexOf("\n")&&(P+="\n"):P=I}if(P="<"+p+P+">",x.test(String(p)))throw new Error(p+" is not a valid HTML tag name in "+P);var V,Z=m.test(String(p))||i.voidElements&&i.voidElements.test(String(p)),B=[];if(N)w&&c(N)&&(N="\n"+O+u(N,O)),P+=N;else if(null!=D&&d(V=[],D).length){for(var G=w&&~P.indexOf("\n"),J=!1,K=0;K<V.length;K++){var Q=V[K];if(null!=Q&&!1!==Q){var X=k(Q,o,i,!0,"svg"===p||"foreignObject"!==p&&l,s);if(w&&!G&&c(X)&&(G=!0),X)if(w){var Y=X.length>0&&"<"!=X[0];J&&Y?B[B.length-1]+=X:B.push(X),J=Y}else B.push(X)}}if(w&&G)for(var ee=B.length;ee--;)B[ee]="\n"+O+u(B[ee],O)}if(B.length||N)P+=B.join("");else if(i&&i.xml)return P.substring(0,P.length-1)+" />";return!Z||V||N?(w&&~P.indexOf("\n")&&(P+="\n"),P+="</"+p+">"):P=P.replace(/>$/," />"),P}w.shallowRender=b;export default w;export{w as render,w as renderToStaticMarkup,w as renderToString,b as shallowRender};
//# sourceMappingURL=index.module.js.map