@stencil/react-output-target
Version:
React output target for @stencil/core components.
7 lines (6 loc) • 9.34 kB
JavaScript
var P=Object.create;var x=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var O=Object.getPrototypeOf,L=Object.prototype.hasOwnProperty;var H=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of A(t))!L.call(e,o)&&o!==r&&x(e,o,{get:()=>t[o],enumerable:!(n=R(t,o))||n.enumerable});return e};var M=(e,t,r)=>(r=e!=null?P(O(e)):{},H(t||!e||!e.__esModule?x(r,"default",{value:e,enumerable:!0}):r,e));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("react"),$=require("react-dom/server");function j(e,t){const r=RegExp(e,"g");return n=>{if(typeof n!="string")throw new TypeError(`expected an argument of type string, but got ${typeof n}`);return n.match(r)?n.replace(r,t):n}}const I=j(/[A-Z]/,e=>`-${e.toLowerCase()}`);function _(e,t=I){if(!e||typeof e!="object"||Array.isArray(e))throw new TypeError(`expected an argument of type object, but got ${typeof e}`);return Object.keys(e).map(r=>`${t(r)}: ${e[r]};`).join(`
`)}const D={acceptCharset:"accept-charset",accessKey:"accesskey",allowFullScreen:"allowfullscreen",autoCapitalize:"autocapitalize",autoComplete:"autocomplete",autoCorrect:"autocorrect",autoFocus:"autofocus",autoPlay:"autoplay",autoSave:"autosave",cellPadding:"cellpadding",cellSpacing:"cellspacing",charSet:"charset",className:"class",classID:"classid",colSpan:"colspan",contentEditable:"contenteditable",contextMenu:"contextmenu",controlsList:"controlslist",crossOrigin:"crossorigin",dangerouslySetInnerHTML:"dangerouslysetinnerhtml",dateTime:"datetime",defaultChecked:"defaultchecked",defaultValue:"defaultvalue",disablePictureInPicture:"disablepictureinpicture",disableRemotePlayback:"disableremoteplayback",encType:"enctype",enterKeyHint:"enterkeyhint",fetchPriority:"fetchpriority",htmlFor:"for",formMethod:"formmethod",formAction:"formaction",formEncType:"formenctype",formNoValidate:"formnovalidate",formTarget:"formtarget",frameBorder:"frameborder",hrefLang:"hreflang",httpEquiv:"http-equiv",imageSizes:"imagesizes",imageSrcSet:"imagesrcset",inputMode:"inputmode",itemID:"itemid",itemProp:"itemprop",itemRef:"itemref",itemScope:"itemscope",itemType:"itemtype",keyParams:"keyparams",keyType:"keytype",marginWidth:"marginwidth",marginHeight:"marginheight",maxLength:"maxlength",mediaGroup:"mediagroup",noModule:"nomodule",noValidate:"novalidate",playsInline:"playsinline",radioGroup:"radiogroup",readOnly:"readonly",referrerPolicy:"referrerpolicy",rowSpan:"rowspan",spellCheck:"spellcheck",srcDoc:"srcdoc",srcLang:"srclang",srcSet:"srcset",tabIndex:"tabindex",useMap:"usemap",accentHeight:"accent-height",alignmentBaseline:"alignment-baseline",arabicForm:"arabic-form",attributeName:"attributename",attributeType:"attributetype",autoReverse:"autoreverse",baseFrequency:"basefrequency",baselineShift:"baseline-shift",baseProfile:"baseprofile",calcMode:"calcmode",capHeight:"cap-height",clipPath:"clip-path",clipPathUnits:"clippathunits",clipRule:"clip-rule",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",contentScriptType:"contentscripttype",contentStyleType:"contentstyletype",diffuseConstant:"diffuseconstant",dominantBaseline:"dominant-baseline",enableBackground:"enable-background",externalResourcesRequired:"externalresourcesrequired",fillOpacity:"fill-opacity",fillRule:"fill-rule",filterRes:"filterres",filterUnits:"filterunits",floodOpacity:"flood-opacity",floodColor:"flood-color",fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",gradientTransform:"gradienttransform",gradientUnits:"gradientunits",horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",imageRendering:"image-rendering",kernelMatrix:"kernelmatrix",kernelUnitLength:"kernelunitlength",keyPoints:"keypoints",keySplines:"keysplines",keyTimes:"keytimes",lengthAdjust:"lengthadjust",letterSpacing:"letter-spacing",lightingColor:"lighting-color",limitingConeAngle:"limitingconeangle",markerEnd:"marker-end",markerHeight:"markerheight",markerMid:"marker-mid",markerStart:"marker-start",markerUnits:"markerunits",markerWidth:"markerwidth",maskContentUnits:"maskcontentunits",maskUnits:"maskunits",numOctaves:"numoctaves",overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pathLength:"pathlength",patternContentUnits:"patterncontentunits",patternTransform:"patterntransform",patternUnits:"patternunits",pointerEvents:"pointer-events",pointsAtX:"pointsatx",pointsAtY:"pointsaty",pointsAtZ:"pointsatz",preserveAlpha:"preservealpha",preserveAspectRatio:"preserveaspectratio",primitiveUnits:"primitiveunits",refX:"refx",refY:"refy",renderingIntent:"rendering-intent",repeatCount:"repeatcount",repeatDur:"repeatdur",requiredExtensions:"requiredextensions",requiredFeatures:"requiredfeatures",shapeRendering:"shape-rendering",slot:"slot",specularConstant:"specularconstant",specularExponent:"specularexponent",spreadMethod:"spreadmethod",startOffset:"startoffset",stdDeviation:"stddeviation",stitchTiles:"stitchtiles",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",strokeDasharray:"stroke-dasharray",strokeDashoffset:"stroke-dashoffset",strokeLinecap:"stroke-linecap",strokeLinejoin:"stroke-linejoin",strokeMiterlimit:"stroke-miterlimit",strokeWidth:"stroke-width",strokeOpacity:"stroke-opacity",suppressContentEditableWarning:"suppresscontenteditablewarning",suppressHydrationWarning:"suppresshydrationwarning",surfaceScale:"surfacescale",systemLanguage:"systemlanguage",tableValues:"tablevalues",targetX:"targetx",targetY:"targety",textAnchor:"text-anchor",textDecoration:"text-decoration",textLength:"textlength",textRendering:"text-rendering",transformOrigin:"transform-origin",underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vectorEffect:"vector-effect",vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",wordSpacing:"word-spacing",writingMode:"writing-mode",xChannelSelector:"xchannelselector",xHeight:"x-height",xlinkActuate:"xlink:actuate",xlinkArcrole:"xlink:arcrole",xlinkHref:"xlink:href",xlinkRole:"xlink:role",xlinkShow:"xlink:show",xlinkTitle:"xlink:title",xlinkType:"xlink:type",xmlBase:"xml:base",xmlLang:"xml:lang",xmlnsXlink:"xmlns:xlink",yChannelSelector:"ychannelselector",zoomAndPan:"zoomandpan"},F="[react-output-target]",u=e=>typeof e=="string"||typeof e=="number"||typeof e=="boolean",m=e=>e==null,S=e=>Array.isArray(e),U=e=>!!e&&/^\s*class\s+/.test(e.toString()),q=e=>!!e&&typeof e=="object"&&"_payload"in e,N=e=>async({children:t,...r}={})=>{if(!("process"in globalThis)||typeof window<"u")throw new Error("`createComponentForServerSideRendering` can only be run on the server");let n="";for(const[i,a]of Object.entries(r)){let s=u(a)?`"${a}"`:void 0;if(i==="style"&&typeof a=="object"&&(s=`"${_(a).replaceAll(`
`," ")}"`),!s)continue;const c=D[i]||e.properties[i]||i;n+=` ${c}=${s}`}let o="";const y=`<${e.tagName}${n} suppressHydrationWarning="true">`,b=console.error;try{process.env.STENCIL_SSR_DEBUG||(console.error=()=>{});const i=await g(t);o=$.renderToString(i)}catch(i){if(process.env.STENCIL_SSR_DEBUG){const a=i instanceof Error?i:new Error("Unknown error");console.warn(`${F} Failed to serialize light DOM for ${y.slice(0,-1)} />: ${a.message} - this may impact the hydration of the component`)}}finally{console.error=b}const v=`${y}${o}</${e.tagName}>`,{html:d}=await e.renderToString(v,{fullDocument:!1,serializeShadowRoot:!0,prettyHtml:!0});if(!d)throw new Error("No HTML returned from renderToString");const l=d.split(`
`),w="<!--r.1-->",h=l[1].includes('shadowrootmode="open"');let k;h&&(k=l.slice(2,l.indexOf(" </template>")).join(`
`).trim());const{default:C}=await import("html-react-parser"),T=()=>C(d,{transform(i,a){if("name"in a&&a.name===e.tagName){const s=i.props,c=`${e.tagName}`;if(!h){const{children:W,...E}=s||{},z=l.slice(1,-1).join(`
`).trim().replace(new RegExp("(?<=>)\\s+(?=<)","g"),"");return p.createElement(c,{...E,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:z}})}return p.createElement(c,{...s,suppressHydrationWarning:!0},p.createElement("template",{shadowrootmode:"open",suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:w+k}}),t)}}});return p.createElement(T,null)};async function g(e){return u(e)||m(e)?e:(S(e)||(e=[e]),Promise.all(Array.from(e).map(async t=>{if(u(t)||m(t))return t;if(S(t))return g(t);const{type:r,props:n}=t;return{...t,props:{...n,children:await g(n.children)},type:await f(r,n)}})))}const f=async(e,t)=>{let r=null;if(typeof e=="string")return e;if(U(e)){const n=new e(t);r=n.render?n.render():n}else if(q(e)){const n=e._payload,{deault:o}=n._status===-1?await n._result():n._result;r=await f(o,t)}else typeof e!="object"&&(r=await e(t));return!m(r)&&!u(r)&&"type"in r&&(r=await f(r.type,t)),r};exports.createComponentForServerSideRendering=N;
;