UNPKG

@pantheon-systems/pcc-react-sdk

Version:
2 lines 10.5 kB
'use strict';var pccSdkCore=require('@pantheon-systems/pcc-sdk-core'),D=require('react'),reactMarkdown_js=require('react-markdown/lib/react-markdown.js'),an=require('rehype-raw'),cn=require('remark-heading-id'),unistUtilVisit=require('unist-util-visit'),jsxRuntime=require('react/jsx-runtime'),q=require('lodash');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var D__default=/*#__PURE__*/_interopDefault(D);var an__default=/*#__PURE__*/_interopDefault(an);var cn__default=/*#__PURE__*/_interopDefault(cn);var q__default=/*#__PURE__*/_interopDefault(q);var Z=Object.defineProperty,x=Object.defineProperties;var F=Object.getOwnPropertyDescriptors;var L=Object.getOwnPropertySymbols;var _=Object.prototype.hasOwnProperty,nn=Object.prototype.propertyIsEnumerable;var J=(n,r,e)=>r in n?Z(n,r,{enumerable:true,configurable:true,writable:true,value:e}):n[r]=e,u=(n,r)=>{for(var e in r||(r={}))_.call(r,e)&&J(n,e,r[e]);if(L)for(var e of L(r))nn.call(r,e)&&J(n,e,r[e]);return n},C=(n,r)=>x(n,F(r));var w=n=>{var r;return n==null?"":typeof n=="string"||typeof n=="number"||typeof n=="bigint"?n.toString():typeof n=="boolean"?"":Array.isArray(n)?n.map(w).join(""):"props"in n?(n.props.children||((r=n.props.element)==null?void 0:r.children)||[]).map(w).join(""):""};var k=["staging.cdn.content.pantheon.io","cdn.staging.content.pantheon.io","cdn.content.pantheon.io","cdn.prod.pcc.pantheon.io","cdn.staging.pcc.pantheon.io"];var U=class extends D.Component{constructor(r){super(r),this.state={hasError:false};}static getDerivedStateFromError(){return {hasError:true}}componentDidCatch(r){console.error(r);}render(){return this.state.hasError?jsxRuntime.jsx("div",{children:"Something went wrong while rendering this smart component."}):this.props.children}},en=({children:n})=>jsxRuntime.jsx(U,{children:jsxRuntime.jsx(D.Suspense,{fallback:jsxRuntime.jsx("div",{children:"Loading smart component..."}),children:n})}),A=n=>{let r=e=>jsxRuntime.jsx(en,{children:jsxRuntime.jsx(n,u({},e))});return r.displayName=`WithSmartComponentErrorBoundary(${on(n)})`,r};function on(n){return n.displayName||n.name||"Component"}var dn=({children:n,smartComponentMap:r,componentMap:e,disableDefaultErrorBoundaries:o,cdnURLOverride:i})=>jsxRuntime.jsx(reactMarkdown_js.ReactMarkdown,{rehypePlugins:[an__default.default,un,fn(i)],remarkPlugins:[cn__default.default],components:C(u({},e),{"pcc-component":({node:f})=>{let{attrs:h,type:s}=f.properties;if(r&&r[s]){let{reactComponent:l}=r[s],t=pn(h);return l?jsxRuntime.jsx("div",{children:o?jsxRuntime.jsx(l,u({},t)):A(l)(t)}):jsxRuntime.jsxs("div",{children:["Error: Cannot render ",s," because it was provided without a reactComponent property."]})}return jsxRuntime.jsx("div",{className:"pcc-component",children:jsxRuntime.jsxs("u",{children:["PCC Component - ",s]})})}}),children:n});function pn(n){try{let r;if(typeof Buffer!="undefined"?r=Buffer.from(n,"base64").toString("utf8"):typeof atob!="undefined"&&(r=atob(n)),!r)throw new Error("Failed to decode base64 string");return JSON.parse(r)}catch(r){return console.error(r),{}}}function un(){return n=>{unistUtilVisit.visit(n,{type:"element",tagName:"pcc-component"},(r,e,o)=>{o&&"tagName"in o&&o.tagName!=="div"&&(o.tagName="div");});}}function fn(n){return n?()=>r=>{unistUtilVisit.visit(r,"element",e=>{try{if(e.tagName==="img"&&e.properties.src){let o=e.properties.src,i=new URL(o);k.includes(i.hostname)&&(i.hostname=n,e.properties.src=i.toString());}}catch(o){}});}:()=>r=>r}var K=dn;var mn={for:"htmlFor",class:"className",cellpadding:"cellPadding",cellspacing:"cellSpacing",classname:"className",colspan:"colSpan",crossorigin:"crossOrigin",htmlfor:"htmlFor",marginheight:"marginHeight",marginwidth:"marginWidth",maxlength:"maxLength",minlength:"minLength",readonly:"readOnly",rowspan:"rowSpan",srcdoc:"srcDoc",srclang:"srcLang",srcset:"srcSet"},H=function(n){return Object.keys(n).reduce((r,e)=>{let o=e.toLowerCase(),i=n[e];return C(u({},r),{[mn[o]||o]:i})},{})};var hn=n=>{let r=(n==null?void 0:n.split("-"))||[];return r.length===1?r[0]:r[0]+r.slice(1).map(e=>e[0].toUpperCase()+e.slice(1)).join("")},j=n=>{if(!n||n.length<1)return;let r={};return n.forEach(e=>{let[o,i]=e.split(":");if(!(!o&&!i)){if(o&&i){let f=hn(o.trim());r[f]=i.trim();return}switch(o){case "underline":r.textDecoration="underline";break;case "line-through":r.textDecoration="line-through";break;case "italic":r.fontStyle="italic";break;case "bold":r.fontWeight="bold";break;case "strike-through":r.textDecoration="line-through";break;case "superscript":r.verticalAlign="super";break;case "subscript":r.verticalAlign="sub";break;}}}),r};var z=({element:n,smartComponentMap:r,componentMap:e,disableAllStyles:o,preserveImageStyles:i,disableDefaultErrorBoundaries:f,renderImageCaptions:h,cdnURLOverride:s})=>{var R,m,y,v,E,b;let l=(m=(R=n.children)==null?void 0:R.map((g,p)=>D__default.default.createElement(z,{key:p,element:C(u({},g),{prevNode:n.children[p-1],nextNode:n.children[p+1]}),smartComponentMap:r,componentMap:e,disableAllStyles:o,preserveImageStyles:i,disableDefaultErrorBoundaries:f,renderImageCaptions:h,cdnURLOverride:s})))!=null?m:[];if(n.tag==="component"){let g=(y=n.type)==null?void 0:y.toUpperCase();if(!g)return null;let p=r==null?void 0:r[g];if(p)return p.reactComponent?f?D__default.default.createElement(p.reactComponent,n.attrs):A(p.reactComponent)(n.attrs):jsxRuntime.jsxs("div",{children:["Error: Cannot render ",g," because it was provided without a reactComponent property."]})}if(n.tag==="style")return o?null:D__default.default.createElement("style",{dangerouslySetInnerHTML:{__html:n.data}});let t=[n.data,...l].filter(Boolean),B=n.tag==="title"?"h1":n.tag,d=e==null?void 0:e[n.tag],S=o===true&&(n.tag!=="img"||!i)&&(typeof d=="string"||d==null),a=[],c=S?void 0:j(n==null?void 0:n.style);if(I(n)&&l.length===1){a.push("pantheon-img-container"),(c==null?void 0:c.float)==="left"?a.push("pantheon-img-container-breakleft"):(c==null?void 0:c.float)==="right"?a.push("pantheon-img-container-breakright"):(c==null?void 0:c.clear)==="both"?a.push("pantheon-img-container-breakboth"):(a.push("pantheon-img-container-inline"),(n.prevNode==null||!I(n.prevNode))&&(n.nextNode==null||!I(n.nextNode))&&a.push("pantheon-img-container-alone"));let g=V(n)?n.children[0]:n.children[0].children[0],p=(E=(v=g.attrs)==null?void 0:v.title)==null?void 0:E.trim();if(g.attrs.src&&s)try{let P=new URL(g.attrs.src);k.includes(P.hostname)&&(P.hostname=s,g.attrs.src=P.toString());}catch(P){}h!==false&&(p!=null&&p.length)&&t.push(jsxRuntime.jsx("span",{style:{width:"100%",display:"flex",justifyContent:"center",fontSize:".75rem"},className:"pantheon-caption",children:p}));}return D__default.default.createElement(d||B,u({style:c},H(C(u({},n.attrs),{class:[(b=n.attrs)==null?void 0:b.class,...a].filter(Boolean).join(" ")}))),t.length?t:void 0)};function V(n){var r;return n.tag==="span"&&((r=n.children)==null?void 0:r[0].tag)==="img"&&n.children.length===1}function I(n){var r,e,o,i;return n.tag==="span"&&(V(n)||((r=n.children)==null?void 0:r[0].tag)==="span"&&n.children.length===1&&((o=(e=n.children)==null?void 0:e[0].children)==null?void 0:o[0].tag)==="img"&&((i=n.children[0].children)==null?void 0:i.length)===1)}var $=z;function O(n){var f,h;if(!(n!=null&&n.resolvedContent)||(n==null?void 0:n.contentType)==="TEXT_MARKDOWN")return null;let e=typeof n.resolvedContent=="string"?JSON.parse(n.resolvedContent):n.resolvedContent,i=(Array.isArray(e)?q__default.default.flatMap(e,pccSdkCore.flattenDocumentTabs):e.children).find(s=>s.tag==="title");if(i!=null){let s=i.children?q__default.default.flatMapDeep(i.children,l=>l.data):[];return i.data+s.join("")}else return ((f=n==null?void 0:n.metadata)==null?void 0:f.title)!=null&&typeof((h=n==null?void 0:n.metadata)==null?void 0:h.title)=="string"?n.metadata.title:n.title||""}function G(n){return D.useMemo(()=>O(n)||"",[n])}function bn(n){if(typeof n!="string")return n;try{return JSON.parse(n)}catch(r){return n}}var Tn=({article:n,tabId:r,bodyClassName:e,containerClassName:o,headerClassName:i,renderTitle:f,smartComponentMap:h,componentMap:s,renderBody:l,__experimentalFlags:t})=>{D.useEffect(()=>{(t==null?void 0:t.useUnintrusiveTitleRendering)!==true&&console.warn("PCC Deprecation Warning: ArticleRenderer's renderTitle will no longer be supported in a future release.");},[t]);let B=n==null?void 0:n.contentType,d=D.useMemo(()=>n!=null&&n.resolvedContent?bn(n.resolvedContent):null,[n==null?void 0:n.resolvedContent]),S=D.useMemo(()=>{var y,v;if(!d)return null;let m=r!=null&&((y=pccSdkCore.findTab(d,r))==null?void 0:y.documentTab)||d;return r==null&&typeof d=="object"&&(m==null?void 0:m.children)==null?Array.isArray(d)?(v=d[0])==null?void 0:v.documentTab:d==null?void 0:d.documentTab:m},[r,d]);if(!S)return null;if(B==="TEXT_MARKDOWN")return jsxRuntime.jsx("div",{className:o,children:S?jsxRuntime.jsx(K,{smartComponentMap:h,componentMap:s,disableDefaultErrorBoundaries:!!(t!=null&&t.disableDefaultErrorBoundaries),cdnURLOverride:t==null?void 0:t.cdnURLOverride,children:S}):jsxRuntime.jsx("span",{children:"No content to display"})});let a=S.children||[],c=null;if((t==null?void 0:t.useUnintrusiveTitleRendering)!==true){let m=a.findIndex(b=>["h1","h2","h3","h4","h5","h6","h7","title"].includes(b.tag)),y=a.findIndex(b=>b.tag==="p"),v=m===-1?y:m,[E]=a.splice(v,1);c=D__default.default.createElement(renderer,{element:E,componentMap:s,smartComponentMap:h,disableAllStyles:!!(t!=null&&t.disableAllStyles),preserveImageStyles:!!(t!=null&&t.preserveImageStyles),disableDefaultErrorBoundaries:!!(t!=null&&t.disableDefaultErrorBoundaries),renderImageCaptions:(t==null?void 0:t.renderImageCaptions)!==false,cdnURLOverride:t==null?void 0:t.cdnURLOverride});}let R=jsxRuntime.jsx("div",{className:e,children:a==null?void 0:a.map((m,y)=>D__default.default.createElement($,{key:y,element:C(u({},m),{prevNode:a[y-1],nextNode:a[y+1]}),smartComponentMap:h,componentMap:s,disableAllStyles:!!(t!=null&&t.disableAllStyles),preserveImageStyles:!!(t!=null&&t.preserveImageStyles),disableDefaultErrorBoundaries:!!(t!=null&&t.disableDefaultErrorBoundaries),renderImageCaptions:(t==null?void 0:t.renderImageCaptions)!==false,cdnURLOverride:t==null?void 0:t.cdnURLOverride}))});return jsxRuntime.jsxs("div",{className:o,children:[c!=null?jsxRuntime.jsx("div",{className:i,children:f?f(c,w(c)):c}):null,l?l(R):R]})},Rn=Tn;exports.ArticleRenderer=Rn;exports.getArticleTitle=O;exports.useArticleTitle=G;//# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map