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