preact-render-to-string 5.1.16 → 5.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/commonjs.js +1 -1
- package/dist/commonjs.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.module.js +1 -1
- package/dist/index.module.js.map +1 -1
- package/dist/jsx-entry.js +1 -1
- package/dist/jsx-entry.js.map +1 -1
- package/dist/jsx.js.map +1 -1
- package/dist/jsx.mjs +1 -1
- package/dist/jsx.modern.js +1 -1
- package/dist/jsx.modern.js.map +1 -1
- package/dist/jsx.module.js +1 -1
- package/dist/jsx.module.js.map +1 -1
- package/package.json +31 -16
- package/src/index.js +63 -42
- package/src/util.js +12 -11
package/dist/jsx.module.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
if("function"!=typeof Symbol){var t=0;Symbol=function(n){return"@@"+n+ ++t},Symbol.for=function(t){return"@@"+t}}var n=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|^--/i,e=/[&<>"]/g,r={"&":"&","<":"<",">":">",'"':"""},o=function(t){return r[t]||t};function i(t){return"string"!=typeof t&&(t=String(t)),t.replace(e,o)}var u,l=function(t,n){return String(t).replace(/(\n+)/g,"$1"+(n||"\t"))},c=function(t,n,e){return String(t).length>(n||40)||!e&&-1!==String(t).indexOf("\n")||-1!==String(t).indexOf("<")},a={};function f(t){var e="";for(var r in t){var o=t[r];null!=o&&""!==o&&(e&&(e+=" "),e+="-"==r[0]?r:a[r]||(a[r]=r.replace(/([A-Z])/g,"-$1").toLowerCase()),e+=": ",e+=o,"number"==typeof o&&!1===n.test(r)&&(e+="px"),e+=";")}return e||void 0}function s(t,n){for(var e in n)t[e]=n[e];return t}function p(t,n){return Array.isArray(n)?n.reduce(p,t):null!=n&&!1!==n&&t.push(n),t}function _(t,n,e,r,o){var i={type:t,props:n,key:e,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++u.__v:o};return null!=u.vnode&&u.vnode(i),i}function y(t){return t.children}u={__e:function(t,n){for(var e,r,o,i=n.__h;n=n.__;)if((e=n.__c)&&!e.__)try{if((r=e.constructor)&&null!=r.getDerivedStateFromError&&(e.setState(r.getDerivedStateFromError(t)),o=e.__d),null!=e.componentDidCatch&&(e.componentDidCatch(t),o=e.__d),o)return n.__h=i,e.__E=e}catch(n){t=n}throw t},__v:0},"function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout;var d={shallow:!0},g=[],m=/^(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/,b=/[\s\n\\/='"\0<>]/,h=function(){};S.render=S;var v=[];function S(t,n,e){var r=x(t,n,e);return u.__c&&u.__c(t,v),r}function x(t,n,e,r,o,a){if(null==t||"boolean"==typeof t)return"";Array.isArray(t)&&(t=function(t,n,e){var r,o,i,u=arguments,l={};for(i in n)"key"==i?r=n[i]:"ref"==i?o=n[i]:l[i]=n[i];if(arguments.length>3)for(e=[e],i=3;i<arguments.length;i++)e.push(u[i]);if(null!=e&&(l.children=e),"function"==typeof t&&null!=t.defaultProps)for(i in t.defaultProps)void 0===l[i]&&(l[i]=t.defaultProps[i]);return _(t,l,r,o,null)}(y,null,t));var d=t.type,v=t.props,S=!1;n=n||{};var j,A=(e=e||{}).pretty,O=A&&"string"==typeof A?A:"\t";if("object"!=typeof t&&!d)return i(t);if("function"==typeof d){if(S=!0,!e.shallow||!r&&!1!==e.renderRootComponent){if(d===y){var k="",w=[];p(w,t.props.children);for(var F=0;F<w.length;F++)k+=(F>0&&A?"\n":"")+x(w[F],n,e,!1!==e.shallowHighOrder,o,a);return k}var E,C=t.__c={__v:t,context:n,props:t.props,setState:h,forceUpdate:h,__h:[]};if(u.__b&&u.__b(t),u.__r&&u.__r(t),d.prototype&&"function"==typeof d.prototype.render){var D=d.contextType,P=D&&n[D.__c],M=null!=D?P?P.props.value:D.__:n;(C=t.__c=new d(v,M)).__v=t,C._dirty=C.__d=!0,C.props=v,null==C.state&&(C.state={}),null==C._nextState&&null==C.__s&&(C._nextState=C.__s=C.state),C.context=M,d.getDerivedStateFromProps?C.state=s(s({},C.state),d.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=C.render(C.props,C.state,C.context)}else{var N=d.contextType,H=N&&n[N.__c];E=d.call(t.__c,v,null!=N?H?H.props.value:N.__:n)}return C.getChildContext&&(n=s(s({},n),C.getChildContext())),u.diffed&&u.diffed(t),x(E,n,e,!1!==e.shallowHighOrder,o,a)}d=(j=d).displayName||j!==Function&&j.name||function(t){var n=(Function.prototype.toString.call(t).match(/^\s*function\s+([^( ]+)/)||"")[1];if(!n){for(var e=-1,r=g.length;r--;)if(g[r]===t){e=r;break}e<0&&(e=g.push(t)-1),n="UnnamedComponent"+e}return n}(j)}var I,$,T="";if(v){var U=Object.keys(v);e&&!0===e.sortAttributes&&U.sort();for(var W=0;W<U.length;W++){var L=U[W],R=v[L];if("children"!==L){if(!L.match(/[\s\n\\/='"\0<>]/)&&(e&&e.allAttributes||"key"!==L&&"ref"!==L&&"__self"!==L&&"__source"!==L&&"defaultValue"!==L)){if("className"===L){if(v.class)continue;L="class"}else o&&L.match(/^xlink:?./)&&(L=L.toLowerCase().replace(/^xlink:?/,"xlink:"));if("htmlFor"===L){if(v.for)continue;L="for"}"style"===L&&R&&"object"==typeof R&&(R=f(R)),"a"===L[0]&&"r"===L[1]&&"boolean"==typeof R&&(R=String(R));var J=e.attributeHook&&e.attributeHook(L,R,n,e,S);if(J||""===J)T+=J;else if("dangerouslySetInnerHTML"===L)$=R&&R.__html;else if("textarea"===d&&"value"===L)I=R;else if((R||0===R||""===R)&&"function"!=typeof R){if(!(!0!==R&&""!==R||(R=L,e&&e.xml))){T+=" "+L;continue}if("value"===L){if("select"===d){a=R;continue}"option"===d&&a==R&&(T+=" selected")}T+=" "+L+'="'+i(R)+'"'}}}else I=R}}if(A){var V=T.replace(/^\n\s*/," ");V===T||~V.indexOf("\n")?A&&~T.indexOf("\n")&&(T+="\n"):T=V}if(T="<"+d+T+">",b.test(String(d)))throw new Error(d+" is not a valid HTML tag name in "+T);var q,z=m.test(String(d))||e.voidElements&&e.voidElements.test(String(d)),B=[];if($)A&&c($)&&($="\n"+O+l($,O)),T+=$;else if(null!=I&&p(q=[],I).length){for(var G=A&&~T.indexOf("\n"),Z=!1,K=0;K<q.length;K++){var Q=q[K];if(null!=Q&&!1!==Q){var X=x(Q,n,e,!0,"svg"===d||"foreignObject"!==d&&o,a);if(A&&!G&&c(X)&&(G=!0),X)if(A){var Y=X.length>0&&"<"!=X[0];Z&&Y?B[B.length-1]+=X:B.push(X),Z=Y}else B.push(X)}}if(A&&G)for(var tt=B.length;tt--;)B[tt]="\n"+O+l(B[tt],O)}if(B.length||$)T+=B.join("");else if(e&&e.xml)return T.substring(0,T.length-1)+" />";return!z||q||$?(A&&~T.indexOf("\n")&&(T+="\n"),T+="</"+d+">"):T=T.replace(/>$/," />"),T}S.shallowRender=function(t,n){return S(t,n,d)};const j=/(\\|\"|\')/g,A=Object.prototype.toString,O=Date.prototype.toISOString,k=Error.prototype.toString,w=RegExp.prototype.toString,F=Symbol.prototype.toString,E=/^Symbol\((.*)\)(.*)$/,C=/\n/gi,D=Object.getOwnPropertySymbols||(t=>[]);function P(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 M(t){return""===t.name?"[Function anonymous]":"[Function "+t.name+"]"}function N(t){return F.call(t).replace(E,"Symbol($1)")}function H(t){return"["+k.call(t)+"]"}function I(t){if(!0===t||!1===t)return""+t;if(void 0===t)return"undefined";if(null===t)return"null";const n=typeof t;if("number"===n)return function(t){return t!=+t?"NaN":0===t&&1/t<0?"-0":""+t}(t);if("string"===n)return'"'+function(t){return t.replace(j,"\\$1")}(t)+'"';if("function"===n)return M(t);if("symbol"===n)return N(t);const e=A.call(t);return"[object WeakMap]"===e?"WeakMap {}":"[object WeakSet]"===e?"WeakSet {}":"[object Function]"===e||"[object GeneratorFunction]"===e?M(t,min):"[object Symbol]"===e?N(t):"[object Date]"===e?O.call(t):"[object Error]"===e?H(t):"[object RegExp]"===e?w.call(t):"[object Arguments]"===e&&0===t.length?"Arguments []":P(e)&&0===t.length?t.constructor.name+" []":t instanceof Error&&H(t)}function $(t,n,e,r,o,i,u,l,c,a){let f="";if(t.length){f+=o;const s=e+n;for(let e=0;e<t.length;e++)f+=s+W(t[e],n,s,r,o,i,u,l,c,a),e<t.length-1&&(f+=","+r);f+=o+e}return"["+f+"]"}function T(t,n,e,r,o,i,u,l,c,a){if((i=i.slice()).indexOf(t)>-1)return"[Circular]";i.push(t);const f=++l>u;if(!f&&t.toJSON&&"function"==typeof t.toJSON)return W(t.toJSON(),n,e,r,o,i,u,l,c,a);const s=A.call(t);return"[object Arguments]"===s?f?"[Arguments]":function(t,n,e,r,o,i,u,l,c,a){return(a?"":"Arguments ")+$(t,n,e,r,o,i,u,l,c,a)}(t,n,e,r,o,i,u,l,c,a):P(s)?f?"[Array]":function(t,n,e,r,o,i,u,l,c,a){return(a?"":t.constructor.name+" ")+$(t,n,e,r,o,i,u,l,c,a)}(t,n,e,r,o,i,u,l,c,a):"[object Map]"===s?f?"[Map]":function(t,n,e,r,o,i,u,l,c,a){let f="Map {";const s=t.entries();let p=s.next();if(!p.done){f+=o;const t=e+n;for(;!p.done;)f+=t+W(p.value[0],n,t,r,o,i,u,l,c,a)+" => "+W(p.value[1],n,t,r,o,i,u,l,c,a),p=s.next(),p.done||(f+=","+r);f+=o+e}return f+"}"}(t,n,e,r,o,i,u,l,c,a):"[object Set]"===s?f?"[Set]":function(t,n,e,r,o,i,u,l,c,a){let f="Set {";const s=t.entries();let p=s.next();if(!p.done){f+=o;const t=e+n;for(;!p.done;)f+=t+W(p.value[1],n,t,r,o,i,u,l,c,a),p=s.next(),p.done||(f+=","+r);f+=o+e}return f+"}"}(t,n,e,r,o,i,u,l,c,a):"object"==typeof t?f?"[Object]":function(t,n,e,r,o,i,u,l,c,a){let f=(a?"":t.constructor?t.constructor.name+" ":"Object ")+"{",s=Object.keys(t).sort();const p=D(t);if(p.length&&(s=s.filter(t=>!("symbol"==typeof t||"[object Symbol]"===A.call(t))).concat(p)),s.length){f+=o;const p=e+n;for(let e=0;e<s.length;e++){const _=s[e];f+=p+W(_,n,p,r,o,i,u,l,c,a)+": "+W(t[_],n,p,r,o,i,u,l,c,a),e<s.length-1&&(f+=","+r)}f+=o+e}return f+"}"}(t,n,e,r,o,i,u,l,c,a):void 0}function U(t,n,e,r,o,i,u,l,c,a){let f,s=!1;for(let n=0;n<c.length;n++)if(f=c[n],f.test(t)){s=!0;break}return!!s&&f.print(t,function(t){return W(t,n,e,r,o,i,u,l,c,a)},function(t){const r=e+n;return r+t.replace(C,"\n"+r)},{edgeSpacing:o,spacing:r})}function W(t,n,e,r,o,i,u,l,c,a){return I(t)||U(t,n,e,r,o,i,u,l,c,a)||T(t,n,e,r,o,i,u,l,c,a)}const L={indent:2,min:!1,maxDepth:Infinity,plugins:[]};function R(t){return new Array(t+1).join(" ")}var J={test:function(t){return t&&"object"==typeof t&&"type"in t&&"props"in t&&"key"in t},print:function(t,n,e){return S(t,J.context,J.opts)}},V={plugins:[J]},q={attributeHook:function(t,n,e,r,o){var u=typeof n;if("dangerouslySetInnerHTML"===t)return!1;if(null==n||"function"===u&&!r.functions)return"";if(r.skipFalseAttributes&&!o&&(!1===n||("class"===t||"style"===t)&&""===n))return"";var c="string"==typeof r.pretty?r.pretty:"\t";return"string"!==u?("function"!==u||r.functionNames?(J.context=e,J.opts=r,~(n=function(t,n){let e,r;n?(function(t){if(Object.keys(t).forEach(t=>{if(!L.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")}(n),n=function(t){const n={};return Object.keys(L).forEach(e=>n[e]=t.hasOwnProperty(e)?t[e]:L[e]),n.min&&(n.indent=0),n}(n)):n=L;const o=n.min?" ":"\n",i=n.min?"":"\n";if(n&&n.plugins.length){e=R(n.indent),r=[];var u=U(t,e,"",o,i,r,n.maxDepth,0,n.plugins,n.min);if(u)return u}return I(t)||(e||(e=R(n.indent)),r||(r=[]),T(t,e,"",o,i,r,n.maxDepth,0,n.plugins,n.min))}(n,V)).indexOf("\n")&&(n=l("\n"+n,c)+"\n")):n="Function",l("\n"+t+"={"+n+"}",c)):"\n"+c+t+'="'+i(n)+'"'},jsx:!0,xml:!1,functions:!0,functionNames:!0,skipFalseAttributes:!0,pretty:" "};function z(t,n,e,r){return S(t,n,e=s(s({},q),e||{}))}export default z;export{z as render};
|
|
1
|
+
import{options as t,Fragment as n}from"preact";if("function"!=typeof Symbol){var e=0;Symbol=function(t){return"@@"+t+ ++e},Symbol.for=function(t){return"@@"+t}}var r=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|^--/i,o=/[&<>"]/;function i(t){var n=String(t);return o.test(n)?n.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,"""):n}var a=function(t,n){return String(t).replace(/(\n+)/g,"$1"+(n||"\t"))},c=function(t,n,e){return String(t).length>(n||40)||!e&&-1!==String(t).indexOf("\n")||-1!==String(t).indexOf("<")},u={};function l(t){var n="";for(var e in t){var o=t[e];null!=o&&""!==o&&(n&&(n+=" "),n+="-"==e[0]?e:u[e]||(u[e]=e.replace(/([A-Z])/g,"-$1").toLowerCase()),n+=": ",n+=o,"number"==typeof o&&!1===r.test(e)&&(n+="px"),n+=";")}return n||void 0}function f(t,n){for(var e in n)t[e]=n[e];return t}function s(t,n){return Array.isArray(n)?n.reduce(s,t):null!=n&&!1!==n&&t.push(n),t}var p={shallow:!0},y=[],g=/^(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/,b=/[\s\n\\/='"\0<>]/,m=function(){};v.render=v;var d=[];function v(n,e,r){e=e||{},r=r||{};var o=t.__s;t.__s=!0;var i=_(n,e,r);return t.__c&&t.__c(n,d),d.length=0,t.__s=o,i}function _(e,r,o,u,p,d){if(null==e||"boolean"==typeof e)return"";if("object"!=typeof e)return i(e);var v=o.pretty,h=v&&"string"==typeof v?v:"\t";if(Array.isArray(e)){for(var x="",j=0;j<e.length;j++)v&&j>0&&(x+="\n"),x+=_(e[j],r,o,u,p,d);return x}var S,A=e.type,O=e.props,w=!1;if("function"==typeof A){if(w=!0,!o.shallow||!u&&!1!==o.renderRootComponent){if(A===n){var k=[];return s(k,e.props.children),_(k,r,o,!1!==o.shallowHighOrder,p,d)}var F,E=e.__c={__v:e,context:r,props:e.props,setState:m,forceUpdate:m,__h:[]};if(t.__b&&t.__b(e),t.__r&&t.__r(e),A.prototype&&"function"==typeof A.prototype.render){var C=A.contextType,M=C&&r[C.__c],N=null!=C?M?M.props.value:C.__:r;(E=e.__c=new A(O,N)).__v=e,E._dirty=E.__d=!0,E.props=O,null==E.state&&(E.state={}),null==E._nextState&&null==E.__s&&(E._nextState=E.__s=E.state),E.context=N,A.getDerivedStateFromProps?E.state=f(f({},E.state),A.getDerivedStateFromProps(E.props,E.state)):E.componentWillMount&&(E.componentWillMount(),E.state=E._nextState!==E.state?E._nextState:E.__s!==E.state?E.__s:E.state),F=E.render(E.props,E.state,E.context)}else{var D=A.contextType,H=D&&r[D.__c];F=A.call(e.__c,O,null!=D?H?H.props.value:D.__:r)}return E.getChildContext&&(r=f(f({},r),E.getChildContext())),t.diffed&&t.diffed(e),_(F,r,o,!1!==o.shallowHighOrder,p,d)}A=(S=A).displayName||S!==Function&&S.name||function(t){var n=(Function.prototype.toString.call(t).match(/^\s*function\s+([^( ]+)/)||"")[1];if(!n){for(var e=-1,r=y.length;r--;)if(y[r]===t){e=r;break}e<0&&(e=y.push(t)-1),n="UnnamedComponent"+e}return n}(S)}var I,$,U="<"+A;if(O){var W=Object.keys(O);o&&!0===o.sortAttributes&&W.sort();for(var L=0;L<W.length;L++){var P=W[L],T=O[P];if("children"!==P){if(!b.test(P)&&(o&&o.allAttributes||"key"!==P&&"ref"!==P&&"__self"!==P&&"__source"!==P)){if("defaultValue"===P)P="value";else if("className"===P){if(void 0!==O.class)continue;P="class"}else p&&P.match(/^xlink:?./)&&(P=P.toLowerCase().replace(/^xlink:?/,"xlink:"));if("htmlFor"===P){if(O.for)continue;P="for"}"style"===P&&T&&"object"==typeof T&&(T=l(T)),"a"===P[0]&&"r"===P[1]&&"boolean"==typeof T&&(T=String(T));var R=o.attributeHook&&o.attributeHook(P,T,r,o,w);if(R||""===R)U+=R;else if("dangerouslySetInnerHTML"===P)$=T&&T.__html;else if("textarea"===A&&"value"===P)I=T;else if((T||0===T||""===T)&&"function"!=typeof T){if(!(!0!==T&&""!==T||(T=P,o&&o.xml))){U+=" "+P;continue}if("value"===P){if("select"===A){d=T;continue}"option"===A&&d==T&&(U+=" selected")}U+=" "+P+'="'+i(T)+'"'}}}else I=T}}if(v){var J=U.replace(/\n\s*/," ");J===U||~J.indexOf("\n")?v&&~U.indexOf("\n")&&(U+="\n"):U=J}if(U+=">",b.test(A))throw new Error(A+" is not a valid HTML tag name in "+U);var V,q=g.test(A)||o.voidElements&&o.voidElements.test(A),z=[];if($)v&&c($)&&($="\n"+h+a($,h)),U+=$;else if(null!=I&&s(V=[],I).length){for(var B=v&&~U.indexOf("\n"),G=!1,Z=0;Z<V.length;Z++){var K=V[Z];if(null!=K&&!1!==K){var Q=_(K,r,o,!0,"svg"===A||"foreignObject"!==A&&p,d);if(v&&!B&&c(Q)&&(B=!0),Q)if(v){var X=Q.length>0&&"<"!=Q[0];G&&X?z[z.length-1]+=Q:z.push(Q),G=X}else z.push(Q)}}if(v&&B)for(var Y=z.length;Y--;)z[Y]="\n"+h+a(z[Y],h)}if(z.length||$)U+=z.join("");else if(o&&o.xml)return U.substring(0,U.length-1)+" />";return!q||V||$?(v&&~U.indexOf("\n")&&(U+="\n"),U+="</"+A+">"):U=U.replace(/>$/," />"),U}v.shallowRender=function(t,n){return v(t,n,p)};const h=/(\\|\"|\')/g,x=Object.prototype.toString,j=Date.prototype.toISOString,S=Error.prototype.toString,A=RegExp.prototype.toString,O=Symbol.prototype.toString,w=/^Symbol\((.*)\)(.*)$/,k=/\n/gi,F=Object.getOwnPropertySymbols||(t=>[]);function E(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 C(t){return""===t.name?"[Function anonymous]":"[Function "+t.name+"]"}function M(t){return O.call(t).replace(w,"Symbol($1)")}function N(t){return"["+S.call(t)+"]"}function D(t){if(!0===t||!1===t)return""+t;if(void 0===t)return"undefined";if(null===t)return"null";const n=typeof t;if("number"===n)return function(t){return t!=+t?"NaN":0===t&&1/t<0?"-0":""+t}(t);if("string"===n)return'"'+function(t){return t.replace(h,"\\$1")}(t)+'"';if("function"===n)return C(t);if("symbol"===n)return M(t);const e=x.call(t);return"[object WeakMap]"===e?"WeakMap {}":"[object WeakSet]"===e?"WeakSet {}":"[object Function]"===e||"[object GeneratorFunction]"===e?C(t,min):"[object Symbol]"===e?M(t):"[object Date]"===e?j.call(t):"[object Error]"===e?N(t):"[object RegExp]"===e?A.call(t):"[object Arguments]"===e&&0===t.length?"Arguments []":E(e)&&0===t.length?t.constructor.name+" []":t instanceof Error&&N(t)}function H(t,n,e,r,o,i,a,c,u,l){let f="";if(t.length){f+=o;const s=e+n;for(let e=0;e<t.length;e++)f+=s+U(t[e],n,s,r,o,i,a,c,u,l),e<t.length-1&&(f+=","+r);f+=o+e}return"["+f+"]"}function I(t,n,e,r,o,i,a,c,u,l){if((i=i.slice()).indexOf(t)>-1)return"[Circular]";i.push(t);const f=++c>a;if(!f&&t.toJSON&&"function"==typeof t.toJSON)return U(t.toJSON(),n,e,r,o,i,a,c,u,l);const s=x.call(t);return"[object Arguments]"===s?f?"[Arguments]":function(t,n,e,r,o,i,a,c,u,l){return(l?"":"Arguments ")+H(t,n,e,r,o,i,a,c,u,l)}(t,n,e,r,o,i,a,c,u,l):E(s)?f?"[Array]":function(t,n,e,r,o,i,a,c,u,l){return(l?"":t.constructor.name+" ")+H(t,n,e,r,o,i,a,c,u,l)}(t,n,e,r,o,i,a,c,u,l):"[object Map]"===s?f?"[Map]":function(t,n,e,r,o,i,a,c,u,l){let f="Map {";const s=t.entries();let p=s.next();if(!p.done){f+=o;const t=e+n;for(;!p.done;)f+=t+U(p.value[0],n,t,r,o,i,a,c,u,l)+" => "+U(p.value[1],n,t,r,o,i,a,c,u,l),p=s.next(),p.done||(f+=","+r);f+=o+e}return f+"}"}(t,n,e,r,o,i,a,c,u,l):"[object Set]"===s?f?"[Set]":function(t,n,e,r,o,i,a,c,u,l){let f="Set {";const s=t.entries();let p=s.next();if(!p.done){f+=o;const t=e+n;for(;!p.done;)f+=t+U(p.value[1],n,t,r,o,i,a,c,u,l),p=s.next(),p.done||(f+=","+r);f+=o+e}return f+"}"}(t,n,e,r,o,i,a,c,u,l):"object"==typeof t?f?"[Object]":function(t,n,e,r,o,i,a,c,u,l){let f=(l?"":t.constructor?t.constructor.name+" ":"Object ")+"{",s=Object.keys(t).sort();const p=F(t);if(p.length&&(s=s.filter(t=>!("symbol"==typeof t||"[object Symbol]"===x.call(t))).concat(p)),s.length){f+=o;const p=e+n;for(let e=0;e<s.length;e++){const y=s[e];f+=p+U(y,n,p,r,o,i,a,c,u,l)+": "+U(t[y],n,p,r,o,i,a,c,u,l),e<s.length-1&&(f+=","+r)}f+=o+e}return f+"}"}(t,n,e,r,o,i,a,c,u,l):void 0}function $(t,n,e,r,o,i,a,c,u,l){let f,s=!1;for(let n=0;n<u.length;n++)if(f=u[n],f.test(t)){s=!0;break}return!!s&&f.print(t,function(t){return U(t,n,e,r,o,i,a,c,u,l)},function(t){const r=e+n;return r+t.replace(k,"\n"+r)},{edgeSpacing:o,spacing:r})}function U(t,n,e,r,o,i,a,c,u,l){return D(t)||$(t,n,e,r,o,i,a,c,u,l)||I(t,n,e,r,o,i,a,c,u,l)}const W={indent:2,min:!1,maxDepth:Infinity,plugins:[]};function L(t){return new Array(t+1).join(" ")}var P={test:function(t){return t&&"object"==typeof t&&"type"in t&&"props"in t&&"key"in t},print:function(t,n,e){return v(t,P.context,P.opts)}},T={plugins:[P]},R={attributeHook:function(t,n,e,r,o){var c=typeof n;if("dangerouslySetInnerHTML"===t)return!1;if(null==n||"function"===c&&!r.functions)return"";if(r.skipFalseAttributes&&!o&&(!1===n||("class"===t||"style"===t)&&""===n))return"";var u="string"==typeof r.pretty?r.pretty:"\t";return"string"!==c?("function"!==c||r.functionNames?(P.context=e,P.opts=r,~(n=function(t,n){let e,r;n?(function(t){if(Object.keys(t).forEach(t=>{if(!W.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")}(n),n=function(t){const n={};return Object.keys(W).forEach(e=>n[e]=t.hasOwnProperty(e)?t[e]:W[e]),n.min&&(n.indent=0),n}(n)):n=W;const o=n.min?" ":"\n",i=n.min?"":"\n";if(n&&n.plugins.length){e=L(n.indent),r=[];var a=$(t,e,"",o,i,r,n.maxDepth,0,n.plugins,n.min);if(a)return a}return D(t)||(e||(e=L(n.indent)),r||(r=[]),I(t,e,"",o,i,r,n.maxDepth,0,n.plugins,n.min))}(n,T)).indexOf("\n")&&(n=a("\n"+n,u)+"\n")):n="Function",a("\n"+t+"={"+n+"}",u)):"\n"+u+t+'="'+i(n)+'"'},jsx:!0,xml:!1,functions:!0,functionNames:!0,skipFalseAttributes:!0,pretty:" "};function J(t,n,e,r){return v(t,n,e=f(f({},R),e||{}))}export default J;export{J as render};
|
|
2
2
|
//# sourceMappingURL=jsx.module.js.map
|
package/dist/jsx.module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx.module.js","sources":["../src/polyfills.js","../src/util.js","../node_modules/preact/dist/preact.mjs","../src/index.js","../node_modules/pretty-format/printString.js","../node_modules/pretty-format/index.js","../src/jsx.js"],"sourcesContent":["if (typeof Symbol !== 'function') {\n\tlet c = 0;\n\t// eslint-disable-next-line\n\tSymbol = function (s) {\n\t\treturn `@@${s}${++c}`;\n\t};\n\tSymbol.for = (s) => `@@${s}`;\n}\n","// DOM properties that should NOT have \"px\" added when numeric\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|^--/i;\n\nconst HTML_ENTITY_REG = /[&<>\"]/g;\nconst tagsToReplace = {\n\t'&': '&',\n\t'<': '<',\n\t'>': '>',\n\t'\"': '"'\n};\nconst replaceTag = (tag) => tagsToReplace[tag] || tag;\nexport function encodeEntities(s) {\n\tif (typeof s !== 'string') s = String(s);\n\treturn s.replace(HTML_ENTITY_REG, replaceTag);\n}\n\nexport let indent = (s, char) =>\n\tString(s).replace(/(\\n+)/g, '$1' + (char || '\\t'));\n\nexport let isLargeString = (s, length, ignoreLines) =>\n\tString(s).length > (length || 40) ||\n\t(!ignoreLines && String(s).indexOf('\\n') !== -1) ||\n\tString(s).indexOf('<') !== -1;\n\nconst JS_TO_CSS = {};\n\n// Convert an Object style to a CSSText string\nexport function styleObjToCss(s) {\n\tlet str = '';\n\tfor (let prop in s) {\n\t\tlet val = s[prop];\n\t\tif (val != null && val !== '') {\n\t\t\tif (str) str += ' ';\n\t\t\t// str += jsToCss(prop);\n\t\t\tstr +=\n\t\t\t\tprop[0] == '-'\n\t\t\t\t\t? prop\n\t\t\t\t\t: JS_TO_CSS[prop] ||\n\t\t\t\t\t (JS_TO_CSS[prop] = prop.replace(/([A-Z])/g, '-$1').toLowerCase());\n\t\t\tstr += ': ';\n\t\t\tstr += val;\n\t\t\tif (typeof val === 'number' && IS_NON_DIMENSIONAL.test(prop) === false) {\n\t\t\t\tstr += 'px';\n\t\t\t}\n\t\t\tstr += ';';\n\t\t}\n\t}\n\treturn str || undefined;\n}\n\n/**\n * Copy all properties from `props` onto `obj`.\n * @param {object} obj Object onto which properties should be copied.\n * @param {object} props Object from which to copy properties.\n * @returns {object}\n * @private\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn obj;\n}\n\n/**\n * Get flattened children from the children prop\n * @param {Array} accumulator\n * @param {any} children A `props.children` opaque object.\n * @returns {Array} accumulator\n * @private\n */\nexport function getChildren(accumulator, children) {\n\tif (Array.isArray(children)) {\n\t\tchildren.reduce(getChildren, accumulator);\n\t} else if (children != null && children !== false) {\n\t\taccumulator.push(children);\n\t}\n\treturn accumulator;\n}\n","var n,l,u,i,t,o,r,f={},e=[],c=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function s(n,l){for(var u in l)n[u]=l[u];return n}function a(n){var l=n.parentNode;l&&l.removeChild(n)}function v(n,l,u){var i,t,o,r=arguments,f={};for(o in l)\"key\"==o?i=l[o]:\"ref\"==o?t=l[o]:f[o]=l[o];if(arguments.length>3)for(u=[u],o=3;o<arguments.length;o++)u.push(r[o]);if(null!=u&&(f.children=u),\"function\"==typeof n&&null!=n.defaultProps)for(o in n.defaultProps)void 0===f[o]&&(f[o]=n.defaultProps[o]);return h(n,f,i,t,null)}function h(l,u,i,t,o){var r={type:l,props:u,key:i,ref:t,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++n.__v:o};return null!=n.vnode&&n.vnode(r),r}function y(){return{current:null}}function p(n){return n.children}function d(n,l){this.props=n,this.context=l}function _(n,l){if(null==l)return n.__?_(n.__,n.__.__k.indexOf(n)+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?_(n):null}function w(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return w(n)}}function k(l){(!l.__d&&(l.__d=!0)&&u.push(l)&&!g.__r++||t!==n.debounceRendering)&&((t=n.debounceRendering)||i)(g)}function g(){for(var n;g.__r=u.length;)n=u.sort(function(n,l){return n.__v.__b-l.__v.__b}),u=[],n.some(function(n){var l,u,i,t,o,r,f;n.__d&&(r=(o=(l=n).__v).__e,(f=l.__P)&&(u=[],(i=s({},o)).__v=o.__v+1,t=$(f,o,i,l.__n,void 0!==f.ownerSVGElement,null!=o.__h?[r]:null,u,null==r?_(o):r,o.__h),j(u,o),t!=r&&w(o)))})}function m(n,l,u,i,t,o,r,c,s,v){var y,d,w,k,g,m,b,A=i&&i.__k||e,P=A.length;for(s==f&&(s=null!=r?r[0]:P?_(i,0):null),u.__k=[],y=0;y<l.length;y++)if(null!=(k=u.__k[y]=null==(k=l[y])||\"boolean\"==typeof k?null:\"string\"==typeof k||\"number\"==typeof k?h(null,k,null,null,k):Array.isArray(k)?h(p,{children:k},null,null,null):null!=k.__e||null!=k.__c?h(k.type,k.props,k.key,null,k.__v):k)){if(k.__=u,k.__b=u.__b+1,null===(w=A[y])||w&&k.key==w.key&&k.type===w.type)A[y]=void 0;else for(d=0;d<P;d++){if((w=A[d])&&k.key==w.key&&k.type===w.type){A[d]=void 0;break}w=null}g=$(n,k,w=w||f,t,o,r,c,s,v),(d=k.ref)&&w.ref!=d&&(b||(b=[]),w.ref&&b.push(w.ref,null,k),b.push(d,k.__c||g,k)),null!=g?(null==m&&(m=g),s=x(n,k,w,A,r,g,s),v||\"option\"!=u.type?\"function\"==typeof u.type&&(u.__d=s):n.value=\"\"):s&&w.__e==s&&s.parentNode!=n&&(s=_(w))}if(u.__e=m,null!=r&&\"function\"!=typeof u.type)for(y=r.length;y--;)null!=r[y]&&a(r[y]);for(y=P;y--;)null!=A[y]&&L(A[y],A[y]);if(b)for(y=0;y<b.length;y++)I(b[y],b[++y],b[++y])}function b(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(Array.isArray(n)?n.some(function(n){b(n,l)}):l.push(n)),l}function x(n,l,u,i,t,o,r){var f,e,c;if(void 0!==l.__d)f=l.__d,l.__d=void 0;else if(t==u||o!=r||null==o.parentNode)n:if(null==r||r.parentNode!==n)n.appendChild(o),f=null;else{for(e=r,c=0;(e=e.nextSibling)&&c<i.length;c+=2)if(e==o)break n;n.insertBefore(o,r),f=r}return void 0!==f?f:o.nextSibling}function A(n,l,u,i,t){var o;for(o in u)\"children\"===o||\"key\"===o||o in l||C(n,o,null,u[o],i);for(o in l)t&&\"function\"!=typeof l[o]||\"children\"===o||\"key\"===o||\"value\"===o||\"checked\"===o||u[o]===l[o]||C(n,o,l[o],u[o],i)}function P(n,l,u){\"-\"===l[0]?n.setProperty(l,u):n[l]=null==u?\"\":\"number\"!=typeof u||c.test(l)?u:u+\"px\"}function C(n,l,u,i,t){var o,r,f;if(t&&\"className\"==l&&(l=\"class\"),\"style\"===l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof i&&(n.style.cssText=i=\"\"),i)for(l in i)u&&l in u||P(n.style,l,\"\");if(u)for(l in u)i&&u[l]===i[l]||P(n.style,l,u[l])}else\"o\"===l[0]&&\"n\"===l[1]?(o=l!==(l=l.replace(/Capture$/,\"\")),(r=l.toLowerCase())in n&&(l=r),l=l.slice(2),n.l||(n.l={}),n.l[l+o]=u,f=o?N:z,u?i||n.addEventListener(l,f,o):n.removeEventListener(l,f,o)):\"list\"!==l&&\"tagName\"!==l&&\"form\"!==l&&\"type\"!==l&&\"size\"!==l&&\"download\"!==l&&\"href\"!==l&&!t&&l in n?n[l]=null==u?\"\":u:\"function\"!=typeof u&&\"dangerouslySetInnerHTML\"!==l&&(l!==(l=l.replace(/xlink:?/,\"\"))?null==u||!1===u?n.removeAttributeNS(\"http://www.w3.org/1999/xlink\",l.toLowerCase()):n.setAttributeNS(\"http://www.w3.org/1999/xlink\",l.toLowerCase(),u):null==u||!1===u&&!/^ar/.test(l)?n.removeAttribute(l):n.setAttribute(l,u))}function z(l){this.l[l.type+!1](n.event?n.event(l):l)}function N(l){this.l[l.type+!0](n.event?n.event(l):l)}function T(n,l,u){var i,t;for(i=0;i<n.__k.length;i++)(t=n.__k[i])&&(t.__=n,t.__e&&(\"function\"==typeof t.type&&t.__k.length>1&&T(t,l,u),l=x(u,t,t,n.__k,null,t.__e,l),\"function\"==typeof n.type&&(n.__d=l)))}function $(l,u,i,t,o,r,f,e,c){var a,v,h,y,_,w,k,g,b,x,A,P=u.type;if(void 0!==u.constructor)return null;null!=i.__h&&(c=i.__h,e=u.__e=i.__e,u.__h=null,r=[e]),(a=n.__b)&&a(u);try{n:if(\"function\"==typeof P){if(g=u.props,b=(a=P.contextType)&&t[a.__c],x=a?b?b.props.value:a.__:t,i.__c?k=(v=u.__c=i.__c).__=v.__E:(\"prototype\"in P&&P.prototype.render?u.__c=v=new P(g,x):(u.__c=v=new d(g,x),v.constructor=P,v.render=M),b&&b.sub(v),v.props=g,v.state||(v.state={}),v.context=x,v.__n=t,h=v.__d=!0,v.__h=[]),null==v.__s&&(v.__s=v.state),null!=P.getDerivedStateFromProps&&(v.__s==v.state&&(v.__s=s({},v.__s)),s(v.__s,P.getDerivedStateFromProps(g,v.__s))),y=v.props,_=v.state,h)null==P.getDerivedStateFromProps&&null!=v.componentWillMount&&v.componentWillMount(),null!=v.componentDidMount&&v.__h.push(v.componentDidMount);else{if(null==P.getDerivedStateFromProps&&g!==y&&null!=v.componentWillReceiveProps&&v.componentWillReceiveProps(g,x),!v.__e&&null!=v.shouldComponentUpdate&&!1===v.shouldComponentUpdate(g,v.__s,x)||u.__v===i.__v){v.props=g,v.state=v.__s,u.__v!==i.__v&&(v.__d=!1),v.__v=u,u.__e=i.__e,u.__k=i.__k,v.__h.length&&f.push(v),T(u,e,l);break n}null!=v.componentWillUpdate&&v.componentWillUpdate(g,v.__s,x),null!=v.componentDidUpdate&&v.__h.push(function(){v.componentDidUpdate(y,_,w)})}v.context=x,v.props=g,v.state=v.__s,(a=n.__r)&&a(u),v.__d=!1,v.__v=u,v.__P=l,a=v.render(v.props,v.state,v.context),v.state=v.__s,null!=v.getChildContext&&(t=s(s({},t),v.getChildContext())),h||null==v.getSnapshotBeforeUpdate||(w=v.getSnapshotBeforeUpdate(y,_)),A=null!=a&&a.type==p&&null==a.key?a.props.children:a,m(l,Array.isArray(A)?A:[A],u,i,t,o,r,f,e,c),v.base=u.__e,u.__h=null,v.__h.length&&f.push(v),k&&(v.__E=v.__=null),v.__e=!1}else null==r&&u.__v===i.__v?(u.__k=i.__k,u.__e=i.__e):u.__e=H(i.__e,u,i,t,o,r,f,c);(a=n.diffed)&&a(u)}catch(l){u.__v=null,(c||null!=r)&&(u.__e=e,u.__h=!!c,r[r.indexOf(e)]=null),n.__e(l,u,i)}return u.__e}function j(l,u){n.__c&&n.__c(u,l),l.some(function(u){try{l=u.__h,u.__h=[],l.some(function(n){n.call(u)})}catch(l){n.__e(l,u.__v)}})}function H(n,l,u,i,t,o,r,c){var s,a,v,h,y,p=u.props,d=l.props;if(t=\"svg\"===l.type||t,null!=o)for(s=0;s<o.length;s++)if(null!=(a=o[s])&&((null===l.type?3===a.nodeType:a.localName===l.type)||n==a)){n=a,o[s]=null;break}if(null==n){if(null===l.type)return document.createTextNode(d);n=t?document.createElementNS(\"http://www.w3.org/2000/svg\",l.type):document.createElement(l.type,d.is&&{is:d.is}),o=null,c=!1}if(null===l.type)p===d||c&&n.data===d||(n.data=d);else{if(null!=o&&(o=e.slice.call(n.childNodes)),v=(p=u.props||f).dangerouslySetInnerHTML,h=d.dangerouslySetInnerHTML,!c){if(null!=o)for(p={},y=0;y<n.attributes.length;y++)p[n.attributes[y].name]=n.attributes[y].value;(h||v)&&(h&&(v&&h.__html==v.__html||h.__html===n.innerHTML)||(n.innerHTML=h&&h.__html||\"\"))}A(n,d,p,t,c),h?l.__k=[]:(s=l.props.children,m(n,Array.isArray(s)?s:[s],l,u,i,\"foreignObject\"!==l.type&&t,o,r,f,c)),c||(\"value\"in d&&void 0!==(s=d.value)&&(s!==n.value||\"progress\"===l.type&&!s)&&C(n,\"value\",s,p.value,!1),\"checked\"in d&&void 0!==(s=d.checked)&&s!==n.checked&&C(n,\"checked\",s,p.checked,!1))}return n}function I(l,u,i){try{\"function\"==typeof l?l(u):l.current=u}catch(l){n.__e(l,i)}}function L(l,u,i){var t,o,r;if(n.unmount&&n.unmount(l),(t=l.ref)&&(t.current&&t.current!==l.__e||I(t,null,u)),i||\"function\"==typeof l.type||(i=null!=(o=l.__e)),l.__e=l.__d=void 0,null!=(t=l.__c)){if(t.componentWillUnmount)try{t.componentWillUnmount()}catch(l){n.__e(l,u)}t.base=t.__P=null}if(t=l.__k)for(r=0;r<t.length;r++)t[r]&&L(t[r],u,i);null!=o&&a(o)}function M(n,l,u){return this.constructor(n,u)}function O(l,u,i){var t,r,c;n.__&&n.__(l,u),r=(t=i===o)?null:i&&i.__k||u.__k,l=v(p,null,[l]),c=[],$(u,(t?u:i||u).__k=l,r||f,f,void 0!==u.ownerSVGElement,i&&!t?[i]:r?null:u.childNodes.length?e.slice.call(u.childNodes):null,c,i||f,t),j(c,l)}function S(n,l){O(n,l,o)}function q(n,l,u){var i,t,o,r=arguments,f=s({},n.props);for(o in l)\"key\"==o?i=l[o]:\"ref\"==o?t=l[o]:f[o]=l[o];if(arguments.length>3)for(u=[u],o=3;o<arguments.length;o++)u.push(r[o]);return null!=u&&(f.children=u),h(n.type,f,i||n.key,t||n.ref,null)}function B(n,l){var u={__c:l=\"__cC\"+r++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n,u,i){return this.getChildContext||(u=[],(i={})[l]=this,this.getChildContext=function(){return i},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(k)},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u.splice(u.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n={__e:function(n,l){for(var u,i,t,o=l.__h;l=l.__;)if((u=l.__c)&&!u.__)try{if((i=u.constructor)&&null!=i.getDerivedStateFromError&&(u.setState(i.getDerivedStateFromError(n)),t=u.__d),null!=u.componentDidCatch&&(u.componentDidCatch(n),t=u.__d),t)return l.__h=o,u.__E=u}catch(l){n=l}throw n},__v:0},l=function(n){return null!=n&&void 0===n.constructor},d.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=s({},this.state),\"function\"==typeof n&&(n=n(s({},u),this.props)),n&&s(u,n),null!=n&&this.__v&&(l&&this.__h.push(l),k(this))},d.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),k(this))},d.prototype.render=p,u=[],i=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,g.__r=0,o=f,r=0;export{O as render,S as hydrate,v as createElement,v as h,p as Fragment,y as createRef,l as isValidElement,d as Component,q as cloneElement,B as createContext,b as toChildArray,L as __u,n as options};\n//# sourceMappingURL=preact.module.js.map\n","import {\n\tencodeEntities,\n\tindent,\n\tisLargeString,\n\tstyleObjToCss,\n\tassign,\n\tgetChildren\n} from './util';\nimport { options, Fragment, createElement } from 'preact';\n\nconst SHALLOW = { shallow: true };\n\n// components without names, kept as a hash for later comparison to return consistent UnnamedComponentXX names.\nconst UNNAMED = [];\n\nconst VOID_ELEMENTS = /^(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/;\n\nconst UNSAFE_NAME = /[\\s\\n\\\\/='\"\\0<>]/;\n\nconst noop = () => {};\n\n/** Render Preact JSX + Components to an HTML string.\n *\t@name render\n *\t@function\n *\t@param {VNode} vnode\tJSX VNode to render.\n *\t@param {Object} [context={}]\tOptionally pass an initial context object through the render path.\n *\t@param {Object} [options={}]\tRendering options\n *\t@param {Boolean} [options.shallow=false]\tIf `true`, renders nested Components as HTML elements (`<Foo a=\"b\" />`).\n *\t@param {Boolean} [options.xml=false]\t\tIf `true`, uses self-closing tags for elements without children.\n *\t@param {Boolean} [options.pretty=false]\t\tIf `true`, adds whitespace for readability\n *\t@param {RegEx|undefined} [options.voidElements] RegeEx that matches elements that are considered void (self-closing)\n */\nrenderToString.render = renderToString;\n\n/** Only render elements, leaving Components inline as `<ComponentName ... />`.\n *\tThis method is just a convenience alias for `render(vnode, context, { shallow:true })`\n *\t@name shallow\n *\t@function\n *\t@param {VNode} vnode\tJSX VNode to render.\n *\t@param {Object} [context={}]\tOptionally pass an initial context object through the render path.\n */\nlet shallowRender = (vnode, context) => renderToString(vnode, context, SHALLOW);\n\nconst EMPTY_ARR = [];\nfunction renderToString(vnode, context, opts) {\n\tconst res = _renderToString(vnode, context, opts);\n\t// options._commit, we don't schedule any effects in this library right now,\n\t// so we can pass an empty queue to this hook.\n\tif (options.__c) options.__c(vnode, EMPTY_ARR);\n\treturn res;\n}\n\n/** The default export is an alias of `render()`. */\nfunction _renderToString(vnode, context, opts, inner, isSvgMode, selectValue) {\n\tif (vnode == null || typeof vnode === 'boolean') {\n\t\treturn '';\n\t}\n\n\t// wrap array nodes in Fragment\n\tif (Array.isArray(vnode)) {\n\t\tvnode = createElement(Fragment, null, vnode);\n\t}\n\n\tlet nodeName = vnode.type,\n\t\tprops = vnode.props,\n\t\tisComponent = false;\n\tcontext = context || {};\n\topts = opts || {};\n\n\tlet pretty = opts.pretty,\n\t\tindentChar = pretty && typeof pretty === 'string' ? pretty : '\\t';\n\n\t// #text nodes\n\tif (typeof vnode !== 'object' && !nodeName) {\n\t\treturn encodeEntities(vnode);\n\t}\n\n\t// components\n\tif (typeof nodeName === 'function') {\n\t\tisComponent = true;\n\t\tif (opts.shallow && (inner || opts.renderRootComponent === false)) {\n\t\t\tnodeName = getComponentName(nodeName);\n\t\t} else if (nodeName === Fragment) {\n\t\t\tlet rendered = '';\n\t\t\tlet children = [];\n\t\t\tgetChildren(children, vnode.props.children);\n\n\t\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\t\trendered +=\n\t\t\t\t\t(i > 0 && pretty ? '\\n' : '') +\n\t\t\t\t\t_renderToString(\n\t\t\t\t\t\tchildren[i],\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\topts,\n\t\t\t\t\t\topts.shallowHighOrder !== false,\n\t\t\t\t\t\tisSvgMode,\n\t\t\t\t\t\tselectValue\n\t\t\t\t\t);\n\t\t\t}\n\t\t\treturn rendered;\n\t\t} else {\n\t\t\tlet rendered;\n\n\t\t\tlet c = (vnode.__c = {\n\t\t\t\t__v: vnode,\n\t\t\t\tcontext,\n\t\t\t\tprops: vnode.props,\n\t\t\t\t// silently drop state updates\n\t\t\t\tsetState: noop,\n\t\t\t\tforceUpdate: noop,\n\t\t\t\t// hooks\n\t\t\t\t__h: []\n\t\t\t});\n\n\t\t\t// options._diff\n\t\t\tif (options.__b) options.__b(vnode);\n\n\t\t\t// options._render\n\t\t\tif (options.__r) options.__r(vnode);\n\n\t\t\tif (\n\t\t\t\t!nodeName.prototype ||\n\t\t\t\ttypeof nodeName.prototype.render !== 'function'\n\t\t\t) {\n\t\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t\t// the context value as `this.context` just for this component.\n\t\t\t\tlet cxType = nodeName.contextType;\n\t\t\t\tlet provider = cxType && context[cxType.__c];\n\t\t\t\tlet cctx =\n\t\t\t\t\tcxType != null\n\t\t\t\t\t\t? provider\n\t\t\t\t\t\t\t? provider.props.value\n\t\t\t\t\t\t\t: cxType.__\n\t\t\t\t\t\t: context;\n\n\t\t\t\t// stateless functional components\n\t\t\t\trendered = nodeName.call(vnode.__c, props, cctx);\n\t\t\t} else {\n\t\t\t\t// class-based components\n\t\t\t\tlet cxType = nodeName.contextType;\n\t\t\t\tlet provider = cxType && context[cxType.__c];\n\t\t\t\tlet cctx =\n\t\t\t\t\tcxType != null\n\t\t\t\t\t\t? provider\n\t\t\t\t\t\t\t? provider.props.value\n\t\t\t\t\t\t\t: cxType.__\n\t\t\t\t\t\t: context;\n\n\t\t\t\t// c = new nodeName(props, context);\n\t\t\t\tc = vnode.__c = new nodeName(props, cctx);\n\t\t\t\tc.__v = vnode;\n\t\t\t\t// turn off stateful re-rendering:\n\t\t\t\tc._dirty = c.__d = true;\n\t\t\t\tc.props = props;\n\t\t\t\tif (c.state == null) c.state = {};\n\n\t\t\t\tif (c._nextState == null && c.__s == null) {\n\t\t\t\t\tc._nextState = c.__s = c.state;\n\t\t\t\t}\n\n\t\t\t\tc.context = cctx;\n\t\t\t\tif (nodeName.getDerivedStateFromProps)\n\t\t\t\t\tc.state = assign(\n\t\t\t\t\t\tassign({}, c.state),\n\t\t\t\t\t\tnodeName.getDerivedStateFromProps(c.props, c.state)\n\t\t\t\t\t);\n\t\t\t\telse if (c.componentWillMount) {\n\t\t\t\t\tc.componentWillMount();\n\n\t\t\t\t\t// If the user called setState in cWM we need to flush pending,\n\t\t\t\t\t// state updates. This is the same behaviour in React.\n\t\t\t\t\tc.state =\n\t\t\t\t\t\tc._nextState !== c.state\n\t\t\t\t\t\t\t? c._nextState\n\t\t\t\t\t\t\t: c.__s !== c.state\n\t\t\t\t\t\t\t? c.__s\n\t\t\t\t\t\t\t: c.state;\n\t\t\t\t}\n\n\t\t\t\trendered = c.render(c.props, c.state, c.context);\n\t\t\t}\n\n\t\t\tif (c.getChildContext) {\n\t\t\t\tcontext = assign(assign({}, context), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (options.diffed) options.diffed(vnode);\n\t\t\treturn _renderToString(\n\t\t\t\trendered,\n\t\t\t\tcontext,\n\t\t\t\topts,\n\t\t\t\topts.shallowHighOrder !== false,\n\t\t\t\tisSvgMode,\n\t\t\t\tselectValue\n\t\t\t);\n\t\t}\n\t}\n\n\t// render JSX to HTML\n\tlet s = '',\n\t\tpropChildren,\n\t\thtml;\n\n\tif (props) {\n\t\tlet attrs = Object.keys(props);\n\n\t\t// allow sorting lexicographically for more determinism (useful for tests, such as via preact-jsx-chai)\n\t\tif (opts && opts.sortAttributes === true) attrs.sort();\n\n\t\tfor (let i = 0; i < attrs.length; i++) {\n\t\t\tlet name = attrs[i],\n\t\t\t\tv = props[name];\n\t\t\tif (name === 'children') {\n\t\t\t\tpropChildren = v;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (name.match(/[\\s\\n\\\\/='\"\\0<>]/)) continue;\n\n\t\t\tif (\n\t\t\t\t!(opts && opts.allAttributes) &&\n\t\t\t\t(name === 'key' ||\n\t\t\t\t\tname === 'ref' ||\n\t\t\t\t\tname === '__self' ||\n\t\t\t\t\tname === '__source' ||\n\t\t\t\t\tname === 'defaultValue')\n\t\t\t)\n\t\t\t\tcontinue;\n\n\t\t\tif (name === 'className') {\n\t\t\t\tif (props.class) continue;\n\t\t\t\tname = 'class';\n\t\t\t} else if (isSvgMode && name.match(/^xlink:?./)) {\n\t\t\t\tname = name.toLowerCase().replace(/^xlink:?/, 'xlink:');\n\t\t\t}\n\n\t\t\tif (name === 'htmlFor') {\n\t\t\t\tif (props.for) continue;\n\t\t\t\tname = 'for';\n\t\t\t}\n\n\t\t\tif (name === 'style' && v && typeof v === 'object') {\n\t\t\t\tv = styleObjToCss(v);\n\t\t\t}\n\n\t\t\t// always use string values instead of booleans for aria attributes\n\t\t\t// also see https://github.com/preactjs/preact/pull/2347/files\n\t\t\tif (name[0] === 'a' && name['1'] === 'r' && typeof v === 'boolean') {\n\t\t\t\tv = String(v);\n\t\t\t}\n\n\t\t\tlet hooked =\n\t\t\t\topts.attributeHook &&\n\t\t\t\topts.attributeHook(name, v, context, opts, isComponent);\n\t\t\tif (hooked || hooked === '') {\n\t\t\t\ts += hooked;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (name === 'dangerouslySetInnerHTML') {\n\t\t\t\thtml = v && v.__html;\n\t\t\t} else if (nodeName === 'textarea' && name === 'value') {\n\t\t\t\t// <textarea value=\"a&b\"> --> <textarea>a&b</textarea>\n\t\t\t\tpropChildren = v;\n\t\t\t} else if ((v || v === 0 || v === '') && typeof v !== 'function') {\n\t\t\t\tif (v === true || v === '') {\n\t\t\t\t\tv = name;\n\t\t\t\t\t// in non-xml mode, allow boolean attributes\n\t\t\t\t\tif (!opts || !opts.xml) {\n\t\t\t\t\t\ts += ' ' + name;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (name === 'value') {\n\t\t\t\t\tif (nodeName === 'select') {\n\t\t\t\t\t\tselectValue = v;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else if (nodeName === 'option' && selectValue == v) {\n\t\t\t\t\t\ts += ` selected`;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ts += ` ${name}=\"${encodeEntities(v)}\"`;\n\t\t\t}\n\t\t}\n\t}\n\n\t// account for >1 multiline attribute\n\tif (pretty) {\n\t\tlet sub = s.replace(/^\\n\\s*/, ' ');\n\t\tif (sub !== s && !~sub.indexOf('\\n')) s = sub;\n\t\telse if (pretty && ~s.indexOf('\\n')) s += '\\n';\n\t}\n\n\ts = `<${nodeName}${s}>`;\n\tif (UNSAFE_NAME.test(String(nodeName)))\n\t\tthrow new Error(`${nodeName} is not a valid HTML tag name in ${s}`);\n\n\tlet isVoid =\n\t\tVOID_ELEMENTS.test(String(nodeName)) ||\n\t\t(opts.voidElements && opts.voidElements.test(String(nodeName)));\n\tlet pieces = [];\n\n\tlet children;\n\tif (html) {\n\t\t// if multiline, indent.\n\t\tif (pretty && isLargeString(html)) {\n\t\t\thtml = '\\n' + indentChar + indent(html, indentChar);\n\t\t}\n\t\ts += html;\n\t} else if (\n\t\tpropChildren != null &&\n\t\tgetChildren((children = []), propChildren).length\n\t) {\n\t\tlet hasLarge = pretty && ~s.indexOf('\\n');\n\t\tlet lastWasText = false;\n\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\tlet child = children[i];\n\n\t\t\tif (child != null && child !== false) {\n\t\t\t\tlet childSvgMode =\n\t\t\t\t\t\tnodeName === 'svg'\n\t\t\t\t\t\t\t? true\n\t\t\t\t\t\t\t: nodeName === 'foreignObject'\n\t\t\t\t\t\t\t? false\n\t\t\t\t\t\t\t: isSvgMode,\n\t\t\t\t\tret = _renderToString(\n\t\t\t\t\t\tchild,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\topts,\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\tchildSvgMode,\n\t\t\t\t\t\tselectValue\n\t\t\t\t\t);\n\n\t\t\t\tif (pretty && !hasLarge && isLargeString(ret)) hasLarge = true;\n\n\t\t\t\t// Skip if we received an empty string\n\t\t\t\tif (ret) {\n\t\t\t\t\tif (pretty) {\n\t\t\t\t\t\tlet isText = ret.length > 0 && ret[0] != '<';\n\n\t\t\t\t\t\t// We merge adjacent text nodes, otherwise each piece would be printed\n\t\t\t\t\t\t// on a new line.\n\t\t\t\t\t\tif (lastWasText && isText) {\n\t\t\t\t\t\t\tpieces[pieces.length - 1] += ret;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpieces.push(ret);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlastWasText = isText;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpieces.push(ret);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (pretty && hasLarge) {\n\t\t\tfor (let i = pieces.length; i--; ) {\n\t\t\t\tpieces[i] = '\\n' + indentChar + indent(pieces[i], indentChar);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (pieces.length || html) {\n\t\ts += pieces.join('');\n\t} else if (opts && opts.xml) {\n\t\treturn s.substring(0, s.length - 1) + ' />';\n\t}\n\n\tif (isVoid && !children && !html) {\n\t\ts = s.replace(/>$/, ' />');\n\t} else {\n\t\tif (pretty && ~s.indexOf('\\n')) s += '\\n';\n\t\ts += `</${nodeName}>`;\n\t}\n\n\treturn s;\n}\n\nfunction getComponentName(component) {\n\treturn (\n\t\tcomponent.displayName ||\n\t\t(component !== Function && component.name) ||\n\t\tgetFallbackComponentName(component)\n\t);\n}\n\nfunction getFallbackComponentName(component) {\n\tlet str = Function.prototype.toString.call(component),\n\t\tname = (str.match(/^\\s*function\\s+([^( ]+)/) || '')[1];\n\tif (!name) {\n\t\t// search for an existing indexed name for the given component:\n\t\tlet index = -1;\n\t\tfor (let i = UNNAMED.length; i--; ) {\n\t\t\tif (UNNAMED[i] === component) {\n\t\t\t\tindex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t// not found, create a new indexed name:\n\t\tif (index < 0) {\n\t\t\tindex = UNNAMED.push(component) - 1;\n\t\t}\n\t\tname = `UnnamedComponent${index}`;\n\t}\n\treturn name;\n}\nrenderToString.shallowRender = shallowRender;\n\nexport default renderToString;\n\nexport {\n\trenderToString as render,\n\trenderToString as renderToStaticMarkup,\n\trenderToString,\n\tshallowRender\n};\n","'use strict';\n\nconst ESCAPED_CHARACTERS = /(\\\\|\\\"|\\')/g;\n\nmodule.exports = function printString(val) {\n return val.replace(ESCAPED_CHARACTERS, '\\\\$1');\n}\n","'use strict';\n\nconst printString = require('./printString');\n\nconst toString = Object.prototype.toString;\nconst toISOString = Date.prototype.toISOString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\nconst symbolToString = Symbol.prototype.toString;\n\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\nconst NEWLINE_REGEXP = /\\n/ig;\n\nconst getSymbols = Object.getOwnPropertySymbols || (obj => []);\n\nfunction isToStringedArrayType(toStringed) {\n return (\n toStringed === '[object Array]' ||\n toStringed === '[object ArrayBuffer]' ||\n toStringed === '[object DataView]' ||\n toStringed === '[object Float32Array]' ||\n toStringed === '[object Float64Array]' ||\n toStringed === '[object Int8Array]' ||\n toStringed === '[object Int16Array]' ||\n toStringed === '[object Int32Array]' ||\n toStringed === '[object Uint8Array]' ||\n toStringed === '[object Uint8ClampedArray]' ||\n toStringed === '[object Uint16Array]' ||\n toStringed === '[object Uint32Array]'\n );\n}\n\nfunction printNumber(val) {\n if (val != +val) return 'NaN';\n const isNegativeZero = val === 0 && (1 / val) < 0;\n return isNegativeZero ? '-0' : '' + val;\n}\n\nfunction printFunction(val) {\n if (val.name === '') {\n return '[Function anonymous]'\n } else {\n return '[Function ' + val.name + ']';\n }\n}\n\nfunction printSymbol(val) {\n return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n}\n\nfunction printError(val) {\n return '[' + errorToString.call(val) + ']';\n}\n\nfunction printBasicValue(val) {\n if (val === true || val === false) return '' + val;\n if (val === undefined) return 'undefined';\n if (val === null) return 'null';\n\n const typeOf = typeof val;\n\n if (typeOf === 'number') return printNumber(val);\n if (typeOf === 'string') return '\"' + printString(val) + '\"';\n if (typeOf === 'function') return printFunction(val);\n if (typeOf === 'symbol') return printSymbol(val);\n\n const toStringed = toString.call(val);\n\n if (toStringed === '[object WeakMap]') return 'WeakMap {}';\n if (toStringed === '[object WeakSet]') return 'WeakSet {}';\n if (toStringed === '[object Function]' || toStringed === '[object GeneratorFunction]') return printFunction(val, min);\n if (toStringed === '[object Symbol]') return printSymbol(val);\n if (toStringed === '[object Date]') return toISOString.call(val);\n if (toStringed === '[object Error]') return printError(val);\n if (toStringed === '[object RegExp]') return regExpToString.call(val);\n if (toStringed === '[object Arguments]' && val.length === 0) return 'Arguments []';\n if (isToStringedArrayType(toStringed) && val.length === 0) return val.constructor.name + ' []';\n\n if (val instanceof Error) return printError(val);\n\n return false;\n}\n\nfunction printList(list, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min) {\n let body = '';\n\n if (list.length) {\n body += edgeSpacing;\n\n const innerIndent = prevIndent + indent;\n\n for (let i = 0; i < list.length; i++) {\n body += innerIndent + print(list[i], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n\n if (i < list.length - 1) {\n body += ',' + spacing;\n }\n }\n\n body += edgeSpacing + prevIndent;\n }\n\n return '[' + body + ']';\n}\n\nfunction printArguments(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min) {\n return (min ? '' : 'Arguments ') + printList(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n}\n\nfunction printArray(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min) {\n return (min ? '' : val.constructor.name + ' ') + printList(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n}\n\nfunction printMap(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min) {\n let result = 'Map {';\n const iterator = val.entries();\n let current = iterator.next();\n\n if (!current.done) {\n result += edgeSpacing;\n\n const innerIndent = prevIndent + indent;\n\n while (!current.done) {\n const key = print(current.value[0], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n const value = print(current.value[1], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n\n result += innerIndent + key + ' => ' + value;\n\n current = iterator.next();\n\n if (!current.done) {\n result += ',' + spacing;\n }\n }\n\n result += edgeSpacing + prevIndent;\n }\n\n return result + '}';\n}\n\nfunction printObject(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min) {\n const constructor = min ? '' : (val.constructor ? val.constructor.name + ' ' : 'Object ');\n let result = constructor + '{';\n let keys = Object.keys(val).sort();\n const symbols = getSymbols(val);\n\n if (symbols.length) {\n keys = keys\n .filter(key => !(typeof key === 'symbol' || toString.call(key) === '[object Symbol]'))\n .concat(symbols);\n }\n\n if (keys.length) {\n result += edgeSpacing;\n\n const innerIndent = prevIndent + indent;\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const name = print(key, indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n const value = print(val[key], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n\n result += innerIndent + name + ': ' + value;\n\n if (i < keys.length - 1) {\n result += ',' + spacing;\n }\n }\n\n result += edgeSpacing + prevIndent;\n }\n\n return result + '}';\n}\n\nfunction printSet(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min) {\n let result = 'Set {';\n const iterator = val.entries();\n let current = iterator.next();\n\n if (!current.done) {\n result += edgeSpacing;\n\n const innerIndent = prevIndent + indent;\n\n while (!current.done) {\n result += innerIndent + print(current.value[1], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n\n current = iterator.next();\n\n if (!current.done) {\n result += ',' + spacing;\n }\n }\n\n result += edgeSpacing + prevIndent;\n }\n\n return result + '}';\n}\n\nfunction printComplexValue(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min) {\n refs = refs.slice();\n if (refs.indexOf(val) > -1) {\n return '[Circular]';\n } else {\n refs.push(val);\n }\n\n currentDepth++;\n\n const hitMaxDepth = currentDepth > maxDepth;\n\n if (!hitMaxDepth && val.toJSON && typeof val.toJSON === 'function') {\n return print(val.toJSON(), indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n }\n\n const toStringed = toString.call(val);\n if (toStringed === '[object Arguments]') {\n return hitMaxDepth ? '[Arguments]' : printArguments(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n } else if (isToStringedArrayType(toStringed)) {\n return hitMaxDepth ? '[Array]' : printArray(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n } else if (toStringed === '[object Map]') {\n return hitMaxDepth ? '[Map]' : printMap(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n } else if (toStringed === '[object Set]') {\n return hitMaxDepth ? '[Set]' : printSet(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n } else if (typeof val === 'object') {\n return hitMaxDepth ? '[Object]' : printObject(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n }\n}\n\nfunction printPlugin(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min) {\n let match = false;\n let plugin;\n\n for (let p = 0; p < plugins.length; p++) {\n plugin = plugins[p];\n\n if (plugin.test(val)) {\n match = true;\n break;\n }\n }\n\n if (!match) {\n return false;\n }\n\n function boundPrint(val) {\n return print(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n }\n\n function boundIndent(str) {\n const indentation = prevIndent + indent;\n return indentation + str.replace(NEWLINE_REGEXP, '\\n' + indentation);\n }\n\n return plugin.print(val, boundPrint, boundIndent, {\n edgeSpacing: edgeSpacing,\n spacing: spacing\n });\n}\n\nfunction print(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min) {\n const basic = printBasicValue(val);\n if (basic) return basic;\n\n const plugin = printPlugin(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n if (plugin) return plugin;\n\n return printComplexValue(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n}\n\nconst DEFAULTS = {\n indent: 2,\n min: false,\n maxDepth: Infinity,\n plugins: []\n};\n\nfunction validateOptions(opts) {\n Object.keys(opts).forEach(key => {\n if (!DEFAULTS.hasOwnProperty(key)) {\n throw new Error('prettyFormat: Invalid option: ' + key);\n }\n });\n\n if (opts.min && opts.indent !== undefined && opts.indent !== 0) {\n throw new Error('prettyFormat: Cannot run with min option and indent');\n }\n}\n\nfunction normalizeOptions(opts) {\n const result = {};\n\n Object.keys(DEFAULTS).forEach(key =>\n result[key] = opts.hasOwnProperty(key) ? opts[key] : DEFAULTS[key]\n );\n\n if (result.min) {\n result.indent = 0;\n }\n\n return result;\n}\n\nfunction createIndent(indent) {\n return new Array(indent + 1).join(' ');\n}\n\nfunction prettyFormat(val, opts) {\n if (!opts) {\n opts = DEFAULTS;\n } else {\n validateOptions(opts)\n opts = normalizeOptions(opts);\n }\n\n let indent;\n let refs;\n const prevIndent = '';\n const currentDepth = 0;\n const spacing = opts.min ? ' ' : '\\n';\n const edgeSpacing = opts.min ? '' : '\\n';\n\n if (opts && opts.plugins.length) {\n indent = createIndent(opts.indent);\n refs = [];\n var pluginsResult = printPlugin(val, indent, prevIndent, spacing, edgeSpacing, refs, opts.maxDepth, currentDepth, opts.plugins, opts.min);\n if (pluginsResult) return pluginsResult;\n }\n\n var basicResult = printBasicValue(val);\n if (basicResult) return basicResult;\n\n if (!indent) indent = createIndent(opts.indent);\n if (!refs) refs = [];\n return printComplexValue(val, indent, prevIndent, spacing, edgeSpacing, refs, opts.maxDepth, currentDepth, opts.plugins, opts.min);\n}\n\nmodule.exports = prettyFormat;\n","import './polyfills';\nimport renderToString from './index';\nimport { indent, encodeEntities, assign } from './util';\nimport prettyFormat from 'pretty-format';\n\n// we have to patch in Array support, Possible issue in npm.im/pretty-format\nlet preactPlugin = {\n\ttest(object) {\n\t\treturn (\n\t\t\tobject &&\n\t\t\ttypeof object === 'object' &&\n\t\t\t'type' in object &&\n\t\t\t'props' in object &&\n\t\t\t'key' in object\n\t\t);\n\t},\n\tprint(val, print, indent) {\n\t\treturn renderToString(val, preactPlugin.context, preactPlugin.opts, true);\n\t}\n};\n\nlet prettyFormatOpts = {\n\tplugins: [preactPlugin]\n};\n\nfunction attributeHook(name, value, context, opts, isComponent) {\n\tlet type = typeof value;\n\n\t// Use render-to-string's built-in handling for these properties\n\tif (name === 'dangerouslySetInnerHTML') return false;\n\n\t// always skip null & undefined values, skip false DOM attributes, skip functions if told to\n\tif (value == null || (type === 'function' && !opts.functions)) return '';\n\n\tif (\n\t\topts.skipFalseAttributes &&\n\t\t!isComponent &&\n\t\t(value === false ||\n\t\t\t((name === 'class' || name === 'style') && value === ''))\n\t)\n\t\treturn '';\n\n\tlet indentChar = typeof opts.pretty === 'string' ? opts.pretty : '\\t';\n\tif (type !== 'string') {\n\t\tif (type === 'function' && !opts.functionNames) {\n\t\t\tvalue = 'Function';\n\t\t} else {\n\t\t\tpreactPlugin.context = context;\n\t\t\tpreactPlugin.opts = opts;\n\t\t\tvalue = prettyFormat(value, prettyFormatOpts);\n\t\t\tif (~value.indexOf('\\n')) {\n\t\t\t\tvalue = `${indent('\\n' + value, indentChar)}\\n`;\n\t\t\t}\n\t\t}\n\t\treturn indent(`\\n${name}={${value}}`, indentChar);\n\t}\n\treturn `\\n${indentChar}${name}=\"${encodeEntities(value)}\"`;\n}\n\nlet defaultOpts = {\n\tattributeHook,\n\tjsx: true,\n\txml: false,\n\tfunctions: true,\n\tfunctionNames: true,\n\tskipFalseAttributes: true,\n\tpretty: ' '\n};\n\nfunction renderToJsxString(vnode, context, opts, inner) {\n\topts = assign(assign({}, defaultOpts), opts || {});\n\treturn renderToString(vnode, context, opts, inner);\n}\n\nexport default renderToJsxString;\nexport { renderToJsxString as render };\n"],"names":["Symbol","c","s","IS_NON_DIMENSIONAL","HTML_ENTITY_REG","tagsToReplace","&","<",">","\"","replaceTag","tag","encodeEntities","String","replace","n","indent","char","isLargeString","length","ignoreLines","indexOf","JS_TO_CSS","styleObjToCss","str","prop","val","toLowerCase","test","undefined","assign","obj","props","i","getChildren","accumulator","children","Array","isArray","reduce","push","h","l","u","t","o","r","type","key","ref","__k","__","__b","__e","__d","__c","__h","constructor","__v","vnode","p","getDerivedStateFromError","setState","componentDidCatch","__E","Promise","prototype","then","bind","resolve","setTimeout","SHALLOW","shallow","UNNAMED","VOID_ELEMENTS","UNSAFE_NAME","noop","renderToString","render","EMPTY_ARR","context","opts","res","_renderToString","options","inner","isSvgMode","selectValue","arguments","f","defaultProps","createElement","Fragment","nodeName","isComponent","component","pretty","indentChar","renderRootComponent","rendered","shallowHighOrder","forceUpdate","__r","cxType","contextType","provider","cctx","value","_dirty","state","_nextState","__s","getDerivedStateFromProps","componentWillMount","call","getChildContext","diffed","displayName","Function","name","toString","match","index","getFallbackComponentName","propChildren","html","attrs","Object","keys","sortAttributes","sort","v","allAttributes","hooked","attributeHook","__html","xml","sub","Error","isVoid","voidElements","pieces","hasLarge","lastWasText","child","ret","isText","join","substring","shallowRender","ESCAPED_CHARACTERS","toISOString","Date","errorToString","regExpToString","RegExp","symbolToString","SYMBOL_REGEXP","NEWLINE_REGEXP","getSymbols","getOwnPropertySymbols","isToStringedArrayType","toStringed","printFunction","printSymbol","printError","printBasicValue","typeOf","printNumber","printString","min","printList","list","prevIndent","spacing","edgeSpacing","refs","maxDepth","currentDepth","plugins","body","innerIndent","print","printComplexValue","slice","hitMaxDepth","toJSON","printArguments","printArray","result","iterator","entries","current","next","done","printMap","printSet","symbols","filter","concat","printObject","printPlugin","plugin","indentation","DEFAULTS","Infinity","createIndent","preactPlugin","object","prettyFormatOpts","defaultOpts","functions","skipFalseAttributes","functionNames","forEach","hasOwnProperty","validateOptions","normalizeOptions","pluginsResult","prettyFormat","jsx","renderToJsxString"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"jsx.module.js","sources":["../src/polyfills.js","../src/util.js","../src/index.js","../node_modules/pretty-format/printString.js","../node_modules/pretty-format/index.js","../src/jsx.js"],"sourcesContent":["if (typeof Symbol !== 'function') {\n\tlet c = 0;\n\t// eslint-disable-next-line\n\tSymbol = function (s) {\n\t\treturn `@@${s}${++c}`;\n\t};\n\tSymbol.for = (s) => `@@${s}`;\n}\n","// DOM properties that should NOT have \"px\" added when numeric\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|^--/i;\n\nconst ENCODED_ENTITIES = /[&<>\"]/;\n\nexport function encodeEntities(input) {\n\tconst s = String(input);\n\tif (!ENCODED_ENTITIES.test(s)) {\n\t\treturn s;\n\t}\n\treturn s\n\t\t.replace(/&/g, '&')\n\t\t.replace(/</g, '<')\n\t\t.replace(/>/g, '>')\n\t\t.replace(/\"/g, '"');\n}\n\nexport let indent = (s, char) =>\n\tString(s).replace(/(\\n+)/g, '$1' + (char || '\\t'));\n\nexport let isLargeString = (s, length, ignoreLines) =>\n\tString(s).length > (length || 40) ||\n\t(!ignoreLines && String(s).indexOf('\\n') !== -1) ||\n\tString(s).indexOf('<') !== -1;\n\nconst JS_TO_CSS = {};\n\n// Convert an Object style to a CSSText string\nexport function styleObjToCss(s) {\n\tlet str = '';\n\tfor (let prop in s) {\n\t\tlet val = s[prop];\n\t\tif (val != null && val !== '') {\n\t\t\tif (str) str += ' ';\n\t\t\t// str += jsToCss(prop);\n\t\t\tstr +=\n\t\t\t\tprop[0] == '-'\n\t\t\t\t\t? prop\n\t\t\t\t\t: JS_TO_CSS[prop] ||\n\t\t\t\t\t (JS_TO_CSS[prop] = prop.replace(/([A-Z])/g, '-$1').toLowerCase());\n\t\t\tstr += ': ';\n\t\t\tstr += val;\n\t\t\tif (typeof val === 'number' && IS_NON_DIMENSIONAL.test(prop) === false) {\n\t\t\t\tstr += 'px';\n\t\t\t}\n\t\t\tstr += ';';\n\t\t}\n\t}\n\treturn str || undefined;\n}\n\n/**\n * Copy all properties from `props` onto `obj`.\n * @param {object} obj Object onto which properties should be copied.\n * @param {object} props Object from which to copy properties.\n * @returns {object}\n * @private\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn obj;\n}\n\n/**\n * Get flattened children from the children prop\n * @param {Array} accumulator\n * @param {any} children A `props.children` opaque object.\n * @returns {Array} accumulator\n * @private\n */\nexport function getChildren(accumulator, children) {\n\tif (Array.isArray(children)) {\n\t\tchildren.reduce(getChildren, accumulator);\n\t} else if (children != null && children !== false) {\n\t\taccumulator.push(children);\n\t}\n\treturn accumulator;\n}\n","import {\n\tencodeEntities,\n\tindent,\n\tisLargeString,\n\tstyleObjToCss,\n\tassign,\n\tgetChildren\n} from './util';\nimport { options, Fragment } from 'preact';\n\n/** @typedef {import('preact').VNode} VNode */\n\nconst SHALLOW = { shallow: true };\n\n// components without names, kept as a hash for later comparison to return consistent UnnamedComponentXX names.\nconst UNNAMED = [];\n\nconst VOID_ELEMENTS =\n\t/^(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/;\n\nconst UNSAFE_NAME = /[\\s\\n\\\\/='\"\\0<>]/;\n\nconst noop = () => {};\n\n/** Render Preact JSX + Components to an HTML string.\n *\t@name render\n *\t@function\n *\t@param {VNode} vnode\tJSX VNode to render.\n *\t@param {Object} [context={}]\tOptionally pass an initial context object through the render path.\n *\t@param {Object} [options={}]\tRendering options\n *\t@param {Boolean} [options.shallow=false]\tIf `true`, renders nested Components as HTML elements (`<Foo a=\"b\" />`).\n *\t@param {Boolean} [options.xml=false]\t\tIf `true`, uses self-closing tags for elements without children.\n *\t@param {Boolean} [options.pretty=false]\t\tIf `true`, adds whitespace for readability\n *\t@param {RegExp|undefined} [options.voidElements] RegeEx that matches elements that are considered void (self-closing)\n */\nrenderToString.render = renderToString;\n\n/** Only render elements, leaving Components inline as `<ComponentName ... />`.\n *\tThis method is just a convenience alias for `render(vnode, context, { shallow:true })`\n *\t@name shallow\n *\t@function\n *\t@param {VNode} vnode\tJSX VNode to render.\n *\t@param {Object} [context={}]\tOptionally pass an initial context object through the render path.\n */\nlet shallowRender = (vnode, context) => renderToString(vnode, context, SHALLOW);\n\nconst EMPTY_ARR = [];\nfunction renderToString(vnode, context, opts) {\n\tcontext = context || {};\n\topts = opts || {};\n\n\t// Performance optimization: `renderToString` is synchronous and we\n\t// therefore don't execute any effects. To do that we pass an empty\n\t// array to `options._commit` (`__c`). But we can go one step further\n\t// and avoid a lot of dirty checks and allocations by setting\n\t// `options._skipEffects` (`__s`) too.\n\tconst previousSkipEffects = options.__s;\n\toptions.__s = true;\n\n\tconst res = _renderToString(vnode, context, opts);\n\n\t// options._commit, we don't schedule any effects in this library right now,\n\t// so we can pass an empty queue to this hook.\n\tif (options.__c) options.__c(vnode, EMPTY_ARR);\n\tEMPTY_ARR.length = 0;\n\toptions.__s = previousSkipEffects;\n\treturn res;\n}\n\n/** The default export is an alias of `render()`. */\nfunction _renderToString(vnode, context, opts, inner, isSvgMode, selectValue) {\n\tif (vnode == null || typeof vnode === 'boolean') {\n\t\treturn '';\n\t}\n\n\t// #text nodes\n\tif (typeof vnode !== 'object') {\n\t\treturn encodeEntities(vnode);\n\t}\n\n\tlet pretty = opts.pretty,\n\t\tindentChar = pretty && typeof pretty === 'string' ? pretty : '\\t';\n\n\tif (Array.isArray(vnode)) {\n\t\tlet rendered = '';\n\t\tfor (let i = 0; i < vnode.length; i++) {\n\t\t\tif (pretty && i > 0) rendered += '\\n';\n\t\t\trendered += _renderToString(\n\t\t\t\tvnode[i],\n\t\t\t\tcontext,\n\t\t\t\topts,\n\t\t\t\tinner,\n\t\t\t\tisSvgMode,\n\t\t\t\tselectValue\n\t\t\t);\n\t\t}\n\t\treturn rendered;\n\t}\n\n\tlet nodeName = vnode.type,\n\t\tprops = vnode.props,\n\t\tisComponent = false;\n\n\t// components\n\tif (typeof nodeName === 'function') {\n\t\tisComponent = true;\n\t\tif (opts.shallow && (inner || opts.renderRootComponent === false)) {\n\t\t\tnodeName = getComponentName(nodeName);\n\t\t} else if (nodeName === Fragment) {\n\t\t\tconst children = [];\n\t\t\tgetChildren(children, vnode.props.children);\n\t\t\treturn _renderToString(\n\t\t\t\tchildren,\n\t\t\t\tcontext,\n\t\t\t\topts,\n\t\t\t\topts.shallowHighOrder !== false,\n\t\t\t\tisSvgMode,\n\t\t\t\tselectValue\n\t\t\t);\n\t\t} else {\n\t\t\tlet rendered;\n\n\t\t\tlet c = (vnode.__c = {\n\t\t\t\t__v: vnode,\n\t\t\t\tcontext,\n\t\t\t\tprops: vnode.props,\n\t\t\t\t// silently drop state updates\n\t\t\t\tsetState: noop,\n\t\t\t\tforceUpdate: noop,\n\t\t\t\t// hooks\n\t\t\t\t__h: []\n\t\t\t});\n\n\t\t\t// options._diff\n\t\t\tif (options.__b) options.__b(vnode);\n\n\t\t\t// options._render\n\t\t\tif (options.__r) options.__r(vnode);\n\n\t\t\tif (\n\t\t\t\t!nodeName.prototype ||\n\t\t\t\ttypeof nodeName.prototype.render !== 'function'\n\t\t\t) {\n\t\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t\t// the context value as `this.context` just for this component.\n\t\t\t\tlet cxType = nodeName.contextType;\n\t\t\t\tlet provider = cxType && context[cxType.__c];\n\t\t\t\tlet cctx =\n\t\t\t\t\tcxType != null\n\t\t\t\t\t\t? provider\n\t\t\t\t\t\t\t? provider.props.value\n\t\t\t\t\t\t\t: cxType.__\n\t\t\t\t\t\t: context;\n\n\t\t\t\t// stateless functional components\n\t\t\t\trendered = nodeName.call(vnode.__c, props, cctx);\n\t\t\t} else {\n\t\t\t\t// class-based components\n\t\t\t\tlet cxType = nodeName.contextType;\n\t\t\t\tlet provider = cxType && context[cxType.__c];\n\t\t\t\tlet cctx =\n\t\t\t\t\tcxType != null\n\t\t\t\t\t\t? provider\n\t\t\t\t\t\t\t? provider.props.value\n\t\t\t\t\t\t\t: cxType.__\n\t\t\t\t\t\t: context;\n\n\t\t\t\t// c = new nodeName(props, context);\n\t\t\t\tc = vnode.__c = new nodeName(props, cctx);\n\t\t\t\tc.__v = vnode;\n\t\t\t\t// turn off stateful re-rendering:\n\t\t\t\tc._dirty = c.__d = true;\n\t\t\t\tc.props = props;\n\t\t\t\tif (c.state == null) c.state = {};\n\n\t\t\t\tif (c._nextState == null && c.__s == null) {\n\t\t\t\t\tc._nextState = c.__s = c.state;\n\t\t\t\t}\n\n\t\t\t\tc.context = cctx;\n\t\t\t\tif (nodeName.getDerivedStateFromProps)\n\t\t\t\t\tc.state = assign(\n\t\t\t\t\t\tassign({}, c.state),\n\t\t\t\t\t\tnodeName.getDerivedStateFromProps(c.props, c.state)\n\t\t\t\t\t);\n\t\t\t\telse if (c.componentWillMount) {\n\t\t\t\t\tc.componentWillMount();\n\n\t\t\t\t\t// If the user called setState in cWM we need to flush pending,\n\t\t\t\t\t// state updates. This is the same behaviour in React.\n\t\t\t\t\tc.state =\n\t\t\t\t\t\tc._nextState !== c.state\n\t\t\t\t\t\t\t? c._nextState\n\t\t\t\t\t\t\t: c.__s !== c.state\n\t\t\t\t\t\t\t? c.__s\n\t\t\t\t\t\t\t: c.state;\n\t\t\t\t}\n\n\t\t\t\trendered = c.render(c.props, c.state, c.context);\n\t\t\t}\n\n\t\t\tif (c.getChildContext) {\n\t\t\t\tcontext = assign(assign({}, context), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (options.diffed) options.diffed(vnode);\n\t\t\treturn _renderToString(\n\t\t\t\trendered,\n\t\t\t\tcontext,\n\t\t\t\topts,\n\t\t\t\topts.shallowHighOrder !== false,\n\t\t\t\tisSvgMode,\n\t\t\t\tselectValue\n\t\t\t);\n\t\t}\n\t}\n\n\t// render JSX to HTML\n\tlet s = '<' + nodeName,\n\t\tpropChildren,\n\t\thtml;\n\n\tif (props) {\n\t\tlet attrs = Object.keys(props);\n\n\t\t// allow sorting lexicographically for more determinism (useful for tests, such as via preact-jsx-chai)\n\t\tif (opts && opts.sortAttributes === true) attrs.sort();\n\n\t\tfor (let i = 0; i < attrs.length; i++) {\n\t\t\tlet name = attrs[i],\n\t\t\t\tv = props[name];\n\t\t\tif (name === 'children') {\n\t\t\t\tpropChildren = v;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (UNSAFE_NAME.test(name)) continue;\n\n\t\t\tif (\n\t\t\t\t!(opts && opts.allAttributes) &&\n\t\t\t\t(name === 'key' ||\n\t\t\t\t\tname === 'ref' ||\n\t\t\t\t\tname === '__self' ||\n\t\t\t\t\tname === '__source')\n\t\t\t)\n\t\t\t\tcontinue;\n\n\t\t\tif (name === 'defaultValue') {\n\t\t\t\tname = 'value';\n\t\t\t} else if (name === 'className') {\n\t\t\t\tif (typeof props.class !== 'undefined') continue;\n\t\t\t\tname = 'class';\n\t\t\t} else if (isSvgMode && name.match(/^xlink:?./)) {\n\t\t\t\tname = name.toLowerCase().replace(/^xlink:?/, 'xlink:');\n\t\t\t}\n\n\t\t\tif (name === 'htmlFor') {\n\t\t\t\tif (props.for) continue;\n\t\t\t\tname = 'for';\n\t\t\t}\n\n\t\t\tif (name === 'style' && v && typeof v === 'object') {\n\t\t\t\tv = styleObjToCss(v);\n\t\t\t}\n\n\t\t\t// always use string values instead of booleans for aria attributes\n\t\t\t// also see https://github.com/preactjs/preact/pull/2347/files\n\t\t\tif (name[0] === 'a' && name['1'] === 'r' && typeof v === 'boolean') {\n\t\t\t\tv = String(v);\n\t\t\t}\n\n\t\t\tlet hooked =\n\t\t\t\topts.attributeHook &&\n\t\t\t\topts.attributeHook(name, v, context, opts, isComponent);\n\t\t\tif (hooked || hooked === '') {\n\t\t\t\ts += hooked;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (name === 'dangerouslySetInnerHTML') {\n\t\t\t\thtml = v && v.__html;\n\t\t\t} else if (nodeName === 'textarea' && name === 'value') {\n\t\t\t\t// <textarea value=\"a&b\"> --> <textarea>a&b</textarea>\n\t\t\t\tpropChildren = v;\n\t\t\t} else if ((v || v === 0 || v === '') && typeof v !== 'function') {\n\t\t\t\tif (v === true || v === '') {\n\t\t\t\t\tv = name;\n\t\t\t\t\t// in non-xml mode, allow boolean attributes\n\t\t\t\t\tif (!opts || !opts.xml) {\n\t\t\t\t\t\ts += ' ' + name;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (name === 'value') {\n\t\t\t\t\tif (nodeName === 'select') {\n\t\t\t\t\t\tselectValue = v;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else if (nodeName === 'option' && selectValue == v) {\n\t\t\t\t\t\ts += ` selected`;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ts += ` ${name}=\"${encodeEntities(v)}\"`;\n\t\t\t}\n\t\t}\n\t}\n\n\t// account for >1 multiline attribute\n\tif (pretty) {\n\t\tlet sub = s.replace(/\\n\\s*/, ' ');\n\t\tif (sub !== s && !~sub.indexOf('\\n')) s = sub;\n\t\telse if (pretty && ~s.indexOf('\\n')) s += '\\n';\n\t}\n\n\ts += '>';\n\n\tif (UNSAFE_NAME.test(nodeName))\n\t\tthrow new Error(`${nodeName} is not a valid HTML tag name in ${s}`);\n\n\tlet isVoid =\n\t\tVOID_ELEMENTS.test(nodeName) ||\n\t\t(opts.voidElements && opts.voidElements.test(nodeName));\n\tlet pieces = [];\n\n\tlet children;\n\tif (html) {\n\t\t// if multiline, indent.\n\t\tif (pretty && isLargeString(html)) {\n\t\t\thtml = '\\n' + indentChar + indent(html, indentChar);\n\t\t}\n\t\ts += html;\n\t} else if (\n\t\tpropChildren != null &&\n\t\tgetChildren((children = []), propChildren).length\n\t) {\n\t\tlet hasLarge = pretty && ~s.indexOf('\\n');\n\t\tlet lastWasText = false;\n\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\tlet child = children[i];\n\n\t\t\tif (child != null && child !== false) {\n\t\t\t\tlet childSvgMode =\n\t\t\t\t\t\tnodeName === 'svg'\n\t\t\t\t\t\t\t? true\n\t\t\t\t\t\t\t: nodeName === 'foreignObject'\n\t\t\t\t\t\t\t? false\n\t\t\t\t\t\t\t: isSvgMode,\n\t\t\t\t\tret = _renderToString(\n\t\t\t\t\t\tchild,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\topts,\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\tchildSvgMode,\n\t\t\t\t\t\tselectValue\n\t\t\t\t\t);\n\n\t\t\t\tif (pretty && !hasLarge && isLargeString(ret)) hasLarge = true;\n\n\t\t\t\t// Skip if we received an empty string\n\t\t\t\tif (ret) {\n\t\t\t\t\tif (pretty) {\n\t\t\t\t\t\tlet isText = ret.length > 0 && ret[0] != '<';\n\n\t\t\t\t\t\t// We merge adjacent text nodes, otherwise each piece would be printed\n\t\t\t\t\t\t// on a new line.\n\t\t\t\t\t\tif (lastWasText && isText) {\n\t\t\t\t\t\t\tpieces[pieces.length - 1] += ret;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpieces.push(ret);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlastWasText = isText;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpieces.push(ret);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (pretty && hasLarge) {\n\t\t\tfor (let i = pieces.length; i--; ) {\n\t\t\t\tpieces[i] = '\\n' + indentChar + indent(pieces[i], indentChar);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (pieces.length || html) {\n\t\ts += pieces.join('');\n\t} else if (opts && opts.xml) {\n\t\treturn s.substring(0, s.length - 1) + ' />';\n\t}\n\n\tif (isVoid && !children && !html) {\n\t\ts = s.replace(/>$/, ' />');\n\t} else {\n\t\tif (pretty && ~s.indexOf('\\n')) s += '\\n';\n\t\ts += `</${nodeName}>`;\n\t}\n\n\treturn s;\n}\n\nfunction getComponentName(component) {\n\treturn (\n\t\tcomponent.displayName ||\n\t\t(component !== Function && component.name) ||\n\t\tgetFallbackComponentName(component)\n\t);\n}\n\nfunction getFallbackComponentName(component) {\n\tlet str = Function.prototype.toString.call(component),\n\t\tname = (str.match(/^\\s*function\\s+([^( ]+)/) || '')[1];\n\tif (!name) {\n\t\t// search for an existing indexed name for the given component:\n\t\tlet index = -1;\n\t\tfor (let i = UNNAMED.length; i--; ) {\n\t\t\tif (UNNAMED[i] === component) {\n\t\t\t\tindex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t// not found, create a new indexed name:\n\t\tif (index < 0) {\n\t\t\tindex = UNNAMED.push(component) - 1;\n\t\t}\n\t\tname = `UnnamedComponent${index}`;\n\t}\n\treturn name;\n}\nrenderToString.shallowRender = shallowRender;\n\nexport default renderToString;\n\nexport {\n\trenderToString as render,\n\trenderToString as renderToStaticMarkup,\n\trenderToString,\n\tshallowRender\n};\n","'use strict';\n\nconst ESCAPED_CHARACTERS = /(\\\\|\\\"|\\')/g;\n\nmodule.exports = function printString(val) {\n return val.replace(ESCAPED_CHARACTERS, '\\\\$1');\n}\n","'use strict';\n\nconst printString = require('./printString');\n\nconst toString = Object.prototype.toString;\nconst toISOString = Date.prototype.toISOString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\nconst symbolToString = Symbol.prototype.toString;\n\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\nconst NEWLINE_REGEXP = /\\n/ig;\n\nconst getSymbols = Object.getOwnPropertySymbols || (obj => []);\n\nfunction isToStringedArrayType(toStringed) {\n return (\n toStringed === '[object Array]' ||\n toStringed === '[object ArrayBuffer]' ||\n toStringed === '[object DataView]' ||\n toStringed === '[object Float32Array]' ||\n toStringed === '[object Float64Array]' ||\n toStringed === '[object Int8Array]' ||\n toStringed === '[object Int16Array]' ||\n toStringed === '[object Int32Array]' ||\n toStringed === '[object Uint8Array]' ||\n toStringed === '[object Uint8ClampedArray]' ||\n toStringed === '[object Uint16Array]' ||\n toStringed === '[object Uint32Array]'\n );\n}\n\nfunction printNumber(val) {\n if (val != +val) return 'NaN';\n const isNegativeZero = val === 0 && (1 / val) < 0;\n return isNegativeZero ? '-0' : '' + val;\n}\n\nfunction printFunction(val) {\n if (val.name === '') {\n return '[Function anonymous]'\n } else {\n return '[Function ' + val.name + ']';\n }\n}\n\nfunction printSymbol(val) {\n return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n}\n\nfunction printError(val) {\n return '[' + errorToString.call(val) + ']';\n}\n\nfunction printBasicValue(val) {\n if (val === true || val === false) return '' + val;\n if (val === undefined) return 'undefined';\n if (val === null) return 'null';\n\n const typeOf = typeof val;\n\n if (typeOf === 'number') return printNumber(val);\n if (typeOf === 'string') return '\"' + printString(val) + '\"';\n if (typeOf === 'function') return printFunction(val);\n if (typeOf === 'symbol') return printSymbol(val);\n\n const toStringed = toString.call(val);\n\n if (toStringed === '[object WeakMap]') return 'WeakMap {}';\n if (toStringed === '[object WeakSet]') return 'WeakSet {}';\n if (toStringed === '[object Function]' || toStringed === '[object GeneratorFunction]') return printFunction(val, min);\n if (toStringed === '[object Symbol]') return printSymbol(val);\n if (toStringed === '[object Date]') return toISOString.call(val);\n if (toStringed === '[object Error]') return printError(val);\n if (toStringed === '[object RegExp]') return regExpToString.call(val);\n if (toStringed === '[object Arguments]' && val.length === 0) return 'Arguments []';\n if (isToStringedArrayType(toStringed) && val.length === 0) return val.constructor.name + ' []';\n\n if (val instanceof Error) return printError(val);\n\n return false;\n}\n\nfunction printList(list, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min) {\n let body = '';\n\n if (list.length) {\n body += edgeSpacing;\n\n const innerIndent = prevIndent + indent;\n\n for (let i = 0; i < list.length; i++) {\n body += innerIndent + print(list[i], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n\n if (i < list.length - 1) {\n body += ',' + spacing;\n }\n }\n\n body += edgeSpacing + prevIndent;\n }\n\n return '[' + body + ']';\n}\n\nfunction printArguments(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min) {\n return (min ? '' : 'Arguments ') + printList(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n}\n\nfunction printArray(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min) {\n return (min ? '' : val.constructor.name + ' ') + printList(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n}\n\nfunction printMap(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min) {\n let result = 'Map {';\n const iterator = val.entries();\n let current = iterator.next();\n\n if (!current.done) {\n result += edgeSpacing;\n\n const innerIndent = prevIndent + indent;\n\n while (!current.done) {\n const key = print(current.value[0], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n const value = print(current.value[1], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n\n result += innerIndent + key + ' => ' + value;\n\n current = iterator.next();\n\n if (!current.done) {\n result += ',' + spacing;\n }\n }\n\n result += edgeSpacing + prevIndent;\n }\n\n return result + '}';\n}\n\nfunction printObject(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min) {\n const constructor = min ? '' : (val.constructor ? val.constructor.name + ' ' : 'Object ');\n let result = constructor + '{';\n let keys = Object.keys(val).sort();\n const symbols = getSymbols(val);\n\n if (symbols.length) {\n keys = keys\n .filter(key => !(typeof key === 'symbol' || toString.call(key) === '[object Symbol]'))\n .concat(symbols);\n }\n\n if (keys.length) {\n result += edgeSpacing;\n\n const innerIndent = prevIndent + indent;\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const name = print(key, indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n const value = print(val[key], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n\n result += innerIndent + name + ': ' + value;\n\n if (i < keys.length - 1) {\n result += ',' + spacing;\n }\n }\n\n result += edgeSpacing + prevIndent;\n }\n\n return result + '}';\n}\n\nfunction printSet(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min) {\n let result = 'Set {';\n const iterator = val.entries();\n let current = iterator.next();\n\n if (!current.done) {\n result += edgeSpacing;\n\n const innerIndent = prevIndent + indent;\n\n while (!current.done) {\n result += innerIndent + print(current.value[1], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n\n current = iterator.next();\n\n if (!current.done) {\n result += ',' + spacing;\n }\n }\n\n result += edgeSpacing + prevIndent;\n }\n\n return result + '}';\n}\n\nfunction printComplexValue(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min) {\n refs = refs.slice();\n if (refs.indexOf(val) > -1) {\n return '[Circular]';\n } else {\n refs.push(val);\n }\n\n currentDepth++;\n\n const hitMaxDepth = currentDepth > maxDepth;\n\n if (!hitMaxDepth && val.toJSON && typeof val.toJSON === 'function') {\n return print(val.toJSON(), indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n }\n\n const toStringed = toString.call(val);\n if (toStringed === '[object Arguments]') {\n return hitMaxDepth ? '[Arguments]' : printArguments(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n } else if (isToStringedArrayType(toStringed)) {\n return hitMaxDepth ? '[Array]' : printArray(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n } else if (toStringed === '[object Map]') {\n return hitMaxDepth ? '[Map]' : printMap(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n } else if (toStringed === '[object Set]') {\n return hitMaxDepth ? '[Set]' : printSet(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n } else if (typeof val === 'object') {\n return hitMaxDepth ? '[Object]' : printObject(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n }\n}\n\nfunction printPlugin(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min) {\n let match = false;\n let plugin;\n\n for (let p = 0; p < plugins.length; p++) {\n plugin = plugins[p];\n\n if (plugin.test(val)) {\n match = true;\n break;\n }\n }\n\n if (!match) {\n return false;\n }\n\n function boundPrint(val) {\n return print(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n }\n\n function boundIndent(str) {\n const indentation = prevIndent + indent;\n return indentation + str.replace(NEWLINE_REGEXP, '\\n' + indentation);\n }\n\n return plugin.print(val, boundPrint, boundIndent, {\n edgeSpacing: edgeSpacing,\n spacing: spacing\n });\n}\n\nfunction print(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min) {\n const basic = printBasicValue(val);\n if (basic) return basic;\n\n const plugin = printPlugin(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n if (plugin) return plugin;\n\n return printComplexValue(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n}\n\nconst DEFAULTS = {\n indent: 2,\n min: false,\n maxDepth: Infinity,\n plugins: []\n};\n\nfunction validateOptions(opts) {\n Object.keys(opts).forEach(key => {\n if (!DEFAULTS.hasOwnProperty(key)) {\n throw new Error('prettyFormat: Invalid option: ' + key);\n }\n });\n\n if (opts.min && opts.indent !== undefined && opts.indent !== 0) {\n throw new Error('prettyFormat: Cannot run with min option and indent');\n }\n}\n\nfunction normalizeOptions(opts) {\n const result = {};\n\n Object.keys(DEFAULTS).forEach(key =>\n result[key] = opts.hasOwnProperty(key) ? opts[key] : DEFAULTS[key]\n );\n\n if (result.min) {\n result.indent = 0;\n }\n\n return result;\n}\n\nfunction createIndent(indent) {\n return new Array(indent + 1).join(' ');\n}\n\nfunction prettyFormat(val, opts) {\n if (!opts) {\n opts = DEFAULTS;\n } else {\n validateOptions(opts)\n opts = normalizeOptions(opts);\n }\n\n let indent;\n let refs;\n const prevIndent = '';\n const currentDepth = 0;\n const spacing = opts.min ? ' ' : '\\n';\n const edgeSpacing = opts.min ? '' : '\\n';\n\n if (opts && opts.plugins.length) {\n indent = createIndent(opts.indent);\n refs = [];\n var pluginsResult = printPlugin(val, indent, prevIndent, spacing, edgeSpacing, refs, opts.maxDepth, currentDepth, opts.plugins, opts.min);\n if (pluginsResult) return pluginsResult;\n }\n\n var basicResult = printBasicValue(val);\n if (basicResult) return basicResult;\n\n if (!indent) indent = createIndent(opts.indent);\n if (!refs) refs = [];\n return printComplexValue(val, indent, prevIndent, spacing, edgeSpacing, refs, opts.maxDepth, currentDepth, opts.plugins, opts.min);\n}\n\nmodule.exports = prettyFormat;\n","import './polyfills';\nimport renderToString from './index';\nimport { indent, encodeEntities, assign } from './util';\nimport prettyFormat from 'pretty-format';\n\n// we have to patch in Array support, Possible issue in npm.im/pretty-format\nlet preactPlugin = {\n\ttest(object) {\n\t\treturn (\n\t\t\tobject &&\n\t\t\ttypeof object === 'object' &&\n\t\t\t'type' in object &&\n\t\t\t'props' in object &&\n\t\t\t'key' in object\n\t\t);\n\t},\n\tprint(val, print, indent) {\n\t\treturn renderToString(val, preactPlugin.context, preactPlugin.opts, true);\n\t}\n};\n\nlet prettyFormatOpts = {\n\tplugins: [preactPlugin]\n};\n\nfunction attributeHook(name, value, context, opts, isComponent) {\n\tlet type = typeof value;\n\n\t// Use render-to-string's built-in handling for these properties\n\tif (name === 'dangerouslySetInnerHTML') return false;\n\n\t// always skip null & undefined values, skip false DOM attributes, skip functions if told to\n\tif (value == null || (type === 'function' && !opts.functions)) return '';\n\n\tif (\n\t\topts.skipFalseAttributes &&\n\t\t!isComponent &&\n\t\t(value === false ||\n\t\t\t((name === 'class' || name === 'style') && value === ''))\n\t)\n\t\treturn '';\n\n\tlet indentChar = typeof opts.pretty === 'string' ? opts.pretty : '\\t';\n\tif (type !== 'string') {\n\t\tif (type === 'function' && !opts.functionNames) {\n\t\t\tvalue = 'Function';\n\t\t} else {\n\t\t\tpreactPlugin.context = context;\n\t\t\tpreactPlugin.opts = opts;\n\t\t\tvalue = prettyFormat(value, prettyFormatOpts);\n\t\t\tif (~value.indexOf('\\n')) {\n\t\t\t\tvalue = `${indent('\\n' + value, indentChar)}\\n`;\n\t\t\t}\n\t\t}\n\t\treturn indent(`\\n${name}={${value}}`, indentChar);\n\t}\n\treturn `\\n${indentChar}${name}=\"${encodeEntities(value)}\"`;\n}\n\nlet defaultOpts = {\n\tattributeHook,\n\tjsx: true,\n\txml: false,\n\tfunctions: true,\n\tfunctionNames: true,\n\tskipFalseAttributes: true,\n\tpretty: ' '\n};\n\nfunction renderToJsxString(vnode, context, opts, inner) {\n\topts = assign(assign({}, defaultOpts), opts || {});\n\treturn renderToString(vnode, context, opts, inner);\n}\n\nexport default renderToJsxString;\nexport { renderToJsxString as render };\n"],"names":["Symbol","c","s","IS_NON_DIMENSIONAL","ENCODED_ENTITIES","encodeEntities","input","String","test","replace","indent","char","isLargeString","length","ignoreLines","indexOf","JS_TO_CSS","styleObjToCss","str","prop","val","toLowerCase","undefined","assign","obj","props","i","getChildren","accumulator","children","Array","isArray","reduce","push","SHALLOW","shallow","UNNAMED","VOID_ELEMENTS","UNSAFE_NAME","noop","renderToString","render","EMPTY_ARR","vnode","context","opts","previousSkipEffects","options","__s","res","_renderToString","__c","inner","isSvgMode","selectValue","pretty","indentChar","rendered","component","nodeName","type","isComponent","renderRootComponent","Fragment","shallowHighOrder","__v","setState","forceUpdate","__h","__b","__r","prototype","cxType","contextType","provider","cctx","value","__","_dirty","__d","state","_nextState","getDerivedStateFromProps","componentWillMount","call","getChildContext","diffed","displayName","Function","name","toString","match","index","getFallbackComponentName","propChildren","html","attrs","Object","keys","sortAttributes","sort","v","allAttributes","hooked","attributeHook","__html","xml","sub","Error","isVoid","voidElements","pieces","hasLarge","lastWasText","child","ret","isText","join","substring","shallowRender","ESCAPED_CHARACTERS","toISOString","Date","errorToString","regExpToString","RegExp","symbolToString","SYMBOL_REGEXP","NEWLINE_REGEXP","getSymbols","getOwnPropertySymbols","isToStringedArrayType","toStringed","printFunction","printSymbol","printError","printBasicValue","typeOf","printNumber","printString","min","constructor","printList","list","prevIndent","spacing","edgeSpacing","refs","maxDepth","currentDepth","plugins","body","innerIndent","print","printComplexValue","slice","hitMaxDepth","toJSON","printArguments","printArray","result","iterator","entries","current","next","done","printMap","printSet","symbols","filter","key","concat","printObject","printPlugin","plugin","p","indentation","DEFAULTS","Infinity","createIndent","preactPlugin","object","prettyFormatOpts","defaultOpts","functions","skipFalseAttributes","functionNames","forEach","hasOwnProperty","validateOptions","normalizeOptions","pluginsResult","prettyFormat","jsx","renderToJsxString"],"mappings":"+CAAA,GAAsB,mBAAXA,OAAuB,CACjC,IAAIC,EAAI,EAERD,OAAS,SAAUE,GAClB,WAAYA,KAAMD,GAEnBD,WAAa,SAACE,cAAWA,OCLbC,EAAqB,kEAE5BC,EAAmB,kBAETC,EAAeC,GAC9B,IAAMJ,EAAIK,OAAOD,GACjB,OAAKF,EAAiBI,KAAKN,GAGpBA,EACLO,QAAQ,KAAM,SACdA,QAAQ,KAAM,QACdA,QAAQ,KAAM,QACdA,QAAQ,KAAM,UANRP,MASEQ,EAAS,SAACR,EAAGS,UACvBJ,OAAOL,GAAGO,QAAQ,SAAU,MAAQE,GAAQ,QAElCC,EAAgB,SAACV,EAAGW,EAAQC,UACtCP,OAAOL,GAAGW,QAAUA,GAAU,MAC5BC,IAA4C,IAA7BP,OAAOL,GAAGa,QAAQ,QACP,IAA5BR,OAAOL,GAAGa,QAAQ,MAEbC,EAAY,YAGFC,EAAcf,GAC7B,IAAIgB,EAAM,GACV,IAAK,IAAIC,KAAQjB,EAAG,CACnB,IAAIkB,EAAMlB,EAAEiB,GACD,MAAPC,GAAuB,KAARA,IACdF,IAAKA,GAAO,KAEhBA,GACY,KAAXC,EAAK,GACFA,EACAH,EAAUG,KACTH,EAAUG,GAAQA,EAAKV,QAAQ,WAAY,OAAOY,eACvDH,GAAO,KACPA,GAAOE,EACY,iBAARA,IAAsD,IAAlCjB,EAAmBK,KAAKW,KACtDD,GAAO,MAERA,GAAO,KAGT,OAAOA,QAAOI,WAUCC,EAAOC,EAAKC,GAC3B,IAAK,IAAIC,KAAKD,EAAOD,EAAIE,GAAKD,EAAMC,GACpC,OAAOF,WAUQG,EAAYC,EAAaC,GAMxC,OALIC,MAAMC,QAAQF,GACjBA,EAASG,OAAOL,EAAaC,GACP,MAAZC,IAAiC,IAAbA,GAC9BD,EAAYK,KAAKJ,GAEXD,EChER,IAAMM,EAAU,CAAEC,SAAS,GAGrBC,EAAU,GAEVC,EACL,2EAEKC,EAAc,mBAEdC,EAAO,aAabC,EAAeC,OAASD,EASxB,IAEME,EAAY,GAClB,SAASF,EAAeG,EAAOC,EAASC,GACvCD,EAAUA,GAAW,GACrBC,EAAOA,GAAQ,GAOf,IAAMC,EAAsBC,EAAQC,IACpCD,EAAQC,KAAM,EAEd,IAAMC,EAAMC,EAAgBP,EAAOC,EAASC,GAO5C,OAHIE,EAAQI,KAAKJ,EAAQI,IAAIR,EAAOD,GACpCA,EAAU7B,OAAS,EACnBkC,EAAQC,IAAMF,EACPG,EAIR,SAASC,EAAgBP,EAAOC,EAASC,EAAMO,EAAOC,EAAWC,GAChE,GAAa,MAATX,GAAkC,kBAAVA,EAC3B,MAAO,GAIR,GAAqB,iBAAVA,EACV,OAAOtC,EAAesC,GAGvB,IAAIY,EAASV,EAAKU,OACjBC,EAAaD,GAA4B,iBAAXA,EAAsBA,EAAS,KAE9D,GAAIzB,MAAMC,QAAQY,GAAQ,CAEzB,IADA,IAAIc,EAAW,GACN/B,EAAI,EAAGA,EAAIiB,EAAM9B,OAAQa,IAC7B6B,GAAU7B,EAAI,IAAG+B,GAAY,MACjCA,GAAYP,EACXP,EAAMjB,GACNkB,EACAC,EACAO,EACAC,EACAC,GAGF,OAAOG,EAGR,IA+SyBC,EA/SrBC,EAAWhB,EAAMiB,KACpBnC,EAAQkB,EAAMlB,MACdoC,GAAc,EAGf,GAAwB,mBAAbF,EAAyB,CAEnC,GADAE,GAAc,GACVhB,EAAKV,UAAYiB,IAAsC,IAA7BP,EAAKiB,wBAExBH,IAAaI,EAAU,CACjC,IAAMlC,EAAW,GAEjB,OADAF,EAAYE,EAAUc,EAAMlB,MAAMI,UAC3BqB,EACNrB,EACAe,EACAC,GAC0B,IAA1BA,EAAKmB,iBACLX,EACAC,GAGD,IAAIG,EAEAxD,EAAK0C,EAAMQ,IAAM,CACpBc,IAAKtB,EACLC,QAAAA,EACAnB,MAAOkB,EAAMlB,MAEbyC,SAAU3B,EACV4B,YAAa5B,EAEb6B,IAAK,IASN,GALIrB,EAAQsB,KAAKtB,EAAQsB,IAAI1B,GAGzBI,EAAQuB,KAAKvB,EAAQuB,IAAI3B,GAG3BgB,EAASY,WAC2B,mBAA9BZ,EAASY,UAAU9B,OAepB,CAEN,IAAI+B,EAASb,EAASc,YAClBC,EAAWF,GAAU5B,EAAQ4B,EAAOrB,KACpCwB,EACO,MAAVH,EACGE,EACCA,EAASjD,MAAMmD,MACfJ,EAAOK,GACRjC,GAGJ3C,EAAI0C,EAAMQ,IAAM,IAAIQ,EAASlC,EAAOkD,IAClCV,IAAMtB,EAER1C,EAAE6E,OAAS7E,EAAE8E,KAAM,EACnB9E,EAAEwB,MAAQA,EACK,MAAXxB,EAAE+E,QAAe/E,EAAE+E,MAAQ,IAEX,MAAhB/E,EAAEgF,YAA+B,MAAThF,EAAE+C,MAC7B/C,EAAEgF,WAAahF,EAAE+C,IAAM/C,EAAE+E,OAG1B/E,EAAE2C,QAAU+B,EACRhB,EAASuB,yBACZjF,EAAE+E,MAAQzD,EACTA,EAAO,GAAItB,EAAE+E,OACbrB,EAASuB,yBAAyBjF,EAAEwB,MAAOxB,EAAE+E,QAEtC/E,EAAEkF,qBACVlF,EAAEkF,qBAIFlF,EAAE+E,MACD/E,EAAEgF,aAAehF,EAAE+E,MAChB/E,EAAEgF,WACFhF,EAAE+C,MAAQ/C,EAAE+E,MACZ/E,EAAE+C,IACF/C,EAAE+E,OAGPvB,EAAWxD,EAAEwC,OAAOxC,EAAEwB,MAAOxB,EAAE+E,MAAO/E,EAAE2C,aAxDvC,CAGD,IAAI4B,EAASb,EAASc,YAClBC,EAAWF,GAAU5B,EAAQ4B,EAAOrB,KASxCM,EAAWE,EAASyB,KAAKzC,EAAMQ,IAAK1B,EAPzB,MAAV+C,EACGE,EACCA,EAASjD,MAAMmD,MACfJ,EAAOK,GACRjC,GAsDL,OALI3C,EAAEoF,kBACLzC,EAAUrB,EAAOA,EAAO,GAAIqB,GAAU3C,EAAEoF,oBAGrCtC,EAAQuC,QAAQvC,EAAQuC,OAAO3C,GAC5BO,EACNO,EACAb,EACAC,GAC0B,IAA1BA,EAAKmB,iBACLX,EACAC,GAzGDK,GAuSuBD,EAvSKC,GAySnB4B,aACT7B,IAAc8B,UAAY9B,EAAU+B,MAKvC,SAAkC/B,GACjC,IACC+B,GADSD,SAASjB,UAAUmB,SAASN,KAAK1B,GAC9BiC,MAAM,4BAA8B,IAAI,GACrD,IAAKF,EAAM,CAGV,IADA,IAAIG,GAAS,EACJlE,EAAIU,EAAQvB,OAAQa,KAC5B,GAAIU,EAAQV,KAAOgC,EAAW,CAC7BkC,EAAQlE,EACR,MAIEkE,EAAQ,IACXA,EAAQxD,EAAQH,KAAKyB,GAAa,GAEnC+B,qBAA0BG,EAE3B,OAAOH,EAtBNI,CAAyBnC,GA5L1B,IACCoC,EACAC,EAFG7F,EAAI,IAAMyD,EAId,GAAIlC,EAAO,CACV,IAAIuE,EAAQC,OAAOC,KAAKzE,GAGpBoB,IAAgC,IAAxBA,EAAKsD,gBAAyBH,EAAMI,OAEhD,IAAK,IAAI1E,EAAI,EAAGA,EAAIsE,EAAMnF,OAAQa,IAAK,CACtC,IAAI+D,EAAOO,EAAMtE,GAChB2E,EAAI5E,EAAMgE,GACX,GAAa,aAATA,GAKJ,IAAInD,EAAY9B,KAAKiF,KAGlB5C,GAAQA,EAAKyD,eACL,QAATb,GACS,QAATA,GACS,WAATA,GACS,aAATA,GALF,CASA,GAAa,iBAATA,EACHA,EAAO,gBACY,cAATA,EAAsB,CAChC,QAA2B,IAAhBhE,QAA6B,SACxCgE,EAAO,aACGpC,GAAaoC,EAAKE,MAAM,eAClCF,EAAOA,EAAKpE,cAAcZ,QAAQ,WAAY,WAG/C,GAAa,YAATgF,EAAoB,CACvB,GAAIhE,MAAW,SACfgE,EAAO,MAGK,UAATA,GAAoBY,GAAkB,iBAANA,IACnCA,EAAIpF,EAAcoF,IAKH,MAAZZ,EAAK,IAA4B,MAAdA,EAAK,IAA6B,kBAANY,IAClDA,EAAI9F,OAAO8F,IAGZ,IAAIE,EACH1D,EAAK2D,eACL3D,EAAK2D,cAAcf,EAAMY,EAAGzD,EAASC,EAAMgB,GAC5C,GAAI0C,GAAqB,KAAXA,EACbrG,GAAKqG,OAIN,GAAa,4BAATd,EACHM,EAAOM,GAAKA,EAAEI,eACS,aAAb9C,GAAoC,UAAT8B,EAErCK,EAAeO,WACJA,GAAW,IAANA,GAAiB,KAANA,IAA0B,mBAANA,EAAkB,CACjE,MAAU,IAANA,GAAoB,KAANA,IACjBA,EAAIZ,EAEC5C,GAASA,EAAK6D,MAAK,CACvBxG,GAAK,IAAMuF,EACX,SAIF,GAAa,UAATA,EAAkB,CACrB,GAAiB,WAAb9B,EAAuB,CAC1BL,EAAc+C,EACd,SACuB,WAAb1C,GAAyBL,GAAe+C,IAClDnG,gBAGFA,OAASuF,OAASpF,EAAegG,cAtEjCP,EAAeO,GA4ElB,GAAI9C,EAAQ,CACX,IAAIoD,EAAMzG,EAAEO,QAAQ,QAAS,KACzBkG,IAAQzG,IAAOyG,EAAI5F,QAAQ,MACtBwC,IAAWrD,EAAEa,QAAQ,QAAOb,GAAK,MADJA,EAAIyG,EAM3C,GAFAzG,GAAK,IAEDoC,EAAY9B,KAAKmD,GACpB,UAAUiD,MAASjD,sCAA4CzD,GAEhE,IAKI2B,EALAgF,EACHxE,EAAc7B,KAAKmD,IAClBd,EAAKiE,cAAgBjE,EAAKiE,aAAatG,KAAKmD,GAC1CoD,EAAS,GAGb,GAAIhB,EAECxC,GAAU3C,EAAcmF,KAC3BA,EAAO,KAAOvC,EAAa9C,EAAOqF,EAAMvC,IAEzCtD,GAAK6F,UAEW,MAAhBD,GACAnE,EAAaE,EAAW,GAAKiE,GAAcjF,OAC1C,CAID,IAHA,IAAImG,EAAWzD,IAAWrD,EAAEa,QAAQ,MAChCkG,GAAc,EAETvF,EAAI,EAAGA,EAAIG,EAAShB,OAAQa,IAAK,CACzC,IAAIwF,EAAQrF,EAASH,GAErB,GAAa,MAATwF,IAA2B,IAAVA,EAAiB,CACrC,IAMCC,EAAMjE,EACLgE,EACAtE,EACAC,GACA,EATa,QAAbc,GAEgB,kBAAbA,GAEAN,EAOHC,GAMF,GAHIC,IAAWyD,GAAYpG,EAAcuG,KAAMH,GAAW,GAGtDG,EACH,GAAI5D,EAAQ,CACX,IAAI6D,EAASD,EAAItG,OAAS,GAAe,KAAVsG,EAAI,GAI/BF,GAAeG,EAClBL,EAAOA,EAAOlG,OAAS,IAAMsG,EAE7BJ,EAAO9E,KAAKkF,GAGbF,EAAcG,OAEdL,EAAO9E,KAAKkF,IAKhB,GAAI5D,GAAUyD,EACb,IAAK,IAAItF,EAAIqF,EAAOlG,OAAQa,KAC3BqF,EAAOrF,GAAK,KAAO8B,EAAa9C,EAAOqG,EAAOrF,GAAI8B,GAKrD,GAAIuD,EAAOlG,QAAUkF,EACpB7F,GAAK6G,EAAOM,KAAK,YACPxE,GAAQA,EAAK6D,IACvB,OAAOxG,EAAEoH,UAAU,EAAGpH,EAAEW,OAAS,GAAK,MAUvC,OAPIgG,GAAWhF,GAAakE,GAGvBxC,IAAWrD,EAAEa,QAAQ,QAAOb,GAAK,MACrCA,QAAUyD,OAHVzD,EAAIA,EAAEO,QAAQ,KAAM,OAMdP,EA+BRsC,EAAe+E,cAlYK,SAAC5E,EAAOC,UAAYJ,EAAeG,EAAOC,EAASV,IC1CvE,MAAMsF,EAAqB,cCErB9B,EAAWO,OAAO1B,UAAUmB,SAC5B+B,EAAcC,KAAKnD,UAAUkD,YAC7BE,EAAgBf,MAAMrC,UAAUmB,SAChCkC,EAAiBC,OAAOtD,UAAUmB,SAClCoC,EAAiB9H,OAAOuE,UAAUmB,SAElCqC,EAAgB,uBAChBC,EAAiB,OAEjBC,EAAahC,OAAOiC,wBAA0B1G,GAAO,IAE3D,SAAS2G,EAAsBC,GAC7B,MACiB,mBAAfA,GACe,yBAAfA,GACe,sBAAfA,GACe,0BAAfA,GACe,0BAAfA,GACe,uBAAfA,GACe,wBAAfA,GACe,wBAAfA,GACe,wBAAfA,GACe,+BAAfA,GACe,yBAAfA,GACe,yBAAfA,EAUJ,SAASC,EAAcjH,GACrB,MAAiB,KAAbA,EAAIqE,KACC,uBAEA,aAAerE,EAAIqE,KAAO,IAIrC,SAAS6C,EAAYlH,GACnB,OAAO0G,EAAe1C,KAAKhE,GAAKX,QAAQsH,EAAe,cAGzD,SAASQ,EAAWnH,GAClB,MAAO,IAAMuG,EAAcvC,KAAKhE,GAAO,IAGzC,SAASoH,EAAgBpH,GACvB,IAAY,IAARA,IAAwB,IAARA,EAAe,MAAO,GAAKA,EAC/C,QAAYE,IAARF,EAAmB,MAAO,YAC9B,GAAY,OAARA,EAAc,MAAO,OAEzB,MAAMqH,SAAgBrH,EAEtB,GAAe,WAAXqH,EAAqB,OA7B3B,SAAqBrH,GACnB,OAAIA,IAAQA,EAAY,MACO,IAARA,GAAc,EAAIA,EAAO,EACxB,KAAO,GAAKA,EA0BJsH,CAAYtH,GAC5C,GAAe,WAAXqH,EAAqB,MAAO,ID1DjB,SAAqBrH,GACpC,OAAOA,EAAIX,QAAQ+G,EAAoB,QCyDDmB,CAAYvH,GAAO,IACzD,GAAe,aAAXqH,EAAuB,OAAOJ,EAAcjH,GAChD,GAAe,WAAXqH,EAAqB,OAAOH,EAAYlH,GAE5C,MAAMgH,EAAa1C,EAASN,KAAKhE,GAEjC,MAAmB,qBAAfgH,EAA0C,aAC3B,qBAAfA,EAA0C,aAC3B,sBAAfA,GAAqD,+BAAfA,EAAoDC,EAAcjH,EAAKwH,KAC9F,oBAAfR,EAAyCE,EAAYlH,GACtC,kBAAfgH,EAAuCX,EAAYrC,KAAKhE,GACzC,mBAAfgH,EAAwCG,EAAWnH,GACpC,oBAAfgH,EAAyCR,EAAexC,KAAKhE,GAC9C,uBAAfgH,GAAsD,IAAfhH,EAAIP,OAAqB,eAChEsH,EAAsBC,IAA8B,IAAfhH,EAAIP,OAAqBO,EAAIyH,YAAYpD,KAAO,MAErFrE,aAAewF,OAAc2B,EAAWnH,GAK9C,SAAS0H,EAAUC,EAAMrI,EAAQsI,EAAYC,EAASC,EAAaC,EAAMC,EAAUC,EAAcC,EAASV,GACxG,IAAIW,EAAO,GAEX,GAAIR,EAAKlI,OAAQ,CACf0I,GAAQL,EAER,MAAMM,EAAcR,EAAatI,EAEjC,IAAK,IAAIgB,EAAI,EAAGA,EAAIqH,EAAKlI,OAAQa,IAC/B6H,GAAQC,EAAcC,EAAMV,EAAKrH,GAAIhB,EAAQ8I,EAAaP,EAASC,EAAaC,EAAMC,EAAUC,EAAcC,EAASV,GAEnHlH,EAAIqH,EAAKlI,OAAS,IACpB0I,GAAQ,IAAMN,GAIlBM,GAAQL,EAAcF,EAGxB,MAAO,IAAMO,EAAO,IAqGtB,SAASG,EAAkBtI,EAAKV,EAAQsI,EAAYC,EAASC,EAAaC,EAAMC,EAAUC,EAAcC,EAASV,GAE/G,IADAO,EAAOA,EAAKQ,SACH5I,QAAQK,IAAQ,EACvB,MAAO,aAEP+H,EAAKlH,KAAKb,GAKZ,MAAMwI,IAFNP,EAEmCD,EAEnC,IAAKQ,GAAexI,EAAIyI,QAAgC,mBAAfzI,EAAIyI,OAC3C,OAAOJ,EAAMrI,EAAIyI,SAAUnJ,EAAQsI,EAAYC,EAASC,EAAaC,EAAMC,EAAUC,EAAcC,EAASV,GAG9G,MAAMR,EAAa1C,EAASN,KAAKhE,GACjC,MAAmB,uBAAfgH,EACKwB,EAAc,cApHzB,SAAwBxI,EAAKV,EAAQsI,EAAYC,EAASC,EAAaC,EAAMC,EAAUC,EAAcC,EAASV,GAC5G,OAAQA,EAAM,GAAK,cAAgBE,EAAU1H,EAAKV,EAAQsI,EAAYC,EAASC,EAAaC,EAAMC,EAAUC,EAAcC,EAASV,GAmH5FkB,CAAe1I,EAAKV,EAAQsI,EAAYC,EAASC,EAAaC,EAAMC,EAAUC,EAAcC,EAASV,GACjIT,EAAsBC,GACxBwB,EAAc,UAlHzB,SAAoBxI,EAAKV,EAAQsI,EAAYC,EAASC,EAAaC,EAAMC,EAAUC,EAAcC,EAASV,GACxG,OAAQA,EAAM,GAAKxH,EAAIyH,YAAYpD,KAAO,KAAOqD,EAAU1H,EAAKV,EAAQsI,EAAYC,EAASC,EAAaC,EAAMC,EAAUC,EAAcC,EAASV,GAiH9GmB,CAAW3I,EAAKV,EAAQsI,EAAYC,EAASC,EAAaC,EAAMC,EAAUC,EAAcC,EAASV,GAC1G,iBAAfR,EACFwB,EAAc,QAhHzB,SAAkBxI,EAAKV,EAAQsI,EAAYC,EAASC,EAAaC,EAAMC,EAAUC,EAAcC,EAASV,GACtG,IAAIoB,EAAS,QACb,MAAMC,EAAW7I,EAAI8I,UACrB,IAAIC,EAAUF,EAASG,OAEvB,IAAKD,EAAQE,KAAM,CACjBL,GAAUd,EAEV,MAAMM,EAAcR,EAAatI,EAEjC,MAAQyJ,EAAQE,MAIdL,GAAUR,EAHEC,EAAMU,EAAQvF,MAAM,GAAIlE,EAAQ8I,EAAaP,EAASC,EAAaC,EAAMC,EAAUC,EAAcC,EAASV,GAGxF,OAFhBa,EAAMU,EAAQvF,MAAM,GAAIlE,EAAQ8I,EAAaP,EAASC,EAAaC,EAAMC,EAAUC,EAAcC,EAASV,GAIxHuB,EAAUF,EAASG,OAEdD,EAAQE,OACXL,GAAU,IAAMf,GAIpBe,GAAUd,EAAcF,EAG1B,OAAOgB,EAAS,IAsFiBM,CAASlJ,EAAKV,EAAQsI,EAAYC,EAASC,EAAaC,EAAMC,EAAUC,EAAcC,EAASV,GACtG,iBAAfR,EACFwB,EAAc,QAlDzB,SAAkBxI,EAAKV,EAAQsI,EAAYC,EAASC,EAAaC,EAAMC,EAAUC,EAAcC,EAASV,GACtG,IAAIoB,EAAS,QACb,MAAMC,EAAW7I,EAAI8I,UACrB,IAAIC,EAAUF,EAASG,OAEvB,IAAKD,EAAQE,KAAM,CACjBL,GAAUd,EAEV,MAAMM,EAAcR,EAAatI,EAEjC,MAAQyJ,EAAQE,MACdL,GAAUR,EAAcC,EAAMU,EAAQvF,MAAM,GAAIlE,EAAQ8I,EAAaP,EAASC,EAAaC,EAAMC,EAAUC,EAAcC,EAASV,GAElIuB,EAAUF,EAASG,OAEdD,EAAQE,OACXL,GAAU,IAAMf,GAIpBe,GAAUd,EAAcF,EAG1B,OAAOgB,EAAS,IA2BiBO,CAASnJ,EAAKV,EAAQsI,EAAYC,EAASC,EAAaC,EAAMC,EAAUC,EAAcC,EAASV,GACtG,iBAARxH,EACTwI,EAAc,WAvFzB,SAAqBxI,EAAKV,EAAQsI,EAAYC,EAASC,EAAaC,EAAMC,EAAUC,EAAcC,EAASV,GAEzG,IAAIoB,GADgBpB,EAAM,GAAMxH,EAAIyH,YAAezH,EAAIyH,YAAYpD,KAAO,IAAM,WACrD,IACvBS,EAAOD,OAAOC,KAAK9E,GAAKgF,OAC5B,MAAMoE,EAAUvC,EAAW7G,GAQ3B,GANIoJ,EAAQ3J,SACVqF,EAAOA,EACJuE,OAAOC,KAAwB,iBAARA,GAA2C,oBAAvBhF,EAASN,KAAKsF,KACzDC,OAAOH,IAGRtE,EAAKrF,OAAQ,CACfmJ,GAAUd,EAEV,MAAMM,EAAcR,EAAatI,EAEjC,IAAK,IAAIgB,EAAI,EAAGA,EAAIwE,EAAKrF,OAAQa,IAAK,CACpC,MAAMgJ,EAAMxE,EAAKxE,GAIjBsI,GAAUR,EAHGC,EAAMiB,EAAKhK,EAAQ8I,EAAaP,EAASC,EAAaC,EAAMC,EAAUC,EAAcC,EAASV,GAG3E,KAFjBa,EAAMrI,EAAIsJ,GAAMhK,EAAQ8I,EAAaP,EAASC,EAAaC,EAAMC,EAAUC,EAAcC,EAASV,GAI5GlH,EAAIwE,EAAKrF,OAAS,IACpBmJ,GAAU,IAAMf,GAIpBe,GAAUd,EAAcF,EAG1B,OAAOgB,EAAS,IAuDoBY,CAAYxJ,EAAKV,EAAQsI,EAAYC,EAASC,EAAaC,EAAMC,EAAUC,EAAcC,EAASV,QAD/H,EAKT,SAASiC,EAAYzJ,EAAKV,EAAQsI,EAAYC,EAASC,EAAaC,EAAMC,EAAUC,EAAcC,EAASV,GACzG,IACIkC,EADAnF,GAAQ,EAGZ,IAAK,IAAIoF,EAAI,EAAGA,EAAIzB,EAAQzI,OAAQkK,IAGlC,GAFAD,EAASxB,EAAQyB,GAEbD,EAAOtK,KAAKY,GAAM,CACpBuE,GAAQ,EACR,MAIJ,QAAKA,GAaEmF,EAAOrB,MAAMrI,EATpB,SAAoBA,GAClB,OAAOqI,EAAMrI,EAAKV,EAAQsI,EAAYC,EAASC,EAAaC,EAAMC,EAAUC,EAAcC,EAASV,IAGrG,SAAqB1H,GACnB,MAAM8J,EAAchC,EAAatI,EACjC,OAAOsK,EAAc9J,EAAIT,QAAQuH,EAAgB,KAAOgD,IAGR,CAChD9B,YAAaA,EACbD,QAASA,IAIb,SAASQ,EAAMrI,EAAKV,EAAQsI,EAAYC,EAASC,EAAaC,EAAMC,EAAUC,EAAcC,EAASV,GAEnG,OADcJ,EAAgBpH,IAGfyJ,EAAYzJ,EAAKV,EAAQsI,EAAYC,EAASC,EAAaC,EAAMC,EAAUC,EAAcC,EAASV,IAG1Gc,EAAkBtI,EAAKV,EAAQsI,EAAYC,EAASC,EAAaC,EAAMC,EAAUC,EAAcC,EAASV,GAGjH,MAAMqC,EAAW,CACfvK,OAAQ,EACRkI,KAAK,EACLQ,SAAU8B,SACV5B,QAAS,IA6BX,SAAS6B,EAAazK,GACpB,OAAO,IAAIoB,MAAMpB,EAAS,GAAG2G,KAAK,KAiCpC,IChVI+D,EAAe,CAClB5K,cAAK6K,GACJ,OACCA,GACkB,iBAAXA,GACP,SAAUA,GACV,UAAWA,GACX,QAASA,GAGX5B,eAAMrI,EAAKqI,EAAO/I,GACjB,OAAO8B,EAAepB,EAAKgK,EAAaxI,QAASwI,EAAavI,QAI5DyI,EAAmB,CACtBhC,QAAS,CAAC8B,IAqCPG,EAAc,CACjB/E,cAnCD,SAAuBf,EAAMb,EAAOhC,EAASC,EAAMgB,GAClD,IAAID,SAAcgB,EAGlB,GAAa,4BAATa,EAAoC,SAGxC,GAAa,MAATb,GAA2B,aAAThB,IAAwBf,EAAK2I,UAAY,MAAO,GAEtE,GACC3I,EAAK4I,sBACJ5H,KACU,IAAVe,IACW,UAATa,GAA6B,UAATA,IAA+B,KAAVb,GAE5C,MAAO,GAER,IAAIpB,EAAoC,iBAAhBX,EAAKU,OAAsBV,EAAKU,OAAS,KACjE,MAAa,WAATK,GACU,aAATA,GAAwBf,EAAK6I,eAGhCN,EAAaxI,QAAUA,EACvBwI,EAAavI,KAAOA,IACpB+B,EDuQH,SAAsBxD,EAAKyB,GAQzB,IAAInC,EACAyI,EARCtG,GA/BP,SAAyBA,GAOvB,GANAoD,OAAOC,KAAKrD,GAAM8I,QAAQjB,IACxB,IAAKO,EAASW,eAAelB,GAC3B,MAAM,IAAI9D,MAAM,iCAAmC8D,KAInD7H,EAAK+F,UAAuBtH,IAAhBuB,EAAKnC,QAAwC,IAAhBmC,EAAKnC,OAChD,MAAM,IAAIkG,MAAM,uDA0BhBiF,CAAgBhJ,GAChBA,EAvBJ,SAA0BA,GACxB,MAAMmH,EAAS,GAUf,OARA/D,OAAOC,KAAK+E,GAAUU,QAAQjB,GAC5BV,EAAOU,GAAO7H,EAAK+I,eAAelB,GAAO7H,EAAK6H,GAAOO,EAASP,IAG5DV,EAAOpB,MACToB,EAAOtJ,OAAS,GAGXsJ,EAYE8B,CAAiBjJ,IAHxBA,EAAOoI,EAQT,MAEMhC,EAAUpG,EAAK+F,IAAM,IAAM,KAC3BM,EAAcrG,EAAK+F,IAAM,GAAK,KAEpC,GAAI/F,GAAQA,EAAKyG,QAAQzI,OAAQ,CAC/BH,EAASyK,EAAatI,EAAKnC,QAC3ByI,EAAO,GACP,IAAI4C,EAAgBlB,EAAYzJ,EAAKV,EARpB,GAQwCuI,EAASC,EAAaC,EAAMtG,EAAKuG,SAPvE,EAO+FvG,EAAKyG,QAASzG,EAAK+F,KACrI,GAAImD,EAAe,OAAOA,EAI5B,OADkBvD,EAAgBpH,KAG7BV,IAAQA,EAASyK,EAAatI,EAAKnC,SACnCyI,IAAMA,EAAO,IACXO,EAAkBtI,EAAKV,EAjBX,GAiB+BuI,EAASC,EAAaC,EAAMtG,EAAKuG,SAhB9D,EAgBsFvG,EAAKyG,QAASzG,EAAK+F,MClSrHoD,CAAapH,EAAO0G,IACjBvK,QAAQ,QAClB6D,EAAWlE,EAAO,KAAOkE,EAAOpB,UANjCoB,EAAQ,WASFlE,OAAY+E,OAASb,MAAUpB,SAE3BA,EAAaiC,OAASpF,EAAeuE,QAKjDqH,KAAK,EACLvF,KAAK,EACL8E,WAAW,EACXE,eAAe,EACfD,qBAAqB,EACrBlI,OAAQ,MAGT,SAAS2I,EAAkBvJ,EAAOC,EAASC,EAAMO,GAEhD,OAAOZ,EAAeG,EAAOC,EAD7BC,EAAOtB,EAAOA,EAAO,GAAIgK,GAAc1I,GAAQ"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "preact-render-to-string",
|
|
3
3
|
"amdName": "preactRenderToString",
|
|
4
|
-
"version": "5.1.
|
|
4
|
+
"version": "5.1.20",
|
|
5
5
|
"description": "Render JSX to an HTML string, with support for Preact components.",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"umd:main": "dist/index.js",
|
|
@@ -22,14 +22,16 @@
|
|
|
22
22
|
"./": "./"
|
|
23
23
|
},
|
|
24
24
|
"scripts": {
|
|
25
|
-
"bench": "node -r @babel/register benchmarks index.js",
|
|
25
|
+
"bench": "BABEL_ENV=test node -r @babel/register benchmarks index.js",
|
|
26
|
+
"bench:v8": "BABEL_ENV=test microbundle benchmarks/index.js -f modern --alias benchmarkjs-pretty=benchmarks/lib/benchmark-lite.js --external none --target node --no-compress --no-sourcemap --raw -o benchmarks/.v8.js && v8 --module benchmarks/.v8.modern.js",
|
|
26
27
|
"build": "npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition",
|
|
27
28
|
"postbuild": "node ./config/node-13-exports.js && node ./config/node-commonjs.js",
|
|
28
29
|
"transpile": "microbundle src/index.js -f es,umd --target web --external preact",
|
|
29
|
-
"transpile:jsx": "microbundle src/jsx.js -o dist/jsx.js --target web --external
|
|
30
|
+
"transpile:jsx": "microbundle src/jsx.js -o dist/jsx.js --target web --external preact && microbundle dist/jsx.js -o dist/jsx.js -f cjs --external preact",
|
|
30
31
|
"copy-typescript-definition": "copyfiles -f src/*.d.ts dist",
|
|
31
|
-
"test": "eslint src test && tsc && npm run test:mocha",
|
|
32
|
-
"test:mocha": "mocha -r @babel/register test
|
|
32
|
+
"test": "eslint src test && tsc && npm run test:mocha && npm run bench",
|
|
33
|
+
"test:mocha": "BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/**/[!compat]*.test.js && npm run test:mocha:compat",
|
|
34
|
+
"test:mocha:compat": "BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/compat.test.js",
|
|
33
35
|
"format": "prettier src/**/*.{d.ts,js} test/**/*.js --write",
|
|
34
36
|
"prepublishOnly": "npm run build",
|
|
35
37
|
"release": "npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"
|
|
@@ -65,17 +67,28 @@
|
|
|
65
67
|
}
|
|
66
68
|
},
|
|
67
69
|
"babel": {
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
70
|
+
"env": {
|
|
71
|
+
"test": {
|
|
72
|
+
"presets": [
|
|
73
|
+
[
|
|
74
|
+
"@babel/preset-env",
|
|
75
|
+
{
|
|
76
|
+
"targets": {
|
|
77
|
+
"node": true
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
],
|
|
82
|
+
"plugins": [
|
|
83
|
+
[
|
|
84
|
+
"@babel/plugin-transform-react-jsx",
|
|
85
|
+
{
|
|
86
|
+
"pragma": "h"
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
]
|
|
90
|
+
}
|
|
91
|
+
}
|
|
79
92
|
},
|
|
80
93
|
"author": "Jason Miller <jason@developit.ca>",
|
|
81
94
|
"license": "MIT",
|
|
@@ -90,6 +103,8 @@
|
|
|
90
103
|
"@babel/plugin-transform-react-jsx": "^7.12.12",
|
|
91
104
|
"@babel/preset-env": "^7.12.11",
|
|
92
105
|
"@babel/register": "^7.12.10",
|
|
106
|
+
"@changesets/cli": "^2.18.0",
|
|
107
|
+
"@changesets/changelog-github": "^0.4.1",
|
|
93
108
|
"benchmarkjs-pretty": "^2.0.1",
|
|
94
109
|
"chai": "^4.2.0",
|
|
95
110
|
"copyfiles": "^2.4.1",
|
package/src/index.js
CHANGED
|
@@ -6,14 +6,17 @@ import {
|
|
|
6
6
|
assign,
|
|
7
7
|
getChildren
|
|
8
8
|
} from './util';
|
|
9
|
-
import { options, Fragment
|
|
9
|
+
import { options, Fragment } from 'preact';
|
|
10
|
+
|
|
11
|
+
/** @typedef {import('preact').VNode} VNode */
|
|
10
12
|
|
|
11
13
|
const SHALLOW = { shallow: true };
|
|
12
14
|
|
|
13
15
|
// components without names, kept as a hash for later comparison to return consistent UnnamedComponentXX names.
|
|
14
16
|
const UNNAMED = [];
|
|
15
17
|
|
|
16
|
-
const VOID_ELEMENTS =
|
|
18
|
+
const VOID_ELEMENTS =
|
|
19
|
+
/^(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/;
|
|
17
20
|
|
|
18
21
|
const UNSAFE_NAME = /[\s\n\\/='"\0<>]/;
|
|
19
22
|
|
|
@@ -28,7 +31,7 @@ const noop = () => {};
|
|
|
28
31
|
* @param {Boolean} [options.shallow=false] If `true`, renders nested Components as HTML elements (`<Foo a="b" />`).
|
|
29
32
|
* @param {Boolean} [options.xml=false] If `true`, uses self-closing tags for elements without children.
|
|
30
33
|
* @param {Boolean} [options.pretty=false] If `true`, adds whitespace for readability
|
|
31
|
-
* @param {
|
|
34
|
+
* @param {RegExp|undefined} [options.voidElements] RegeEx that matches elements that are considered void (self-closing)
|
|
32
35
|
*/
|
|
33
36
|
renderToString.render = renderToString;
|
|
34
37
|
|
|
@@ -43,10 +46,24 @@ let shallowRender = (vnode, context) => renderToString(vnode, context, SHALLOW);
|
|
|
43
46
|
|
|
44
47
|
const EMPTY_ARR = [];
|
|
45
48
|
function renderToString(vnode, context, opts) {
|
|
49
|
+
context = context || {};
|
|
50
|
+
opts = opts || {};
|
|
51
|
+
|
|
52
|
+
// Performance optimization: `renderToString` is synchronous and we
|
|
53
|
+
// therefore don't execute any effects. To do that we pass an empty
|
|
54
|
+
// array to `options._commit` (`__c`). But we can go one step further
|
|
55
|
+
// and avoid a lot of dirty checks and allocations by setting
|
|
56
|
+
// `options._skipEffects` (`__s`) too.
|
|
57
|
+
const previousSkipEffects = options.__s;
|
|
58
|
+
options.__s = true;
|
|
59
|
+
|
|
46
60
|
const res = _renderToString(vnode, context, opts);
|
|
61
|
+
|
|
47
62
|
// options._commit, we don't schedule any effects in this library right now,
|
|
48
63
|
// so we can pass an empty queue to this hook.
|
|
49
64
|
if (options.__c) options.__c(vnode, EMPTY_ARR);
|
|
65
|
+
EMPTY_ARR.length = 0;
|
|
66
|
+
options.__s = previousSkipEffects;
|
|
50
67
|
return res;
|
|
51
68
|
}
|
|
52
69
|
|
|
@@ -56,48 +73,50 @@ function _renderToString(vnode, context, opts, inner, isSvgMode, selectValue) {
|
|
|
56
73
|
return '';
|
|
57
74
|
}
|
|
58
75
|
|
|
59
|
-
//
|
|
60
|
-
if (
|
|
61
|
-
|
|
76
|
+
// #text nodes
|
|
77
|
+
if (typeof vnode !== 'object') {
|
|
78
|
+
return encodeEntities(vnode);
|
|
62
79
|
}
|
|
63
80
|
|
|
64
|
-
let nodeName = vnode.type,
|
|
65
|
-
props = vnode.props,
|
|
66
|
-
isComponent = false;
|
|
67
|
-
context = context || {};
|
|
68
|
-
opts = opts || {};
|
|
69
|
-
|
|
70
81
|
let pretty = opts.pretty,
|
|
71
82
|
indentChar = pretty && typeof pretty === 'string' ? pretty : '\t';
|
|
72
83
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
84
|
+
if (Array.isArray(vnode)) {
|
|
85
|
+
let rendered = '';
|
|
86
|
+
for (let i = 0; i < vnode.length; i++) {
|
|
87
|
+
if (pretty && i > 0) rendered += '\n';
|
|
88
|
+
rendered += _renderToString(
|
|
89
|
+
vnode[i],
|
|
90
|
+
context,
|
|
91
|
+
opts,
|
|
92
|
+
inner,
|
|
93
|
+
isSvgMode,
|
|
94
|
+
selectValue
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
return rendered;
|
|
76
98
|
}
|
|
77
99
|
|
|
100
|
+
let nodeName = vnode.type,
|
|
101
|
+
props = vnode.props,
|
|
102
|
+
isComponent = false;
|
|
103
|
+
|
|
78
104
|
// components
|
|
79
105
|
if (typeof nodeName === 'function') {
|
|
80
106
|
isComponent = true;
|
|
81
107
|
if (opts.shallow && (inner || opts.renderRootComponent === false)) {
|
|
82
108
|
nodeName = getComponentName(nodeName);
|
|
83
109
|
} else if (nodeName === Fragment) {
|
|
84
|
-
|
|
85
|
-
let children = [];
|
|
110
|
+
const children = [];
|
|
86
111
|
getChildren(children, vnode.props.children);
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
opts.shallowHighOrder !== false,
|
|
96
|
-
isSvgMode,
|
|
97
|
-
selectValue
|
|
98
|
-
);
|
|
99
|
-
}
|
|
100
|
-
return rendered;
|
|
112
|
+
return _renderToString(
|
|
113
|
+
children,
|
|
114
|
+
context,
|
|
115
|
+
opts,
|
|
116
|
+
opts.shallowHighOrder !== false,
|
|
117
|
+
isSvgMode,
|
|
118
|
+
selectValue
|
|
119
|
+
);
|
|
101
120
|
} else {
|
|
102
121
|
let rendered;
|
|
103
122
|
|
|
@@ -197,7 +216,7 @@ function _renderToString(vnode, context, opts, inner, isSvgMode, selectValue) {
|
|
|
197
216
|
}
|
|
198
217
|
|
|
199
218
|
// render JSX to HTML
|
|
200
|
-
let s = '',
|
|
219
|
+
let s = '<' + nodeName,
|
|
201
220
|
propChildren,
|
|
202
221
|
html;
|
|
203
222
|
|
|
@@ -215,20 +234,21 @@ function _renderToString(vnode, context, opts, inner, isSvgMode, selectValue) {
|
|
|
215
234
|
continue;
|
|
216
235
|
}
|
|
217
236
|
|
|
218
|
-
if (
|
|
237
|
+
if (UNSAFE_NAME.test(name)) continue;
|
|
219
238
|
|
|
220
239
|
if (
|
|
221
240
|
!(opts && opts.allAttributes) &&
|
|
222
241
|
(name === 'key' ||
|
|
223
242
|
name === 'ref' ||
|
|
224
243
|
name === '__self' ||
|
|
225
|
-
name === '__source'
|
|
226
|
-
name === 'defaultValue')
|
|
244
|
+
name === '__source')
|
|
227
245
|
)
|
|
228
246
|
continue;
|
|
229
247
|
|
|
230
|
-
if (name === '
|
|
231
|
-
|
|
248
|
+
if (name === 'defaultValue') {
|
|
249
|
+
name = 'value';
|
|
250
|
+
} else if (name === 'className') {
|
|
251
|
+
if (typeof props.class !== 'undefined') continue;
|
|
232
252
|
name = 'class';
|
|
233
253
|
} else if (isSvgMode && name.match(/^xlink:?./)) {
|
|
234
254
|
name = name.toLowerCase().replace(/^xlink:?/, 'xlink:');
|
|
@@ -287,18 +307,19 @@ function _renderToString(vnode, context, opts, inner, isSvgMode, selectValue) {
|
|
|
287
307
|
|
|
288
308
|
// account for >1 multiline attribute
|
|
289
309
|
if (pretty) {
|
|
290
|
-
let sub = s.replace(
|
|
310
|
+
let sub = s.replace(/\n\s*/, ' ');
|
|
291
311
|
if (sub !== s && !~sub.indexOf('\n')) s = sub;
|
|
292
312
|
else if (pretty && ~s.indexOf('\n')) s += '\n';
|
|
293
313
|
}
|
|
294
314
|
|
|
295
|
-
s
|
|
296
|
-
|
|
315
|
+
s += '>';
|
|
316
|
+
|
|
317
|
+
if (UNSAFE_NAME.test(nodeName))
|
|
297
318
|
throw new Error(`${nodeName} is not a valid HTML tag name in ${s}`);
|
|
298
319
|
|
|
299
320
|
let isVoid =
|
|
300
|
-
VOID_ELEMENTS.test(
|
|
301
|
-
(opts.voidElements && opts.voidElements.test(
|
|
321
|
+
VOID_ELEMENTS.test(nodeName) ||
|
|
322
|
+
(opts.voidElements && opts.voidElements.test(nodeName));
|
|
302
323
|
let pieces = [];
|
|
303
324
|
|
|
304
325
|
let children;
|
package/src/util.js
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
// DOM properties that should NOT have "px" added when numeric
|
|
2
2
|
export const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|^--/i;
|
|
3
3
|
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
4
|
+
const ENCODED_ENTITIES = /[&<>"]/;
|
|
5
|
+
|
|
6
|
+
export function encodeEntities(input) {
|
|
7
|
+
const s = String(input);
|
|
8
|
+
if (!ENCODED_ENTITIES.test(s)) {
|
|
9
|
+
return s;
|
|
10
|
+
}
|
|
11
|
+
return s
|
|
12
|
+
.replace(/&/g, '&')
|
|
13
|
+
.replace(/</g, '<')
|
|
14
|
+
.replace(/>/g, '>')
|
|
15
|
+
.replace(/"/g, '"');
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
export let indent = (s, char) =>
|