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