construct-hub-webapp 0.1.677 → 0.1.679
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/asset-manifest.json +13 -13
- package/build/index.html +1 -1
- package/build/static/js/{29.4850c1e7.chunk.js → 29.ab13262f.chunk.js} +2 -2
- package/build/static/js/{29.4850c1e7.chunk.js.map → 29.ab13262f.chunk.js.map} +1 -1
- package/build/static/js/{418.25a5f7f8.chunk.js → 418.6340af6e.chunk.js} +2 -2
- package/build/static/js/{418.25a5f7f8.chunk.js.map → 418.6340af6e.chunk.js.map} +1 -1
- package/build/static/js/{51.3152a56e.chunk.js → 51.f94ba9fe.chunk.js} +2 -2
- package/build/static/js/{51.3152a56e.chunk.js.map → 51.f94ba9fe.chunk.js.map} +1 -1
- package/build/static/js/{545.737d8d6a.chunk.js → 545.707ec0df.chunk.js} +2 -2
- package/build/static/js/{545.737d8d6a.chunk.js.map → 545.707ec0df.chunk.js.map} +1 -1
- package/build/static/js/{58.e137ae94.chunk.js → 58.ffa5e414.chunk.js} +2 -2
- package/build/static/js/{58.e137ae94.chunk.js.map → 58.ffa5e414.chunk.js.map} +1 -1
- package/build/static/js/{main.35ef7200.js → main.ba44b0cd.js} +3 -3
- package/build/static/js/{main.35ef7200.js.LICENSE.txt → main.ba44b0cd.js.LICENSE.txt} +0 -0
- package/build/static/js/main.ba44b0cd.js.map +1 -0
- package/package.json +3 -3
- package/build/static/js/main.35ef7200.js.map +0 -1
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"files": {
|
|
3
3
|
"main.css": "/static/css/main.efe592a7.css",
|
|
4
|
-
"main.js": "/static/js/main.
|
|
4
|
+
"main.js": "/static/js/main.ba44b0cd.js",
|
|
5
5
|
"static/js/19.d330fc34.chunk.js": "/static/js/19.d330fc34.chunk.js",
|
|
6
6
|
"static/js/679.4c3850de.chunk.js": "/static/js/679.4c3850de.chunk.js",
|
|
7
|
-
"static/js/58.
|
|
7
|
+
"static/js/58.ffa5e414.chunk.js": "/static/js/58.ffa5e414.chunk.js",
|
|
8
8
|
"static/js/577.0fbaedf1.chunk.js": "/static/js/577.0fbaedf1.chunk.js",
|
|
9
|
-
"static/js/545.
|
|
10
|
-
"static/js/418.
|
|
11
|
-
"static/js/51.
|
|
9
|
+
"static/js/545.707ec0df.chunk.js": "/static/js/545.707ec0df.chunk.js",
|
|
10
|
+
"static/js/418.6340af6e.chunk.js": "/static/js/418.6340af6e.chunk.js",
|
|
11
|
+
"static/js/51.f94ba9fe.chunk.js": "/static/js/51.f94ba9fe.chunk.js",
|
|
12
12
|
"static/js/540.c326d22f.chunk.js": "/static/js/540.c326d22f.chunk.js",
|
|
13
13
|
"static/js/259.07e40dd7.chunk.js": "/static/js/259.07e40dd7.chunk.js",
|
|
14
14
|
"static/js/787.34927533.chunk.js": "/static/js/787.34927533.chunk.js",
|
|
@@ -17,18 +17,18 @@
|
|
|
17
17
|
"static/js/634.f8d70077.chunk.js": "/static/js/634.f8d70077.chunk.js",
|
|
18
18
|
"static/js/122.5930759a.chunk.js": "/static/js/122.5930759a.chunk.js",
|
|
19
19
|
"static/js/225.8711ae88.chunk.js": "/static/js/225.8711ae88.chunk.js",
|
|
20
|
-
"static/js/29.
|
|
20
|
+
"static/js/29.ab13262f.chunk.js": "/static/js/29.ab13262f.chunk.js",
|
|
21
21
|
"service-worker.js": "/service-worker.js",
|
|
22
22
|
"index.html": "/index.html",
|
|
23
23
|
"main.efe592a7.css.map": "/static/css/main.efe592a7.css.map",
|
|
24
|
-
"main.
|
|
24
|
+
"main.ba44b0cd.js.map": "/static/js/main.ba44b0cd.js.map",
|
|
25
25
|
"19.d330fc34.chunk.js.map": "/static/js/19.d330fc34.chunk.js.map",
|
|
26
26
|
"679.4c3850de.chunk.js.map": "/static/js/679.4c3850de.chunk.js.map",
|
|
27
|
-
"58.
|
|
27
|
+
"58.ffa5e414.chunk.js.map": "/static/js/58.ffa5e414.chunk.js.map",
|
|
28
28
|
"577.0fbaedf1.chunk.js.map": "/static/js/577.0fbaedf1.chunk.js.map",
|
|
29
|
-
"545.
|
|
30
|
-
"418.
|
|
31
|
-
"51.
|
|
29
|
+
"545.707ec0df.chunk.js.map": "/static/js/545.707ec0df.chunk.js.map",
|
|
30
|
+
"418.6340af6e.chunk.js.map": "/static/js/418.6340af6e.chunk.js.map",
|
|
31
|
+
"51.f94ba9fe.chunk.js.map": "/static/js/51.f94ba9fe.chunk.js.map",
|
|
32
32
|
"540.c326d22f.chunk.js.map": "/static/js/540.c326d22f.chunk.js.map",
|
|
33
33
|
"259.07e40dd7.chunk.js.map": "/static/js/259.07e40dd7.chunk.js.map",
|
|
34
34
|
"787.34927533.chunk.js.map": "/static/js/787.34927533.chunk.js.map",
|
|
@@ -37,10 +37,10 @@
|
|
|
37
37
|
"634.f8d70077.chunk.js.map": "/static/js/634.f8d70077.chunk.js.map",
|
|
38
38
|
"122.5930759a.chunk.js.map": "/static/js/122.5930759a.chunk.js.map",
|
|
39
39
|
"225.8711ae88.chunk.js.map": "/static/js/225.8711ae88.chunk.js.map",
|
|
40
|
-
"29.
|
|
40
|
+
"29.ab13262f.chunk.js.map": "/static/js/29.ab13262f.chunk.js.map"
|
|
41
41
|
},
|
|
42
42
|
"entrypoints": [
|
|
43
43
|
"static/css/main.efe592a7.css",
|
|
44
|
-
"static/js/main.
|
|
44
|
+
"static/js/main.ba44b0cd.js"
|
|
45
45
|
]
|
|
46
46
|
}
|
package/build/index.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!doctype html><html lang="en"><head><script src="/preload.js"></script><meta charset="utf-8"/><meta name="description" content="Construct Hub helps developers find open-source construct libraries for use with AWS CDK, CDK8s, CDKTF and other construct-based tools."/><meta name="viewport" content="width=device-width,initial-scale=1"/><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"><link rel="manifest" href="/manifest.json"><meta name="theme-color" content="#ffffff"><title>Construct Hub</title><script defer="defer" src="/static/js/main.
|
|
1
|
+
<!doctype html><html lang="en"><head><script src="/preload.js"></script><meta charset="utf-8"/><meta name="description" content="Construct Hub helps developers find open-source construct libraries for use with AWS CDK, CDK8s, CDKTF and other construct-based tools."/><meta name="viewport" content="width=device-width,initial-scale=1"/><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"><link rel="manifest" href="/manifest.json"><meta name="theme-color" content="#ffffff"><title>Construct Hub</title><script defer="defer" src="/static/js/main.ba44b0cd.js"></script><link href="/static/css/main.efe592a7.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunkconstruct_hub_webapp=self.webpackChunkconstruct_hub_webapp||[]).push([[29],{50535:function(e,t,n){n.d(t,{y:function(){return c}});var r=n(28227),a=n(28735),i=n(53046),o=n(80184),c=function(e){var t=e.label,n=e.color,c=e.icon,s=(0,r.ff)("none","brightness(1.75)");return(0,o.jsxs)(a.Kq,{align:"center",direction:"row",filter:s,spacing:2,children:[(0,o.jsx)(i.Ee,{alt:"".concat(t," icon"),src:c,w:4}),(0,o.jsx)(a.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 I},$: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),f=n(79227),m=(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":m.downloads,tooltip:"Download numbers are periodically sourced from the npm registry",value:"".concat(p.toLocaleString()," weekly downloads")}),(0,h.jsx)(v,{"data-testid":m.published,value:(0,h.jsx)(f.q,{date:g,fontSize:"xs",formattedDate:(0,s.Z)(g,{addSuffix:!0})})}),(0,h.jsx)(v,{"data-testid":m.author,value:(0,h.jsxs)(h.Fragment,{children:["By"," ",(0,h.jsx)(u.O,{color:"link",to:(0,l.yc)({query:x}),children:x})]})})]})},x=n(29439),g=n(91523),j=n(59534),w=n(7991),b=n(77766),y=function(e){var t=e.comment;return(0,h.jsxs)(o.xv,{"data-testid":m.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]})},k=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.constructFrameworks,s=n.name,d=n.version;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.u,{constructFrameworks:c,mr:2,zIndex:1}),(0,h.jsx)(o.X6,{as:"h3",color:"textPrimary","data-testid":m.title,fontSize:"md",fontWeight:"bold",wordBreak:"normal",children:s})]})}),i?(0,h.jsx)(y,{comment:i}):(0,h.jsx)(o.xv,{color:"textPrimary","data-testid":m.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},P=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),f=d===C.SQ.TypeScript||C.dX.has(d);if(!u)return null;var m=i.name,v=i.icon,p=(0,h.jsx)(v,{"aria-label":"Supports ".concat(m),borderRadius:n?"50%":0,h:z[o],opacity:f?1:.2,w:z[o]});return(0,h.jsx)(L.N,{language:d,children:f?(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)}))})},q=function(){var e=D();return(0,h.jsx)(P,(0,a.Z)((0,a.Z)({},e),{},{size:"sm"}))},A=n(29988),E=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)(A.X,{value:t,variant:a,children:r},t)}))})},F=function(){return(0,h.jsx)(o.fG,{_hover:{"> article":{bg:"hoverPrimary"}},children:(0,h.jsxs)(o.rj,{as:"article",bg:"bgSecondary",border:"base",borderRadius:"sm",boxShadow:"base",color:"textPrimary","data-testid":m.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)(k,{})}),(0,h.jsx)(o.kC,{align:"center",sx:{gap:"0.5rem"},wrap:"wrap",children:(0,h.jsx)(E,{})})]}),(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":m.languages,direction:"row",spacing:2,children:(0,h.jsx)(q,{})})]})]})})},O=(0,i.createContext)(null),D=function(){return(0,i.useContext)(O)},I=function(e){var t=e["data-event"],n=e.pkg,i=e.variant,o=void 0===i?r.Wide:i;return(0,h.jsx)(O.Provider,{value:(0,a.Z)((0,a.Z)({},n),{},{dataEvent:t}),children:o===r.Wide&&(0,h.jsx)(F,{})})}},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,f=e.zIndex,m=(0,a.Z)(e,d);return(0,s.jsx)(c.O,{"aria-label":"Tag: ".concat(u),to:(0,o.yc)({keywords:[n]}),zIndex:f,children:(0,s.jsx)(i.Vp,(0,r.Z)((0,r.Z)({_hover:{textDecoration:"underline"}},m),{},{children:(0,s.jsx)(i.Sn,{children:t})}))})}},41712:function(e,t,n){n.d(t,{T:function(){return d}});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(56804),s=n(80184),d=(["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,d=e.pageName,l=(0,o.aQ)(i[d]);(0,r.useEffect)((function(){l()}),[l]);var u=(0,c.E)("feeds")||[],f=n.suffix,m=void 0===f||f,h=n.title,v=n.description,p=m?"".concat(h," - Construct Hub"):h;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(a.q,{children:[!1,(0,s.jsx)("meta",{content:"width=device-width, initial-scale=1",name:"viewport"}),(0,s.jsx)("meta",{charSet:"utf-8"}),u.map((function(e){var t=e.url,n=e.mimeType;return(0,s.jsx)("link",{href:t,rel:"alternate",type:n},t)})),(0,s.jsx)("title",{children:p}),(0,s.jsx)("meta",{content:p,property:"og:title"}),(0,s.jsx)("meta",{content:p,name:"twitter:title"}),(0,s.jsx)("meta",{content:"summary",name:"twitter:card"}),(0,s.jsx)("meta",{content:v,name:"description"}),(0,s.jsx)("meta",{content:v,property:"og:description"}),(0,s.jsx)("meta",{content:v,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(31959),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 m}});var r=n(29439),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)},f=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},m=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,m=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 f(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:m,search:p.toString()}))}),[w,t]);var y=(0,a.useCallback)((function(e){if(b(e),n)try{localStorage.setItem(l,e)}catch(t){}}),[n]);return(0,a.useMemo)((function(){return[w,y]}),[w,y])}},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(93433),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=29.
|
|
1
|
+
"use strict";(self.webpackChunkconstruct_hub_webapp=self.webpackChunkconstruct_hub_webapp||[]).push([[29],{50535:function(e,t,n){n.d(t,{y:function(){return c}});var r=n(28227),a=n(28735),i=n(53046),o=n(80184),c=function(e){var t=e.label,n=e.color,c=e.icon,s=(0,r.ff)("none","brightness(1.75)");return(0,o.jsxs)(a.Kq,{align:"center",direction:"row",filter:s,spacing:2,children:[(0,o.jsx)(i.Ee,{alt:"".concat(t," icon"),src:c,w:4}),(0,o.jsx)(a.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 I},$: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),f=n(79227),m=(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":m.downloads,tooltip:"Download numbers are periodically sourced from the npm registry",value:"".concat(p.toLocaleString()," weekly downloads")}),(0,h.jsx)(v,{"data-testid":m.published,value:(0,h.jsx)(f.q,{date:g,fontSize:"xs",formattedDate:(0,s.Z)(g,{addSuffix:!0})})}),(0,h.jsx)(v,{"data-testid":m.author,value:(0,h.jsxs)(h.Fragment,{children:["By"," ",(0,h.jsx)(u.O,{color:"link",to:(0,l.yc)({query:x}),children:x})]})})]})},x=n(29439),g=n(91523),j=n(59534),w=n(7991),b=n(77766),y=function(e){var t=e.comment;return(0,h.jsxs)(o.xv,{"data-testid":m.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]})},k=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.constructFrameworks,s=n.name,d=n.version;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.u,{constructFrameworks:c,mr:2,zIndex:1}),(0,h.jsx)(o.X6,{as:"h3",color:"textPrimary","data-testid":m.title,fontSize:"md",fontWeight:"bold",wordBreak:"normal",children:s})]})}),i?(0,h.jsx)(y,{comment:i}):(0,h.jsx)(o.xv,{color:"textPrimary","data-testid":m.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},P=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),f=d===C.SQ.TypeScript||C.dX.has(d);if(!u)return null;var m=i.name,v=i.icon,p=(0,h.jsx)(v,{"aria-label":"Supports ".concat(m),borderRadius:n?"50%":0,h:z[o],opacity:f?1:.2,w:z[o]});return(0,h.jsx)(L.N,{language:d,children:f?(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)}))})},q=function(){var e=D();return(0,h.jsx)(P,(0,a.Z)((0,a.Z)({},e),{},{size:"sm"}))},A=n(29988),E=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)(A.X,{value:t,variant:a,children:r},t)}))})},F=function(){return(0,h.jsx)(o.fG,{_hover:{"> article":{bg:"hoverPrimary"}},children:(0,h.jsxs)(o.rj,{as:"article",bg:"bgSecondary",border:"base",borderRadius:"sm",boxShadow:"base",color:"textPrimary","data-testid":m.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)(k,{})}),(0,h.jsx)(o.kC,{align:"center",sx:{gap:"0.5rem"},wrap:"wrap",children:(0,h.jsx)(E,{})})]}),(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":m.languages,direction:"row",spacing:2,children:(0,h.jsx)(q,{})})]})]})})},O=(0,i.createContext)(null),D=function(){return(0,i.useContext)(O)},I=function(e){var t=e["data-event"],n=e.pkg,i=e.variant,o=void 0===i?r.Wide:i;return(0,h.jsx)(O.Provider,{value:(0,a.Z)((0,a.Z)({},n),{},{dataEvent:t}),children:o===r.Wide&&(0,h.jsx)(F,{})})}},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,f=e.zIndex,m=(0,a.Z)(e,d);return(0,s.jsx)(c.O,{"aria-label":"Tag: ".concat(u),to:(0,o.yc)({keywords:[n]}),zIndex:f,children:(0,s.jsx)(i.Vp,(0,r.Z)((0,r.Z)({_hover:{textDecoration:"underline"}},m),{},{children:(0,s.jsx)(i.Sn,{children:t})}))})}},41712:function(e,t,n){n.d(t,{T:function(){return d}});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(56804),s=n(80184),d=(["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,d=e.pageName,l=(0,o.aQ)(i[d]);(0,r.useEffect)((function(){l()}),[l]);var u=(0,c.E)("feeds")||[],f=n.suffix,m=void 0===f||f,h=n.title,v=n.description,p=m?"".concat(h," - Construct Hub"):h;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(a.q,{children:[!1,(0,s.jsx)("meta",{content:"width=device-width, initial-scale=1",name:"viewport"}),(0,s.jsx)("meta",{charSet:"utf-8"}),u.map((function(e){var t=e.url,n=e.mimeType;return(0,s.jsx)("link",{href:t,rel:"alternate",type:n},t)})),(0,s.jsx)("title",{children:p}),(0,s.jsx)("meta",{content:p,property:"og:title"}),(0,s.jsx)("meta",{content:p,name:"twitter:title"}),(0,s.jsx)("meta",{content:"summary",name:"twitter:card"}),(0,s.jsx)("meta",{content:v,name:"description"}),(0,s.jsx)("meta",{content:v,property:"og:description"}),(0,s.jsx)("meta",{content:v,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(31959),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 m}});var r=n(29439),a=n(72791),i=n(64880),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)},f=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},m=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,m=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 f(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:m,search:p.toString()}))}),[w,t]);var y=(0,a.useCallback)((function(e){if(b(e),n)try{localStorage.setItem(l,e)}catch(t){}}),[n]);return(0,a.useMemo)((function(){return[w,y]}),[w,y])}},4487:function(e,t,n){n.d(t,{K:function(){return i}});var r=n(72791),a=n(64880),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(93433),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=29.ab13262f.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static/js/29.4850c1e7.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, useColorModeValue } 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 const brightness = useColorModeValue(\"none\", \"brightness(1.75)\");\n return (\n <Stack align=\"center\" direction=\"row\" filter={brightness} 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=\"link\"\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'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 constructFrameworks,\n name,\n version,\n } = usePackageCard();\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\n constructFrameworks={constructFrameworks}\n mr={2}\n zIndex={1}\n />\n <ChakraHeading\n as=\"h3\"\n color=\"textPrimary\"\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=\"textPrimary\"\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: \"hoverPrimary\",\n },\n }}\n >\n <Grid\n as=\"article\"\n bg=\"bgSecondary\"\n border=\"base\"\n borderRadius=\"sm\"\n boxShadow=\"base\"\n color=\"textPrimary\"\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 { ExtendedCatalogPackage } from \"../../api/catalog-search\";\nimport { PackageCardType } from \"./constants\";\nimport { WideCard } from \"./WideCard\";\n\nexport interface PackageCardProps {\n \"data-event\"?: string;\n pkg: ExtendedCatalogPackage;\n variant?: PackageCardType;\n}\n\ninterface PackageCardState extends ExtendedCatalogPackage {\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\";\nimport { useConfigValue } from \"../../hooks/useConfigValue\";\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 feedUrls = useConfigValue(\"feeds\") || [];\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 {feedUrls.map(({ url, mimeType }) => (\n <link href={url} key={url} rel=\"alternate\" type={mimeType} />\n ))}\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","brightness","useColorModeValue","align","direction","filter","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","constructFrameworks","version","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","feedUrls","useConfigValue","suffix","title","formattedTitle","Helmet","process","content","charSet","url","mimeType","href","rel","type","property","forwardRef","ref","formatString","format","boxProps","dateTime","toISOString","displayName","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","Boolean","mapPackageTags","KEYWORD_IGNORE_LIST","mapPackageKeywords","toLowerCase","has","push","add"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"static/js/29.ab13262f.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, useColorModeValue } 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 const brightness = useColorModeValue(\"none\", \"brightness(1.75)\");\n return (\n <Stack align=\"center\" direction=\"row\" filter={brightness} 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=\"link\"\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'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 constructFrameworks,\n name,\n version,\n } = usePackageCard();\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\n constructFrameworks={constructFrameworks}\n mr={2}\n zIndex={1}\n />\n <ChakraHeading\n as=\"h3\"\n color=\"textPrimary\"\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=\"textPrimary\"\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: \"hoverPrimary\",\n },\n }}\n >\n <Grid\n as=\"article\"\n bg=\"bgSecondary\"\n border=\"base\"\n borderRadius=\"sm\"\n boxShadow=\"base\"\n color=\"textPrimary\"\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 { ExtendedCatalogPackage } from \"../../api/catalog-search\";\nimport { PackageCardType } from \"./constants\";\nimport { WideCard } from \"./WideCard\";\n\nexport interface PackageCardProps {\n \"data-event\"?: string;\n pkg: ExtendedCatalogPackage;\n variant?: PackageCardType;\n}\n\ninterface PackageCardState extends ExtendedCatalogPackage {\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\";\nimport { useConfigValue } from \"../../hooks/useConfigValue\";\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 feedUrls = useConfigValue(\"feeds\") || [];\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 {feedUrls.map(({ url, mimeType }) => (\n <link href={url} key={url} rel=\"alternate\" type={mimeType} />\n ))}\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","brightness","useColorModeValue","align","direction","filter","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","constructFrameworks","version","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","feedUrls","useConfigValue","suffix","title","formattedTitle","Helmet","process","content","charSet","url","mimeType","href","rel","type","property","forwardRef","ref","formatString","format","boxProps","dateTime","toISOString","displayName","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","Boolean","mapPackageTags","KEYWORD_IGNORE_LIST","mapPackageKeywords","toLowerCase","has","push","add"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunkconstruct_hub_webapp=self.webpackChunkconstruct_hub_webapp||[]).push([[418],{90418:function(n,r,t){t.r(r),t.d(r,{default:function(){return o}});var a=t(28735),e=t(92213),u=t(
|
|
2
|
-
//# sourceMappingURL=418.
|
|
1
|
+
"use strict";(self.webpackChunkconstruct_hub_webapp=self.webpackChunkconstruct_hub_webapp||[]).push([[418],{90418:function(n,r,t){t.r(r),t.d(r,{default:function(){return o}});var a=t(28735),e=t(92213),u=t(64880),s=t(95038),c=t(19748),i=t(80184),o=function(){var n=(0,s.r)();if(n.isLoading||!n.data)return(0,i.jsx)(a.M5,{minH:"16rem",children:(0,i.jsx)(e.$,{size:"xl"})});var r=function(n){var r=n.packages;return r[Math.floor(Math.random()*r.length)]}(n.data),t=(0,c.Mt)({name:r.name,version:r.version});return(0,i.jsx)(u.l_,{to:t})}}}]);
|
|
2
|
+
//# sourceMappingURL=418.6340af6e.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static/js/418.
|
|
1
|
+
{"version":3,"file":"static/js/418.6340af6e.chunk.js","mappings":"qPAaaA,EAA4B,WACvC,IAAMC,GAAUC,EAAAA,EAAAA,KAEhB,GAAID,EAAQE,YAAcF,EAAQG,KAChC,OACE,SAAC,KAAD,CAAQC,KAAK,QAAb,UACE,SAAC,IAAD,CAASC,KAAK,SAKpB,IAAMC,EAjBa,SAACN,GACpB,IAAMO,EAAWP,EAAQO,SAEzB,OAAOA,EADKC,KAAKC,MAAMD,KAAKE,SAAWH,EAASI,QAEjD,CAaaC,CAAaZ,EAAQG,MAC3BU,GAAMC,EAAAA,EAAAA,IAAe,CACzBC,KAAMT,EAAIS,KACVC,QAASV,EAAIU,UAGf,OAAO,SAAC,KAAD,CAAUC,GAAIJ,GACtB,C","sources":["views/Random/Random.tsx"],"sourcesContent":["import { Center, Spinner } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Redirect } from \"react-router-dom\";\nimport type { CatalogPackage, Packages } from \"../../api/package/packages\";\nimport { useCatalog } from \"../../hooks/useCatalog\";\nimport { getPackagePath } from \"../../util/url\";\n\nconst getRandomPkg = (catalog: Packages): CatalogPackage => {\n const packages = catalog.packages;\n const idx = Math.floor(Math.random() * packages.length);\n return packages[idx];\n};\n\nexport const Random: FunctionComponent = () => {\n const catalog = useCatalog();\n\n if (catalog.isLoading || !catalog.data) {\n return (\n <Center minH=\"16rem\">\n <Spinner size=\"xl\" />\n </Center>\n );\n }\n\n const pkg = getRandomPkg(catalog.data);\n const url = getPackagePath({\n name: pkg.name,\n version: pkg.version,\n });\n\n return <Redirect to={url} />;\n};\n"],"names":["Random","catalog","useCatalog","isLoading","data","minH","size","pkg","packages","Math","floor","random","length","getRandomPkg","url","getPackagePath","name","version","to"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunkconstruct_hub_webapp=self.webpackChunkconstruct_hub_webapp||[]).push([[51],{55051:function(e,n,t){t.r(n),t.d(n,{default:function(){return we}});var r,a=t(28735),i=t(41712),o=t(777),s=t(93433),l=t(4942),c=t(1413),u=t(29439),d=t(72791),f=t(30791),v=t(59707),h=t(3445),x=t(59534),m=t(16478),g=(r={},(0,l.Z)(r,m.W.NameAsc,"A-Z"),(0,l.Z)(r,m.W.NameDesc,"Z-A"),(0,l.Z)(r,m.W.PublishDateAsc,"Oldest"),(0,l.Z)(r,m.W.PublishDateDesc,"Recently updated"),(0,l.Z)(r,m.W.DownloadsDesc,"Most downloads"),(0,l.Z)(r,m.W.DownloadsAsc,"Least downloads"),r),p=function(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];return x.oJ.apply(void 0,["Search"].concat(n))},j={FILTERS:p("Filters"),RESULTS:p("Results"),SEARCH:p("Search"),SORT:p("Sort")},y=t(75272),b=t(10855),C=t(74817),k=t(80184),S=function(e){var n=e.name,t=e.hint,r=(0,b.Sx)({base:"auto",md:"right"});return(0,k.jsxs)(a.kC,{align:"center",mb:1,children:[(0,k.jsx)(a.X6,{as:"h3",size:"sm",w:"max-content",children:n}),t?(0,k.jsxs)(C.J2,{colorScheme:"dark",placement:r,strategy:"fixed",children:[(0,k.jsx)(C.xo,{children:(0,k.jsx)(a.kC,{"aria-label":"Hint: ".concat(n),as:"button","data-event":(0,x.oJ)(j.FILTERS,n,"Popover"),ml:2,children:(0,k.jsx)(y.UO,{h:3.5,w:3.5})})}),(0,k.jsxs)(C.yk,{bg:"gray.700",borderRadius:"base",color:"white",fontSize:"sm",mx:{base:"1rem",md:"initial"},shadow:"whiteAlpha.300",children:[(0,k.jsx)(C.QH,{bg:"gray.700"}),(0,k.jsx)(C.b,{children:(0,k.jsx)(a.xv,{children:t})})]})]}):null]})},T=(0,t(88606).$)("searchRedesign",["page","searchDetails","nextPage","prevPage","goToPage","sortButton","sortDropdown","sortItem","filtersPanel","cdkTypeFilter","cdkVersionFilter","filterItem","languagesFilter"]),Z=function(e){var n=e["data-testid"],t=e.value,r=e.onValueChange,i=e.options,o=e.name,s=e.hint;return(0,k.jsxs)(a.Kq,{"data-testid":n,spacing:1,children:[(0,k.jsx)(S,{hint:s,name:o}),(0,k.jsx)(h.Ee,{onChange:r,value:t,children:(0,k.jsx)(a.Kq,{spacing:1,children:i.map((function(e){var n=e.display,t=e.value,r=(0,x.oJ)(j.FILTERS,o,"Filter",n);return(0,k.jsx)(h.Y8,{"data-event":r,value:t,children:(0,k.jsx)(a.xv,{color:"textTertiary","data-event":r,"data-testid":T.filterItem,"data-value":t,isTruncated:!0,children:n})},t)}))})})]})},w=t(29499),R=t(4487),D=function(e){var n=parseInt(e);return"NaN"==="".concat(n)?0:n},F=function(e){return e?decodeURIComponent(e).split(","):[]},E=function(e){return"undefined"===typeof window?null:new URL(window.location.href).searchParams.get(e)},K=function(e,n){var t=(0,R.K)().get(e);return(0,d.useMemo)((function(){return n?n(t):t}),[t])},O=function(){var e;return null!==(e=K(w.Tx.CDK_TYPE))&&void 0!==e?e:void 0},A=function(){return K(w.Tx.CDK_MAJOR,(function(e){return e?D(e):void 0}))},I=function(){return K(w.Tx.KEYWORDS,F)},P=function(){return K(w.Tx.LANGUAGES,F)},L=function(){var e;return null!==(e=K(w.Tx.SEARCH_QUERY))&&void 0!==e?e:""},W=function(){var e;return null!==(e=K(w.Tx.SORT))&&void 0!==e?e:void 0},q=function(){return K(w.Tx.TAGS,F)},M=t(45987),J=t(79271),N=t(19748),V=["offset"],U=function(){var e=(0,J.k6)().push;return(0,d.useCallback)((function(n){var t=null!==n&&void 0!==n?n:{},r=t.offset,a=(0,M.Z)(t,V);e((0,N.yc)((0,c.Z)((0,c.Z)((0,c.Z)({},function(){var e,n,t,r;return{query:null!==(e=E(w.Tx.SEARCH_QUERY))&&void 0!==e?e:"",keywords:F(E(w.Tx.KEYWORDS)),cdkType:null!==(n=E(w.Tx.CDK_TYPE))&&void 0!==n?n:void 0,cdkMajor:function(){var e=E(w.Tx.CDK_MAJOR);return e?D(e):void 0}(),languages:F(E(w.Tx.LANGUAGES)),offset:D(null!==(t=E(w.Tx.OFFSET))&&void 0!==t?t:""),sort:null!==(r=E(w.Tx.SORT))&&void 0!==r?r:void 0,tags:F(E(w.Tx.TAGS))}}()),a),{},{offset:null!==r&&void 0!==r?r:0})))}),[e])},z=function(){var e,n=O(),t=A(),r=U(),a=(0,v.A)(),i=(0,d.useMemo)((function(){var e=a.constructFrameworks,n=Object.entries(e).reduce((function(e,n){var t=(0,u.Z)(n,2),r=t[0],a=t[1];return a.pkgCount<1?e:(0,c.Z)((0,c.Z)({},e),{},(0,l.Z)({},r,(0,c.Z)({display:f.lQ[r],value:r},a)))}),{});return Object.keys(n).length?n:void 0}),[a]),o=(0,d.useMemo)((function(){var e;if(i&&n){var t=null===(e=i[n])||void 0===e?void 0:e.majorVersions;if(t)return(0,s.Z)(t).sort((function(e,n){return e-n})).map((function(e){return{value:e.toString(),display:"".concat(f.lQ[n]," v").concat(e)}}))}}),[i,n]);if(!i)return null;return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(Z,{"data-testid":T.cdkTypeFilter,hint:"Choose the right CDK for your IaC technology: AWS CDK for AWS CloudFormation, CDKTF for Terraform, or CDK8s for Kubernetes.",name:"CDK Type",onValueChange:function(e){r({cdkType:e?e:void 0,cdkMajor:void 0})},options:[{display:"Any CDK Type",value:""}].concat((0,s.Z)(Object.values(i))),value:null!==n&&void 0!==n?n:""}),!!(o&&o.length>1)&&(0,k.jsx)(Z,{"data-testid":T.cdkVersionFilter,hint:"Choose the major version of the CDK you're using to see only constructs that will work with that version.",name:"CDK Major Version",onValueChange:function(e){var n=void 0;e&&(n=parseInt(e,10)),r({cdkMajor:n})},options:[{display:"Any Major Version",value:""}].concat((0,s.Z)(o)),value:null!==(e=null===t||void 0===t?void 0:t.toString())&&void 0!==e?e:""})]})},H=t(62732),_=t(81070),Y=t(65223),G=t(77231),Q=t(82504),$=function(e){var n=e.display,t=e.value,r=e.isDisabled,i=e.disabledHint,o=e.isChecked,s=e.onChange;return(0,k.jsx)(H.XZ,{isChecked:o,isDisabled:r,onChange:s,children:(0,k.jsx)(_.u,{hasArrow:!0,isDisabled:!r&&!i,label:i,placement:"right",children:(0,k.jsx)(a.xv,{color:"textTertiary","data-testid":T.filterItem,"data-value":t,isTruncated:!0,children:n})})},t)},B=function(e){var n=e["data-testid"],t=e.initialItemCount,r=e.hint,i=e.name,o=e.options,s=e.values,l=e.onValueChange,u=(0,Y.qY)(),f=(0,x.z$)().trackCustomEvent,v=function(e){return function(){f((0,x.Q5)({name:(0,x.oJ)(j.FILTERS,i,"Filter",e.display)})),l(e.value)}},h=o,m=[];t&&(h=o.slice(0,t),m=o.slice(t,o.length));var g=m.length>0;return(0,k.jsxs)(a.kC,{"data-testid":n,direction:"column",children:[(0,k.jsx)(S,{hint:r,name:i}),(0,k.jsxs)(a.Kq,{mt:1,spacing:1,children:[h.map((function(e){return(0,d.createElement)($,(0,c.Z)((0,c.Z)({},e),{},{isChecked:s.includes(e.value),key:e.value,onChange:v(e)}))})),g&&(0,k.jsx)(G.UO,{animateOpacity:!0,in:u.isOpen,unmountOnExit:!0,children:(0,k.jsx)(a.Kq,{spacing:1,children:m.map((function(e){return(0,d.createElement)($,(0,c.Z)((0,c.Z)({},e),{},{isChecked:s.includes(e.value),key:e.value,onChange:v(e)}))}))})})]}),g&&(0,k.jsx)(a.kC,{align:"start",mt:1,children:(0,k.jsx)(Q.zx,{color:"textTertiary","data-event":(0,x.oJ)(j.FILTERS,i,"Show More"),fontWeight:"normal",leftIcon:u.isOpen?(0,k.jsx)(y.g8,{}):(0,k.jsx)(y.v4,{}),onClick:u.onToggle,size:"sm",textAlign:"left",variant:"link",w:"auto",children:u.isOpen?"Show fewer options (".concat(h.length,")"):"Show more options (".concat(m.length,")")})})]})},X=function(){var e=I(),n=(0,v.A)().keywords,t=U(),r=(0,d.useMemo)((function(){var t=(0,s.Z)(n.entries()).sort((function(e,n){return(0,u.Z)(e,2)[1]<(0,u.Z)(n,2)[1]?1:-1})).filter((function(n){var t=(0,u.Z)(n,1)[0];return!e.includes(t)})).map((function(e){var n=(0,u.Z)(e,1)[0];return{display:n,value:n}})).slice(0,25),r=e.filter((function(e){return!t.some((function(n){return n.value===e}))}));return[].concat((0,s.Z)(r.map((function(e){return{display:e,value:e}}))),(0,s.Z)(t))}),[n,e]);return(0,k.jsx)(B,{"data-testid":T.languagesFilter,hint:"Focus the results by choosing one or more keywords reflecting the kind of construct you're looking for. Keywords are provided by construct authors.",initialItemCount:5,name:"Keywords",onValueChange:function(n){t({keywords:e.includes(n)?e.filter((function(e){return e!==n})):[].concat((0,s.Z)(e),[n])})},options:r,values:e})},ee=t(86617),ne=Object.entries(ee.k8).map((function(e){var n=(0,u.Z)(e,2),t=n[0],r=n[1];return(0,c.Z)({display:r,value:t},ee.dX.has(t)?{isDisabled:!1}:{isDisabled:!0,disabledHint:"".concat(ee.k8[t]," support is coming soon!")})})).sort((function(e,n){return e.isDisabled>n.isDisabled?1:-1})),te=function(){var e=P(),n=U();return(0,k.jsx)(B,{"data-testid":T.languagesFilter,hint:"Choose one or more languages. Results include constructs for use with at least one of the selected languages.",name:"Programming Language",onValueChange:function(t){var r=t;n({languages:e.includes(r)?e.filter((function(e){return e!==r})):[].concat((0,s.Z)(e),[r])})},options:ne,values:e})},re=t(56804),ae=function(){var e=(0,re.E)("packageTags"),n=(0,re.E)("packageTagGroups"),t=(0,d.useMemo)((function(){var t,r=new Map;return null===n||void 0===n||n.forEach((function(e){r.set(e.id,e)})),function(e,n){return e.reduce((function(e,t){var r,a,i,o=null===(r=t.searchFilter)||void 0===r?void 0:r.groupBy,u=o?n.get(o):void 0;if(o&&u){var d=e[o];return d?(d.tags=[].concat((0,s.Z)(d.tags),[t]),e):(0,c.Z)((0,c.Z)({},e),{},(0,l.Z)({},o,(0,c.Z)((0,c.Z)({},u),{},{tags:[t]})))}return o?(0,c.Z)((0,c.Z)({},e),{},(0,l.Z)({},o,{id:o,tags:[].concat((0,s.Z)(null!==(a=null===e||void 0===e||null===(i=e[o])||void 0===i?void 0:i.tags)&&void 0!==a?a:[]),[t])})):e}),{})}(null!==(t=null===e||void 0===e?void 0:e.filter((function(e){return Boolean(e.searchFilter)})))&&void 0!==t?t:[],r)}),[e,n]),r=q(),a=U(),i=function(e){a({tags:r.includes(e)?r.filter((function(n){return n!==e})):[].concat((0,s.Z)(r),[e])})},o=(0,d.useCallback)((function(e){var n,i,o=new Set((null!==(n=null===(i=t[e])||void 0===i?void 0:i.tags)&&void 0!==n?n:[]).map((function(e){return e.id})));return function(e){var n=r.filter((function(e){return!o.has(e)}));a({tags:e?[].concat((0,s.Z)(n),[e]):n})}}),[t,r,a]);return(0,k.jsx)(k.Fragment,{children:Object.values(t).map((function(e){var n,t,a=e.filterType,l=e.id,u=e.label,f=e.tooltip,v=e.tags,h={hint:f,name:null!==u&&void 0!==u?u:l,options:v.map((function(e){return{display:e.searchFilter.display,value:e.id}}))};return"radio"===a?(0,d.createElement)(Z,(0,c.Z)((0,c.Z)({},h),{},{key:l,onValueChange:o(l),options:[{display:"Any ".concat(h.name),value:""}].concat((0,s.Z)(h.options)),value:null!==(n=null===(t=v.find((function(e){return r.includes(e.id)})))||void 0===t?void 0:t.id)&&void 0!==n?n:""})):(0,d.createElement)(B,(0,c.Z)((0,c.Z)({},h),{},{key:l,onValueChange:i,values:r}))}))})},ie="5.75rem",oe=function(){return(0,k.jsx)(o.Z,{borderRadius:"sm","data-testid":T.filtersPanel,display:{base:"none",md:"flex"},maxH:"calc(100vh - ".concat(ie," - 1.25rem)"),maxW:"23rem",minW:"100%",overflow:"hidden auto",p:4,pos:"sticky",top:ie,zIndex:"docked",children:(0,k.jsxs)(a.Kq,{color:"textPrimary",h:"max-content",spacing:4,top:4,children:[(0,k.jsx)(a.X6,{as:"h2",size:"sm",children:"Filters"}),(0,k.jsx)(z,{}),(0,k.jsx)(te,{}),(0,k.jsx)(ae,{}),(0,k.jsx)(X,{})]})})},se=t(92213),le=t(64159),ce=(0,l.Z)({},le.$.Wide,(function(e){var n=e["data-event"],t=e.items;return(0,k.jsx)(a.Kq,{spacing:4,children:t.map((function(e){return(0,k.jsx)(le.L,{"data-event":n,pkg:e,variant:le.$.Wide},"".concat(e.name,"-").concat(e.version))}))})})),ue=(0,d.memo)((function(e){var n=e["data-event"],t=e.cardView,r=void 0===t?le.$.Wide:t,i=e.items;if(e.loading||!i)return(0,k.jsx)(a.M5,{children:(0,k.jsx)(se.$,{size:"xl"})});var o=ce[r];return(0,k.jsx)(o,{"data-event":n,items:i})}));ue.displayName="PackageList";var de=t(45832),fe=function(e){var n=e["data-event"],t=e["data-testid"],r=e.icon,a=e.label,i=e.onClick,o={"aria-label":a,borderRadius:"md",borderColor:"blue.500",colorScheme:"blue","data-event":n,"data-testid":t,icon:(0,k.jsx)(r,{color:"blue.500",h:5,w:5}),mx:2,h:10,w:10,variant:"outline"};return(0,k.jsx)(Q.hU,(0,c.Z)((0,c.Z)({},o),{},{disabled:!i,onClick:i}))},ve=t(95798),he=function(e){var n=e["data-event"],t=e["data-testid"],r=e.pageLimit,i=e.offset,o=U(),s=(0,x.z$)().trackCustomEvent,l=(0,d.useState)((i+1).toString()),c=(0,u.Z)(l,2),f=c[0],v=c[1];(0,d.useEffect)((function(){v((i+1).toString())}),[i]);return(0,k.jsxs)(a.kC,{align:"center",as:"form",mx:2,onSubmit:function(e){e.preventDefault(),o({offset:parseInt(f)-1})},children:[(0,k.jsx)(ve.II,{"aria-label":"Jump to page",colorScheme:"brand","data-testid":t,h:10,max:r+1,min:1,name:"page",onChange:function(e){e.preventDefault(),v(e.target.value)},onFocus:function(){n&&s((0,x.Q5)({name:n}))},p:0,textAlign:"center",type:"number",value:f,w:10}),(0,k.jsxs)(a.xv,{ml:2,w:"max-content",children:["of ",r+1]})]})},xe=function(e){var n=e.offset,t=e.pageLimit,r=U(),i=n<t?function(){return r({offset:n+1})}:void 0,o=n>0?function(){return r({offset:n-1})}:void 0;return(0,k.jsxs)(a.Kq,{align:"center",direction:"row",justify:"space-between",maxW:"18rem",mx:"auto",spacing:4,w:"full",children:[(0,k.jsx)(fe,{"data-event":(0,x.oJ)(j.RESULTS,"Previous Page"),"data-testid":T.prevPage,icon:y.wy,label:"Previous page button",onClick:o}),(0,k.jsx)(he,{"data-event":(0,x.oJ)(j.RESULTS,"Go to Page"),"data-testid":T.goToPage,offset:n,pageLimit:t}),(0,k.jsx)(fe,{"data-event":(0,x.oJ)(j.RESULTS,"Next Page"),"data-testid":T.nextPage,icon:y.XC,label:"Next page button",onClick:i})]})},me=t(99185),ge=function(){var e=L(),n=U(),t=(0,d.useState)(null!==e&&void 0!==e?e:""),r=(0,u.Z)(t,2),a=r[0],i=r[1];return(0,k.jsx)(me.E1,{bg:"bgSecondary","data-event":j.SEARCH,onChange:function(e){return i(e.target.value)},onSubmit:function(e){e.preventDefault(),n({query:a,sort:void 0})},value:a})},pe=function(e){var n=e.children;return(0,k.jsx)(a.xv,{as:"strong",color:"textSecondary",children:n})},je=function(e){var n=e.first,t=e.count,r=e.last;return!n&&r>=t?(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(pe,{children:t})," of ",(0,k.jsx)(pe,{children:t})]}):(0,k.jsxs)(k.Fragment,{children:[(0,k.jsxs)(pe,{children:[t?n+1:t," - ",r>t?t:r]})," ","of ",(0,k.jsx)(pe,{children:t})]})},ye=function(e){var n=e.limit,t=e.offset,r=e.count,i=e.filtered,o=e.query,s=n*t,l=s+n,c=r>0;return(0,k.jsxs)(a.xv,{"data-testid":T.searchDetails,children:[c?(0,k.jsxs)(k.Fragment,{children:["Displaying ",(0,k.jsx)(je,{count:r,first:s,last:l})," ",i?"search results":"constructs"]}):(0,k.jsx)(k.Fragment,{children:i?"There were no search results":"No constructs found"}),o&&(0,k.jsxs)(k.Fragment,{children:[" for ",(0,k.jsx)(pe,{children:o})]}),".",!c&&i&&(0,k.jsx)(k.Fragment,{children:" Try a different term."})]})},be=t(3308),Ce=function(){var e=W(),n=U();return(0,k.jsx)(Z,{hint:"Sets the order of search results",name:"Sorted By",onValueChange:function(e){n({sort:e||void 0})},options:[{display:"Relevance",value:""}].concat((0,s.Z)(Object.entries(g).map((function(e){var n=(0,u.Z)(e,2),t=n[0];return{display:n[1],value:t}})))),value:null!==e&&void 0!==e?e:""})},ke=function(){var e=(0,Y.qY)();return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(Q.zx,{colorScheme:"brand",display:{md:"none"},onClick:e.onOpen,rightIcon:(0,k.jsx)(y.v4,{}),variant:"link",children:"Sorting and Filters"}),(0,k.jsxs)(be.dy,(0,c.Z)((0,c.Z)({},e),{},{placement:"bottom",children:[(0,k.jsx)(be.P1,{}),(0,k.jsxs)(be.sc,{color:"textPrimary",maxH:"full",children:[(0,k.jsx)(be.OX,{borderBottom:"base",children:"Sorting and Filters"}),(0,k.jsx)(be.cC,{}),(0,k.jsx)(be.Ng,{children:(0,k.jsxs)(a.Kq,{color:"textPrimary",pb:4,spacing:4,children:[(0,k.jsx)(Ce,{}),(0,k.jsx)(z,{}),(0,k.jsx)(te,{}),(0,k.jsx)(ae,{}),(0,k.jsx)(X,{})]})})]})]}))]})},Se=t(81641),Te=function(){var e=W(),n=U(),t=e?g[e]:"Relevance";return(0,k.jsxs)(a.kC,{align:"center",children:[(0,k.jsx)(a.xv,{children:"Sorted by"}),(0,k.jsxs)(Se.v2,{children:[(0,k.jsx)(Se.j2,{as:Q.zx,color:"link","data-event":(0,x.oJ)(j.SORT,"Menu"),"data-testid":T.sortButton,ml:2,pl:2,pr:2,py:1,rightIcon:(0,k.jsx)(y.v4,{}),variant:"link",children:t}),(0,k.jsxs)(Se.qy,{"data-testid":T.sortDropdown,minW:"180",zIndex:"sticky",children:[(0,k.jsx)(Se.sN,{"data-event":(0,x.oJ)(j.SORT,"Option","Relevance"),"data-testid":T.sortItem,"data-value":"",onClick:function(){return n({sort:void 0})},children:"Relevance"},"Relevance"),Object.entries(g).map((function(e){var t=(0,u.Z)(e,2),r=t[0],a=t[1];return(0,k.jsx)(Se.sN,{"data-event":(0,x.oJ)(j.SORT,"Option",a),"data-testid":T.sortItem,"data-value":r,onClick:function(){return n({sort:r})},children:a},r)}))]})]})]})},Ze=function(){var e=U(),n=K(w.Tx.OFFSET,(function(e){return D(null!==e&&void 0!==e?e:"")})),t=L(),r=I(),o=P(),s=A(),l=O(),c=W(),u=q(),f=(0,de.D)({offset:n,limit:25,query:t,keywords:r,languages:o,cdkMajor:s,cdkType:l,sort:c,tags:u}),v=f.page,h=f.pageLimit,x=f.results;return(0,d.useEffect)((function(){x.length&&(n<0||n>h)&&e(n<0?{offset:0}:{offset:h})}),[x,n,h]),(0,d.useEffect)((function(){window.scrollTo(0,0)}),[v]),(0,k.jsx)(i.T,{meta:{title:t||"Search",description:t?"".concat(x.length," results for ").concat(t," at Construct Hub"):"Search reusable components for your cloud application"},pageName:"search",children:(0,k.jsxs)(a.Kq,{direction:"column",maxW:"100vw",pb:4,px:4,spacing:4,children:[(0,k.jsx)(ge,{}),(0,k.jsxs)(a.Kq,{align:{base:"start",lg:"center"},direction:{base:"column-reverse",lg:"row"},justify:{base:"initial",lg:"space-between"},spacing:4,children:[(0,k.jsx)(ye,{count:x.length,filtered:!!t,limit:25,offset:n,query:t}),(0,k.jsx)(a.xu,{display:{base:"none",md:"initial"},children:(0,k.jsx)(Te,{})}),(0,k.jsx)(a.xu,{display:{md:"none"},children:(0,k.jsx)(ke,{})})]}),(0,k.jsx)(ue,{"data-event":j.RESULTS,items:v}),(0,k.jsx)(a.xu,{w:"full",children:(0,k.jsx)(xe,{offset:n,pageLimit:h})})]})})},we=function(){return(0,k.jsx)(i.T,{meta:{title:"Search - Construct Hub",description:"Search Construct Libraries for AWS CDK, CDK8s, and CDKTF"},pageName:"search",children:(0,k.jsxs)(a.rj,{"data-testid":T.page,gap:4,h:"full",maxW:"100%",px:{base:0,md:6},py:6,templateColumns:{base:"1fr",md:"auto 1fr"},templateRows:"1fr",children:[(0,k.jsx)(oe,{}),(0,k.jsx)(Ze,{})]})})}}}]);
|
|
2
|
-
//# sourceMappingURL=51.
|
|
1
|
+
"use strict";(self.webpackChunkconstruct_hub_webapp=self.webpackChunkconstruct_hub_webapp||[]).push([[51],{55051:function(e,n,t){t.r(n),t.d(n,{default:function(){return we}});var r,a=t(28735),i=t(41712),o=t(777),s=t(93433),l=t(4942),c=t(1413),u=t(29439),d=t(72791),f=t(30791),v=t(59707),h=t(3445),x=t(59534),m=t(16478),g=(r={},(0,l.Z)(r,m.W.NameAsc,"A-Z"),(0,l.Z)(r,m.W.NameDesc,"Z-A"),(0,l.Z)(r,m.W.PublishDateAsc,"Oldest"),(0,l.Z)(r,m.W.PublishDateDesc,"Recently updated"),(0,l.Z)(r,m.W.DownloadsDesc,"Most downloads"),(0,l.Z)(r,m.W.DownloadsAsc,"Least downloads"),r),p=function(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];return x.oJ.apply(void 0,["Search"].concat(n))},j={FILTERS:p("Filters"),RESULTS:p("Results"),SEARCH:p("Search"),SORT:p("Sort")},y=t(75272),b=t(10855),C=t(74817),k=t(80184),S=function(e){var n=e.name,t=e.hint,r=(0,b.Sx)({base:"auto",md:"right"});return(0,k.jsxs)(a.kC,{align:"center",mb:1,children:[(0,k.jsx)(a.X6,{as:"h3",size:"sm",w:"max-content",children:n}),t?(0,k.jsxs)(C.J2,{colorScheme:"dark",placement:r,strategy:"fixed",children:[(0,k.jsx)(C.xo,{children:(0,k.jsx)(a.kC,{"aria-label":"Hint: ".concat(n),as:"button","data-event":(0,x.oJ)(j.FILTERS,n,"Popover"),ml:2,children:(0,k.jsx)(y.UO,{h:3.5,w:3.5})})}),(0,k.jsxs)(C.yk,{bg:"gray.700",borderRadius:"base",color:"white",fontSize:"sm",mx:{base:"1rem",md:"initial"},shadow:"whiteAlpha.300",children:[(0,k.jsx)(C.QH,{bg:"gray.700"}),(0,k.jsx)(C.b,{children:(0,k.jsx)(a.xv,{children:t})})]})]}):null]})},T=(0,t(88606).$)("searchRedesign",["page","searchDetails","nextPage","prevPage","goToPage","sortButton","sortDropdown","sortItem","filtersPanel","cdkTypeFilter","cdkVersionFilter","filterItem","languagesFilter"]),Z=function(e){var n=e["data-testid"],t=e.value,r=e.onValueChange,i=e.options,o=e.name,s=e.hint;return(0,k.jsxs)(a.Kq,{"data-testid":n,spacing:1,children:[(0,k.jsx)(S,{hint:s,name:o}),(0,k.jsx)(h.Ee,{onChange:r,value:t,children:(0,k.jsx)(a.Kq,{spacing:1,children:i.map((function(e){var n=e.display,t=e.value,r=(0,x.oJ)(j.FILTERS,o,"Filter",n);return(0,k.jsx)(h.Y8,{"data-event":r,value:t,children:(0,k.jsx)(a.xv,{color:"textTertiary","data-event":r,"data-testid":T.filterItem,"data-value":t,isTruncated:!0,children:n})},t)}))})})]})},w=t(29499),R=t(4487),D=function(e){var n=parseInt(e);return"NaN"==="".concat(n)?0:n},F=function(e){return e?decodeURIComponent(e).split(","):[]},E=function(e){return"undefined"===typeof window?null:new URL(window.location.href).searchParams.get(e)},K=function(e,n){var t=(0,R.K)().get(e);return(0,d.useMemo)((function(){return n?n(t):t}),[t])},O=function(){var e;return null!==(e=K(w.Tx.CDK_TYPE))&&void 0!==e?e:void 0},A=function(){return K(w.Tx.CDK_MAJOR,(function(e){return e?D(e):void 0}))},I=function(){return K(w.Tx.KEYWORDS,F)},P=function(){return K(w.Tx.LANGUAGES,F)},L=function(){var e;return null!==(e=K(w.Tx.SEARCH_QUERY))&&void 0!==e?e:""},W=function(){var e;return null!==(e=K(w.Tx.SORT))&&void 0!==e?e:void 0},q=function(){return K(w.Tx.TAGS,F)},M=t(45987),J=t(64880),N=t(19748),V=["offset"],U=function(){var e=(0,J.k6)().push;return(0,d.useCallback)((function(n){var t=null!==n&&void 0!==n?n:{},r=t.offset,a=(0,M.Z)(t,V);e((0,N.yc)((0,c.Z)((0,c.Z)((0,c.Z)({},function(){var e,n,t,r;return{query:null!==(e=E(w.Tx.SEARCH_QUERY))&&void 0!==e?e:"",keywords:F(E(w.Tx.KEYWORDS)),cdkType:null!==(n=E(w.Tx.CDK_TYPE))&&void 0!==n?n:void 0,cdkMajor:function(){var e=E(w.Tx.CDK_MAJOR);return e?D(e):void 0}(),languages:F(E(w.Tx.LANGUAGES)),offset:D(null!==(t=E(w.Tx.OFFSET))&&void 0!==t?t:""),sort:null!==(r=E(w.Tx.SORT))&&void 0!==r?r:void 0,tags:F(E(w.Tx.TAGS))}}()),a),{},{offset:null!==r&&void 0!==r?r:0})))}),[e])},z=function(){var e,n=O(),t=A(),r=U(),a=(0,v.A)(),i=(0,d.useMemo)((function(){var e=a.constructFrameworks,n=Object.entries(e).reduce((function(e,n){var t=(0,u.Z)(n,2),r=t[0],a=t[1];return a.pkgCount<1?e:(0,c.Z)((0,c.Z)({},e),{},(0,l.Z)({},r,(0,c.Z)({display:f.lQ[r],value:r},a)))}),{});return Object.keys(n).length?n:void 0}),[a]),o=(0,d.useMemo)((function(){var e;if(i&&n){var t=null===(e=i[n])||void 0===e?void 0:e.majorVersions;if(t)return(0,s.Z)(t).sort((function(e,n){return e-n})).map((function(e){return{value:e.toString(),display:"".concat(f.lQ[n]," v").concat(e)}}))}}),[i,n]);if(!i)return null;return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(Z,{"data-testid":T.cdkTypeFilter,hint:"Choose the right CDK for your IaC technology: AWS CDK for AWS CloudFormation, CDKTF for Terraform, or CDK8s for Kubernetes.",name:"CDK Type",onValueChange:function(e){r({cdkType:e?e:void 0,cdkMajor:void 0})},options:[{display:"Any CDK Type",value:""}].concat((0,s.Z)(Object.values(i))),value:null!==n&&void 0!==n?n:""}),!!(o&&o.length>1)&&(0,k.jsx)(Z,{"data-testid":T.cdkVersionFilter,hint:"Choose the major version of the CDK you're using to see only constructs that will work with that version.",name:"CDK Major Version",onValueChange:function(e){var n=void 0;e&&(n=parseInt(e,10)),r({cdkMajor:n})},options:[{display:"Any Major Version",value:""}].concat((0,s.Z)(o)),value:null!==(e=null===t||void 0===t?void 0:t.toString())&&void 0!==e?e:""})]})},H=t(62732),_=t(81070),Y=t(65223),G=t(77231),Q=t(82504),$=function(e){var n=e.display,t=e.value,r=e.isDisabled,i=e.disabledHint,o=e.isChecked,s=e.onChange;return(0,k.jsx)(H.XZ,{isChecked:o,isDisabled:r,onChange:s,children:(0,k.jsx)(_.u,{hasArrow:!0,isDisabled:!r&&!i,label:i,placement:"right",children:(0,k.jsx)(a.xv,{color:"textTertiary","data-testid":T.filterItem,"data-value":t,isTruncated:!0,children:n})})},t)},B=function(e){var n=e["data-testid"],t=e.initialItemCount,r=e.hint,i=e.name,o=e.options,s=e.values,l=e.onValueChange,u=(0,Y.qY)(),f=(0,x.z$)().trackCustomEvent,v=function(e){return function(){f((0,x.Q5)({name:(0,x.oJ)(j.FILTERS,i,"Filter",e.display)})),l(e.value)}},h=o,m=[];t&&(h=o.slice(0,t),m=o.slice(t,o.length));var g=m.length>0;return(0,k.jsxs)(a.kC,{"data-testid":n,direction:"column",children:[(0,k.jsx)(S,{hint:r,name:i}),(0,k.jsxs)(a.Kq,{mt:1,spacing:1,children:[h.map((function(e){return(0,d.createElement)($,(0,c.Z)((0,c.Z)({},e),{},{isChecked:s.includes(e.value),key:e.value,onChange:v(e)}))})),g&&(0,k.jsx)(G.UO,{animateOpacity:!0,in:u.isOpen,unmountOnExit:!0,children:(0,k.jsx)(a.Kq,{spacing:1,children:m.map((function(e){return(0,d.createElement)($,(0,c.Z)((0,c.Z)({},e),{},{isChecked:s.includes(e.value),key:e.value,onChange:v(e)}))}))})})]}),g&&(0,k.jsx)(a.kC,{align:"start",mt:1,children:(0,k.jsx)(Q.zx,{color:"textTertiary","data-event":(0,x.oJ)(j.FILTERS,i,"Show More"),fontWeight:"normal",leftIcon:u.isOpen?(0,k.jsx)(y.g8,{}):(0,k.jsx)(y.v4,{}),onClick:u.onToggle,size:"sm",textAlign:"left",variant:"link",w:"auto",children:u.isOpen?"Show fewer options (".concat(h.length,")"):"Show more options (".concat(m.length,")")})})]})},X=function(){var e=I(),n=(0,v.A)().keywords,t=U(),r=(0,d.useMemo)((function(){var t=(0,s.Z)(n.entries()).sort((function(e,n){return(0,u.Z)(e,2)[1]<(0,u.Z)(n,2)[1]?1:-1})).filter((function(n){var t=(0,u.Z)(n,1)[0];return!e.includes(t)})).map((function(e){var n=(0,u.Z)(e,1)[0];return{display:n,value:n}})).slice(0,25),r=e.filter((function(e){return!t.some((function(n){return n.value===e}))}));return[].concat((0,s.Z)(r.map((function(e){return{display:e,value:e}}))),(0,s.Z)(t))}),[n,e]);return(0,k.jsx)(B,{"data-testid":T.languagesFilter,hint:"Focus the results by choosing one or more keywords reflecting the kind of construct you're looking for. Keywords are provided by construct authors.",initialItemCount:5,name:"Keywords",onValueChange:function(n){t({keywords:e.includes(n)?e.filter((function(e){return e!==n})):[].concat((0,s.Z)(e),[n])})},options:r,values:e})},ee=t(86617),ne=Object.entries(ee.k8).map((function(e){var n=(0,u.Z)(e,2),t=n[0],r=n[1];return(0,c.Z)({display:r,value:t},ee.dX.has(t)?{isDisabled:!1}:{isDisabled:!0,disabledHint:"".concat(ee.k8[t]," support is coming soon!")})})).sort((function(e,n){return e.isDisabled>n.isDisabled?1:-1})),te=function(){var e=P(),n=U();return(0,k.jsx)(B,{"data-testid":T.languagesFilter,hint:"Choose one or more languages. Results include constructs for use with at least one of the selected languages.",name:"Programming Language",onValueChange:function(t){var r=t;n({languages:e.includes(r)?e.filter((function(e){return e!==r})):[].concat((0,s.Z)(e),[r])})},options:ne,values:e})},re=t(56804),ae=function(){var e=(0,re.E)("packageTags"),n=(0,re.E)("packageTagGroups"),t=(0,d.useMemo)((function(){var t,r=new Map;return null===n||void 0===n||n.forEach((function(e){r.set(e.id,e)})),function(e,n){return e.reduce((function(e,t){var r,a,i,o=null===(r=t.searchFilter)||void 0===r?void 0:r.groupBy,u=o?n.get(o):void 0;if(o&&u){var d=e[o];return d?(d.tags=[].concat((0,s.Z)(d.tags),[t]),e):(0,c.Z)((0,c.Z)({},e),{},(0,l.Z)({},o,(0,c.Z)((0,c.Z)({},u),{},{tags:[t]})))}return o?(0,c.Z)((0,c.Z)({},e),{},(0,l.Z)({},o,{id:o,tags:[].concat((0,s.Z)(null!==(a=null===e||void 0===e||null===(i=e[o])||void 0===i?void 0:i.tags)&&void 0!==a?a:[]),[t])})):e}),{})}(null!==(t=null===e||void 0===e?void 0:e.filter((function(e){return Boolean(e.searchFilter)})))&&void 0!==t?t:[],r)}),[e,n]),r=q(),a=U(),i=function(e){a({tags:r.includes(e)?r.filter((function(n){return n!==e})):[].concat((0,s.Z)(r),[e])})},o=(0,d.useCallback)((function(e){var n,i,o=new Set((null!==(n=null===(i=t[e])||void 0===i?void 0:i.tags)&&void 0!==n?n:[]).map((function(e){return e.id})));return function(e){var n=r.filter((function(e){return!o.has(e)}));a({tags:e?[].concat((0,s.Z)(n),[e]):n})}}),[t,r,a]);return(0,k.jsx)(k.Fragment,{children:Object.values(t).map((function(e){var n,t,a=e.filterType,l=e.id,u=e.label,f=e.tooltip,v=e.tags,h={hint:f,name:null!==u&&void 0!==u?u:l,options:v.map((function(e){return{display:e.searchFilter.display,value:e.id}}))};return"radio"===a?(0,d.createElement)(Z,(0,c.Z)((0,c.Z)({},h),{},{key:l,onValueChange:o(l),options:[{display:"Any ".concat(h.name),value:""}].concat((0,s.Z)(h.options)),value:null!==(n=null===(t=v.find((function(e){return r.includes(e.id)})))||void 0===t?void 0:t.id)&&void 0!==n?n:""})):(0,d.createElement)(B,(0,c.Z)((0,c.Z)({},h),{},{key:l,onValueChange:i,values:r}))}))})},ie="5.75rem",oe=function(){return(0,k.jsx)(o.Z,{borderRadius:"sm","data-testid":T.filtersPanel,display:{base:"none",md:"flex"},maxH:"calc(100vh - ".concat(ie," - 1.25rem)"),maxW:"23rem",minW:"100%",overflow:"hidden auto",p:4,pos:"sticky",top:ie,zIndex:"docked",children:(0,k.jsxs)(a.Kq,{color:"textPrimary",h:"max-content",spacing:4,top:4,children:[(0,k.jsx)(a.X6,{as:"h2",size:"sm",children:"Filters"}),(0,k.jsx)(z,{}),(0,k.jsx)(te,{}),(0,k.jsx)(ae,{}),(0,k.jsx)(X,{})]})})},se=t(92213),le=t(64159),ce=(0,l.Z)({},le.$.Wide,(function(e){var n=e["data-event"],t=e.items;return(0,k.jsx)(a.Kq,{spacing:4,children:t.map((function(e){return(0,k.jsx)(le.L,{"data-event":n,pkg:e,variant:le.$.Wide},"".concat(e.name,"-").concat(e.version))}))})})),ue=(0,d.memo)((function(e){var n=e["data-event"],t=e.cardView,r=void 0===t?le.$.Wide:t,i=e.items;if(e.loading||!i)return(0,k.jsx)(a.M5,{children:(0,k.jsx)(se.$,{size:"xl"})});var o=ce[r];return(0,k.jsx)(o,{"data-event":n,items:i})}));ue.displayName="PackageList";var de=t(45832),fe=function(e){var n=e["data-event"],t=e["data-testid"],r=e.icon,a=e.label,i=e.onClick,o={"aria-label":a,borderRadius:"md",borderColor:"blue.500",colorScheme:"blue","data-event":n,"data-testid":t,icon:(0,k.jsx)(r,{color:"blue.500",h:5,w:5}),mx:2,h:10,w:10,variant:"outline"};return(0,k.jsx)(Q.hU,(0,c.Z)((0,c.Z)({},o),{},{disabled:!i,onClick:i}))},ve=t(95798),he=function(e){var n=e["data-event"],t=e["data-testid"],r=e.pageLimit,i=e.offset,o=U(),s=(0,x.z$)().trackCustomEvent,l=(0,d.useState)((i+1).toString()),c=(0,u.Z)(l,2),f=c[0],v=c[1];(0,d.useEffect)((function(){v((i+1).toString())}),[i]);return(0,k.jsxs)(a.kC,{align:"center",as:"form",mx:2,onSubmit:function(e){e.preventDefault(),o({offset:parseInt(f)-1})},children:[(0,k.jsx)(ve.II,{"aria-label":"Jump to page",colorScheme:"brand","data-testid":t,h:10,max:r+1,min:1,name:"page",onChange:function(e){e.preventDefault(),v(e.target.value)},onFocus:function(){n&&s((0,x.Q5)({name:n}))},p:0,textAlign:"center",type:"number",value:f,w:10}),(0,k.jsxs)(a.xv,{ml:2,w:"max-content",children:["of ",r+1]})]})},xe=function(e){var n=e.offset,t=e.pageLimit,r=U(),i=n<t?function(){return r({offset:n+1})}:void 0,o=n>0?function(){return r({offset:n-1})}:void 0;return(0,k.jsxs)(a.Kq,{align:"center",direction:"row",justify:"space-between",maxW:"18rem",mx:"auto",spacing:4,w:"full",children:[(0,k.jsx)(fe,{"data-event":(0,x.oJ)(j.RESULTS,"Previous Page"),"data-testid":T.prevPage,icon:y.wy,label:"Previous page button",onClick:o}),(0,k.jsx)(he,{"data-event":(0,x.oJ)(j.RESULTS,"Go to Page"),"data-testid":T.goToPage,offset:n,pageLimit:t}),(0,k.jsx)(fe,{"data-event":(0,x.oJ)(j.RESULTS,"Next Page"),"data-testid":T.nextPage,icon:y.XC,label:"Next page button",onClick:i})]})},me=t(99185),ge=function(){var e=L(),n=U(),t=(0,d.useState)(null!==e&&void 0!==e?e:""),r=(0,u.Z)(t,2),a=r[0],i=r[1];return(0,k.jsx)(me.E1,{bg:"bgSecondary","data-event":j.SEARCH,onChange:function(e){return i(e.target.value)},onSubmit:function(e){e.preventDefault(),n({query:a,sort:void 0})},value:a})},pe=function(e){var n=e.children;return(0,k.jsx)(a.xv,{as:"strong",color:"textSecondary",children:n})},je=function(e){var n=e.first,t=e.count,r=e.last;return!n&&r>=t?(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(pe,{children:t})," of ",(0,k.jsx)(pe,{children:t})]}):(0,k.jsxs)(k.Fragment,{children:[(0,k.jsxs)(pe,{children:[t?n+1:t," - ",r>t?t:r]})," ","of ",(0,k.jsx)(pe,{children:t})]})},ye=function(e){var n=e.limit,t=e.offset,r=e.count,i=e.filtered,o=e.query,s=n*t,l=s+n,c=r>0;return(0,k.jsxs)(a.xv,{"data-testid":T.searchDetails,children:[c?(0,k.jsxs)(k.Fragment,{children:["Displaying ",(0,k.jsx)(je,{count:r,first:s,last:l})," ",i?"search results":"constructs"]}):(0,k.jsx)(k.Fragment,{children:i?"There were no search results":"No constructs found"}),o&&(0,k.jsxs)(k.Fragment,{children:[" for ",(0,k.jsx)(pe,{children:o})]}),".",!c&&i&&(0,k.jsx)(k.Fragment,{children:" Try a different term."})]})},be=t(3308),Ce=function(){var e=W(),n=U();return(0,k.jsx)(Z,{hint:"Sets the order of search results",name:"Sorted By",onValueChange:function(e){n({sort:e||void 0})},options:[{display:"Relevance",value:""}].concat((0,s.Z)(Object.entries(g).map((function(e){var n=(0,u.Z)(e,2),t=n[0];return{display:n[1],value:t}})))),value:null!==e&&void 0!==e?e:""})},ke=function(){var e=(0,Y.qY)();return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(Q.zx,{colorScheme:"brand",display:{md:"none"},onClick:e.onOpen,rightIcon:(0,k.jsx)(y.v4,{}),variant:"link",children:"Sorting and Filters"}),(0,k.jsxs)(be.dy,(0,c.Z)((0,c.Z)({},e),{},{placement:"bottom",children:[(0,k.jsx)(be.P1,{}),(0,k.jsxs)(be.sc,{color:"textPrimary",maxH:"full",children:[(0,k.jsx)(be.OX,{borderBottom:"base",children:"Sorting and Filters"}),(0,k.jsx)(be.cC,{}),(0,k.jsx)(be.Ng,{children:(0,k.jsxs)(a.Kq,{color:"textPrimary",pb:4,spacing:4,children:[(0,k.jsx)(Ce,{}),(0,k.jsx)(z,{}),(0,k.jsx)(te,{}),(0,k.jsx)(ae,{}),(0,k.jsx)(X,{})]})})]})]}))]})},Se=t(81641),Te=function(){var e=W(),n=U(),t=e?g[e]:"Relevance";return(0,k.jsxs)(a.kC,{align:"center",children:[(0,k.jsx)(a.xv,{children:"Sorted by"}),(0,k.jsxs)(Se.v2,{children:[(0,k.jsx)(Se.j2,{as:Q.zx,color:"link","data-event":(0,x.oJ)(j.SORT,"Menu"),"data-testid":T.sortButton,ml:2,pl:2,pr:2,py:1,rightIcon:(0,k.jsx)(y.v4,{}),variant:"link",children:t}),(0,k.jsxs)(Se.qy,{"data-testid":T.sortDropdown,minW:"180",zIndex:"sticky",children:[(0,k.jsx)(Se.sN,{"data-event":(0,x.oJ)(j.SORT,"Option","Relevance"),"data-testid":T.sortItem,"data-value":"",onClick:function(){return n({sort:void 0})},children:"Relevance"},"Relevance"),Object.entries(g).map((function(e){var t=(0,u.Z)(e,2),r=t[0],a=t[1];return(0,k.jsx)(Se.sN,{"data-event":(0,x.oJ)(j.SORT,"Option",a),"data-testid":T.sortItem,"data-value":r,onClick:function(){return n({sort:r})},children:a},r)}))]})]})]})},Ze=function(){var e=U(),n=K(w.Tx.OFFSET,(function(e){return D(null!==e&&void 0!==e?e:"")})),t=L(),r=I(),o=P(),s=A(),l=O(),c=W(),u=q(),f=(0,de.D)({offset:n,limit:25,query:t,keywords:r,languages:o,cdkMajor:s,cdkType:l,sort:c,tags:u}),v=f.page,h=f.pageLimit,x=f.results;return(0,d.useEffect)((function(){x.length&&(n<0||n>h)&&e(n<0?{offset:0}:{offset:h})}),[x,n,h]),(0,d.useEffect)((function(){window.scrollTo(0,0)}),[v]),(0,k.jsx)(i.T,{meta:{title:t||"Search",description:t?"".concat(x.length," results for ").concat(t," at Construct Hub"):"Search reusable components for your cloud application"},pageName:"search",children:(0,k.jsxs)(a.Kq,{direction:"column",maxW:"100vw",pb:4,px:4,spacing:4,children:[(0,k.jsx)(ge,{}),(0,k.jsxs)(a.Kq,{align:{base:"start",lg:"center"},direction:{base:"column-reverse",lg:"row"},justify:{base:"initial",lg:"space-between"},spacing:4,children:[(0,k.jsx)(ye,{count:x.length,filtered:!!t,limit:25,offset:n,query:t}),(0,k.jsx)(a.xu,{display:{base:"none",md:"initial"},children:(0,k.jsx)(Te,{})}),(0,k.jsx)(a.xu,{display:{md:"none"},children:(0,k.jsx)(ke,{})})]}),(0,k.jsx)(ue,{"data-event":j.RESULTS,items:v}),(0,k.jsx)(a.xu,{w:"full",children:(0,k.jsx)(xe,{offset:n,pageLimit:h})})]})})},we=function(){return(0,k.jsx)(i.T,{meta:{title:"Search - Construct Hub",description:"Search Construct Libraries for AWS CDK, CDK8s, and CDKTF"},pageName:"search",children:(0,k.jsxs)(a.rj,{"data-testid":T.page,gap:4,h:"full",maxW:"100%",px:{base:0,md:6},py:6,templateColumns:{base:"1fr",md:"auto 1fr"},templateRows:"1fr",children:[(0,k.jsx)(oe,{}),(0,k.jsx)(Ze,{})]})})}}}]);
|
|
2
|
+
//# sourceMappingURL=51.f94ba9fe.chunk.js.map
|