construct-hub-webapp 0.1.460 → 0.1.464

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.
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunkconstruct_hub_webapp=self.webpackChunkconstruct_hub_webapp||[]).push([[283],{50535:function(e,t,n){n.d(t,{y:function(){return o}});var r=n(28735),a=n(53046),i=n(80184),o=function(e){var t=e.label,n=e.color,o=e.icon;return(0,i.jsxs)(r.Kq,{align:"center",direction:"row",spacing:2,children:[(0,i.jsx)(a.Ee,{alt:"".concat(t," icon"),src:o,w:4}),(0,i.jsx)(r.xv,{color:n,fontWeight:"bold",children:t})]})}},2148:function(e,t,n){n.d(t,{N:function(){return o}});var r=n(81070),a=n(85792),i=n(80184),o=function(e){var t=e.children,n=e.language,o=a.dX.has(n),c=a.k8[n],s=o?"Click to view documentation in ".concat(c):"Documentation support for ".concat(c," is coming soon!");return(0,i.jsx)(r.u,{hasArrow:!0,label:s,placement:"top-start",children:(0,i.jsx)("span",{children:t})})}},64159:function(e,t,n){var r;n.d(t,{L:function(){return X},$:function(){return r}}),function(e){e.Wide="wide"}(r||(r={}));var a=n(1413),i=n(72791),o=n(28735),c=n(81070),s=n(11853),d=n(10297),l=n(19748),u=n(67003),m=n(79227),f=(0,n(88606).$)("packageCard",["author","description","downloads","languages","published","title","version","comment","wideContainer"]),h=n(80184),v=function(e){var t=e["data-testid"],n=e.tooltip,r=e.value;return(0,h.jsx)(c.u,{hasArrow:!0,isDisabled:!n,label:n,placement:"left",children:(0,h.jsx)(o.xv,{"data-testid":t,fontSize:"xs",zIndex:1,children:r})})},p=function(){var e,t,n,r=D(),a=r.author,i=r.metadata.date,o=r.name,c=(0,d.V)().data,p=null===c||void 0===c||null===(e=c.packages)||void 0===e||null===(t=e[o])||void 0===t||null===(n=t.downloads)||void 0===n?void 0:n.npm,x="string"===typeof a?a:a.name,g=new Date(i);return(0,h.jsxs)(h.Fragment,{children:[void 0!==p&&(0,h.jsx)(v,{"data-testid":f.downloads,tooltip:"Download numbers are periodically sourced from the npm registry",value:"".concat(p.toLocaleString()," weekly downloads")}),(0,h.jsx)(v,{"data-testid":f.published,value:(0,h.jsx)(m.q,{date:g,fontSize:"xs",formattedDate:(0,s.Z)(g,{addSuffix:!0})})}),(0,h.jsx)(v,{"data-testid":f.author,value:(0,h.jsxs)(h.Fragment,{children:["By"," ",(0,h.jsx)(u.O,{color:"blue.500",to:(0,l.yc)({query:x}),children:x})]})})]})},x=n(70885),g=n(91523),j=n(59534),w=n(7991),b=n(77766),k=function(e){var t=e.comment;return(0,h.jsxs)(o.xv,{"data-testid":f.comment,fontSize:"md",lineHeight:"tall",noOfLines:4,children:[(0,h.jsxs)(o.xv,{as:"span",color:"blue.500",fontWeight:"bold",children:["Editor's note:"," "]}),t]})},y=function(){var e=(0,w.Z)(),t=(0,x.Z)(e,1)[0],n=D(),r=n.dataEvent,a=n.description,i=n.comment,c=n.metadata.constructFramework,s=n.name,d=n.version,u=null===c||void 0===c?void 0:c.name,m=null===c||void 0===c?void 0:c.majorVersion;return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(o.AB,{as:g.rU,"data-event":r?(0,j.oJ)(r,"Package Card",s):void 0,to:(0,l.Mt)({name:s,version:d,language:t}),children:(0,h.jsxs)(o.kC,{align:"center",children:[(0,h.jsx)(b.uo,{majorVersion:m,mr:2,name:u}),(0,h.jsx)(o.X6,{as:"h3",color:"blue.800","data-testid":f.title,fontSize:"md",fontWeight:"bold",wordBreak:"normal",children:s})]})}),i?(0,h.jsx)(k,{comment:i}):(0,h.jsx)(o.xv,{color:"blue.800","data-testid":f.description,fontSize:"md",lineHeight:"tall",noOfLines:4,children:a||"No description available."})]})},S=n(98371),Z=n(50535),T=function(){var e,t,n=(null!==(e=null===(t=D())||void 0===t?void 0:t.metadata)&&void 0!==e?e:{}).packageTags,r=void 0===n?[]:n,i=(0,S.JA)(r),c=(0,x.Z)(i,1)[0];return c?(0,h.jsx)(o.xu,{fontSize:"xs",children:(0,h.jsx)(Z.y,(0,a.Z)({},c))}):null},C=n(85792),L=n(2148),z={sm:5,md:6,lg:8},q=function(e){var t=e.isRounded,n=void 0!==t&&t,r=e.languages,a=e.name,i=e.size,o=void 0===i?"md":i,c=e.version,s=Object.keys(null!==r&&void 0!==r?r:{});return(0,h.jsx)(h.Fragment,{children:Object.entries(C.kP).sort((function(e,t){var n=(0,x.Z)(e,1)[0],r=(0,x.Z)(t,1)[0];return C.a2.indexOf(n)-C.a2.indexOf(r)})).map((function(e){var t=(0,x.Z)(e,2),r=t[0],i=t[1],d=r,u=d===C.SQ.TypeScript||s.includes(d),m=d===C.SQ.TypeScript||C.dX.has(d);if(!u)return null;var f=i.name,v=i.icon,p=(0,h.jsx)(v,{"aria-label":"Supports ".concat(f),borderRadius:n?"50%":0,h:z[o],opacity:m?1:.2,w:z[o]});return(0,h.jsx)(L.N,{language:d,children:m?(0,h.jsx)(g.rU,{"aria-label":"View package docs for ".concat(d),to:(0,l.Mt)({name:a,version:c,language:d}),children:p}):p},d)}))})},A=function(){var e=D();return(0,h.jsx)(q,(0,a.Z)((0,a.Z)({},e),{},{size:"sm"}))},E=n(29988),F=function(){var e=D(),t=e.keywords,n=void 0===t?[]:t,r=e.metadata.packageTags,a=void 0===r?[]:r,i=(0,S.QX)({packageTags:a,keywords:n});return(0,h.jsx)(h.Fragment,{children:i.slice(0,10).map((function(e){var t=e.id,n=e.keyword,r=(n=void 0===n?{}:n).label,a=n.color;return(0,h.jsx)(E.X,{value:t,variant:a,children:r},t)}))})},O=function(){return(0,h.jsx)(o.fG,{_hover:{"> article":{bg:"gray.50"}},children:(0,h.jsxs)(o.rj,{as:"article",bg:"white",border:"base",borderRadius:"sm",boxShadow:"base",color:"blue.800","data-testid":f.wideContainer,h:"full",minH:"12.5rem",templateColumns:{base:"1fr",lg:"1fr 14rem"},w:"full",children:[(0,h.jsxs)(o.kC,{direction:"column",justify:"space-between",overflow:"hidden",p:5,sx:{gap:"0.5rem"},children:[(0,h.jsx)(o.Kq,{spacing:3,children:(0,h.jsx)(y,{})}),(0,h.jsx)(o.kC,{align:"center",sx:{gap:"0.5rem"},wrap:"wrap",children:(0,h.jsx)(F,{})})]}),(0,h.jsxs)(o.kC,{align:{base:"end",lg:"initial"},borderLeft:{lg:"base"},borderTop:{base:"base",lg:"none"},direction:{base:"row",lg:"column"},justify:"space-between",p:5,sx:{gap:"0.5rem"},children:[(0,h.jsxs)(o.Kq,{spacing:1,children:[(0,h.jsx)(T,{}),(0,h.jsx)(o.Kq,{spacing:1,children:(0,h.jsx)(p,{})})]}),(0,h.jsx)(o.Kq,{"data-testid":f.languages,direction:"row",spacing:2,children:(0,h.jsx)(A,{})})]})]})})},P=(0,i.createContext)(null),D=function(){return(0,i.useContext)(P)},X=function(e){var t=e["data-event"],n=e.pkg,i=e.variant,o=void 0===i?r.Wide:i;return(0,h.jsx)(P.Provider,{value:(0,a.Z)((0,a.Z)({},n),{},{dataEvent:t}),children:o===r.Wide&&(0,h.jsx)(O,{})})}},29988:function(e,t,n){n.d(t,{X:function(){return l}});var r=n(1413),a=n(45987),i=n(96450),o=n(19748),c=n(67003),s=n(80184),d=["children","value","label","zIndex"],l=function(e){var t=e.children,n=e.value,l=e.label,u=void 0===l?n:l,m=e.zIndex,f=(0,a.Z)(e,d);return(0,s.jsx)(c.O,{"aria-label":"Tag: ".concat(u),to:(0,o.yc)({keywords:[n]}),zIndex:m,children:(0,s.jsx)(i.Vp,(0,r.Z)((0,r.Z)({_hover:{textDecoration:"underline"}},f),{},{children:(0,s.jsx)(i.Sn,{children:t})}))})}},41712:function(e,t,n){n.d(t,{T:function(){return s}});var r=n(72791),a=n(54270),i={contribute:{event:{name:"Contribute Load"}},home:{event:{name:"Home Load"}},faq:{event:{name:"Frequently Asked Questions Load"}},packageProfile:{event:{name:"Package Profile Load"}},search:{event:{name:"Search Load"}},siteTerms:{event:{name:"Site Terms Load"}},notFound:{page:{pageType:"errorPage"},event:{name:"404 Page Load"}}},o=n(59534),c=n(80184),s=(["default-src 'self' 'unsafe-inline' http://*.awsstatic.com;","connect-src 'self' https://*.shortbread.aws.dev http://*.shortbread.aws.dev http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;","frame-src http://aws.demdex.net http://dpm.demdex.net;","img-src 'self' https://* http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;","object-src 'none';","style-src 'self' 'unsafe-inline';"].join(" "),function(e){var t=e.children,n=e.meta,s=e.pageName,d=(0,o.aQ)(i[s]);(0,r.useEffect)((function(){d()}),[d]);var l=n.suffix,u=void 0===l||l,m=n.title,f=n.description,h=u?"".concat(m," - Construct Hub"):m;return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(a.q,{children:[!1,(0,c.jsx)("meta",{content:"width=device-width, initial-scale=1",name:"viewport"}),(0,c.jsx)("meta",{charSet:"utf-8"}),(0,c.jsx)("title",{children:h}),(0,c.jsx)("meta",{content:h,property:"og:title"}),(0,c.jsx)("meta",{content:h,name:"twitter:title"}),(0,c.jsx)("meta",{content:"summary",name:"twitter:card"}),(0,c.jsx)("meta",{content:f,name:"description"}),(0,c.jsx)("meta",{content:f,property:"og:description"}),(0,c.jsx)("meta",{content:f,name:"twitter:description"})]}),t]})})},79227:function(e,t,n){n.d(t,{q:function(){return l}});var r=n(1413),a=n(45987),i=n(63209),o=n(28735),c=n(29158),s=n(80184),d=["date","format","formattedDate"],l=(0,i.Gp)((function(e,t){var n=e.date,i=e.format,l=e.formattedDate,u=(0,a.Z)(e,d);return(0,s.jsx)(o.xu,(0,r.Z)((0,r.Z)({as:"time",dateTime:n.toISOString(),ref:t},u),{},{children:null!==l&&void 0!==l?l:(0,c.Z)(n,null!==i&&void 0!==i?i:"")}))}));l.displayName="Time"},56804:function(e,t,n){n.d(t,{E:function(){return a}});var r=n(24026),a=function(e){var t=(0,r.Z)().data;return(null!==t&&void 0!==t?t:{})[e]}},7991:function(e,t,n){n.d(t,{Z:function(){return f}});var r=n(70885),a=n(72791),i=n(79271),o=n(85792),c=n(29499),s=n(4487),d=o.SQ.TypeScript,l="preferred-language",u=function(e){return null!=e&&o.dX.has(e)},m=function(e){if(u(e))return e;try{var t,n=null!==(t=localStorage.getItem(l))&&void 0!==t?t:"";if(u(n))return n}catch(r){}return d},f=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.updateUrl,n=e.updateSaved,o=(0,i.TH)(),d=o.pathname,f=o.hash,h=(0,i.k6)(),v=h.replace,p=(0,s.K)(),x=p.get(c.Tx.LANGUAGE),g=(0,a.useState)((function(){return m(x)})),j=(0,r.Z)(g,2),w=j[0],b=j[1];(0,a.useEffect)((function(){u(x)&&x!==w&&b(x)}),[x]),(0,a.useEffect)((function(){x!==w&&t&&(p.set(c.Tx.LANGUAGE,w),v({pathname:d,hash:f,search:p.toString()}))}),[w,t]);var k=(0,a.useCallback)((function(e){if(b(e),n)try{localStorage.setItem(l,e)}catch(t){}}),[n]);return(0,a.useMemo)((function(){return[w,k]}),[w,k])}},4487:function(e,t,n){n.d(t,{K:function(){return i}});var r=n(72791),a=n(79271),i=function(){var e=(0,a.TH)().search;return(0,r.useMemo)((function(){return new URLSearchParams(e)}),[e])}},98371:function(e,t,n){n.d(t,{JA:function(){return o},QX:function(){return c}});var r=n(1413),a=n(42982),i=n(9272),o=function(e){return!e||e.length<1?[]:e.reduce((function(e,t){return t.highlight?[].concat((0,a.Z)(e),[t.highlight]):e}),[])},c=function(e){for(var t=e.packageTags,n=e.keywords,o=new Array,c=new Set,s=0,d=[].concat((0,a.Z)(function(e){return(null!==e&&void 0!==e?e:[]).filter((function(e){var t;return Boolean(null===(t=e.keyword)||void 0===t?void 0:t.label)})).map((function(e){var t;return(0,r.Z)((0,r.Z)({},e),{},{id:null===(t=e.keyword)||void 0===t?void 0:t.label})}))}(t)),(0,a.Z)(function(e){return!e||e.length<1?[]:e.filter((function(e){return Boolean(e)&&!i.h.has(e)})).map((function(e){return{id:e,keyword:{label:e}}}))}(n)));s<d.length;s++){var l=d[s],u=l.keyword.label.toLowerCase();c.has(u)||(o.push(l),c.add(u))}return o}}}]);
2
- //# sourceMappingURL=283.366a87d5.chunk.js.map
1
+ "use strict";(self.webpackChunkconstruct_hub_webapp=self.webpackChunkconstruct_hub_webapp||[]).push([[283],{50535:function(e,t,n){n.d(t,{y:function(){return o}});var r=n(28735),a=n(53046),i=n(80184),o=function(e){var t=e.label,n=e.color,o=e.icon;return(0,i.jsxs)(r.Kq,{align:"center",direction:"row",spacing:2,children:[(0,i.jsx)(a.Ee,{alt:"".concat(t," icon"),src:o,w:4}),(0,i.jsx)(r.xv,{color:n,fontWeight:"bold",children:t})]})}},2148:function(e,t,n){n.d(t,{N:function(){return o}});var r=n(81070),a=n(86617),i=n(80184),o=function(e){var t=e.children,n=e.language,o=a.dX.has(n),c=a.k8[n],s=o?"Click to view documentation in ".concat(c):"Documentation support for ".concat(c," is coming soon!");return(0,i.jsx)(r.u,{hasArrow:!0,label:s,placement:"top-start",children:(0,i.jsx)("span",{children:t})})}},64159:function(e,t,n){var r;n.d(t,{L:function(){return X},$:function(){return r}}),function(e){e.Wide="wide"}(r||(r={}));var a=n(1413),i=n(72791),o=n(28735),c=n(81070),s=n(11853),d=n(10297),l=n(19748),u=n(67003),m=n(79227),f=(0,n(88606).$)("packageCard",["author","description","downloads","languages","published","title","version","comment","wideContainer"]),h=n(80184),v=function(e){var t=e["data-testid"],n=e.tooltip,r=e.value;return(0,h.jsx)(c.u,{hasArrow:!0,isDisabled:!n,label:n,placement:"left",children:(0,h.jsx)(o.xv,{"data-testid":t,fontSize:"xs",zIndex:1,children:r})})},p=function(){var e,t,n,r=D(),a=r.author,i=r.metadata.date,o=r.name,c=(0,d.V)().data,p=null===c||void 0===c||null===(e=c.packages)||void 0===e||null===(t=e[o])||void 0===t||null===(n=t.downloads)||void 0===n?void 0:n.npm,x="string"===typeof a?a:a.name,g=new Date(i);return(0,h.jsxs)(h.Fragment,{children:[void 0!==p&&(0,h.jsx)(v,{"data-testid":f.downloads,tooltip:"Download numbers are periodically sourced from the npm registry",value:"".concat(p.toLocaleString()," weekly downloads")}),(0,h.jsx)(v,{"data-testid":f.published,value:(0,h.jsx)(m.q,{date:g,fontSize:"xs",formattedDate:(0,s.Z)(g,{addSuffix:!0})})}),(0,h.jsx)(v,{"data-testid":f.author,value:(0,h.jsxs)(h.Fragment,{children:["By"," ",(0,h.jsx)(u.O,{color:"blue.500",to:(0,l.yc)({query:x}),children:x})]})})]})},x=n(70885),g=n(91523),j=n(59534),w=n(7991),b=n(77766),k=function(e){var t=e.comment;return(0,h.jsxs)(o.xv,{"data-testid":f.comment,fontSize:"md",lineHeight:"tall",noOfLines:4,children:[(0,h.jsxs)(o.xv,{as:"span",color:"blue.500",fontWeight:"bold",children:["Editor's note:"," "]}),t]})},y=function(){var e=(0,w.Z)(),t=(0,x.Z)(e,1)[0],n=D(),r=n.dataEvent,a=n.description,i=n.comment,c=n.metadata.constructFramework,s=n.name,d=n.version,u=null===c||void 0===c?void 0:c.name,m=null===c||void 0===c?void 0:c.majorVersion;return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(o.AB,{as:g.rU,"data-event":r?(0,j.oJ)(r,"Package Card",s):void 0,to:(0,l.Mt)({name:s,version:d,language:t}),children:(0,h.jsxs)(o.kC,{align:"center",children:[(0,h.jsx)(b.uo,{majorVersion:m,mr:2,name:u}),(0,h.jsx)(o.X6,{as:"h3",color:"blue.800","data-testid":f.title,fontSize:"md",fontWeight:"bold",wordBreak:"normal",children:s})]})}),i?(0,h.jsx)(k,{comment:i}):(0,h.jsx)(o.xv,{color:"blue.800","data-testid":f.description,fontSize:"md",lineHeight:"tall",noOfLines:4,children:a||"No description available."})]})},S=n(98371),Z=n(50535),T=function(){var e,t,n=(null!==(e=null===(t=D())||void 0===t?void 0:t.metadata)&&void 0!==e?e:{}).packageTags,r=void 0===n?[]:n,i=(0,S.JA)(r),c=(0,x.Z)(i,1)[0];return c?(0,h.jsx)(o.xu,{fontSize:"xs",children:(0,h.jsx)(Z.y,(0,a.Z)({},c))}):null},C=n(86617),L=n(2148),z={sm:5,md:6,lg:8},q=function(e){var t=e.isRounded,n=void 0!==t&&t,r=e.languages,a=e.name,i=e.size,o=void 0===i?"md":i,c=e.version,s=Object.keys(null!==r&&void 0!==r?r:{});return(0,h.jsx)(h.Fragment,{children:Object.entries(C.kP).sort((function(e,t){var n=(0,x.Z)(e,1)[0],r=(0,x.Z)(t,1)[0];return C.a2.indexOf(n)-C.a2.indexOf(r)})).map((function(e){var t=(0,x.Z)(e,2),r=t[0],i=t[1],d=r,u=d===C.SQ.TypeScript||s.includes(d),m=d===C.SQ.TypeScript||C.dX.has(d);if(!u)return null;var f=i.name,v=i.icon,p=(0,h.jsx)(v,{"aria-label":"Supports ".concat(f),borderRadius:n?"50%":0,h:z[o],opacity:m?1:.2,w:z[o]});return(0,h.jsx)(L.N,{language:d,children:m?(0,h.jsx)(g.rU,{"aria-label":"View package docs for ".concat(d),to:(0,l.Mt)({name:a,version:c,language:d}),children:p}):p},d)}))})},A=function(){var e=D();return(0,h.jsx)(q,(0,a.Z)((0,a.Z)({},e),{},{size:"sm"}))},E=n(29988),F=function(){var e=D(),t=e.keywords,n=void 0===t?[]:t,r=e.metadata.packageTags,a=void 0===r?[]:r,i=(0,S.QX)({packageTags:a,keywords:n});return(0,h.jsx)(h.Fragment,{children:i.slice(0,10).map((function(e){var t=e.id,n=e.keyword,r=(n=void 0===n?{}:n).label,a=n.color;return(0,h.jsx)(E.X,{value:t,variant:a,children:r},t)}))})},O=function(){return(0,h.jsx)(o.fG,{_hover:{"> article":{bg:"gray.50"}},children:(0,h.jsxs)(o.rj,{as:"article",bg:"white",border:"base",borderRadius:"sm",boxShadow:"base",color:"blue.800","data-testid":f.wideContainer,h:"full",minH:"12.5rem",templateColumns:{base:"1fr",lg:"1fr 14rem"},w:"full",children:[(0,h.jsxs)(o.kC,{direction:"column",justify:"space-between",overflow:"hidden",p:5,sx:{gap:"0.5rem"},children:[(0,h.jsx)(o.Kq,{spacing:3,children:(0,h.jsx)(y,{})}),(0,h.jsx)(o.kC,{align:"center",sx:{gap:"0.5rem"},wrap:"wrap",children:(0,h.jsx)(F,{})})]}),(0,h.jsxs)(o.kC,{align:{base:"end",lg:"initial"},borderLeft:{lg:"base"},borderTop:{base:"base",lg:"none"},direction:{base:"row",lg:"column"},justify:"space-between",p:5,sx:{gap:"0.5rem"},children:[(0,h.jsxs)(o.Kq,{spacing:1,children:[(0,h.jsx)(T,{}),(0,h.jsx)(o.Kq,{spacing:1,children:(0,h.jsx)(p,{})})]}),(0,h.jsx)(o.Kq,{"data-testid":f.languages,direction:"row",spacing:2,children:(0,h.jsx)(A,{})})]})]})})},P=(0,i.createContext)(null),D=function(){return(0,i.useContext)(P)},X=function(e){var t=e["data-event"],n=e.pkg,i=e.variant,o=void 0===i?r.Wide:i;return(0,h.jsx)(P.Provider,{value:(0,a.Z)((0,a.Z)({},n),{},{dataEvent:t}),children:o===r.Wide&&(0,h.jsx)(O,{})})}},29988:function(e,t,n){n.d(t,{X:function(){return l}});var r=n(1413),a=n(45987),i=n(96450),o=n(19748),c=n(67003),s=n(80184),d=["children","value","label","zIndex"],l=function(e){var t=e.children,n=e.value,l=e.label,u=void 0===l?n:l,m=e.zIndex,f=(0,a.Z)(e,d);return(0,s.jsx)(c.O,{"aria-label":"Tag: ".concat(u),to:(0,o.yc)({keywords:[n]}),zIndex:m,children:(0,s.jsx)(i.Vp,(0,r.Z)((0,r.Z)({_hover:{textDecoration:"underline"}},f),{},{children:(0,s.jsx)(i.Sn,{children:t})}))})}},41712:function(e,t,n){n.d(t,{T:function(){return s}});var r=n(72791),a=n(54270),i={contribute:{event:{name:"Contribute Load"}},home:{event:{name:"Home Load"}},faq:{event:{name:"Frequently Asked Questions Load"}},packageProfile:{event:{name:"Package Profile Load"}},search:{event:{name:"Search Load"}},siteTerms:{event:{name:"Site Terms Load"}},notFound:{page:{pageType:"errorPage"},event:{name:"404 Page Load"}}},o=n(59534),c=n(80184),s=(["default-src 'self' 'unsafe-inline' http://*.awsstatic.com;","connect-src 'self' https://*.shortbread.aws.dev http://*.shortbread.aws.dev http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;","frame-src http://aws.demdex.net http://dpm.demdex.net;","img-src 'self' https://* http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;","object-src 'none';","style-src 'self' 'unsafe-inline';"].join(" "),function(e){var t=e.children,n=e.meta,s=e.pageName,d=(0,o.aQ)(i[s]);(0,r.useEffect)((function(){d()}),[d]);var l=n.suffix,u=void 0===l||l,m=n.title,f=n.description,h=u?"".concat(m," - Construct Hub"):m;return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(a.q,{children:[!1,(0,c.jsx)("meta",{content:"width=device-width, initial-scale=1",name:"viewport"}),(0,c.jsx)("meta",{charSet:"utf-8"}),(0,c.jsx)("title",{children:h}),(0,c.jsx)("meta",{content:h,property:"og:title"}),(0,c.jsx)("meta",{content:h,name:"twitter:title"}),(0,c.jsx)("meta",{content:"summary",name:"twitter:card"}),(0,c.jsx)("meta",{content:f,name:"description"}),(0,c.jsx)("meta",{content:f,property:"og:description"}),(0,c.jsx)("meta",{content:f,name:"twitter:description"})]}),t]})})},79227:function(e,t,n){n.d(t,{q:function(){return l}});var r=n(1413),a=n(45987),i=n(63209),o=n(28735),c=n(29158),s=n(80184),d=["date","format","formattedDate"],l=(0,i.Gp)((function(e,t){var n=e.date,i=e.format,l=e.formattedDate,u=(0,a.Z)(e,d);return(0,s.jsx)(o.xu,(0,r.Z)((0,r.Z)({as:"time",dateTime:n.toISOString(),ref:t},u),{},{children:null!==l&&void 0!==l?l:(0,c.Z)(n,null!==i&&void 0!==i?i:"")}))}));l.displayName="Time"},56804:function(e,t,n){n.d(t,{E:function(){return a}});var r=n(24026),a=function(e){var t=(0,r.Z)().data;return(null!==t&&void 0!==t?t:{})[e]}},7991:function(e,t,n){n.d(t,{Z:function(){return f}});var r=n(70885),a=n(72791),i=n(79271),o=n(86617),c=n(29499),s=n(4487),d=o.SQ.TypeScript,l="preferred-language",u=function(e){return null!=e&&o.dX.has(e)},m=function(e){if(u(e))return e;try{var t,n=null!==(t=localStorage.getItem(l))&&void 0!==t?t:"";if(u(n))return n}catch(r){}return d},f=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.updateUrl,n=e.updateSaved,o=(0,i.TH)(),d=o.pathname,f=o.hash,h=(0,i.k6)(),v=h.replace,p=(0,s.K)(),x=p.get(c.Tx.LANGUAGE),g=(0,a.useState)((function(){return m(x)})),j=(0,r.Z)(g,2),w=j[0],b=j[1];(0,a.useEffect)((function(){u(x)&&x!==w&&b(x)}),[x]),(0,a.useEffect)((function(){x!==w&&t&&(p.set(c.Tx.LANGUAGE,w),v({pathname:d,hash:f,search:p.toString()}))}),[w,t]);var k=(0,a.useCallback)((function(e){if(b(e),n)try{localStorage.setItem(l,e)}catch(t){}}),[n]);return(0,a.useMemo)((function(){return[w,k]}),[w,k])}},4487:function(e,t,n){n.d(t,{K:function(){return i}});var r=n(72791),a=n(79271),i=function(){var e=(0,a.TH)().search;return(0,r.useMemo)((function(){return new URLSearchParams(e)}),[e])}},98371:function(e,t,n){n.d(t,{JA:function(){return o},QX:function(){return c}});var r=n(1413),a=n(42982),i=n(9272),o=function(e){return!e||e.length<1?[]:e.reduce((function(e,t){return t.highlight?[].concat((0,a.Z)(e),[t.highlight]):e}),[])},c=function(e){for(var t=e.packageTags,n=e.keywords,o=new Array,c=new Set,s=0,d=[].concat((0,a.Z)(function(e){return(null!==e&&void 0!==e?e:[]).filter((function(e){var t;return Boolean(null===(t=e.keyword)||void 0===t?void 0:t.label)})).map((function(e){var t;return(0,r.Z)((0,r.Z)({},e),{},{id:null===(t=e.keyword)||void 0===t?void 0:t.label})}))}(t)),(0,a.Z)(function(e){return!e||e.length<1?[]:e.filter((function(e){return Boolean(e)&&!i.h.has(e)})).map((function(e){return{id:e,keyword:{label:e}}}))}(n)));s<d.length;s++){var l=d[s],u=l.keyword.label.toLowerCase();c.has(u)||(o.push(l),c.add(u))}return o}}}]);
2
+ //# sourceMappingURL=283.a041037a.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"static/js/283.366a87d5.chunk.js","mappings":"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","sources":["components/Highlight/Highlight.tsx","components/LanguageSupportTooltip/LanguageSupportTooltip.tsx","components/PackageCard/constants.ts","components/PackageCard/testIds.ts","components/PackageCard/Details.tsx","components/PackageCard/EditorsNote.tsx","components/PackageCard/Heading.tsx","components/PackageCard/Highlight.tsx","components/PackageLanguages/PackageLanguages.tsx","components/PackageCard/Languages.tsx","components/PackageCard/Tags.tsx","components/PackageCard/WideCard.tsx","components/PackageCard/PackageCard.tsx","components/PackageTag/PackageTag.tsx","constants/pageInfo.ts","components/Page/Page.tsx","components/Time/Time.tsx","hooks/useConfigValue/useConfigValue.ts","hooks/useLanguage/useLanguage.ts","hooks/useQueryParams/useQueryParams.ts","util/package.ts"],"sourcesContent":["import { Stack, Image, Text } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\n\ninterface HighlightProps {\n label: string;\n color?: string;\n icon?: string;\n}\n\nexport const Highlight: FunctionComponent<HighlightProps> = ({\n label,\n color,\n icon,\n}: HighlightProps) => {\n return (\n <Stack align=\"center\" direction=\"row\" spacing={2}>\n <Image alt={`${label} icon`} src={icon} w={4} />\n <Text color={color} fontWeight=\"bold\">\n {label}\n </Text>\n </Stack>\n );\n};\n","import { Tooltip } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport {\n Language,\n LANGUAGE_NAME_MAP,\n TEMP_SUPPORTED_LANGUAGES,\n} from \"../../constants/languages\";\n\nexport interface LanguageSupportTooltipProps {\n language: Language;\n}\n\nexport const LanguageSupportTooltip: FunctionComponent<\n LanguageSupportTooltipProps\n> = ({ children, language }) => {\n const isSupported = TEMP_SUPPORTED_LANGUAGES.has(language);\n const langName = LANGUAGE_NAME_MAP[language];\n\n const message = isSupported\n ? `Click to view documentation in ${langName}`\n : `Documentation support for ${langName} is coming soon!`;\n\n return (\n <Tooltip hasArrow label={message} placement=\"top-start\">\n <span>{children}</span>\n </Tooltip>\n );\n};\n","export enum PackageCardType {\n Wide = \"wide\",\n}\n","import { createTestIds } from \"../../util/createTestIds\";\n\nconst testIds = createTestIds(\"packageCard\", [\n \"author\",\n \"description\",\n \"downloads\",\n \"languages\",\n \"published\",\n \"title\",\n \"version\",\n \"comment\",\n \"wideContainer\",\n] as const);\n\nexport default testIds;\n","import { Text, Tooltip } from \"@chakra-ui/react\";\nimport { formatDistanceToNowStrict } from \"date-fns\";\nimport { FunctionComponent, ReactChild } from \"react\";\nimport { useStats } from \"../../hooks/useStats\";\nimport { getSearchPath } from \"../../util/url\";\nimport { NavLink } from \"../NavLink\";\nimport { Time } from \"../Time\";\nimport { usePackageCard } from \"./PackageCard\";\nimport testIds from \"./testIds\";\n\ninterface DetailProps {\n \"data-testid\": string;\n tooltip?: string;\n value: ReactChild;\n}\n\nconst Detail: FunctionComponent<DetailProps> = ({\n \"data-testid\": dataTestid,\n tooltip,\n value,\n}) => (\n <Tooltip hasArrow isDisabled={!tooltip} label={tooltip} placement=\"left\">\n {/* zIndex required to allow tooltip to display due to card link overlay */}\n <Text data-testid={dataTestid} fontSize=\"xs\" zIndex={1}>\n {value}\n </Text>\n </Tooltip>\n);\n\nexport const Details: FunctionComponent = () => {\n const {\n author,\n metadata: { date },\n name,\n } = usePackageCard();\n\n const { data } = useStats();\n const downloads: number | undefined = data?.packages?.[name]?.downloads?.npm;\n\n const authorName = typeof author === \"string\" ? author : author.name;\n const publishDate = new Date(date);\n\n return (\n <>\n {downloads !== undefined && (\n <Detail\n data-testid={testIds.downloads}\n tooltip=\"Download numbers are periodically sourced from the npm registry\"\n value={`${downloads.toLocaleString()} weekly downloads`}\n />\n )}\n <Detail\n data-testid={testIds.published}\n value={\n <Time\n date={publishDate}\n fontSize=\"xs\"\n formattedDate={formatDistanceToNowStrict(publishDate, {\n addSuffix: true,\n })}\n />\n }\n />\n <Detail\n data-testid={testIds.author}\n value={\n <>\n By{\" \"}\n <NavLink\n color=\"blue.500\"\n to={getSearchPath({\n query: authorName,\n })}\n >\n {authorName}\n </NavLink>\n </>\n }\n />\n </>\n );\n};\n","import { Text } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport testIds from \"./testIds\";\n\nexport const EditorsNote: FunctionComponent<{ comment?: string }> = ({\n comment,\n}) => {\n return (\n <Text\n data-testid={testIds.comment}\n fontSize=\"md\"\n lineHeight=\"tall\"\n noOfLines={4}\n >\n <Text as=\"span\" color=\"blue.500\" fontWeight=\"bold\">\n Editor&apos;s note:{\" \"}\n </Text>\n {comment}\n </Text>\n );\n};\n","import {\n Flex,\n Heading as ChakraHeading,\n LinkOverlay,\n Text,\n} from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { eventName } from \"../../contexts/Analytics\";\nimport { useLanguage } from \"../../hooks/useLanguage\";\nimport { getPackagePath } from \"../../util/url\";\nimport { CDKTypeBadge } from \"../CDKType\";\nimport { EditorsNote } from \"./EditorsNote\";\nimport { usePackageCard } from \"./PackageCard\";\nimport testIds from \"./testIds\";\n\nexport const Heading: FunctionComponent = () => {\n const [currentLanguage] = useLanguage();\n const {\n dataEvent,\n description,\n comment,\n metadata: { constructFramework },\n name,\n version,\n } = usePackageCard();\n\n const cdkType = constructFramework?.name;\n const cdkVersion = constructFramework?.majorVersion;\n\n return (\n <>\n <LinkOverlay\n as={Link}\n data-event={\n dataEvent ? eventName(dataEvent, \"Package Card\", name) : undefined\n }\n to={getPackagePath({\n name,\n version,\n language: currentLanguage,\n })}\n >\n <Flex align=\"center\">\n <CDKTypeBadge majorVersion={cdkVersion} mr={2} name={cdkType} />\n <ChakraHeading\n as=\"h3\"\n color=\"blue.800\"\n data-testid={testIds.title}\n fontSize=\"md\"\n fontWeight=\"bold\"\n wordBreak=\"normal\"\n >\n {name}\n </ChakraHeading>\n </Flex>\n </LinkOverlay>\n {comment ? (\n <EditorsNote comment={comment} />\n ) : (\n <Text\n color=\"blue.800\"\n data-testid={testIds.description}\n fontSize=\"md\"\n lineHeight=\"tall\"\n noOfLines={4}\n >\n {description || \"No description available.\"}\n </Text>\n )}\n </>\n );\n};\n","import { Box } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { highlightsFrom } from \"../../util/package\";\nimport { Highlight as HighlightComponent } from \"../Highlight\";\nimport { usePackageCard } from \"./PackageCard\";\n\nexport const Highlight: FunctionComponent = () => {\n const { packageTags = [] } = usePackageCard()?.metadata ?? {};\n const [highlight] = highlightsFrom(packageTags);\n\n if (!highlight) return null;\n\n return (\n <Box fontSize=\"xs\">\n <HighlightComponent {...highlight} />\n </Box>\n );\n};\n","import type { FunctionComponent } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport {\n Language,\n LANGUAGES,\n LANGUAGE_RENDER_MAP,\n TEMP_SUPPORTED_LANGUAGES,\n} from \"../../constants/languages\";\nimport { getPackagePath } from \"../../util/url\";\nimport { LanguageSupportTooltip } from \"../LanguageSupportTooltip\";\n\nconst sizes = {\n sm: 5,\n md: 6,\n lg: 8,\n};\n\nexport interface PackageLanguagesProps {\n isRounded?: boolean;\n languages?: Partial<Record<Language, unknown>>;\n name: string;\n size?: \"sm\" | \"md\" | \"lg\";\n version: string;\n}\n\nexport const PackageLanguages: FunctionComponent<PackageLanguagesProps> = ({\n isRounded = false,\n languages,\n name: packageName,\n size = \"md\",\n version,\n}) => {\n const targets = Object.keys(languages ?? {}) as Language[];\n return (\n <>\n {Object.entries(LANGUAGE_RENDER_MAP)\n // Ensure entries are always sorted in a stable way\n .sort(\n ([left], [right]) =>\n LANGUAGES.indexOf(left as Language) -\n LANGUAGES.indexOf(right as Language)\n )\n .map(([lang, info]) => {\n const language = lang as Language;\n\n const isSupportedByLibrary =\n language === Language.TypeScript || targets.includes(language);\n\n const isSupportedByConstructHub =\n language === Language.TypeScript || // TypeScript is always supported\n // Otherwise, the language must be supported by ConstructHub\n TEMP_SUPPORTED_LANGUAGES.has(language);\n\n if (!isSupportedByLibrary) return null;\n\n const { name, icon: Icon } = info;\n\n const icon = (\n <Icon\n aria-label={`Supports ${name}`}\n borderRadius={isRounded ? \"50%\" : 0}\n h={sizes[size]}\n opacity={isSupportedByConstructHub ? 1 : 0.2}\n w={sizes[size]}\n />\n );\n\n return (\n <LanguageSupportTooltip key={language} language={language}>\n {isSupportedByConstructHub ? (\n <Link\n aria-label={`View package docs for ${language}`}\n to={getPackagePath({ name: packageName, version, language })}\n >\n {icon}\n </Link>\n ) : (\n icon\n )}\n </LanguageSupportTooltip>\n );\n })}\n </>\n );\n};\n","import type { FunctionComponent } from \"react\";\nimport { PackageLanguages } from \"../PackageLanguages\";\nimport { usePackageCard } from \"./PackageCard\";\n\nexport const Languages: FunctionComponent = () => {\n const pkg = usePackageCard();\n return <PackageLanguages {...pkg} size=\"sm\" />;\n};\n","import { FunctionComponent } from \"react\";\nimport { tagObjectsFrom } from \"../../util/package\";\nimport { PackageTag } from \"../PackageTag\";\nimport { usePackageCard } from \"./PackageCard\";\n\nexport const Tags: FunctionComponent = () => {\n const {\n keywords = [],\n metadata: { packageTags = [] },\n } = usePackageCard();\n\n const tags = tagObjectsFrom({\n packageTags,\n keywords,\n });\n\n return (\n <>\n {tags.slice(0, 10).map(({ id, keyword: { label, color } = {} }) => (\n <PackageTag key={id} value={id} variant={color}>\n {label}\n </PackageTag>\n ))}\n </>\n );\n};\n","import { Flex, Grid, LinkBox, Stack } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Details } from \"./Details\";\nimport { Heading } from \"./Heading\";\nimport { Highlight } from \"./Highlight\";\nimport { Languages } from \"./Languages\";\nimport { Tags } from \"./Tags\";\nimport testIds from \"./testIds\";\n\nexport const WideCard: FunctionComponent = () => {\n return (\n <LinkBox\n _hover={{\n \"> article\": {\n bg: \"gray.50\",\n },\n }}\n >\n <Grid\n as=\"article\"\n bg=\"white\"\n border=\"base\"\n borderRadius=\"sm\"\n boxShadow=\"base\"\n color=\"blue.800\"\n data-testid={testIds.wideContainer}\n h=\"full\"\n minH=\"12.5rem\"\n templateColumns={{ base: \"1fr\", lg: \"1fr 14rem\" }}\n w=\"full\"\n >\n {/* Top / Left side of card */}\n <Flex\n direction=\"column\"\n justify=\"space-between\"\n overflow=\"hidden\"\n p={5}\n sx={{ gap: \"0.5rem\" }}\n >\n <Stack spacing={3}>\n <Heading />\n </Stack>\n\n <Flex align=\"center\" sx={{ gap: \"0.5rem\" }} wrap=\"wrap\">\n <Tags />\n </Flex>\n </Flex>\n\n {/* Bottom / Right side of card */}\n <Flex\n align={{ base: \"end\", lg: \"initial\" }}\n borderLeft={{ lg: \"base\" }}\n borderTop={{ base: \"base\", lg: \"none\" }}\n direction={{ base: \"row\", lg: \"column\" }}\n justify=\"space-between\"\n p={5}\n sx={{ gap: \"0.5rem\" }}\n >\n <Stack spacing={1}>\n <Highlight />\n <Stack spacing={1}>\n <Details />\n </Stack>\n </Stack>\n\n <Stack data-testid={testIds.languages} direction=\"row\" spacing={2}>\n <Languages />\n </Stack>\n </Flex>\n </Grid>\n </LinkBox>\n );\n};\n","import { createContext, FunctionComponent, useContext } from \"react\";\nimport { CatalogPackage } from \"../../api/package/packages\";\nimport { PackageCardType } from \"./constants\";\nimport { WideCard } from \"./WideCard\";\n\nexport interface PackageCardProps {\n \"data-event\"?: string;\n pkg: CatalogPackage;\n variant?: PackageCardType;\n}\n\ninterface PackageCardState extends CatalogPackage {\n comment?: string;\n dataEvent?: string;\n}\n\nconst PackageCardContext = createContext<PackageCardState | null>(null);\n\nexport const usePackageCard = () => useContext(PackageCardContext)!;\n\nexport const PackageCard: FunctionComponent<PackageCardProps> = ({\n \"data-event\": dataEvent,\n pkg,\n variant = PackageCardType.Wide,\n}) => {\n return (\n <PackageCardContext.Provider value={{ ...pkg, dataEvent }}>\n {variant === PackageCardType.Wide && <WideCard />}\n </PackageCardContext.Provider>\n );\n};\n","import { Tag, TagLabel, TagProps } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { getSearchPath } from \"../../util/url\";\nimport { NavLink } from \"../NavLink\";\n\nexport interface PackageTagProps extends TagProps {\n value: string;\n label?: string;\n zIndex?: string | number;\n}\n\nexport const PackageTag: FunctionComponent<PackageTagProps> = ({\n children,\n value,\n label = value,\n zIndex,\n ...tagProps\n}) => {\n return (\n <NavLink\n aria-label={`Tag: ${label}`}\n to={getSearchPath({ keywords: [value] })}\n zIndex={zIndex}\n >\n <Tag\n _hover={{\n textDecoration: \"underline\",\n }}\n {...tagProps}\n >\n <TagLabel>{children}</TagLabel>\n </Tag>\n </NavLink>\n );\n};\n","export const pageInfo = {\n contribute: {\n event: {\n name: \"Contribute Load\",\n },\n },\n home: {\n event: {\n name: \"Home Load\",\n },\n },\n faq: {\n event: {\n name: \"Frequently Asked Questions Load\",\n },\n },\n packageProfile: {\n event: {\n name: \"Package Profile Load\",\n },\n },\n search: {\n event: {\n name: \"Search Load\",\n },\n },\n siteTerms: {\n event: {\n name: \"Site Terms Load\",\n },\n },\n notFound: {\n page: {\n pageType: \"errorPage\",\n },\n event: {\n name: \"404 Page Load\",\n },\n },\n} as const;\n","import { FunctionComponent, useEffect } from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport { pageInfo } from \"../../constants/pageInfo\";\nimport { usePageView } from \"../../contexts/Analytics\";\n\nexport interface PageProps {\n pageName: keyof typeof pageInfo;\n meta: {\n suffix?: boolean;\n title: string;\n description: string;\n };\n}\n\n// Should be the same as the \"real\" CSP, except most things come from HTTP\n// instead of HTTPS (because it is protocol-relative, and the dev site is\n// served over plain HTTP).\nconst csp = [\n \"default-src 'self' 'unsafe-inline' http://*.awsstatic.com;\",\n \"connect-src 'self' https://*.shortbread.aws.dev http://*.shortbread.aws.dev http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;\",\n \"frame-src http://aws.demdex.net http://dpm.demdex.net;\",\n \"img-src 'self' https://* http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;\",\n \"object-src 'none';\",\n \"style-src 'self' 'unsafe-inline';\",\n].join(\" \");\n\nexport const Page: FunctionComponent<PageProps> = ({\n children,\n meta,\n pageName,\n}) => {\n const trackPageView = usePageView(pageInfo[pageName]);\n\n useEffect(() => {\n trackPageView();\n }, [trackPageView]);\n\n const { suffix = true, title, description } = meta;\n const formattedTitle = suffix ? `${title} - Construct Hub` : title;\n\n return (\n <>\n <Helmet>\n {process.env.NODE_ENV === \"development\" && (\n <meta content={csp} httpEquiv=\"Content-Security-Policy\" />\n )}\n\n <meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />\n <meta charSet=\"utf-8\" />\n\n <title>{formattedTitle}</title>\n <meta content={formattedTitle} property=\"og:title\" />\n <meta content={formattedTitle} name=\"twitter:title\" />\n <meta content=\"summary\" name=\"twitter:card\" />\n\n <meta content={description} name=\"description\" />\n <meta content={description} property=\"og:description\" />\n <meta content={description} name=\"twitter:description\" />\n </Helmet>\n {children}\n </>\n );\n};\n","import { Box, BoxProps, forwardRef } from \"@chakra-ui/react\";\nimport { format } from \"date-fns\";\n\nexport type TimeOptions = {\n date: Date;\n format?: string;\n formattedDate?: string;\n};\n\nexport interface TimeProps extends BoxProps, TimeOptions {}\n\nexport const Time = forwardRef<TimeProps, \"time\">(\n ({ date, format: formatString, formattedDate, ...boxProps }, ref) => {\n return (\n <Box as=\"time\" dateTime={date.toISOString()} ref={ref} {...boxProps}>\n {formattedDate ?? format(date, formatString ?? \"\")}\n </Box>\n );\n }\n);\n\nTime.displayName = \"Time\";\n","import type { Config } from \"../../api/config\";\nimport { useConfig } from \"../../contexts/Config\";\n\nexport const useConfigValue = <T extends keyof Config>(key: T) => {\n const { data } = useConfig();\n return (data ?? {})[key];\n};\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useLocation, useHistory } from \"react-router-dom\";\nimport { Language, TEMP_SUPPORTED_LANGUAGES } from \"../../constants/languages\";\nimport { QUERY_PARAMS } from \"../../constants/url\";\nimport { useQueryParams } from \"../../hooks/useQueryParams\";\n\n// Only supported language atm\nconst defaultLang = Language.TypeScript;\n\nconst LOCAL_KEY = \"preferred-language\";\n\nconst isValidLang = (lang?: string | Language): lang is Language =>\n lang != null && TEMP_SUPPORTED_LANGUAGES.has(lang as Language);\n\nconst getInitialLang = (langFromParams: string | Language): Language => {\n // First, use language from query params in url\n if (isValidLang(langFromParams)) {\n return langFromParams;\n }\n\n // Next check for one stored in localStorage\n try {\n const storedLang = (localStorage.getItem(LOCAL_KEY) ?? \"\") as Language;\n if (isValidLang(storedLang)) return storedLang;\n } catch {\n // Do nothing, we just don't want to crash if localStorage access is blocked.\n }\n\n // Otherwise fallback to a default\n return defaultLang;\n};\n\nexport interface UseLanguageOptions {\n /**\n * Syncs the preferred language to a query param in URL\n */\n updateUrl?: boolean;\n /**\n * Saves the selected language to localStorage on select\n */\n updateSaved?: boolean;\n}\n\nexport const useLanguage = (options: UseLanguageOptions = {}) => {\n const { updateUrl, updateSaved } = options;\n const { pathname, hash } = useLocation();\n const { replace } = useHistory();\n const params = useQueryParams();\n const langFromParams = params.get(QUERY_PARAMS.LANGUAGE) as Language;\n\n // Passed as function to guarantee it runs on hook mount\n const [language, setLanguage] = useState<Language>(() =>\n getInitialLang(langFromParams)\n );\n\n // State subscribes to query param changes\n useEffect(() => {\n if (isValidLang(langFromParams) && langFromParams !== language) {\n setLanguage(langFromParams);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [langFromParams]);\n\n // Syncs language changes to URL if updateUrl = true\n useEffect(() => {\n if (langFromParams !== language && updateUrl) {\n params.set(QUERY_PARAMS.LANGUAGE, language);\n replace({ pathname, hash, search: params.toString() });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [language, updateUrl]);\n\n const update = useCallback(\n (val: Language) => {\n setLanguage(val);\n\n if (updateSaved) {\n try {\n localStorage.setItem(LOCAL_KEY, val);\n } catch {\n // OK to fail silently\n }\n }\n },\n [updateSaved]\n );\n\n return useMemo(() => [language, update] as const, [language, update]);\n};\n","import { useMemo } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\nexport const useQueryParams = () => {\n const { search } = useLocation();\n\n return useMemo(() => new URLSearchParams(search), [search]);\n};\n","import { PackageHighlight, PackageTagConfig } from \"../api/config\";\nimport { KEYWORD_IGNORE_LIST } from \"../constants/keywords\";\n\nexport interface TagObject extends PackageTagConfig {}\n\n/**\n * Reduces package tags to only return highlight tags\n */\nexport const highlightsFrom = (packageTags?: PackageTagConfig[]) => {\n if (!packageTags || packageTags.length < 1) return [];\n\n return packageTags.reduce(\n (accum: PackageHighlight[], tag: PackageTagConfig): PackageHighlight[] => {\n if (tag.highlight) {\n return [...accum, tag.highlight];\n }\n\n return accum;\n },\n []\n );\n};\n\n/**\n * Maps packageTags to an array of TagObjects, which can be rendered by the PackageTags Component\n */\nexport const mapPackageTags = (\n packageTags?: PackageTagConfig[]\n): TagObject[] => {\n return (packageTags ?? [])\n .filter((tag) => {\n return Boolean(tag.keyword?.label);\n })\n .map((tag) => ({\n ...tag,\n id: tag.keyword?.label!,\n }));\n};\n\n/**\n * Maps keywords to an array of TagObjects, which can be rendered by the PackageTags component\n */\nexport const mapPackageKeywords = (keywords?: string[]): TagObject[] => {\n if (!keywords || keywords.length < 1) return [];\n\n return keywords\n .filter((label) => Boolean(label) && !KEYWORD_IGNORE_LIST.has(label))\n .map((label) => ({\n id: label,\n keyword: {\n label,\n },\n }));\n};\n\n/**\n * Maps packageTags and keywords to a list of TagObjects, using mapPackageTags and mapPackageKeywords\n */\nexport const tagObjectsFrom = ({\n packageTags,\n keywords,\n}: {\n packageTags?: PackageTagConfig[];\n keywords?: string[];\n}): TagObject[] => {\n const tagObjects = new Array<TagObject>();\n const tagLabels = new Set<string>();\n\n for (const tag of [\n ...mapPackageTags(packageTags),\n ...mapPackageKeywords(keywords),\n ]) {\n const label = tag.keyword!.label.toLowerCase();\n if (!tagLabels.has(label)) {\n tagObjects.push(tag);\n tagLabels.add(label);\n }\n }\n\n return tagObjects;\n};\n"],"names":["Highlight","label","color","icon","align","direction","spacing","alt","src","w","fontWeight","LanguageSupportTooltip","children","language","isSupported","TEMP_SUPPORTED_LANGUAGES","langName","LANGUAGE_NAME_MAP","message","hasArrow","placement","PackageCardType","createTestIds","Detail","dataTestid","tooltip","value","isDisabled","fontSize","zIndex","Details","usePackageCard","author","date","metadata","name","data","useStats","downloads","packages","npm","authorName","publishDate","Date","undefined","testIds","toLocaleString","Time","formattedDate","formatDistanceToNowStrict","addSuffix","NavLink","to","getSearchPath","query","EditorsNote","comment","lineHeight","noOfLines","as","Heading","useLanguage","currentLanguage","dataEvent","description","constructFramework","version","cdkType","cdkVersion","majorVersion","Link","eventName","getPackagePath","CDKType","mr","wordBreak","packageTags","highlightsFrom","highlight","sizes","sm","md","lg","PackageLanguages","isRounded","languages","packageName","size","targets","Object","keys","entries","LANGUAGE_RENDER_MAP","sort","left","right","LANGUAGES","map","lang","info","isSupportedByLibrary","Language","includes","isSupportedByConstructHub","Icon","borderRadius","h","opacity","Languages","pkg","Tags","keywords","tags","tagObjectsFrom","slice","id","keyword","PackageTag","variant","WideCard","_hover","bg","border","boxShadow","minH","templateColumns","base","justify","overflow","p","sx","gap","wrap","borderLeft","borderTop","PackageCardContext","createContext","useContext","PackageCard","Wide","Provider","tagProps","textDecoration","pageInfo","contribute","event","home","faq","packageProfile","search","siteTerms","notFound","page","pageType","Page","join","meta","pageName","trackPageView","usePageView","useEffect","suffix","title","formattedTitle","Helmet","process","content","charSet","property","forwardRef","ref","formatString","format","boxProps","dateTime","toISOString","displayName","useConfigValue","key","useConfig","defaultLang","LOCAL_KEY","isValidLang","getInitialLang","langFromParams","storedLang","localStorage","getItem","options","updateUrl","updateSaved","useLocation","pathname","hash","useHistory","replace","params","useQueryParams","get","QUERY_PARAMS","useState","setLanguage","set","toString","update","useCallback","val","setItem","useMemo","URLSearchParams","length","reduce","accum","tag","tagObjects","Array","tagLabels","Set","filter","Boolean","mapPackageTags","KEYWORD_IGNORE_LIST","mapPackageKeywords","toLowerCase","has","push","add"],"sourceRoot":""}
1
+ {"version":3,"file":"static/js/283.a041037a.chunk.js","mappings":"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","sources":["components/Highlight/Highlight.tsx","components/LanguageSupportTooltip/LanguageSupportTooltip.tsx","components/PackageCard/constants.ts","components/PackageCard/testIds.ts","components/PackageCard/Details.tsx","components/PackageCard/EditorsNote.tsx","components/PackageCard/Heading.tsx","components/PackageCard/Highlight.tsx","components/PackageLanguages/PackageLanguages.tsx","components/PackageCard/Languages.tsx","components/PackageCard/Tags.tsx","components/PackageCard/WideCard.tsx","components/PackageCard/PackageCard.tsx","components/PackageTag/PackageTag.tsx","constants/pageInfo.ts","components/Page/Page.tsx","components/Time/Time.tsx","hooks/useConfigValue/useConfigValue.ts","hooks/useLanguage/useLanguage.ts","hooks/useQueryParams/useQueryParams.ts","util/package.ts"],"sourcesContent":["import { Stack, Image, Text } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\n\ninterface HighlightProps {\n label: string;\n color?: string;\n icon?: string;\n}\n\nexport const Highlight: FunctionComponent<HighlightProps> = ({\n label,\n color,\n icon,\n}: HighlightProps) => {\n return (\n <Stack align=\"center\" direction=\"row\" spacing={2}>\n <Image alt={`${label} icon`} src={icon} w={4} />\n <Text color={color} fontWeight=\"bold\">\n {label}\n </Text>\n </Stack>\n );\n};\n","import { Tooltip } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport {\n Language,\n LANGUAGE_NAME_MAP,\n TEMP_SUPPORTED_LANGUAGES,\n} from \"../../constants/languages\";\n\nexport interface LanguageSupportTooltipProps {\n language: Language;\n}\n\nexport const LanguageSupportTooltip: FunctionComponent<\n LanguageSupportTooltipProps\n> = ({ children, language }) => {\n const isSupported = TEMP_SUPPORTED_LANGUAGES.has(language);\n const langName = LANGUAGE_NAME_MAP[language];\n\n const message = isSupported\n ? `Click to view documentation in ${langName}`\n : `Documentation support for ${langName} is coming soon!`;\n\n return (\n <Tooltip hasArrow label={message} placement=\"top-start\">\n <span>{children}</span>\n </Tooltip>\n );\n};\n","export enum PackageCardType {\n Wide = \"wide\",\n}\n","import { createTestIds } from \"../../util/createTestIds\";\n\nconst testIds = createTestIds(\"packageCard\", [\n \"author\",\n \"description\",\n \"downloads\",\n \"languages\",\n \"published\",\n \"title\",\n \"version\",\n \"comment\",\n \"wideContainer\",\n] as const);\n\nexport default testIds;\n","import { Text, Tooltip } from \"@chakra-ui/react\";\nimport { formatDistanceToNowStrict } from \"date-fns\";\nimport { FunctionComponent, ReactChild } from \"react\";\nimport { useStats } from \"../../hooks/useStats\";\nimport { getSearchPath } from \"../../util/url\";\nimport { NavLink } from \"../NavLink\";\nimport { Time } from \"../Time\";\nimport { usePackageCard } from \"./PackageCard\";\nimport testIds from \"./testIds\";\n\ninterface DetailProps {\n \"data-testid\": string;\n tooltip?: string;\n value: ReactChild;\n}\n\nconst Detail: FunctionComponent<DetailProps> = ({\n \"data-testid\": dataTestid,\n tooltip,\n value,\n}) => (\n <Tooltip hasArrow isDisabled={!tooltip} label={tooltip} placement=\"left\">\n {/* zIndex required to allow tooltip to display due to card link overlay */}\n <Text data-testid={dataTestid} fontSize=\"xs\" zIndex={1}>\n {value}\n </Text>\n </Tooltip>\n);\n\nexport const Details: FunctionComponent = () => {\n const {\n author,\n metadata: { date },\n name,\n } = usePackageCard();\n\n const { data } = useStats();\n const downloads: number | undefined = data?.packages?.[name]?.downloads?.npm;\n\n const authorName = typeof author === \"string\" ? author : author.name;\n const publishDate = new Date(date);\n\n return (\n <>\n {downloads !== undefined && (\n <Detail\n data-testid={testIds.downloads}\n tooltip=\"Download numbers are periodically sourced from the npm registry\"\n value={`${downloads.toLocaleString()} weekly downloads`}\n />\n )}\n <Detail\n data-testid={testIds.published}\n value={\n <Time\n date={publishDate}\n fontSize=\"xs\"\n formattedDate={formatDistanceToNowStrict(publishDate, {\n addSuffix: true,\n })}\n />\n }\n />\n <Detail\n data-testid={testIds.author}\n value={\n <>\n By{\" \"}\n <NavLink\n color=\"blue.500\"\n to={getSearchPath({\n query: authorName,\n })}\n >\n {authorName}\n </NavLink>\n </>\n }\n />\n </>\n );\n};\n","import { Text } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport testIds from \"./testIds\";\n\nexport const EditorsNote: FunctionComponent<{ comment?: string }> = ({\n comment,\n}) => {\n return (\n <Text\n data-testid={testIds.comment}\n fontSize=\"md\"\n lineHeight=\"tall\"\n noOfLines={4}\n >\n <Text as=\"span\" color=\"blue.500\" fontWeight=\"bold\">\n Editor&apos;s note:{\" \"}\n </Text>\n {comment}\n </Text>\n );\n};\n","import {\n Flex,\n Heading as ChakraHeading,\n LinkOverlay,\n Text,\n} from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { eventName } from \"../../contexts/Analytics\";\nimport { useLanguage } from \"../../hooks/useLanguage\";\nimport { getPackagePath } from \"../../util/url\";\nimport { CDKTypeBadge } from \"../CDKType\";\nimport { EditorsNote } from \"./EditorsNote\";\nimport { usePackageCard } from \"./PackageCard\";\nimport testIds from \"./testIds\";\n\nexport const Heading: FunctionComponent = () => {\n const [currentLanguage] = useLanguage();\n const {\n dataEvent,\n description,\n comment,\n metadata: { constructFramework },\n name,\n version,\n } = usePackageCard();\n\n const cdkType = constructFramework?.name;\n const cdkVersion = constructFramework?.majorVersion;\n\n return (\n <>\n <LinkOverlay\n as={Link}\n data-event={\n dataEvent ? eventName(dataEvent, \"Package Card\", name) : undefined\n }\n to={getPackagePath({\n name,\n version,\n language: currentLanguage,\n })}\n >\n <Flex align=\"center\">\n <CDKTypeBadge majorVersion={cdkVersion} mr={2} name={cdkType} />\n <ChakraHeading\n as=\"h3\"\n color=\"blue.800\"\n data-testid={testIds.title}\n fontSize=\"md\"\n fontWeight=\"bold\"\n wordBreak=\"normal\"\n >\n {name}\n </ChakraHeading>\n </Flex>\n </LinkOverlay>\n {comment ? (\n <EditorsNote comment={comment} />\n ) : (\n <Text\n color=\"blue.800\"\n data-testid={testIds.description}\n fontSize=\"md\"\n lineHeight=\"tall\"\n noOfLines={4}\n >\n {description || \"No description available.\"}\n </Text>\n )}\n </>\n );\n};\n","import { Box } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { highlightsFrom } from \"../../util/package\";\nimport { Highlight as HighlightComponent } from \"../Highlight\";\nimport { usePackageCard } from \"./PackageCard\";\n\nexport const Highlight: FunctionComponent = () => {\n const { packageTags = [] } = usePackageCard()?.metadata ?? {};\n const [highlight] = highlightsFrom(packageTags);\n\n if (!highlight) return null;\n\n return (\n <Box fontSize=\"xs\">\n <HighlightComponent {...highlight} />\n </Box>\n );\n};\n","import type { FunctionComponent } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport {\n Language,\n LANGUAGES,\n LANGUAGE_RENDER_MAP,\n TEMP_SUPPORTED_LANGUAGES,\n} from \"../../constants/languages\";\nimport { getPackagePath } from \"../../util/url\";\nimport { LanguageSupportTooltip } from \"../LanguageSupportTooltip\";\n\nconst sizes = {\n sm: 5,\n md: 6,\n lg: 8,\n};\n\nexport interface PackageLanguagesProps {\n isRounded?: boolean;\n languages?: Partial<Record<Language, unknown>>;\n name: string;\n size?: \"sm\" | \"md\" | \"lg\";\n version: string;\n}\n\nexport const PackageLanguages: FunctionComponent<PackageLanguagesProps> = ({\n isRounded = false,\n languages,\n name: packageName,\n size = \"md\",\n version,\n}) => {\n const targets = Object.keys(languages ?? {}) as Language[];\n return (\n <>\n {Object.entries(LANGUAGE_RENDER_MAP)\n // Ensure entries are always sorted in a stable way\n .sort(\n ([left], [right]) =>\n LANGUAGES.indexOf(left as Language) -\n LANGUAGES.indexOf(right as Language)\n )\n .map(([lang, info]) => {\n const language = lang as Language;\n\n const isSupportedByLibrary =\n language === Language.TypeScript || targets.includes(language);\n\n const isSupportedByConstructHub =\n language === Language.TypeScript || // TypeScript is always supported\n // Otherwise, the language must be supported by ConstructHub\n TEMP_SUPPORTED_LANGUAGES.has(language);\n\n if (!isSupportedByLibrary) return null;\n\n const { name, icon: Icon } = info;\n\n const icon = (\n <Icon\n aria-label={`Supports ${name}`}\n borderRadius={isRounded ? \"50%\" : 0}\n h={sizes[size]}\n opacity={isSupportedByConstructHub ? 1 : 0.2}\n w={sizes[size]}\n />\n );\n\n return (\n <LanguageSupportTooltip key={language} language={language}>\n {isSupportedByConstructHub ? (\n <Link\n aria-label={`View package docs for ${language}`}\n to={getPackagePath({ name: packageName, version, language })}\n >\n {icon}\n </Link>\n ) : (\n icon\n )}\n </LanguageSupportTooltip>\n );\n })}\n </>\n );\n};\n","import type { FunctionComponent } from \"react\";\nimport { PackageLanguages } from \"../PackageLanguages\";\nimport { usePackageCard } from \"./PackageCard\";\n\nexport const Languages: FunctionComponent = () => {\n const pkg = usePackageCard();\n return <PackageLanguages {...pkg} size=\"sm\" />;\n};\n","import { FunctionComponent } from \"react\";\nimport { tagObjectsFrom } from \"../../util/package\";\nimport { PackageTag } from \"../PackageTag\";\nimport { usePackageCard } from \"./PackageCard\";\n\nexport const Tags: FunctionComponent = () => {\n const {\n keywords = [],\n metadata: { packageTags = [] },\n } = usePackageCard();\n\n const tags = tagObjectsFrom({\n packageTags,\n keywords,\n });\n\n return (\n <>\n {tags.slice(0, 10).map(({ id, keyword: { label, color } = {} }) => (\n <PackageTag key={id} value={id} variant={color}>\n {label}\n </PackageTag>\n ))}\n </>\n );\n};\n","import { Flex, Grid, LinkBox, Stack } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Details } from \"./Details\";\nimport { Heading } from \"./Heading\";\nimport { Highlight } from \"./Highlight\";\nimport { Languages } from \"./Languages\";\nimport { Tags } from \"./Tags\";\nimport testIds from \"./testIds\";\n\nexport const WideCard: FunctionComponent = () => {\n return (\n <LinkBox\n _hover={{\n \"> article\": {\n bg: \"gray.50\",\n },\n }}\n >\n <Grid\n as=\"article\"\n bg=\"white\"\n border=\"base\"\n borderRadius=\"sm\"\n boxShadow=\"base\"\n color=\"blue.800\"\n data-testid={testIds.wideContainer}\n h=\"full\"\n minH=\"12.5rem\"\n templateColumns={{ base: \"1fr\", lg: \"1fr 14rem\" }}\n w=\"full\"\n >\n {/* Top / Left side of card */}\n <Flex\n direction=\"column\"\n justify=\"space-between\"\n overflow=\"hidden\"\n p={5}\n sx={{ gap: \"0.5rem\" }}\n >\n <Stack spacing={3}>\n <Heading />\n </Stack>\n\n <Flex align=\"center\" sx={{ gap: \"0.5rem\" }} wrap=\"wrap\">\n <Tags />\n </Flex>\n </Flex>\n\n {/* Bottom / Right side of card */}\n <Flex\n align={{ base: \"end\", lg: \"initial\" }}\n borderLeft={{ lg: \"base\" }}\n borderTop={{ base: \"base\", lg: \"none\" }}\n direction={{ base: \"row\", lg: \"column\" }}\n justify=\"space-between\"\n p={5}\n sx={{ gap: \"0.5rem\" }}\n >\n <Stack spacing={1}>\n <Highlight />\n <Stack spacing={1}>\n <Details />\n </Stack>\n </Stack>\n\n <Stack data-testid={testIds.languages} direction=\"row\" spacing={2}>\n <Languages />\n </Stack>\n </Flex>\n </Grid>\n </LinkBox>\n );\n};\n","import { createContext, FunctionComponent, useContext } from \"react\";\nimport { CatalogPackage } from \"../../api/package/packages\";\nimport { PackageCardType } from \"./constants\";\nimport { WideCard } from \"./WideCard\";\n\nexport interface PackageCardProps {\n \"data-event\"?: string;\n pkg: CatalogPackage;\n variant?: PackageCardType;\n}\n\ninterface PackageCardState extends CatalogPackage {\n comment?: string;\n dataEvent?: string;\n}\n\nconst PackageCardContext = createContext<PackageCardState | null>(null);\n\nexport const usePackageCard = () => useContext(PackageCardContext)!;\n\nexport const PackageCard: FunctionComponent<PackageCardProps> = ({\n \"data-event\": dataEvent,\n pkg,\n variant = PackageCardType.Wide,\n}) => {\n return (\n <PackageCardContext.Provider value={{ ...pkg, dataEvent }}>\n {variant === PackageCardType.Wide && <WideCard />}\n </PackageCardContext.Provider>\n );\n};\n","import { Tag, TagLabel, TagProps } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { getSearchPath } from \"../../util/url\";\nimport { NavLink } from \"../NavLink\";\n\nexport interface PackageTagProps extends TagProps {\n value: string;\n label?: string;\n zIndex?: string | number;\n}\n\nexport const PackageTag: FunctionComponent<PackageTagProps> = ({\n children,\n value,\n label = value,\n zIndex,\n ...tagProps\n}) => {\n return (\n <NavLink\n aria-label={`Tag: ${label}`}\n to={getSearchPath({ keywords: [value] })}\n zIndex={zIndex}\n >\n <Tag\n _hover={{\n textDecoration: \"underline\",\n }}\n {...tagProps}\n >\n <TagLabel>{children}</TagLabel>\n </Tag>\n </NavLink>\n );\n};\n","export const pageInfo = {\n contribute: {\n event: {\n name: \"Contribute Load\",\n },\n },\n home: {\n event: {\n name: \"Home Load\",\n },\n },\n faq: {\n event: {\n name: \"Frequently Asked Questions Load\",\n },\n },\n packageProfile: {\n event: {\n name: \"Package Profile Load\",\n },\n },\n search: {\n event: {\n name: \"Search Load\",\n },\n },\n siteTerms: {\n event: {\n name: \"Site Terms Load\",\n },\n },\n notFound: {\n page: {\n pageType: \"errorPage\",\n },\n event: {\n name: \"404 Page Load\",\n },\n },\n} as const;\n","import { FunctionComponent, useEffect } from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport { pageInfo } from \"../../constants/pageInfo\";\nimport { usePageView } from \"../../contexts/Analytics\";\n\nexport interface PageProps {\n pageName: keyof typeof pageInfo;\n meta: {\n suffix?: boolean;\n title: string;\n description: string;\n };\n}\n\n// Should be the same as the \"real\" CSP, except most things come from HTTP\n// instead of HTTPS (because it is protocol-relative, and the dev site is\n// served over plain HTTP).\nconst csp = [\n \"default-src 'self' 'unsafe-inline' http://*.awsstatic.com;\",\n \"connect-src 'self' https://*.shortbread.aws.dev http://*.shortbread.aws.dev http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;\",\n \"frame-src http://aws.demdex.net http://dpm.demdex.net;\",\n \"img-src 'self' https://* http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;\",\n \"object-src 'none';\",\n \"style-src 'self' 'unsafe-inline';\",\n].join(\" \");\n\nexport const Page: FunctionComponent<PageProps> = ({\n children,\n meta,\n pageName,\n}) => {\n const trackPageView = usePageView(pageInfo[pageName]);\n\n useEffect(() => {\n trackPageView();\n }, [trackPageView]);\n\n const { suffix = true, title, description } = meta;\n const formattedTitle = suffix ? `${title} - Construct Hub` : title;\n\n return (\n <>\n <Helmet>\n {process.env.NODE_ENV === \"development\" && (\n <meta content={csp} httpEquiv=\"Content-Security-Policy\" />\n )}\n\n <meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />\n <meta charSet=\"utf-8\" />\n\n <title>{formattedTitle}</title>\n <meta content={formattedTitle} property=\"og:title\" />\n <meta content={formattedTitle} name=\"twitter:title\" />\n <meta content=\"summary\" name=\"twitter:card\" />\n\n <meta content={description} name=\"description\" />\n <meta content={description} property=\"og:description\" />\n <meta content={description} name=\"twitter:description\" />\n </Helmet>\n {children}\n </>\n );\n};\n","import { Box, BoxProps, forwardRef } from \"@chakra-ui/react\";\nimport { format } from \"date-fns\";\n\nexport type TimeOptions = {\n date: Date;\n format?: string;\n formattedDate?: string;\n};\n\nexport interface TimeProps extends BoxProps, TimeOptions {}\n\nexport const Time = forwardRef<TimeProps, \"time\">(\n ({ date, format: formatString, formattedDate, ...boxProps }, ref) => {\n return (\n <Box as=\"time\" dateTime={date.toISOString()} ref={ref} {...boxProps}>\n {formattedDate ?? format(date, formatString ?? \"\")}\n </Box>\n );\n }\n);\n\nTime.displayName = \"Time\";\n","import type { Config } from \"../../api/config\";\nimport { useConfig } from \"../../contexts/Config\";\n\nexport const useConfigValue = <T extends keyof Config>(key: T) => {\n const { data } = useConfig();\n return (data ?? {})[key];\n};\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useLocation, useHistory } from \"react-router-dom\";\nimport { Language, TEMP_SUPPORTED_LANGUAGES } from \"../../constants/languages\";\nimport { QUERY_PARAMS } from \"../../constants/url\";\nimport { useQueryParams } from \"../../hooks/useQueryParams\";\n\n// Only supported language atm\nconst defaultLang = Language.TypeScript;\n\nconst LOCAL_KEY = \"preferred-language\";\n\nconst isValidLang = (lang?: string | Language): lang is Language =>\n lang != null && TEMP_SUPPORTED_LANGUAGES.has(lang as Language);\n\nconst getInitialLang = (langFromParams: string | Language): Language => {\n // First, use language from query params in url\n if (isValidLang(langFromParams)) {\n return langFromParams;\n }\n\n // Next check for one stored in localStorage\n try {\n const storedLang = (localStorage.getItem(LOCAL_KEY) ?? \"\") as Language;\n if (isValidLang(storedLang)) return storedLang;\n } catch {\n // Do nothing, we just don't want to crash if localStorage access is blocked.\n }\n\n // Otherwise fallback to a default\n return defaultLang;\n};\n\nexport interface UseLanguageOptions {\n /**\n * Syncs the preferred language to a query param in URL\n */\n updateUrl?: boolean;\n /**\n * Saves the selected language to localStorage on select\n */\n updateSaved?: boolean;\n}\n\nexport const useLanguage = (options: UseLanguageOptions = {}) => {\n const { updateUrl, updateSaved } = options;\n const { pathname, hash } = useLocation();\n const { replace } = useHistory();\n const params = useQueryParams();\n const langFromParams = params.get(QUERY_PARAMS.LANGUAGE) as Language;\n\n // Passed as function to guarantee it runs on hook mount\n const [language, setLanguage] = useState<Language>(() =>\n getInitialLang(langFromParams)\n );\n\n // State subscribes to query param changes\n useEffect(() => {\n if (isValidLang(langFromParams) && langFromParams !== language) {\n setLanguage(langFromParams);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [langFromParams]);\n\n // Syncs language changes to URL if updateUrl = true\n useEffect(() => {\n if (langFromParams !== language && updateUrl) {\n params.set(QUERY_PARAMS.LANGUAGE, language);\n replace({ pathname, hash, search: params.toString() });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [language, updateUrl]);\n\n const update = useCallback(\n (val: Language) => {\n setLanguage(val);\n\n if (updateSaved) {\n try {\n localStorage.setItem(LOCAL_KEY, val);\n } catch {\n // OK to fail silently\n }\n }\n },\n [updateSaved]\n );\n\n return useMemo(() => [language, update] as const, [language, update]);\n};\n","import { useMemo } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\nexport const useQueryParams = () => {\n const { search } = useLocation();\n\n return useMemo(() => new URLSearchParams(search), [search]);\n};\n","import { PackageHighlight, PackageTagConfig } from \"../api/config\";\nimport { KEYWORD_IGNORE_LIST } from \"../constants/keywords\";\n\nexport interface TagObject extends PackageTagConfig {}\n\n/**\n * Reduces package tags to only return highlight tags\n */\nexport const highlightsFrom = (packageTags?: PackageTagConfig[]) => {\n if (!packageTags || packageTags.length < 1) return [];\n\n return packageTags.reduce(\n (accum: PackageHighlight[], tag: PackageTagConfig): PackageHighlight[] => {\n if (tag.highlight) {\n return [...accum, tag.highlight];\n }\n\n return accum;\n },\n []\n );\n};\n\n/**\n * Maps packageTags to an array of TagObjects, which can be rendered by the PackageTags Component\n */\nexport const mapPackageTags = (\n packageTags?: PackageTagConfig[]\n): TagObject[] => {\n return (packageTags ?? [])\n .filter((tag) => {\n return Boolean(tag.keyword?.label);\n })\n .map((tag) => ({\n ...tag,\n id: tag.keyword?.label!,\n }));\n};\n\n/**\n * Maps keywords to an array of TagObjects, which can be rendered by the PackageTags component\n */\nexport const mapPackageKeywords = (keywords?: string[]): TagObject[] => {\n if (!keywords || keywords.length < 1) return [];\n\n return keywords\n .filter((label) => Boolean(label) && !KEYWORD_IGNORE_LIST.has(label))\n .map((label) => ({\n id: label,\n keyword: {\n label,\n },\n }));\n};\n\n/**\n * Maps packageTags and keywords to a list of TagObjects, using mapPackageTags and mapPackageKeywords\n */\nexport const tagObjectsFrom = ({\n packageTags,\n keywords,\n}: {\n packageTags?: PackageTagConfig[];\n keywords?: string[];\n}): TagObject[] => {\n const tagObjects = new Array<TagObject>();\n const tagLabels = new Set<string>();\n\n for (const tag of [\n ...mapPackageTags(packageTags),\n ...mapPackageKeywords(keywords),\n ]) {\n const label = tag.keyword!.label.toLowerCase();\n if (!tagLabels.has(label)) {\n tagObjects.push(tag);\n tagLabels.add(label);\n }\n }\n\n return tagObjects;\n};\n"],"names":["Highlight","label","color","icon","align","direction","spacing","alt","src","w","fontWeight","LanguageSupportTooltip","children","language","isSupported","TEMP_SUPPORTED_LANGUAGES","langName","LANGUAGE_NAME_MAP","message","hasArrow","placement","PackageCardType","createTestIds","Detail","dataTestid","tooltip","value","isDisabled","fontSize","zIndex","Details","usePackageCard","author","date","metadata","name","data","useStats","downloads","packages","npm","authorName","publishDate","Date","undefined","testIds","toLocaleString","Time","formattedDate","formatDistanceToNowStrict","addSuffix","NavLink","to","getSearchPath","query","EditorsNote","comment","lineHeight","noOfLines","as","Heading","useLanguage","currentLanguage","dataEvent","description","constructFramework","version","cdkType","cdkVersion","majorVersion","Link","eventName","getPackagePath","CDKType","mr","wordBreak","packageTags","highlightsFrom","highlight","sizes","sm","md","lg","PackageLanguages","isRounded","languages","packageName","size","targets","Object","keys","entries","LANGUAGE_RENDER_MAP","sort","left","right","LANGUAGES","map","lang","info","isSupportedByLibrary","Language","includes","isSupportedByConstructHub","Icon","borderRadius","h","opacity","Languages","pkg","Tags","keywords","tags","tagObjectsFrom","slice","id","keyword","PackageTag","variant","WideCard","_hover","bg","border","boxShadow","minH","templateColumns","base","justify","overflow","p","sx","gap","wrap","borderLeft","borderTop","PackageCardContext","createContext","useContext","PackageCard","Wide","Provider","tagProps","textDecoration","pageInfo","contribute","event","home","faq","packageProfile","search","siteTerms","notFound","page","pageType","Page","join","meta","pageName","trackPageView","usePageView","useEffect","suffix","title","formattedTitle","Helmet","process","content","charSet","property","forwardRef","ref","formatString","format","boxProps","dateTime","toISOString","displayName","useConfigValue","key","useConfig","defaultLang","LOCAL_KEY","isValidLang","getInitialLang","langFromParams","storedLang","localStorage","getItem","options","updateUrl","updateSaved","useLocation","pathname","hash","useHistory","replace","params","useQueryParams","get","QUERY_PARAMS","useState","setLanguage","set","toString","update","useCallback","val","setItem","useMemo","URLSearchParams","length","reduce","accum","tag","tagObjects","Array","tagLabels","Set","filter","Boolean","mapPackageTags","KEYWORD_IGNORE_LIST","mapPackageKeywords","toLowerCase","has","push","add"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunkconstruct_hub_webapp=self.webpackChunkconstruct_hub_webapp||[]).push([[411,577],{29880:function(e,n,t){t.d(n,{KD:function(){return a},_J:function(){return o},Kj:function(){return i},_c:function(){return c}});var r=t(29499),a=function(e,n){return n?"".concat(n,"/").concat(e):e},o=function(e,n,t){var o="".concat(r.i0.PACKAGES_PREFIX,"/"),i=a(e,t),c="/v".concat(n);return"".concat(o).concat(i).concat(c)},i=function(e){var n=e;return(n.startsWith("~")||n.startsWith("^"))&&(n=n.substring(1)),n},c=function(e,n){var t=e.packages.filter((function(e){return e.name===n}));return t.length>1?t.sort((function(e,n){var t=new Date(e.metadata.date);return new Date(n.metadata.date).getTime()-t.getTime()}))[0]:t[0]}},50535:function(e,n,t){t.d(n,{y:function(){return i}});var r=t(28735),a=t(53046),o=t(80184),i=function(e){var n=e.label,t=e.color,i=e.icon;return(0,o.jsxs)(r.Kq,{align:"center",direction:"row",spacing:2,children:[(0,o.jsx)(a.Ee,{alt:"".concat(n," icon"),src:i,w:4}),(0,o.jsx)(r.xv,{color:t,fontWeight:"bold",children:n})]})}},2148:function(e,n,t){t.d(n,{N:function(){return i}});var r=t(81070),a=t(86617),o=t(80184),i=function(e){var n=e.children,t=e.language,i=a.dX.has(t),c=a.k8[t],s=i?"Click to view documentation in ".concat(c):"Documentation support for ".concat(c," is coming soon!");return(0,o.jsx)(r.u,{hasArrow:!0,label:s,placement:"top-start",children:(0,o.jsx)("span",{children:n})})}},29988:function(e,n,t){t.d(n,{X:function(){return d}});var r=t(1413),a=t(45987),o=t(96450),i=t(19748),c=t(67003),s=t(80184),l=["children","value","label","zIndex"],d=function(e){var n=e.children,t=e.value,d=e.label,u=void 0===d?t:d,h=e.zIndex,p=(0,a.Z)(e,l);return(0,s.jsx)(c.O,{"aria-label":"Tag: ".concat(u),to:(0,i.yc)({keywords:[t]}),zIndex:h,children:(0,s.jsx)(o.Vp,(0,r.Z)((0,r.Z)({_hover:{textDecoration:"underline"}},p),{},{children:(0,s.jsx)(o.Sn,{children:n})}))})}},41712:function(e,n,t){t.d(n,{T:function(){return s}});var r=t(72791),a=t(54270),o={contribute:{event:{name:"Contribute Load"}},home:{event:{name:"Home Load"}},faq:{event:{name:"Frequently Asked Questions Load"}},packageProfile:{event:{name:"Package Profile Load"}},search:{event:{name:"Search Load"}},siteTerms:{event:{name:"Site Terms Load"}},notFound:{page:{pageType:"errorPage"},event:{name:"404 Page Load"}}},i=t(59534),c=t(80184),s=(["default-src 'self' 'unsafe-inline' http://*.awsstatic.com;","connect-src 'self' https://*.shortbread.aws.dev http://*.shortbread.aws.dev http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;","frame-src http://aws.demdex.net http://dpm.demdex.net;","img-src 'self' https://* http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;","object-src 'none';","style-src 'self' 'unsafe-inline';"].join(" "),function(e){var n=e.children,t=e.meta,s=e.pageName,l=(0,i.aQ)(o[s]);(0,r.useEffect)((function(){l()}),[l]);var d=t.suffix,u=void 0===d||d,h=t.title,p=t.description,v=u?"".concat(h," - Construct Hub"):h;return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(a.q,{children:[!1,(0,c.jsx)("meta",{content:"width=device-width, initial-scale=1",name:"viewport"}),(0,c.jsx)("meta",{charSet:"utf-8"}),(0,c.jsx)("title",{children:v}),(0,c.jsx)("meta",{content:v,property:"og:title"}),(0,c.jsx)("meta",{content:v,name:"twitter:title"}),(0,c.jsx)("meta",{content:"summary",name:"twitter:card"}),(0,c.jsx)("meta",{content:p,name:"description"}),(0,c.jsx)("meta",{content:p,property:"og:description"}),(0,c.jsx)("meta",{content:p,name:"twitter:description"})]}),n]})})},79227:function(e,n,t){t.d(n,{q:function(){return d}});var r=t(1413),a=t(45987),o=t(63209),i=t(28735),c=t(29158),s=t(80184),l=["date","format","formattedDate"],d=(0,o.Gp)((function(e,n){var t=e.date,o=e.format,d=e.formattedDate,u=(0,a.Z)(e,l);return(0,s.jsx)(i.xu,(0,r.Z)((0,r.Z)({as:"time",dateTime:t.toISOString(),ref:n},u),{},{children:null!==d&&void 0!==d?d:(0,c.Z)(t,null!==o&&void 0!==o?o:"")}))}));d.displayName="Time"},56804:function(e,n,t){t.d(n,{E:function(){return a}});var r=t(24026),a=function(e){var n=(0,r.Z)().data;return(null!==n&&void 0!==n?n:{})[e]}},7991:function(e,n,t){t.d(n,{Z:function(){return p}});var r=t(70885),a=t(72791),o=t(79271),i=t(86617),c=t(29499),s=t(4487),l=i.SQ.TypeScript,d="preferred-language",u=function(e){return null!=e&&i.dX.has(e)},h=function(e){if(u(e))return e;try{var n,t=null!==(n=localStorage.getItem(d))&&void 0!==n?n:"";if(u(t))return t}catch(r){}return l},p=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.updateUrl,t=e.updateSaved,i=(0,o.TH)(),l=i.pathname,p=i.hash,v=(0,o.k6)(),m=v.replace,f=(0,s.K)(),g=f.get(c.Tx.LANGUAGE),x=(0,a.useState)((function(){return h(g)})),j=(0,r.Z)(x,2),b=j[0],w=j[1];(0,a.useEffect)((function(){u(g)&&g!==b&&w(g)}),[g]),(0,a.useEffect)((function(){g!==b&&n&&(f.set(c.Tx.LANGUAGE,b),m({pathname:l,hash:p,search:f.toString()}))}),[b,n]);var y=(0,a.useCallback)((function(e){if(w(e),t)try{localStorage.setItem(d,e)}catch(n){}}),[t]);return(0,a.useMemo)((function(){return[b,y]}),[b,y])}},4487:function(e,n,t){t.d(n,{K:function(){return o}});var r=t(72791),a=t(79271),o=function(){var e=(0,a.TH)().search;return(0,r.useMemo)((function(){return new URLSearchParams(e)}),[e])}},98371:function(e,n,t){t.d(n,{JA:function(){return i},QX:function(){return c}});var r=t(1413),a=t(42982),o=t(9272),i=function(e){return!e||e.length<1?[]:e.reduce((function(e,n){return n.highlight?[].concat((0,a.Z)(e),[n.highlight]):e}),[])},c=function(e){for(var n=e.packageTags,t=e.keywords,i=new Array,c=new Set,s=0,l=[].concat((0,a.Z)(function(e){return(null!==e&&void 0!==e?e:[]).filter((function(e){var n;return Boolean(null===(n=e.keyword)||void 0===n?void 0:n.label)})).map((function(e){var n;return(0,r.Z)((0,r.Z)({},e),{},{id:null===(n=e.keyword)||void 0===n?void 0:n.label})}))}(n)),(0,a.Z)(function(e){return!e||e.length<1?[]:e.filter((function(e){return Boolean(e)&&!o.h.has(e)})).map((function(e){return{id:e,keyword:{label:e}}}))}(t)));s<l.length;s++){var d=l[s],u=d.keyword.label.toLowerCase();c.has(u)||(i.push(d),c.add(u))}return i}},42577:function(e,n,t){t.r(n),t.d(n,{NotFound:function(){return m},default:function(){return m}});var r=t(28735),a=t(82504),o=t(91523),i=t(41712),c=t(1413),s=t(45987),l=t(63209),d=t(53046),u=t(80184),h=["sources"],p=(0,l.Gp)((function(e,n){var t=e.sources,a=(0,s.Z)(e,h);return(0,u.jsxs)(r.xu,{as:"picture",children:[null===t||void 0===t?void 0:t.map((function(e,n){return(0,u.jsx)("source",{media:e.media,srcSet:e.srcSet},n)})),(0,u.jsx)(d.Ee,(0,c.Z)({ref:n},a))]})}));p.displayName="Picture";var v={optimal:[{media:"(max-width:1024px)",srcSet:"/assets/404-hive@50.webp"},{media:"(min-width:1024px)",srcSet:"/assets/404-hive@100.webp"},{media:"(min-width:1024px)",srcSet:"/assets/404-hive@100.png"}],fallback:"/assets/404-hive@50.png"},m=function(){return(0,u.jsx)(i.T,{meta:{title:"Not Found",description:"Oops! The page you were looking for does not exist"},pageName:"notFound",children:(0,u.jsxs)(r.M5,{h:"100%",position:"relative",w:"100%",children:[(0,u.jsx)(p,{alt:"",inset:0,position:"absolute",sources:v.optimal,src:v.fallback,zIndex:"hide"}),(0,u.jsxs)(r.kC,{align:"center",direction:"column",justify:"center",children:[(0,u.jsx)(p,{alt:"404 Image",sources:[{srcSet:"/assets/robot.webp"}],src:"/assets/robot.png"}),(0,u.jsx)(a.zx,{as:o.rU,colorScheme:"blue",to:"/",children:"Take Me Home"})]})]})})}},84411:function(e,n,t){t.r(n),t.d(n,{default:function(){return Yn}});var r=t(79271),a=t(42577),o=t(70885),i=t(28735),c=t(13822),s=t(72791),l=t(41712),d=t(78236),u=function(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];return d.o.apply(void 0,["Package Page"].concat(n))},h={SCOPE:u(),SELECT_VERSION:u("Select Version"),CDK_BADGE:{eventName:function(e){return u("CDK Badge",e)}},KEYWORD:{eventName:function(e){return u("Keyword",e)}},LANGUAGE:{eventName:function(e){return u("Language",e)}},DOCUMENTATION:{TAB:u("Documentation","Tab")},DEPENDENCIES:{TAB:u("Dependencies","Tab")},FEEDBACK:{PUBLISHER:u("Feedback","Publisher"),CONSTRUCT_HUB:u("Feedback","Construct Hub"),ABUSE:u("Feedback","Abuse")}},p=t(29880),v=t(67003),m=t(7752),f=t(19748),g=t(1413),x=t(91933),j=t(15861),b=t(87757),w=t.n(b),y=t(29499),k=function(){var e=(0,j.Z)(w().mark((function e(n,t,r){var a,o;return w().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a="".concat((0,p._J)(n,t,r)).concat(y.i0.ASSEMBLY_SUFFIX),e.next=3,fetch(a);case 3:if((o=e.sent).ok){e.next=6;break}throw new Error("Failed fetching assembly for ".concat(a,": ").concat(o.statusText));case 6:return e.abrupt("return",o.json());case 7:case"end":return e.stop()}}),e)})));return function(n,t,r){return e.apply(this,arguments)}}(),C=function(){var e=(0,j.Z)(w().mark((function e(n,t,r,a,o){var i,c,s,l,d;return w().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i="/docs-".concat(o?"".concat(o,"-"):"").concat(r,".md"),c="".concat((0,p._J)(n,t,a)).concat(i),e.next=4,fetch(c);case 4:if((s=e.sent).ok){e.next=7;break}throw new Error("Failed fetching documentation for ".concat(c,": ").concat(s.statusText));case 7:if(l="text/markdown",(d=s.headers.get("Content-Type"))&&d.includes(l)){e.next=11;break}throw new Error("Invalid content type: ".concat(d,". Expected ").concat(l,'"'));case 11:return e.abrupt("return",s.text());case 12:case"end":return e.stop()}}),e)})));return function(n,t,r,a,o){return e.apply(this,arguments)}}(),S=function(){var e=(0,j.Z)(w().mark((function e(n,t,r){var a,o,i;return w().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return(a=t).startsWith("^")&&(a=a.substring(1,a.length)),o="".concat((0,p._J)(n,t,r)).concat(y.i0.METADATA_SUFFIX),e.next=5,fetch(o);case 5:if((i=e.sent).ok){e.next=8;break}throw new Error("Failed fetching metadata for ".concat(o,": ").concat(i.statusText));case 8:return e.abrupt("return",i.json());case 9:case"end":return e.stop()}}),e)})));return function(n,t,r){return e.apply(this,arguments)}}(),Z=t(86617),T=t(7991),L=t(4487),E={packages:{},updated:"NOT_FOUND"},A=function(){var e=(0,j.Z)(w().mark((function e(){var n;return w().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(y.i0.ALL_VERSIONS);case 2:if((n=e.sent).ok){e.next=7;break}return console.error(n.statusText),console.warn("Could not retrieve package versions. Using empty data."),e.abrupt("return",E);case 7:return e.abrupt("return",n.json().catch((function(e){return console.error(e),console.warn("Error in package versions response. Using empty data."),E})));case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),I=t(4942),O=t(42982),D=t(15841),N=t.n(D),U=function(e){return e.toLowerCase().replace(/[^a-zA-Z0-9 ]/g,"").replace(/ /g,"-")},R=function e(n,t){var r=n[n.length-1];return r&&r.level<t.level?(r.children=e(r.children,t),n):(n.push(t),n)},B=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:6,t=new RegExp("(`{3}[\\s\\S]*?(?:`{3})|^#{1,".concat(n,"}[^#].*)"),"gm");return e.split(t).reduce((function(e,n){var t=e[e.length-1];return n.startsWith("#")||null!==t&&void 0!==t&&t.startsWith("#")?[].concat((0,O.Z)(e),[n]):(e[e.length-1]+=n,e)}),[])},z=function(e){var n,t,r,a,i=(null!==(n=e.match(/(\S+)\s*=\s*(\"?)([^"]*)(\2|\s|$)/g))&&void 0!==n?n:[]).reduce((function(e,n){var t,r=n.split("="),a=(0,o.Z)(r,2),i=a[0],c=a[1],s=null!==(t=/['"](.*?)['"]/.exec(c))&&void 0!==t?t:[],l=(0,o.Z)(s,2),d=(l[0],l[1]);return(0,g.Z)((0,g.Z)({},e),{},(0,I.Z)({},i,d))}),{}),c=null!==(t=/^#*\s*(?:<a\s.*?(?:\/>|<\/a>))?\s*([^<]+?)\s*(?:<|$)/.exec(e))&&void 0!==t?t:[e,e],s=(0,o.Z)(c,2),l=(s[0],s[1].replace(/\[([^\]]+)\](?:\([^)]+\)|\[[^\]]+\])/g,"$1").replace(/:\+1:|:-1:|:[\w-]+:/g,(function(e){var n;return null!==(n=N().get(e))&&void 0!==n?n:e}))),d=null!==(r=i["data-heading-title"])&&void 0!==r?r:l;return{id:null!==(a=i["data-heading-id"])&&void 0!==a?a:encodeURIComponent(U(d)),title:d}},W=function(e,n){var t=n.scope,r=n.language,a=n.name,o=n.version,i=n.submodule,c=t?"".concat(t,"/").concat(a):"".concat(a),s="/packages/".concat(c,"/v/").concat(o),l="?".concat(y.Tx.LANGUAGE,"=").concat(r);i&&(l+="&submodule=".concat(i));var d='# API Reference <span data-heading-title="API Reference" data-heading-id="api-reference"></span>',u=e.split(d),h=u.length>1?u.pop():"",p=u.join(d),v=B(h,3),m=B(p),f=[d.trim()].concat((0,O.Z)(null!==v&&void 0!==v?v:[])),x="".concat(s).concat(l),j=m.reduce((function(e,n){if(n.startsWith("#")){var t,r,a=z(n),o=a.id,i=a.title,c=null!==(t=null===(r=n.match(/(#)/gm))||void 0===r?void 0:r.length)&&void 0!==t?t:1,s=function(e){return(e.endsWith(".")||e.endsWith(":"))&&(e=e.slice(0,-1)),e}(i),l={level:c,id:o,title:s,path:"".concat(x,"#").concat(o),children:[]};return R(e,l)}return e}),[]);1===j.length&&(j=j[0].children);var b,w,k=[].concat([{level:1,id:"Readme",title:"Readme",path:x,children:j}]),C={};return null===f||void 0===f||f.forEach((function(e){var n,t,r,a=e.match(/(^#{1,3}[^#].*)/g),o=null!==(n=null===(t=e.match(/(#)/gm))||void 0===t?void 0:t.length)&&void 0!==n?n:1;if(null!==a&&void 0!==a&&a.length){var i=z(e),c=i.id,d=i.title,u=3===o?(r=c,"".concat(s,"/api/").concat(r).concat(l)):void 0,h=(0,g.Z)({level:o,id:c,title:d,children:[]},u?{path:u}:{});k=R(k,h),b={id:c,title:d},w=o}else 3===w&&(C[b.id]={title:b.title,content:e})})),{readme:p,apiReference:C,menuItems:k}},P=t(80184),F=(0,s.createContext)(void 0),M=function(){var e=(0,s.useContext)(F);if(!e)throw new Error("This component must be a child of a <PackageStateProvider />");return e},K=function(e){var n,t,i,c,l,d=e.children,u=(0,r.UO)(),h=u.name,p=u.scope,v=u.version,m="".concat(p,"/").concat(h,"/v").concat(v),f=(0,T.Z)(),j=(0,o.Z)(f,1)[0],b=null!==(n=(0,L.K)().get(y.Tx.SUBMODULE))&&void 0!==n?n:"",w=(0,x.useQuery)("Versions",A).data,E=p?"".concat(p,"/").concat(h):h,I=null===w||void 0===w?void 0:w.packages[E],O=(0,x.useQuery)("".concat(m,"-docs-").concat(j),(function(){return C(h,v,Z.$[j],p,b)})),D=(0,x.useQuery)("".concat(m,"-assembly"),(function(){return k(h,v,p)})),N=(0,x.useQuery)("".concat(m,"-metadata"),(function(){return S(h,v,p)})),U="".concat(p?"".concat(p,"/").concat(h):h," ").concat(v),R=null!==(t=null===(i=D.data)||void 0===i?void 0:i.description)&&void 0!==t?t:"",B=Boolean(O.error||D.error),z=Boolean(!O.isLoading&&!D.isLoading&&O.data&&D.data),M=Boolean(j===Z.SQ.TypeScript||D.isLoading||D.error||null!=(null===(c=D.data)||void 0===c||null===(l=c.targets)||void 0===l?void 0:l[j.toString()])),K=Boolean(!N.isLoading&&(D.isLoading||O.isLoading)),_=(0,s.useMemo)((function(){return O.data?W(O.data,{scope:p,name:h,version:v,language:j,submodule:b}):{menuItems:[]}}),[O.data,h,p,v,j,b]);return D.error?(0,P.jsx)(a.NotFound,{}):(0,P.jsx)(F.Provider,{value:(0,g.Z)({assembly:D,hasDocs:z,hasError:B,isLoadingDocs:K,isSupported:M,language:j,markdown:O,metadata:N,name:h,pageDescription:R,pageTitle:U,scope:p,version:v,allVersions:I},_),children:d})},_=t(88606),H=(0,_.$)("package-page",["page","feedbackLinks","reportLink","reportAbuseLink","githubLink","dependenciesTab","dependenciesList","dependenciesLink","description","markdown","selectVersionButton","selectVersionDropdown","selectVersionItem"]),G=function(){var e,n=M().assembly.data;if(!n)return(0,P.jsx)(m.w,{});var t=Object.entries(null!==(e=n.dependencies)&&void 0!==e?e:{});return t.length?(0,P.jsx)(i.Kq,{"data-testid":H.dependenciesList,direction:"row",justify:"center",mx:"auto",spacing:4,wrap:"wrap",children:t.map((function(e){var n=(0,o.Z)(e,2),t=n[0],r=n[1];return(0,P.jsxs)(v.O,{_first:{ml:4},"data-testid":H.dependenciesLink,fontWeight:"semibold",p:2,to:(0,f.Mt)({name:t,version:(0,p.Kj)(r)}),children:[t," - ",r]},"".concat(t,"-").concat(r))}))}):(0,P.jsx)(i.M5,{children:"This library does not have any known CDK dependencies"})},Q=t(75272),q=t(10855),V=t(6074),X=t(76798),$=t(69113),J=function(e){return(0,P.jsxs)($.JO,(0,g.Z)((0,g.Z)({},e),{},{children:[(0,P.jsx)("path",{clipRule:"evenodd",d:"M10.2532 0C4.59124 0 0 4.59022 0 10.2532C0 14.7835 2.93785 18.6266 7.01174 19.9825C7.524 20.0776 7.71212 19.7601 7.71212 19.4893C7.71212 19.2448 7.70261 18.4371 7.6982 17.5804C4.84576 18.2006 4.24386 16.3706 4.24386 16.3706C3.77745 15.1855 3.10543 14.8704 3.10543 14.8704C2.17499 14.234 3.17555 14.2473 3.17555 14.2473C4.20498 14.3194 4.74728 15.3039 4.74728 15.3039C5.66176 16.871 7.14588 16.418 7.73097 16.1562C7.82299 15.4935 8.08871 15.041 8.38194 14.785C6.10457 14.5261 3.71038 13.6467 3.71038 9.718C3.71038 8.59859 4.11108 7.68394 4.76697 6.96573C4.66035 6.70765 4.30939 5.66481 4.86613 4.25252C4.86613 4.25252 5.72696 3.97695 7.68631 5.3035C8.50435 5.07616 9.38165 4.96189 10.2532 4.95799C11.1242 4.96189 12.002 5.07582 12.8216 5.30317C14.7785 3.97661 15.6383 4.25218 15.6383 4.25218C16.1964 5.6643 15.8455 6.70731 15.739 6.96539C16.3964 7.6836 16.7943 8.59825 16.7943 9.71766C16.7943 13.6557 14.3957 14.5227 12.1125 14.7767C12.4805 15.0949 12.8081 15.719 12.8081 16.6754C12.8081 18.0473 12.7963 19.1514 12.7963 19.4891C12.7963 19.762 12.981 20.0817 13.5005 19.981C17.5721 18.6237 20.5065 14.7818 20.5065 10.2532C20.5063 4.59056 15.9156 0.000169776 10.2532 0.000169776V0Z",fill:"currentColor",fillRule:"evenodd"}),(0,P.jsx)("path",{d:"M3.88318 14.7214C3.86059 14.7724 3.78045 14.7876 3.70744 14.7528C3.63274 14.7195 3.59114 14.6501 3.61525 14.599C3.63732 14.5464 3.71763 14.5319 3.79183 14.5671C3.86654 14.6005 3.90898 14.6706 3.88301 14.7216L3.88318 14.7214ZM4.29848 15.1848C4.24975 15.2301 4.15416 15.209 4.0893 15.1372C4.02206 15.0659 4.0095 14.9703 4.05925 14.9243C4.10984 14.8791 4.20255 14.9005 4.26978 14.9719C4.33668 15.0442 4.34992 15.1389 4.29865 15.1849L4.29848 15.1848ZM4.70291 15.7751C4.64009 15.8189 4.5372 15.778 4.4737 15.6868C4.41088 15.5955 4.41088 15.486 4.4754 15.4423C4.53873 15.3985 4.64009 15.4381 4.70461 15.5284C4.76709 15.621 4.76709 15.7305 4.70291 15.775V15.7751ZM5.25659 16.3458C5.20056 16.4078 5.08069 16.3911 4.99308 16.3067C4.9036 16.224 4.87864 16.1064 4.93484 16.0446C4.99189 15.9824 5.11227 15.9998 5.20039 16.0836C5.28987 16.1661 5.31687 16.284 5.25693 16.3456L5.25659 16.3458ZM6.02064 16.677C5.99568 16.7573 5.88056 16.7939 5.76426 16.7596C5.64829 16.7244 5.5724 16.6305 5.59617 16.5494C5.61994 16.4684 5.7359 16.4305 5.85289 16.467C5.96885 16.502 6.04475 16.5954 6.02064 16.677ZM6.8599 16.7383C6.86279 16.8229 6.76431 16.8928 6.64257 16.8945C6.51982 16.8974 6.42049 16.8288 6.4193 16.7456C6.4193 16.6602 6.51574 16.5911 6.63833 16.5887C6.76007 16.5865 6.86007 16.6545 6.86007 16.7382L6.8599 16.7383ZM7.64059 16.6056C7.65519 16.6879 7.57047 16.7726 7.44941 16.7952C7.33056 16.8173 7.22019 16.766 7.20491 16.6843C7.19031 16.5998 7.27656 16.5151 7.39541 16.4932C7.51664 16.4723 7.62531 16.522 7.64059 16.6057V16.6056Z",fill:"currentColor"})]}))},Y={h:6,ml:2,w:6},ee=function(){var e,n=M(),t=(0,q.Sx)({base:"horizontal",md:"vertical"}),r=(0,P.jsx)(i.iz,{borderColor:"white",mr:6,orientation:t}),a=n.metadata.data,o=n.assembly.data;if(!o||!a)return null;var c,s=null!==(e=null===o||void 0===o?void 0:o.repository)&&void 0!==e?e:{},l=void 0;"git"===s.type&&((l=null!==(c=s.url)&&void 0!==c&&c.endsWith(".git")?s.url.replace(".git",""):s.url).endsWith("/")&&(l=l.slice(0,l.length-1)));return(0,P.jsxs)(i.Kq,{align:"center",backgroundColor:"blue.600",borderTop:"1px solid",borderTopColor:"blue.50",color:"white","data-testid":H.feedbackLinks,direction:{base:"column",md:"row"},justify:"space-evenly",px:8,py:5,spacing:4,children:[l&&(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(V.d,{color:"currentcolor","data-event":h.FEEDBACK.PUBLISHER,"data-testid":H.githubLink,fontSize:"lg",fontWeight:"semibold",hasIcon:!1,href:"".concat(l,"/issues"),rightIcon:(0,P.jsx)(J,(0,g.Z)({color:"white"},Y)),variant:"solid",children:"Provide feedback to publisher"}),r]}),(0,P.jsx)(V.d,{color:"currentcolor","data-event":h.FEEDBACK.CONSTRUCT_HUB,"data-testid":H.reportLink,fontSize:"lg",fontWeight:"semibold",hasIcon:!1,href:"".concat(X.Sx,"/issues/new"),rightIcon:(0,P.jsx)(J,(0,g.Z)({color:"white"},Y)),children:"Provide feedback to Construct Hub"}),r,(0,P.jsx)(V.d,{color:"currentcolor","data-event":h.FEEDBACK.ABUSE,"data-testid":H.reportAbuseLink,fontSize:"lg",fontWeight:"semibold",hasIcon:!1,href:"mailto:abuse@amazonaws.com?subject=".concat(encodeURIComponent("ConstructHub - Report of abusive package: ".concat(null===o||void 0===o?void 0:o.name))),rightIcon:(0,P.jsx)(Q.LQ,(0,g.Z)({},Y)),children:"Report abuse"})]})},ne=t(65223),te=t(82504),re=t(59534),ae=function(e,n){return(0,re.oJ)(e,"NavTree",n)},oe={color:"gray.900",h:4,w:4},ie=function(e){var n=e.children,t=e["data-event"],r=e.path,a=e.title,o=e.showToggle,c={_hover:{bg:"rgba(0, 124, 253, 0.05)"},overflow:"hidden",pl:1,py:o?2:1,marginLeft:o?0:1,fontWeight:o?"bold":void 0,textOverflow:"ellipsis",w:"100%"};return r?(0,P.jsx)(v.O,(0,g.Z)((0,g.Z)({"data-event":t,title:a,to:r},c),{},{children:n})):(0,P.jsx)(i.xv,(0,g.Z)((0,g.Z)({},c),{},{children:n}))},ce=function e(n){var t,a=n.children,o=n["data-event"],c=n.title,l=n.path,d=n.level,u=n.onOpen,h=(0,re.z$)().trackCustomEvent,p=d<2,v=(0,ne.qY)({onOpen:u,defaultIsOpen:p}),m=(0,r.TH)(),f=m.hash,x=m.pathname,j=new URL(null!==l&&void 0!==l?l:"",window.origin),b=null!==l&&void 0!==l&&l.includes("/api/")?j.pathname===x:j.hash&&f&&j.hash===f,w=(null!==(t=null===a||void 0===a?void 0:a.length)&&void 0!==t?t:0)>0,y=v.isOpen&&w,k=(0,s.useMemo)((function(){return null===a||void 0===a?void 0:a.map((function(n,t){return(0,s.createElement)(e,(0,g.Z)((0,g.Z)({"data-event":o},n),{},{key:t,level:d+1,onOpen:v.onOpen}))}))}),[a,o,v.onOpen,d]);return(0,P.jsxs)(i.kC,{direction:"column",children:[(0,P.jsxs)(i.kC,{align:"center",color:b?"blue.500":"gray.800",children:[w&&(0,P.jsx)(te.hU,{"aria-label":"expand-toggle",borderRadius:"md",h:4,icon:v.isOpen?(0,P.jsx)(Q.v4,(0,g.Z)({},oe)):(0,P.jsx)(Q.XC,(0,g.Z)({},oe)),ml:-1,onClick:function(){v.onToggle(),o&&h((0,re.Q5)({name:ae(o,"Toggle")}))},size:"xs",variant:"link",w:0}),(0,P.jsx)(ie,{"data-event":o?ae(o,"Link"):void 0,path:l,showToggle:w,title:c,children:c})]}),(0,P.jsx)(i.xu,{_before:{bg:"gray.100",bottom:0,content:'""',left:0,position:"absolute",top:0,w:"1px"},display:y?"initial":"none",ml:2,mr:2,pl:2,position:"relative",children:k})]})},se=function(e){var n=e["data-event"],t=e.items;return(0,P.jsx)(i.kC,{direction:"column",maxWidth:"100%",children:t.map((function(e,t){return(0,s.createElement)(ce,(0,g.Z)((0,g.Z)({},e),{},{"data-event":n,key:t,level:0,onOpen:void 0}))}))})},le=t(86988),de=t(3669),ue=t(63209),he=t(95798),pe=t(57992),ve=t(89570),me=(0,ue.Gp)((function(e,n){var t=e.value,r=e.onChange,a=e.onSubmit,i=(0,s.useState)(t),c=(0,o.Z)(i,2),l=c[0],d=c[1];return(0,ve.N)(l,{onChange:r}),(0,P.jsx)(pe.l,{"data-testid":"choose-submodule-search-form",onSubmit:a,children:(0,P.jsxs)(he.BZ,{children:[(0,P.jsx)(he.Z8,{children:(0,P.jsx)(Q.W1,{color:"gray.400"})}),(0,P.jsx)(he.II,{"data-testid":"choose-submodule-search-input",onChange:function(e){return d(e.target.value)},placeholder:"Search",ref:n,value:l,variant:"filled"})]})})}));me.displayName="SearchInput";var fe=function(e){var n=e.inputValue,t=e.isOpen,a=e.onClose,o=e.onInputChange,c=e.submodules,l=(0,s.useRef)(null),d=(0,r.k6)().push,u=(0,s.useCallback)((function(e){a(),d(e)}),[a,d]),h=(0,s.useCallback)((function(e){if(e.preventDefault(),c.length){var n=c[0].to;u(n)}}),[u,c]);return(0,P.jsx)(le.u_,{initialFocusRef:l,isOpen:t,onClose:a,children:(0,P.jsx)(le.ZA,{children:(0,P.jsxs)(le.hz,{mx:4,children:[(0,P.jsx)(le.ol,{"data-testid":"choose-submodule-modal-close"}),(0,P.jsx)(le.xB,{"data-testid":"choose-submodule-modal-header",fontSize:"lg",fontWeight:"bold",children:"Choose a submodule"}),(0,P.jsxs)(le.fe,{"data-testid":"choose-submodule-modal-body",p:0,children:[(0,P.jsx)(i.xu,{pb:4,px:4,children:(0,P.jsx)(me,{onChange:o,onSubmit:h,ref:l,value:n})}),(0,P.jsx)(i.iz,{}),(0,P.jsx)(i.QI,{"data-testid":"choose-submodule-modal-results",m:0,maxH:"50vh",overflow:"hidden auto",p:0,role:"listbox",tabIndex:-1,children:c.map((function(e){var n=e.name,t=e.to;return(0,P.jsx)(de.T,{"data-testid":"choose-submodule-result",name:n,onClick:function(){return u(t)}},n)}))})]})]})})})},ge=function(e){var n,t=e.assembly,a=(0,r.TH)().pathname,c=(0,r.k6)().push,l=(0,L.K)(),d=Object.keys(null!==(n=null===t||void 0===t?void 0:t.submodules)&&void 0!==n?n:{}),u=(0,ne.qY)(),h=u.isOpen,p=u.onOpen,v=u.onClose,m=l.get(y.Tx.SUBMODULE),f=m?"Submodule: ".concat(m):"Choose Submodule",g=(0,s.useState)(""),x=(0,o.Z)(g,2),j=x[0],b=x[1],w=(0,s.useCallback)((function(e){var n=new URLSearchParams(l.toString());return n.set("submodule",e),"".concat(a,"?").concat(n)}),[a,l]),k=(0,s.useMemo)((function(){var e=d;return j&&(e=e.filter((function(e){return e.toLowerCase().includes(j.toLowerCase())}))),e.map((function(e){var n=e.split(".")[1];return{name:n,to:w(n)}}))}),[d,j,w]);return 0===d.length?null:(0,P.jsxs)(i.Kq,{spacing:4,w:"100%",children:[m&&(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(te.zx,{borderRadius:"none","data-testid":"choose-submodule-go-back",leftIcon:(0,P.jsx)(Q.Rp,{"aria-label":"Back to construct root"}),onClick:function(){var e=l.get(y.Tx.LANGUAGE);c("".concat(a).concat(e?"?".concat(y.Tx.LANGUAGE,"=").concat(e):""))},title:"Back to construct root",variant:"link",children:null===t||void 0===t?void 0:t.name}),(0,P.jsx)(i.iz,{})]}),(0,P.jsx)(te.zx,{borderRadius:"none",color:"blue.500","data-testid":"choose-submodule-search-trigger",flexGrow:1,onClick:p,rightIcon:(0,P.jsx)(Q.v4,{}),title:"Choose Submodule",variant:"link",children:f}),(0,P.jsx)(fe,{inputValue:j,isOpen:h,onClose:v,onInputChange:b,submodules:k})]})},xe=t(29370),je=t(54915),be=t.n(je),we=t(5474),ye=t.n(we),ke=t(16580),Ce=t.n(ke),Se=t(45618),Ze=t(65218),Te=t.n(Ze),Le=t(45987),Ee=t(60185),Ae=t(32536),Ie=["value"],Oe=(0,ue.Gp)((function(e,n){var t=e.value,r=(0,Le.Z)(e,Ie),a=(0,ne.VP)(t),o=a.hasCopied,i=a.onCopy;return(0,P.jsx)(te.hU,(0,g.Z)({"aria-label":"Copy Button",color:"blue.500",colorScheme:"blue",h:6,icon:o?(0,P.jsx)(Q.nQ,{color:"green.300"}):(0,P.jsx)(Q.TI,{}),minW:"auto",ml:1,onClick:i,ref:n,variant:"ghost",w:6},r))}));Oe.displayName="CopyButton";var De,Ne=function(e){var n=e.code,t=e.tokens,r=e.getLineProps,a=e.getTokenProps;return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(i.kC,{align:"center",bg:"rgba(0, 124, 253, 0.15)",borderTopRadius:"md",justify:"flex-end",px:2,py:1,children:(0,P.jsx)(Oe,{value:n})}),(0,P.jsx)(i.xu,{overflowX:"auto",p:2,children:t.map((function(e,n){return(0,P.jsx)("div",(0,g.Z)((0,g.Z)({},r({line:e,key:n})),{},{children:e.map((function(e,n){return(0,P.jsx)(i.xu,(0,g.Z)({as:"span",sx:{wordWrap:"normal"}},a({token:e,key:n})),n)}))}),n)}))})]})},Ue=function(e){var n=e.code,t=e.tokens,r=e.getLineProps,a=e.getTokenProps;return(0,P.jsxs)(i.rj,{p:3,templateColumns:"1fr min-content",w:"full",children:[(0,P.jsx)(i.xu,{m:-3,maxW:"full",overflow:"auto",p:3,children:t.map((function(e,n){return(0,P.jsx)("div",(0,g.Z)((0,g.Z)({},r({line:e,key:n})),{},{children:e.map((function(e,n){return(0,P.jsx)("span",(0,g.Z)({},a({token:e,key:n})),n)}))}),n)}))}),(0,P.jsx)(i.kC,{align:"center",ml:1,children:(0,P.jsx)(Oe,{value:n})})]})},Re=["code","language"],Be=function(e){var n=e.code,t=e.language,r=(0,Le.Z)(e,Re);return(0,P.jsx)(Ee.ZP,(0,g.Z)((0,g.Z)({},Ee.lG),{},{code:n,language:t,theme:Ae.Z,children:function(e){return(0,P.jsx)(i.xu,(0,g.Z)((0,g.Z)({as:"pre",border:"base",borderRadius:"md",boxShadow:"base",className:e.className,style:e.style},r),{},{children:e.tokens.length>1?(0,P.jsx)(Ne,(0,g.Z)((0,g.Z)({},e),{},{code:n})):(0,P.jsx)(Ue,(0,g.Z)((0,g.Z)({},e),{},{code:n}))}))}}))},ze=t(58340),We=function e(n){return s.Children.toArray(n).reduce((function(n,t){return"string"===typeof t?n+t:"object"===typeof t&&"props"in t?n+e(t.props.children):n}),"").trim()},Pe=function(e){var n,t,r=e.level,a=e.children,o=["2xl","xl","lg","md","sm","xs"][r-1],c="h".concat(r),s=(new DOMParser).parseFromString(ze.renderToStaticMarkup(a),"text/html").querySelector("span[data-heading-title][data-heading-id]"),l=null!==(n=null===s||void 0===s?void 0:s.dataset.headingTitle)&&void 0!==n?n:We(a),d=null!==(t=null===s||void 0===s?void 0:s.dataset.headingId)&&void 0!==t?t:U(l);return(0,P.jsx)(P.Fragment,{children:(0,P.jsx)(i.X6,{as:c,backgroundColor:5===r?"gray.50":void 0,borderBottom:"1px solid",borderBottomColor:"gray.100",color:"gray.800",level:r,marginBottom:4,marginTop:r>=4?"1.5em":4,paddingBottom:2,paddingTop:2,paddingX:r>=4?2:void 0,size:o,children:(0,P.jsx)(v.O,{"data-heading-id":"#".concat(d),"data-heading-level":r,"data-heading-title":l,id:d,replace:!0,sx:{"> code":{color:"blue.800",fontSize:"inherit"}},to:"#".concat(d),children:a})})})},Fe=t(53046),Me=t(97005),Ke=(0,_.$)("markdown",["container"]),_e=["children","href"],He={a:function(e){var n=e.children,t=e.href,r=(0,Le.Z)(e,_e),a=i.rU;try{if(t&&t.startsWith("http"))if(new URL(t).hostname!==window.location.hostname){a=function(e){return(0,P.jsx)(V.d,(0,g.Z)({},e))}}}catch(o){a=i.rU}return(0,P.jsx)(a,(0,g.Z)((0,g.Z)({color:"blue.500",href:t,sx:{"> img + svg":{display:"none"}}},r),{},{children:n}))},blockquote:function(e){var n=e.children;return(0,P.jsx)(i.xu,{as:"blockquote",borderLeft:"5px solid",borderLeftColor:"gray.100",marginX:"2",px:"2",wordBreak:"break-word",children:n})},caption:Me.Rn,code:function(e){var n=e.inline,t=e.children,r=e.language,a=void 0===r?"typescript":r;if(n)return(0,P.jsx)(i.EK,{bg:"gray.50",border:"1px solid",borderColor:"gray.50",borderRadius:"md",marginTop:"md",mx:2,px:2,py:0,children:t});var o=s.Children.toArray(t).reduce((function(e,n){return"string"===typeof n?"".concat(e).concat(n):e}),"").trim();return(0,P.jsx)(Be,{code:o,fontSize:"0.9rem",language:a})},em:function(e){var n=e.children;return(0,P.jsx)(i.xu,{as:"em",fontStyle:"normal",fontWeight:"bold",children:n})},h1:Pe,h2:Pe,h3:Pe,h4:Pe,h5:Pe,h6:Pe,hr:function(){return(0,P.jsx)(P.Fragment,{})},img:function(e){return(0,P.jsx)(Fe.Ee,(0,g.Z)({display:"inline-block"},e))},li:function(e){var n=e.children;return(0,P.jsx)(i.HC,{lineHeight:"tall",marginX:2,sx:{"em:first-of-type":{fontSize:"small"},"&::marker":{color:"gray.400"},code:{fontSize:"small"}},children:n})},ol:function(e){var n=e.children;return(0,P.jsx)(i.GS,{children:n})},p:function(e){var n=e.children;return(0,P.jsx)(i.xv,{lineHeight:"1.5",mx:2,my:4,children:n})},pre:function(e){var n=e.children;return(0,P.jsx)(i.xu,{as:"pre",children:n})},sup:function(e){var n=e.children,t=void 0,r="";if(Array.isArray(n)){var a=(0,o.Z)(n,1)[0];"string"===typeof a&&(r=a)}return"Required"===r?t="orange.700":"Optional"===r&&(t="green.700"),(0,P.jsx)(i.xu,{as:"sup",color:t,fontSize:"xs",ml:-1,top:-1,children:n})},table:function(e){var n=e.children;return(0,P.jsx)(i.xu,{maxW:"100%",overflowX:"auto",children:(0,P.jsx)(Me.iA,{variant:"striped",children:n})})},tbody:Me.p3,td:Me.Td,tfoot:Me.$R,th:Me.Th,thead:Me.hr,tr:Me.Tr,ul:function(e){var n=e.children;return(0,P.jsx)(i.QI,{marginTop:2,padding:0,children:n})}},Ge=(0,g.Z)({},xe);Ge.attributes.span=(null!==(De=Ge.attributes.span)&&void 0!==De?De:[]).concat(["dataHeadingTitle","dataHeadingId"]);var Qe=[[ye()],[Ce(),Ge]],qe=[Te(),Se.Z],Ve=/^(?:(?:git@)?github\.com:|(?:https?:\/\/)github\.com\/)([^/]+)\/([^/]+)(?:\.git)?$/,Xe=function(e){var n=e.children,t=function(e){var n=e.type,t=e.url,r=e.directory;if("git"===n){var a=Ve.exec(t);if(null!=a){var i=(0,o.Z)(a,3);return{owner:i[1],repo:i[2],directory:r}}}}(e.repository),r=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"HEAD";return null==t?be().uriTransformer:function(r){var a=be().uriTransformer(r),i=(0,o.Z)(a,1)[0];if("#"===i||"/"===i)return a;if(a.includes("://"))return a;var c=t.owner,s=t.repo.replace(/\.git$/,""),l=t.directory?"".concat(t.directory,"/"):"";return"https://".concat(e,"/").concat(c,"/").concat(s,"/").concat(n,"/").concat(l).concat(a)}};return(0,P.jsx)(i.xu,{"data-testid":Ke.container,px:8,children:(0,P.jsx)(be(),{components:He,rehypePlugins:Qe,remarkPlugins:qe,transformImageUri:r("raw.githubusercontent.com"),transformLinkUri:r("github.com","blob/HEAD"),children:n})})},$e=function(){var e=M(),n=e.isLoadingDocs,t=e.readme,r=e.assembly.data;return!n&&t&&r?(0,P.jsx)(Xe,{repository:r.repository,children:t}):null},Je=t(91523),Ye=function(){var e=M().language,n=(0,P.jsx)(V.d,{href:"".concat(X.Sx,"/issues/new"),children:"issue"});return(0,P.jsxs)(i.xv,{align:"center",fontSize:"xl",fontStyle:"oblique",px:4,wordBreak:"break-word",children:["Documentation in ",e," is still not ready for this package. Come back soon. If this issue persists, please let us know by creating an"," ",n,"."]})},en=function(e){var n=e.rootId,t=(0,r.TH)(),a=t.pathname,o=t.hash,c=t.search,s=M(),l=s.isLoadingDocs,d=s.assembly.data,u=function(){var e=(0,r.UO)().typeId,n=M().apiReference;if(e)return null===n||void 0===n?void 0:n[e]}();if(l)return null;if(!u||!d)return(0,P.jsx)(Ye,{});var h=u.title,p=u.content,v="".concat(a).concat(c,"#").concat(o);return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(i.X6,{as:"h2",p:8,size:"2xl",children:(0,P.jsx)(Je.OL,{id:n,to:v,children:h})}),(0,P.jsx)(Xe,{repository:d.repository,children:p})]})},nn="4.5rem",tn="apidocs_header",rn="api",an=function(){var e,n=M().assembly.data;return Object.keys(null!==(e=null===n||void 0===n?void 0:n.submodules)&&void 0!==e?e:{}).length>0?(0,P.jsx)(i.kC,{borderBottom:"1px solid",borderColor:"blue.50",justify:"center",py:4,children:(0,P.jsx)(ge,{assembly:n})}):null},on=function(){var e=(0,r.$B)().path,n=M().menuItems,t=(0,r.TH)(),a=t.hash,o=t.pathname,c=t.search;return(0,s.useEffect)((function(){if(a){var e=document.querySelector('[data-heading-id="'.concat(a,'"]'));null===e||void 0===e||e.scrollIntoView(!0)}else if(function(e){var n=e.split("/");return n[n.length-2]===rn}(o)){var n=document.getElementById(tn);null===n||void 0===n||n.scrollIntoView(!0)}else window.scrollTo(0,0)})),(0,P.jsxs)(i.rj,{bg:"white",columnGap:4,h:"100%",templateColumns:{base:"1fr",md:"1fr 3fr"},width:"100%",children:[(0,P.jsxs)(i.kC,{alignSelf:"stretch",borderRight:"1px solid",borderRightColor:"blue.50",direction:"column",display:{base:"none",md:"flex"},maxHeight:"calc(100vh - ".concat(nn,")"),overflow:"hidden auto",pl:6,position:"sticky",pr:4,top:nn,children:[(0,P.jsx)(an,{}),(0,P.jsx)(i.xu,{overflowY:"auto",py:4,children:(0,P.jsx)(se,{"data-event":h.SCOPE,items:n})})]}),(0,P.jsx)(i.xu,{h:"max-content",maxWidth:"100%",overflow:"hidden",py:4,sx:{a:{scrollMarginTop:nn}},children:(0,P.jsxs)(r.rs,{children:[(0,P.jsx)(r.l_,{exact:!0,from:"".concat(e,"/").concat(rn),to:{pathname:e,search:c}}),(0,P.jsx)(r.AW,{exact:!0,path:e,children:(0,P.jsx)($e,{})}),(0,P.jsx)(r.AW,{exact:!0,path:"".concat(e,"/").concat(rn,"/:typeId"),children:(0,P.jsx)(en,{rootId:tn})})]})})]})},cn=t(92213),sn=t(2148),ln=function(e){var n=e.targetLanguages,t=e.selectedLanguage,a=(0,re.z$)().trackCustomEvent,o=M(),c=o.name,s=o.scope,l=o.version,d=(0,r.k6)().push;return(0,P.jsx)(i.Kq,{align:"center","data-testid":"language-bar",direction:"row",spacing:2,children:(0,O.Z)(n).sort((function(e,n){return Z.a2.indexOf(e)-Z.a2.indexOf(n)})).map((function(e){var n=!Z.dX.has(e),r=e===t,o=Z.kP[e].icon;return(0,P.jsx)(sn.N,{language:e,children:(0,P.jsx)(te.hU,{"aria-label":"Select ".concat(e," icon"),border:r?"1px solid":"none",borderColor:"blue.500",borderRadius:"lg",boxShadow:"base",colorScheme:"blue",cursor:n?"not-allowed":"pointer","data-testid":"language-".concat(e),disabled:n,icon:(0,P.jsx)(o,{"aria-label":"".concat(e,"-icon"),borderRadius:"sm",height:[4,5,6],width:[4,5,6]}),onClick:function(){r||(a((0,re.Q5)({name:h.LANGUAGE.eventName(e)})),d((0,f.Mt)({name:(0,p.KD)(c,s),version:l,language:e})))},p:1,variant:"outline",w:"max-content"})},e)}))})},dn=new Set(Z.a2),un=function(){var e,n=M(),t=n.assembly.data,r=n.language,a=(0,T.Z)({updateSaved:!0,updateUrl:!0}),i=(0,o.Z)(a,2)[1],c=(0,T.Z)({updateUrl:!0}),l=(0,o.Z)(c,2)[1],d=[].concat((0,O.Z)(Object.keys(null!==(e=null===t||void 0===t?void 0:t.targets)&&void 0!==e?e:{})),[Z.SQ.TypeScript]),u=d.includes(r);(0,s.useEffect)((function(){u||l(Z.SQ.TypeScript)}),[u]);var h={selectedLanguage:u?r:Z.SQ.TypeScript,setSelectedLanguage:i,targetLanguages:d.filter((function(e){return dn.has(e)}))};return(0,P.jsx)(ln,(0,g.Z)({},h))},hn=t(81070),pn=t(77231),vn=t(44717),mn=t(50535),fn=["license"],gn=(0,ue.Gp)((function(e,n){var t=e.license,r=(0,Le.Z)(e,fn),a=vn[t].url;return(0,P.jsx)(V.d,(0,g.Z)((0,g.Z)({href:a,ref:n},r),{},{children:t}))}));gn.displayName="LicenseLink";var xn=t(79227),jn="MMM dd, yyyy 'at' h:mmaaa",bn=t(56804),wn=t(10297),yn=t(98371),kn=["openText","closeText","isOpen"],Cn=function(e){var n=e.openText,t=e.closeText,r=e.isOpen,a=(0,Le.Z)(e,kn);return(0,P.jsx)(te.zx,(0,g.Z)((0,g.Z)({colorScheme:"blue",leftIcon:r?(0,P.jsx)(Q.g8,{}):(0,P.jsx)(Q.v4,{}),variant:"link"},a),{},{children:r?t:n}))},Sn=function(e){var n=e.children,t=e.label,r=e.tooltip;return(0,P.jsx)(hn.u,{hasArrow:!0,isDisabled:!r,label:r,placement:"left",children:(0,P.jsxs)(i.xv,{fontWeight:"bold",children:[t," ",(0,P.jsx)(i.xu,{as:"span",fontWeight:"normal",children:n})]})})},Zn=function(e){var n=e.downloads;return(0,P.jsx)(Sn,{label:(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(i.xu,{as:"span",mr:1,children:(0,P.jsx)(Q._8,{})}),n.toLocaleString()]}),tooltip:"Download numbers are periodically sourced from the npm registry",children:"Weekly downloads"})},Tn=function(e){var n=M(),t=(0,wn.V)().data,r=(0,ne.qY)({defaultIsOpen:!0}),a=(0,bn.E)("packageLinks"),c=n.assembly.data,l=n.metadata.data,d=n.scope?"".concat(n.scope,"/").concat(n.name):n.name,u=(0,yn.JA)(null===l||void 0===l?void 0:l.packageTags),h=(0,o.Z)(u,1)[0],p=function(e){var n=e.assembly,t=e.metadata,r=e.name,a=e.packageLinks,o=e.stats,i=[];if(n||t||o||a){var c,l,d,u,h,p=null===o||void 0===o||null===(c=o.packages)||void 0===c||null===(l=c[r])||void 0===l||null===(d=l.downloads)||void 0===d?void 0:d.npm;void 0!==p&&i.push((0,P.jsx)(Zn,{downloads:p}));var m=null===n||void 0===n?void 0:n.author.name,g=null===n||void 0===n?void 0:n.repository,x=null===n||void 0===n?void 0:n.license;if(m){var j=(0,P.jsx)(v.O,{color:"blue.500",to:(0,f.yc)({query:m}),children:m});i.push((0,P.jsx)(Sn,{label:"Author",children:j}))}var b=null===t||void 0===t?void 0:t.date;if(b){var w=(0,P.jsx)(xn.q,{date:new Date(b),fontWeight:"normal",format:jn});i.push((0,P.jsx)(Sn,{label:"Published",children:w}))}if(g){var y=(0,f.rM)(g.url);if(y){var k=(0,P.jsx)(V.d,{href:y.url,children:y.hostname});i.push((0,P.jsx)(Sn,{label:"Repository",children:k}))}}if(x&&x in vn){var C=(0,P.jsx)(gn,{license:x});i.push((0,P.jsx)(Sn,{label:"License",children:C}))}null!==a&&void 0!==a&&a.length&&a.forEach((function(e){var n,r=e.linkLabel,a=e.configKey,o=e.linkText,c=(null!==(n=null===t||void 0===t?void 0:t.packageLinks)&&void 0!==n?n:{})[a];if(c){var s=(0,P.jsx)(V.d,{href:c,children:null!==o&&void 0!==o?o:c});i.push((0,P.jsxs)(Sn,{label:r,children:[r,": ",s]}))}}));var S=null!==(u=null===t||void 0===t||null===(h=t.links)||void 0===h?void 0:h.npm)&&void 0!==u?u:"https://www.npmjs.com/package/".concat(null===n||void 0===n?void 0:n.name,"/v/").concat(null===n||void 0===n?void 0:n.version);if(S){var Z=(0,P.jsx)(V.d,{href:S,children:new URL(S).hostname});i.push((0,P.jsx)(Sn,{label:"Registry",children:Z}))}}return i.map((function(e,n){return(0,P.jsx)(s.Fragment,{children:e},n)}))}({assembly:c,metadata:l,name:d,packageLinks:a,stats:t});if(!p.length)return null;var m=p.slice(0,2),x=p.slice(2,p.length);return(0,P.jsxs)(i.Kq,(0,g.Z)((0,g.Z)({align:"start",color:"gray.600",fontSize:".75rem",mt:2,spacing:2},e),{},{children:[h&&(0,P.jsx)(mn.y,(0,g.Z)({},h)),m,x.length>0&&(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(pn.UO,{animateOpacity:!0,in:r.isOpen,children:(0,P.jsx)(i.Kq,{spacing:2,children:x})}),(0,P.jsx)(Cn,{closeText:"See fewer details (".concat(m.length,")"),fontSize:"inherit",isOpen:r.isOpen,onClick:r.onToggle,openText:"See more details (".concat(x.length,")")})]})]}))},Ln=function(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];return n.map((function(e){return'"'.concat(e.map((function(e){return null!==e&&void 0!==e?e:"."})).join(" "),'"')})).join(" ")},En="heading",An="install",In="languages",On="meta",Dn=Ln([En],[On],[In],[An]),Nn=Ln([En,In,An],[En,null,On]),Un=function(e){var n=e.children;return(0,P.jsx)(i.rj,{columnGap:{md:6,lg:10},pt:{base:3,lg:6},px:{base:5,md:6,lg:10},rowGap:{base:4,lg:0},templateAreas:{base:Dn,lg:Nn},templateColumns:{base:"1fr",lg:"1fr auto 15rem"},templateRows:{lg:"auto 1fr"},children:n})},Rn=t(77766),Bn=t(29988),zn=t(57640),Wn=t(10724),Pn=t.n(Wn),Fn=t(84586),Mn=function(){var e=M(),n=e.scope,t=e.name,a=e.version,o=e.allVersions,i=e.language,c=n?"".concat(n,"/").concat(t):t,l=(0,Fn.A)(),d=(0,r.k6)().push,u=l.findByName(c),p=(0,s.useMemo)((function(){var e=u.map((function(e){return e.version})),n=(0,O.Z)(new Set([].concat((0,O.Z)(null!==o&&void 0!==o?o:[]),(0,O.Z)(e),[a])));return n.sort(Pn().rcompare),n}),[u,a,o]);return(0,P.jsx)(zn.Ph,{"data-event":h.SELECT_VERSION,"data-testid":H.selectVersionDropdown,fontWeight:"500",onChange:function(e){d((0,f.Mt)({name:c,version:e.target.value,language:i}))},size:"sm",value:a,width:"10rem",children:p.map((function(e){return(0,P.jsx)("option",{"data-testid":H.selectVersionItem,"data-value":e,value:e,children:"v".concat(e)},e)}))})},Kn=["assembly","name","description","metadata","version"],_n=function(e){var n,t,r,a=e.assembly,o=e.name,c=e.description,s=e.metadata,l=(e.version,(0,Le.Z)(e,Kn)),d=(0,yn.QX)({packageTags:null!==(n=null===s||void 0===s?void 0:s.packageTags)&&void 0!==n?n:[],keywords:null!==(t=null===a||void 0===a?void 0:a.keywords)&&void 0!==t?t:[]}),u=null!==(r=s.constructFramework)&&void 0!==r?r:{};return(0,P.jsxs)(i.Kq,(0,g.Z)((0,g.Z)({lineHeight:"1.5",maxW:"full",overflow:"hidden",spacing:2},l),{},{children:[(0,P.jsxs)(i.kC,{align:"center",wrap:"wrap",children:[(0,P.jsx)(i.X6,{color:"blue.800",flexShrink:1,fontSize:"1.5rem",isTruncated:!0,mr:4,children:o}),(0,P.jsx)(Mn,{})]}),(0,P.jsx)(i.xv,{"data-testid":H.description,fontSize:"1rem",children:c}),(0,P.jsxs)(i.kC,{align:"center",direction:"row",pt:1,sx:{gap:"0.5rem"},wrap:"wrap",children:[(0,P.jsx)(Rn.uo,(0,g.Z)({"data-event":h.CDK_BADGE.eventName("".concat(u.name).concat(void 0!==u.majorVersion?" v".concat(u.majorVersion):""))},u)),d.map((function(e){var n=e.id,t=e.keyword,r=(t=void 0===t?{}:t).label,a=t.color;return(0,P.jsx)(Bn.X,{"data-event":h.KEYWORD.eventName(r),value:n,variant:a,children:r},n)}))]})]}))},Hn=function(e){var n=M(),t=n.language,r=n.assembly.data,a=(0,ne.qY)();if(!r)return null;var o=function(e){var n=e.language,t=e.assembly,r=t.version;if(n===Z.SQ.TypeScript){var a=t.name;return"npm install ".concat(a,"@").concat(r)}if(n===Z.SQ.Python){var o,i,c=null===(o=t.targets)||void 0===o||null===(i=o.python)||void 0===i?void 0:i.distName;if(!c)return;return"pip install ".concat(c,"==").concat(r)}if(n===Z.SQ.Java){var s,l,d,u,h,p,v=null===(s=t.targets)||void 0===s||null===(l=s.java)||void 0===l||null===(d=l.maven)||void 0===d?void 0:d.groupId,m=null===(u=t.targets)||void 0===u||null===(h=u.java)||void 0===h||null===(p=h.maven)||void 0===p?void 0:p.artifactId;if(!v||!m)return;return["// add this to your pom.xml","<dependency>"," <groupId>".concat(v,"</groupId>")," <artifactId>".concat(m,"</artifactId>")," <version>".concat(r,"</version>"),"</dependency>"].join("\n")}if(n===Z.SQ.DotNet){var f,g,x=null===(f=t.targets)||void 0===f||null===(g=f.dotnet)||void 0===g?void 0:g.packageId;if(!x)return;return"dotnet add package ".concat(x," --version ").concat(r)}}({language:t,assembly:r});return o&&t?(0,P.jsx)(i.kC,(0,g.Z)((0,g.Z)({align:"start",direction:"column",fontSize:".75rem",w:"full"},e),{},{children:t===Z.SQ.Java?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(Cn,{closeText:"Hide",fontSize:"inherit",isOpen:a.isOpen,mt:2,onClick:a.onToggle,openText:"Install"}),(0,P.jsx)(i.xu,{maxW:"full",overflow:"hidden",children:(0,P.jsx)(pn.UO,{in:a.isOpen,children:(0,P.jsx)(Be,{boxShadow:"none",code:o,fontSize:"inherit",language:t,mt:2})})})]}):(0,P.jsx)(Be,{boxShadow:"none",code:o,fontSize:"inherit",language:t,lineHeight:"2",w:"full"})})):null},Gn=function(){var e=M(),n=e.assembly,t=e.metadata,r=e.version,a=n.data,o=t.data;return a&&o?(0,P.jsxs)(Un,{children:[(0,P.jsx)(_n,{assembly:a,description:a.description,gridArea:En,metadata:o,name:a.name,version:r}),(0,P.jsx)(i.kC,{align:"start",gridArea:In,children:(0,P.jsx)(un,{})}),(0,P.jsxs)(i.kC,{direction:"column",gridArea:On,children:[(0,P.jsx)(i.iz,{borderBottom:"base",display:{md:"none"},mb:2}),(0,P.jsx)(Tn,{}),(0,P.jsx)(i.iz,{borderBottom:"base",display:{md:"none"},mt:2})]}),(0,P.jsx)(i.kC,{align:"start",gridArea:An,children:(0,P.jsx)(Hn,{})})]}):(0,P.jsx)(cn.$,{mx:"auto",my:10,size:"xl"})},Qn=function(){var e=M(),n=e.pageDescription,t=e.pageTitle,r=(0,s.useState)(0),a=(0,o.Z)(r,2),d=a[0],u=a[1];return(0,s.useEffect)((function(){u(0)}),[t]),(0,P.jsx)(l.T,{meta:{title:t,description:n},pageName:"packageProfile",children:(0,P.jsxs)(i.rj,{bg:"white","data-testid":H.page,maxW:"100vw",templateColumns:"1fr",templateRows:"auto 1fr auto",children:[(0,P.jsx)(Gn,{}),(0,P.jsxs)(c.mQ,{index:d,onChange:u,pt:4,variant:"line",children:[(0,P.jsxs)(c.td,{borderBottom:"base",mx:{base:0,lg:6},children:[(0,P.jsx)(c.OK,{"data-event":h.DOCUMENTATION.TAB,children:"Documentation"}),(0,P.jsx)(c.OK,{"data-event":h.DEPENDENCIES.TAB,"data-testid":H.dependenciesTab,children:"Dependencies"})]}),(0,P.jsxs)(c.nP,{maxW:"full",children:[(0,P.jsx)(c.x4,{p:0,children:(0,P.jsx)(on,{})}),(0,P.jsx)(c.x4,{children:(0,P.jsx)(G,{})})]})]}),(0,P.jsx)(ee,{})]})})},qn=function(){return(0,P.jsx)(K,{children:(0,P.jsx)(Qn,{})})},Vn=t(95038),Xn=function(){var e=(0,r.UO)(),n=e.name,t=e.scope,o=(0,Vn.r)();if(o.isLoading||!o.data)return(0,P.jsx)(i.M5,{minH:"16rem",children:(0,P.jsx)(cn.$,{size:"xl"})});var c=function(e,n,t){var r=(0,p.KD)(n,t),a=(0,p._c)(e,r);if(a){var o=a.version,i="/v/".concat(o);return"".concat("/packages/").concat(r).concat(i)}}(o.data,n,t);return c?(0,P.jsx)(r.l_,{to:c}):(0,P.jsx)(a.default,{})},$n="[^@\\/]+",Jn="@[^\\/]+",Yn=function(){var e=(0,r.$B)().path;return(0,P.jsxs)(r.rs,{children:[(0,P.jsx)(r.AW,{exact:!0,path:"".concat(e,"/:scope(").concat(Jn,")?/:name(").concat($n,")"),children:(0,P.jsx)(Xn,{})}),(0,P.jsx)(r.AW,{path:"".concat(e,"/:scope(").concat(Jn,")?/:name(").concat($n,")/v/:version"),children:(0,P.jsx)(qn,{})}),(0,P.jsx)(r.AW,{path:"*",children:(0,P.jsx)(a.NotFound,{})})]})}}}]);
2
+ //# sourceMappingURL=411.a40557f8.chunk.js.map