preact-render-to-string
Version:
Render JSX to an HTML string, with support for Preact components.
3 lines (2 loc) • 4.04 kB
JavaScript
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=""";break;case 38:a="&";break;case 60:a="<";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,p,u,f,_=[],d=Array.isArray,v=Object.assign;function g(t,r){var o=e.options.__s;e.options.__s=!0,c=e.options.__b,p=e.options.diffed,u=e.options.__r,f=e.options.unmount;var n=e.h(e.Fragment,null);n.__k=[t];try{return b(t,r||m,!1,void 0,n)}finally{e.options.__c&&e.options.__c(t,_),e.options.__s=o,_.length=0}}function h(){this.__d=!0}var m={};function y(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=m),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),u&&u(e),o.render(o.props,o.state,t)}function b(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 m=0;m<o.length;m++){var w=o[m];null!=w&&"boolean"!=typeof w&&(g+=b(w,a,i,s,_))}return g}if(void 0!==o.constructor)return"";o.__=_,c&&c(o);var S,C,F,M=o.type,T=o.props,j=a;if("function"==typeof M){if(M===e.Fragment)C=T.children;else{if(null!=(S=M.contextType)){var A=a[S.__c];j=A?A.props.value:S.__}if(M.prototype&&"function"==typeof M.prototype.render)C=y(o,j),F=o.__c;else{o.__c=F={__v:o,props:T,context:j,setState:h,forceUpdate:h,__d:!0,__h:[]};for(var L=0;F.__d&&L++<25;)F.__d=!1,u&&u(o),C=M.call(F,T,j);F.__d=!0}null!=F.getChildContext&&(a=v({},a,F.getChildContext()))}var z=b(C=null!=C&&C.type===e.Fragment&&null==C.key?C.props.children:C,a,i,s,o);return p&&p(o),o.__=void 0,f&&f(o),z}var W,q="<"+M,D="";for(var H in T){var O=T[H];switch(H){case"children":W=O;continue;case"key":case"ref":case"__self":case"__source":continue;case"htmlFor":if("for"in T)continue;H="for";break;case"className":if("class"in T)continue;H="class";break;case"defaultChecked":H="checked";break;case"defaultSelected":H="selected";break;case"defaultValue":case"value":switch(H="value",M){case"textarea":W=O;continue;case"select":s=O;continue;case"option":s!=O||"selected"in T||(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(k,"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(M))throw new Error(M+" is not a valid HTML tag name in "+q+">");return D||("string"==typeof W?D=n(W):null!=W&&!1!==W&&!0!==W&&(D=b(W,a,"svg"===M||"foreignObject"!==M&&i,s,o))),p&&p(o),o.__=void 0,f&&f(o),!D&&x.has(M)?q+"/>":q+">"+D+"</"+M+">"}var k=/^xlink:?/,x=new Set(["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"]),w=g,S=g;exports.default=g,exports.render=w,exports.renderToStaticMarkup=S,exports.renderToString=g;
//# sourceMappingURL=index.js.map