preact-render-to-string
Version:
Render JSX to an HTML string, with support for Preact components.
3 lines (2 loc) • 10.5 kB
JavaScript
import{options as t,Fragment as e}from"preact";if("function"!=typeof Symbol){var n=0;Symbol=function(t){return"@@"+t+ ++n},Symbol.for=function(t){return"@@"+t}}var r=/^(?:area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/,o=/[\s\n\\/='"\0<>]/,i=/^xlink:?./,a=/["&<]/;function c(t){if(0===t.length||!1===a.test(t))return t;for(var e=0,n=0,r="",o="";n<t.length;n++){switch(t.charCodeAt(n)){case 34:o=""";break;case 38:o="&";break;case 60:o="<";break;default:continue}n!==e&&(r+=t.slice(e,n)),r+=o,e=n+1}return n!==e&&(r+=t.slice(e,n)),r}var l=function(t,e){return String(t).replace(/(\n+)/g,"$1"+(e||"\t"))},u=function(t,e,n){return String(t).length>(e||40)||!n&&-1!==String(t).indexOf("\n")||-1!==String(t).indexOf("<")},s={},f=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"]),p=/[A-Z]/g;function d(t){var e="";for(var n in t){var r=t[n];if(null!=r&&""!==r){var o="-"==n[0]?n:s[n]||(s[n]=n.replace(p,"-$&").toLowerCase()),i=";";"number"!=typeof r||o.startsWith("--")||f.has(o)||(i="px;"),e=e+o+":"+r+i}}return e||void 0}function g(t,e){return Array.isArray(e)?e.reduce(g,t):null!=e&&!1!==e&&t.push(e),t}function y(){this.__d=!0}function b(t,e){return{__v:t,context:e,props:t.props,setState:y,forceUpdate:y,__d:!0,__h:[]}}var m=[],h=[];function v(e,n,r,o){var i=t.__s;t.__s=!0;try{return _(e,n||{},r,o)}finally{t.__c&&t.__c(e,h),t.__s=i,h.length=0}}function _(n,a,s,f,p,y){if(null==n||"boolean"==typeof n)return"";if("object"!=typeof n)return"function"==typeof n?"":c(n+"");var m=s.pretty,h=m&&"string"==typeof m?m:"\t";if(Array.isArray(n)){for(var v="",j=0;j<n.length;j++)m&&j>0&&(v+="\n"),v+=_(n[j],a,s,f,p,y);return v}if(void 0!==n.constructor)return"";t.__b&&t.__b(n);var S,k=n.type,O=n.props,w=!1;if("function"==typeof k){if(w=!0,!s.shallow||!f&&!1!==s.renderRootComponent){if(k===e){var A=[];return g(A,n.props.children),_(A,a,s,!1!==s.shallowHighOrder,p,y)}var F,C=n.__c=b(n,a),E=t.__r,M=a,H=k.contextType;if(null!=H){var N=a[H.__c];M=N?N.props.value:H.__}if(k.prototype&&"function"==typeof k.prototype.render)(C=n.__c=new k(O,M)).__v=n,C._dirty=C.__d=!0,C.props=O,null==C.state&&(C.state={}),null==C._nextState&&null==C.__s&&(C._nextState=C.__s=C.state),C.context=M,k.getDerivedStateFromProps?C.state=Object.assign({},C.state,k.getDerivedStateFromProps(C.props,C.state)):C.componentWillMount&&(C.componentWillMount(),C.state=C._nextState!==C.state?C._nextState:C.__s!==C.state?C.__s:C.state),E&&E(n),F=C.render(C.props,C.state,C.context);else for(var D=0;C.__d&&D++<25;)C.__d=!1,E&&E(n),F=k.call(n.__c,O,M);C.getChildContext&&(a=Object.assign({},a,C.getChildContext()));var I=_(F,a,s,!1!==s.shallowHighOrder,p,y);return t.diffed&&t.diffed(n),I}k=(S=k).displayName||S!==Function&&S.name||x(S)}var W,$,U="<"+k;if(O){var L=Object.keys(O);s&&!0===s.sortAttributes&&L.sort();for(var P=0;P<L.length;P++){var T=L[P],z=O[T];if("children"!==T){if(!o.test(T)&&(s&&s.allAttributes||"key"!==T&&"ref"!==T&&"__self"!==T&&"__source"!==T)){if("defaultValue"===T)T="value";else if("defaultChecked"===T)T="checked";else if("defaultSelected"===T)T="selected";else if("className"===T){if(void 0!==O.class)continue;T="class"}else p&&i.test(T)&&(T=T.toLowerCase().replace(/^xlink:?/,"xlink:"));if("htmlFor"===T){if(O.for)continue;T="for"}"style"===T&&z&&"object"==typeof z&&(z=d(z)),"a"===T[0]&&"r"===T[1]&&"boolean"==typeof z&&(z=String(z));var J=s.attributeHook&&s.attributeHook(T,z,a,s,w);if(J||""===J)U+=J;else if("dangerouslySetInnerHTML"===T)$=z&&z.__html;else if("textarea"===k&&"value"===T)W=z;else if((z||0===z||""===z)&&"function"!=typeof z){if(!(!0!==z&&""!==z||(z=T,s&&s.xml))){U=U+" "+T;continue}if("value"===T){if("select"===k){y=z;continue}"option"===k&&y==z&&void 0===O.selected&&(U+=" selected")}U=U+" "+T+'="'+c(z+"")+'"'}}}else W=z}}if(m){var R=U.replace(/\n\s*/," ");R===U||~R.indexOf("\n")?m&&~U.indexOf("\n")&&(U+="\n"):U=R}if(U+=">",o.test(k))throw new Error(k+" is not a valid HTML tag name in "+U);var V,q=r.test(k)||s.voidElements&&s.voidElements.test(k),B=[];if($)m&&u($)&&($="\n"+h+l($,h)),U+=$;else if(null!=W&&g(V=[],W).length){for(var G=m&&~U.indexOf("\n"),Z=!1,K=0;K<V.length;K++){var Q=V[K];if(null!=Q&&!1!==Q){var X=_(Q,a,s,!0,"svg"===k||"foreignObject"!==k&&p,y);if(m&&!G&&u(X)&&(G=!0),X)if(m){var Y=X.length>0&&"<"!=X[0];Z&&Y?B[B.length-1]+=X:B.push(X),Z=Y}else B.push(X)}}if(m&&G)for(var tt=B.length;tt--;)B[tt]="\n"+h+l(B[tt],h)}if(t.diffed&&t.diffed(n),B.length||$)U+=B.join("");else if(s&&s.xml)return U.substring(0,U.length-1)+" />";return!q||V||$?(m&&~U.indexOf("\n")&&(U+="\n"),U=U+"</"+k+">"):U=U.replace(/>$/," />"),U}function x(t){var e=(Function.prototype.toString.call(t).match(/^\s*function\s+([^( ]+)/)||"")[1];if(!e){for(var n=-1,r=m.length;r--;)if(m[r]===t){n=r;break}n<0&&(n=m.push(t)-1),e="UnnamedComponent"+n}return e}const j=/(\\|\"|\')/g;var S=function(t){return t.replace(j,"\\$1")};const k=Object.prototype.toString,O=Date.prototype.toISOString,w=Error.prototype.toString,A=RegExp.prototype.toString,F=Symbol.prototype.toString,C=/^Symbol\((.*)\)(.*)$/,E=/\n/gi,M=Object.getOwnPropertySymbols||(t=>[]);function H(t){return"[object Array]"===t||"[object ArrayBuffer]"===t||"[object DataView]"===t||"[object Float32Array]"===t||"[object Float64Array]"===t||"[object Int8Array]"===t||"[object Int16Array]"===t||"[object Int32Array]"===t||"[object Uint8Array]"===t||"[object Uint8ClampedArray]"===t||"[object Uint16Array]"===t||"[object Uint32Array]"===t}function N(t){return t!=+t?"NaN":0===t&&1/t<0?"-0":""+t}function D(t){return""===t.name?"[Function anonymous]":"[Function "+t.name+"]"}function I(t){return F.call(t).replace(C,"Symbol($1)")}function W(t){return"["+w.call(t)+"]"}function $(t){if(!0===t||!1===t)return""+t;if(void 0===t)return"undefined";if(null===t)return"null";const e=typeof t;if("number"===e)return N(t);if("string"===e)return'"'+S(t)+'"';if("function"===e)return D(t);if("symbol"===e)return I(t);const n=k.call(t);return"[object WeakMap]"===n?"WeakMap {}":"[object WeakSet]"===n?"WeakSet {}":"[object Function]"===n||"[object GeneratorFunction]"===n?D(t,min):"[object Symbol]"===n?I(t):"[object Date]"===n?O.call(t):"[object Error]"===n?W(t):"[object RegExp]"===n?A.call(t):"[object Arguments]"===n&&0===t.length?"Arguments []":H(n)&&0===t.length?t.constructor.name+" []":t instanceof Error&&W(t)}function U(t,e,n,r,o,i,a,c,l,u){let s="";if(t.length){s+=o;const f=n+e;for(let n=0;n<t.length;n++)s+=f+q(t[n],e,f,r,o,i,a,c,l,u),n<t.length-1&&(s+=","+r);s+=o+n}return"["+s+"]"}function L(t,e,n,r,o,i,a,c,l,u){return(u?"":"Arguments ")+U(t,e,n,r,o,i,a,c,l,u)}function P(t,e,n,r,o,i,a,c,l,u){return(u?"":t.constructor.name+" ")+U(t,e,n,r,o,i,a,c,l,u)}function T(t,e,n,r,o,i,a,c,l,u){let s="Map {";const f=t.entries();let p=f.next();if(!p.done){s+=o;const t=n+e;for(;!p.done;)s+=t+q(p.value[0],e,t,r,o,i,a,c,l,u)+" => "+q(p.value[1],e,t,r,o,i,a,c,l,u),p=f.next(),p.done||(s+=","+r);s+=o+n}return s+"}"}function z(t,e,n,r,o,i,a,c,l,u){let s=(u?"":t.constructor?t.constructor.name+" ":"Object ")+"{",f=Object.keys(t).sort();const p=M(t);if(p.length&&(f=f.filter(t=>!("symbol"==typeof t||"[object Symbol]"===k.call(t))).concat(p)),f.length){s+=o;const p=n+e;for(let n=0;n<f.length;n++){const d=f[n];s+=p+q(d,e,p,r,o,i,a,c,l,u)+": "+q(t[d],e,p,r,o,i,a,c,l,u),n<f.length-1&&(s+=","+r)}s+=o+n}return s+"}"}function J(t,e,n,r,o,i,a,c,l,u){let s="Set {";const f=t.entries();let p=f.next();if(!p.done){s+=o;const t=n+e;for(;!p.done;)s+=t+q(p.value[1],e,t,r,o,i,a,c,l,u),p=f.next(),p.done||(s+=","+r);s+=o+n}return s+"}"}function R(t,e,n,r,o,i,a,c,l,u){if((i=i.slice()).indexOf(t)>-1)return"[Circular]";i.push(t);const s=++c>a;if(!s&&t.toJSON&&"function"==typeof t.toJSON)return q(t.toJSON(),e,n,r,o,i,a,c,l,u);const f=k.call(t);return"[object Arguments]"===f?s?"[Arguments]":L(t,e,n,r,o,i,a,c,l,u):H(f)?s?"[Array]":P(t,e,n,r,o,i,a,c,l,u):"[object Map]"===f?s?"[Map]":T(t,e,n,r,o,i,a,c,l,u):"[object Set]"===f?s?"[Set]":J(t,e,n,r,o,i,a,c,l,u):"object"==typeof t?s?"[Object]":z(t,e,n,r,o,i,a,c,l,u):void 0}function V(t,e,n,r,o,i,a,c,l,u){let s,f=!1;for(let e=0;e<l.length;e++)if(s=l[e],s.test(t)){f=!0;break}return!!f&&s.print(t,function(t){return q(t,e,n,r,o,i,a,c,l,u)},function(t){const r=n+e;return r+t.replace(E,"\n"+r)},{edgeSpacing:o,spacing:r})}function q(t,e,n,r,o,i,a,c,l,u){return $(t)||V(t,e,n,r,o,i,a,c,l,u)||R(t,e,n,r,o,i,a,c,l,u)}const B={indent:2,min:!1,maxDepth:Infinity,plugins:[]};function G(t){if(Object.keys(t).forEach(t=>{if(!B.hasOwnProperty(t))throw new Error("prettyFormat: Invalid option: "+t)}),t.min&&void 0!==t.indent&&0!==t.indent)throw new Error("prettyFormat: Cannot run with min option and indent")}function Z(t){const e={};return Object.keys(B).forEach(n=>e[n]=t.hasOwnProperty(n)?t[n]:B[n]),e.min&&(e.indent=0),e}function K(t){return new Array(t+1).join(" ")}var Q=function(t,e){let n,r;e?(G(e),e=Z(e)):e=B;const o=e.min?" ":"\n",i=e.min?"":"\n";if(e&&e.plugins.length){n=K(e.indent),r=[];var a=V(t,n,"",o,i,r,e.maxDepth,0,e.plugins,e.min);if(a)return a}return $(t)||(n||(n=K(e.indent)),r||(r=[]),R(t,n,"",o,i,r,e.maxDepth,0,e.plugins,e.min))},X={test:function(t){return t&&"object"==typeof t&&"type"in t&&"props"in t&&"key"in t},print:function(t,e,n){return v(t,X.context,X.opts,!0)}},Y={plugins:[X]},tt={attributeHook:function(t,e,n,r,o){var i=typeof e;if("dangerouslySetInnerHTML"===t)return!1;if(null==e||"function"===i&&!r.functions)return"";if(r.skipFalseAttributes&&!o&&(!1===e||("class"===t||"style"===t)&&""===e))return"";var a="string"==typeof r.pretty?r.pretty:"\t";return"string"!==i?("function"!==i||r.functionNames?(X.context=n,X.opts=r,~(e=Q(e,Y)).indexOf("\n")&&(e=l("\n"+e,a)+"\n")):e="Function",l("\n"+t+"={"+e+"}",a)):"\n"+a+t+'="'+c(e)+'"'},jsx:!0,xml:!1,functions:!0,functionNames:!0,skipFalseAttributes:!0,pretty:" "};function et(t,e,n){var r=Object.assign({},tt,n||{});return r.jsx||(r.attributeHook=null),v(t,e,r)}var nt={shallow:!0};function rt(t,e,n){return et(t,e,Object.assign({},nt,n||{}))}export default et;export{et as render,rt as shallowRender};
//# sourceMappingURL=jsx.module.js.map