construct-hub-webapp 0.1.276 → 0.1.280
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 +42 -42
- package/build/index.html +1 -1
- package/build/service-worker.js +1 -1
- package/build/static/js/{0.01076643.chunk.js → 0.6dd1b184.chunk.js} +2 -2
- package/build/static/js/{0.01076643.chunk.js.map → 0.6dd1b184.chunk.js.map} +1 -1
- package/build/static/js/{1.7efe2b06.chunk.js → 1.74feae39.chunk.js} +2 -2
- package/build/static/js/{1.7efe2b06.chunk.js.map → 1.74feae39.chunk.js.map} +1 -1
- package/build/static/js/10.9f4504cb.chunk.js +2 -0
- package/build/static/js/10.9f4504cb.chunk.js.map +1 -0
- package/build/static/js/11.393198d3.chunk.js +2 -0
- package/build/static/js/11.393198d3.chunk.js.map +1 -0
- package/build/static/js/12.9746e3ee.chunk.js +2 -0
- package/build/static/js/12.9746e3ee.chunk.js.map +1 -0
- package/build/static/js/{14.a40917a3.chunk.js → 13.9bce7ee4.chunk.js} +2 -2
- package/build/static/js/{14.a40917a3.chunk.js.map → 13.9bce7ee4.chunk.js.map} +1 -1
- package/build/static/js/{15.f6946442.chunk.js → 14.3785957e.chunk.js} +2 -2
- package/build/static/js/{15.f6946442.chunk.js.map → 14.3785957e.chunk.js.map} +1 -1
- package/build/static/js/15.01795446.chunk.js +2 -0
- package/build/static/js/15.01795446.chunk.js.map +1 -0
- package/build/static/js/{16.ad041986.chunk.js → 16.26341162.chunk.js} +3 -3
- package/build/static/js/{16.ad041986.chunk.js.LICENSE.txt → 16.26341162.chunk.js.LICENSE.txt} +0 -0
- package/build/static/js/{16.ad041986.chunk.js.map → 16.26341162.chunk.js.map} +1 -1
- package/build/static/js/{17.cf0c8971.chunk.js → 17.7ae41f92.chunk.js} +2 -2
- package/build/static/js/{17.cf0c8971.chunk.js.map → 17.7ae41f92.chunk.js.map} +1 -1
- package/build/static/js/2.dc3446e0.chunk.js +2 -0
- package/build/static/js/2.dc3446e0.chunk.js.map +1 -0
- package/build/static/js/5.04328654.chunk.js +3 -0
- package/build/static/js/{6.f20d821e.chunk.js.LICENSE.txt → 5.04328654.chunk.js.LICENSE.txt} +0 -0
- package/build/static/js/5.04328654.chunk.js.map +1 -0
- package/build/static/js/6.68ea4a85.chunk.js +3 -0
- package/build/static/js/{7.3ec0b9d4.chunk.js.LICENSE.txt → 6.68ea4a85.chunk.js.LICENSE.txt} +0 -0
- package/build/static/js/6.68ea4a85.chunk.js.map +1 -0
- package/build/static/js/7.4347f5e4.chunk.js +2 -0
- package/build/static/js/7.4347f5e4.chunk.js.map +1 -0
- package/build/static/js/8.bb5dfbab.chunk.js +2 -0
- package/build/static/js/8.bb5dfbab.chunk.js.map +1 -0
- package/build/static/js/9.2e9cba2f.chunk.js +2 -0
- package/build/static/js/9.2e9cba2f.chunk.js.map +1 -0
- package/build/static/js/main.09317a58.chunk.js +2 -0
- package/build/static/js/main.09317a58.chunk.js.map +1 -0
- package/build/static/js/runtime-main.448e74e5.js +2 -0
- package/build/static/js/{runtime-main.94050b24.js.map → runtime-main.448e74e5.js.map} +1 -1
- package/cypress/integration/header.spec.ts +36 -5
- package/cypress/integration/home.spec.ts +27 -0
- package/cypress/integration/search.spec.ts +11 -0
- package/cypress/support/commands.ts +1 -1
- package/package.json +4 -4
- package/build/static/js/10.e14dabc8.chunk.js +0 -2
- package/build/static/js/10.e14dabc8.chunk.js.map +0 -1
- package/build/static/js/11.4fa20ae6.chunk.js +0 -2
- package/build/static/js/11.4fa20ae6.chunk.js.map +0 -1
- package/build/static/js/12.1f0d32c6.chunk.js +0 -2
- package/build/static/js/12.1f0d32c6.chunk.js.map +0 -1
- package/build/static/js/13.a1af9f29.chunk.js +0 -2
- package/build/static/js/13.a1af9f29.chunk.js.map +0 -1
- package/build/static/js/2.b57d6cff.chunk.js +0 -2
- package/build/static/js/2.b57d6cff.chunk.js.map +0 -1
- package/build/static/js/3.2a95eb1f.chunk.js +0 -2
- package/build/static/js/3.2a95eb1f.chunk.js.map +0 -1
- package/build/static/js/6.f20d821e.chunk.js +0 -3
- package/build/static/js/6.f20d821e.chunk.js.map +0 -1
- package/build/static/js/7.3ec0b9d4.chunk.js +0 -3
- package/build/static/js/7.3ec0b9d4.chunk.js.map +0 -1
- package/build/static/js/8.39dec1af.chunk.js +0 -2
- package/build/static/js/8.39dec1af.chunk.js.map +0 -1
- package/build/static/js/9.a5bd98cc.chunk.js +0 -2
- package/build/static/js/9.a5bd98cc.chunk.js.map +0 -1
- package/build/static/js/main.a9b1d223.chunk.js +0 -2
- package/build/static/js/main.a9b1d223.chunk.js.map +0 -1
- package/build/static/js/runtime-main.94050b24.js +0 -2
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(this["webpackJsonpconstruct-hub-webapp"]=this["webpackJsonpconstruct-hub-webapp"]||[]).push([[9],{234:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var a=n(0),c=n(249),r={home:{event:{name:"Home Load"}},faq:{event:{name:"Frequently Asked Questions Load"}},packageProfile:{event:{name:"Package Profile Load"}},search:{event:{name:"Search Load"}},siteTerms:{event:{name:"Site Terms Load"}},notFound:{page:{pageType:"errorPage"},event:{name:"404 Page Load"}}},i=n(118),s=n(1),o=function(e){var t=e.children,n=e.meta,o=e.pageName,u=Object(i.b)(r[o]);Object(a.useEffect)((function(){u()}),[u]);var l=n.suffix,j=void 0===l||l,b=n.title,d=n.description,f=j?"".concat(b," - Construct Hub"):b;return Object(s.jsxs)(s.Fragment,{children:[Object(s.jsxs)(c.a,{children:[!1,Object(s.jsx)("meta",{content:"width=device-width, initial-scale=1",name:"viewport"}),Object(s.jsx)("meta",{charSet:"utf-8"}),Object(s.jsx)("title",{children:f}),Object(s.jsx)("meta",{content:f,property:"og:title"}),Object(s.jsx)("meta",{content:f,name:"twitter:title"}),Object(s.jsx)("meta",{content:"summary",name:"twitter:card"}),Object(s.jsx)("meta",{content:d,name:"description"}),Object(s.jsx)("meta",{content:d,property:"og:description"}),Object(s.jsx)("meta",{content:d,name:"twitter:description"})]}),t]})}},239:function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var a=n(0),c=n(21),r=function(){var e=Object(c.h)().search;return Object(a.useMemo)((function(){return new URLSearchParams(e)}),[e])}},240:function(e,t,n){"use strict";n.d(t,"a",(function(){return d}));var a=n(5),c=n(0),r=n(21),i=n(108),s=n(16),o=n(239),u=i.d.TypeScript,l="preferred-language",j=function(e){return null!=e&&i.e.has(e)},b=function(e){if(j(e))return e;try{var t,n=null!==(t=localStorage.getItem(l))&&void 0!==t?t:"";if(j(n))return n}catch(a){}return u},d=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.updateUrl,n=e.updateSaved,i=Object(r.h)(),u=i.pathname,d=i.hash,f=Object(r.g)(),O=f.replace,h=Object(o.a)(),m=h.get(s.b.LANGUAGE),g=Object(c.useState)((function(){return b(m)})),p=Object(a.a)(g,2),v=p[0],x=p[1];Object(c.useEffect)((function(){j(m)&&m!==v&&x(m)}),[m]),Object(c.useEffect)((function(){m!==v&&t&&(h.set(s.b.LANGUAGE,v),O({pathname:u,hash:d,search:h.toString()}))}),[v,t]);var y=Object(c.useCallback)((function(e){if(x(e),n)try{localStorage.setItem(l,e)}catch(t){}}),[n]);return Object(c.useMemo)((function(){return[v,y]}),[v,y])}},254:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var a=n(224),c=n(108),r=n(1),i=function(e){var t=e.children,n=e.language;return c.e.has(n)?Object(r.jsx)(r.Fragment,{children:t}):Object(r.jsx)(a.a,{hasArrow:!0,label:"Documentation support for ".concat(c.b[n]," is coming soon!"),placement:"top-start",children:Object(r.jsx)("span",{children:t})})}},255:function(e,t,n){"use strict";n.d(t,"a",(function(){return l}));var a=n(6),c=n(27),r=n(17),i=n(193),s=n(602),o=n(1),u=["date","format"],l=Object(r.a)((function(e,t){var n=e.date,r=e.format,l=Object(c.a)(e,u);return Object(o.jsx)(i.a,Object(a.a)(Object(a.a)({as:"time",dateTime:n.toISOString(),ref:t},l),{},{children:Object(s.a)(n,r)}))}));l.displayName="Time"},300:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var a=n(197),c=n(1),r=function(e){var t=e.children;return Object(c.jsx)(a.a,{as:"em",color:"blue.500",fontWeight:"bold",children:t})},i=function(e){var t=e.limit,n=e.offset,i=e.count,s=e.filtered,o=t*n,u=o+t;return Object(c.jsxs)(a.a,{children:["Displaying"," ",Object(c.jsxs)(r,{children:[i?o+1:i," - ",u>i?i:u]})," ","of ",Object(c.jsx)(r,{children:i})," ",s?"search results":"constructs","."]})}},301:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var a=25},302:function(e,t,n){"use strict";n.d(t,"a",(function(){return F}));var a,c=n(4),r=n(215),i=n(198),s=n(0);!function(e){e.Wide="wide"}(a||(a={}));var o=n(305),u=n(146),l=n(230),j=n(5),b=n(197),d=n(240),f=n(84),O=n(85),h=n(255),m=n(56),g=Object(m.a)("packageCard",["author","description","languages","published","title","version","comment","wideContainer"]),p=n(1),v=function(e){var t=e["data-testid"],n=e.label,a=e.value;return Object(p.jsxs)(b.a,{"data-testid":t,fontSize:"xs",children:[Object(p.jsx)("strong",{children:n})," ",a]})},x=function(){var e=Object(d.a)(),t=Object(j.a)(e,1)[0],n=M(),a=n.author,c=n.metadata.date,r=n.version,i="string"===typeof a?a:a.name;return Object(p.jsxs)(p.Fragment,{children:[Object(p.jsx)(v,{"data-testid":g.version,label:"Version",value:r}),Object(p.jsx)(v,{"data-testid":g.published,label:"Published",value:Object(p.jsx)(h.a,{date:new Date(c),fontSize:"xs",format:"MMM dd, yyyy"})}),Object(p.jsx)(v,{"data-testid":g.author,label:"Author",value:Object(p.jsx)(O.a,{to:Object(f.c)({query:'"'.concat(i,'"'),language:t}),children:i})})]})},y=n(206),S=n(224),C=n(229),w=n(217),k=n(33),P=n(65),A=function(){var e=Object(d.a)(),t=Object(j.a)(e,1)[0],n=M(),a=n.comment,c=n.description,r=n.metadata.constructFramework,i=n.name,s=n.version,u=null===r||void 0===r?void 0:r.name,l=null===r||void 0===r?void 0:r.majorVersion;return Object(p.jsxs)(p.Fragment,{children:[Object(p.jsx)(o.b,{as:k.b,to:Object(f.a)({name:i,version:s,language:t}),children:Object(p.jsxs)(y.a,{align:"center",children:[u&&Object(p.jsx)(S.a,{hasArrow:!0,label:P.b[u].name+(void 0!==l?" v".concat(l):""),placement:"top",children:Object(p.jsx)(C.a,{alt:"".concat(P.b[u].name," icon"),h:5,mr:2,src:P.b[u].imgsrc,w:5,zIndex:1})}),Object(p.jsx)(w.a,{as:"h3",color:"blue.800","data-testid":g.title,fontSize:"md",fontWeight:"bold",children:i})]})}),Object(p.jsx)(b.a,{"data-testid":g.description,fontSize:"md",lineHeight:"tall",noOfLines:4,children:c||"No description available."}),a&&Object(p.jsxs)(b.a,{"data-testid":g.comment,fontSize:"md",lineHeight:"tall",noOfLines:4,children:[Object(p.jsxs)(b.a,{as:"span",color:"blue.500",fontSize:"md",fontWeight:"bold",lineHeight:"tall",children:["Editor's note:"," "]}),a]})]})},T=n(6),R=n(108),L=n(254),I={sm:5,md:6,lg:8},z=function(e){var t=e.isRounded,n=void 0!==t&&t,a=e.languages,c=e.name,r=e.size,i=void 0===r?"md":r,s=e.version,o=Object.keys(null!==a&&void 0!==a?a:{});return Object(p.jsx)(p.Fragment,{children:Object.entries(R.c).sort((function(e,t){var n=Object(j.a)(e,1)[0],a=Object(j.a)(t,1)[0];return R.a.indexOf(n)-R.a.indexOf(a)})).map((function(e){var t=Object(j.a)(e,2),a=t[0],r=t[1],u=a,l=u===R.d.TypeScript||o.includes(u),b=u===R.d.TypeScript||R.e.has(u);if(!l)return null;var d=r.name,O=r.icon,h=Object(p.jsx)(O,{"aria-label":"Supports ".concat(d),borderRadius:n?"50%":0,h:I[i],opacity:b?1:.2,w:I[i]});return Object(p.jsx)(L.a,{language:u,children:b?Object(p.jsx)(k.b,{"aria-label":"View package docs for ".concat(u),to:Object(f.a)({name:c,version:s,language:u}),children:h}):h},u)}))})},D=function(){var e=M();return Object(p.jsx)(z,Object(T.a)(Object(T.a)({},e),{},{size:"sm"}))},U=function(){return Object(p.jsx)(o.a,{_hover:{"> article":{bg:"gray.50"}},children:Object(p.jsxs)(u.a,{as:"article",bg:"white",border:"base",borderRadius:"sm",color:"gray.600","data-testid":g.wideContainer,gap:5,p:5,templateColumns:{base:"1fr",md:"2fr 1fr"},templateRows:{base:"auto",md:"1fr"},w:"100%",children:[Object(p.jsxs)(l.a,{spacing:2,children:[Object(p.jsx)(A,{}),Object(p.jsx)(l.a,{direction:"row",spacing:1,children:Object(p.jsx)(D,{})})]}),Object(p.jsx)(l.a,{alignSelf:"center","data-testid":g.languages,fontSize:"xs",spacing:1,children:Object(p.jsx)(x,{})})]})})},E=Object(s.createContext)(null),M=function(){return Object(s.useContext)(E)},N=function(e){var t=e.pkg,n=e.variant,c=void 0===n?a.Wide:n;return Object(p.jsx)(E.Provider,{value:t,children:c===a.Wide&&Object(p.jsx)(U,{})})},W=Object(c.a)({},a.Wide,(function(e){var t=e.items;return Object(p.jsx)(l.a,{spacing:4,children:t.map((function(e){return Object(p.jsx)(N,{pkg:e,variant:a.Wide},"".concat(e.name,"-").concat(e.version))}))})})),F=Object(s.memo)((function(e){var t=e.cardView,n=void 0===t?a.Wide:t,c=e.items;if(e.loading||!c)return Object(p.jsx)(r.a,{children:Object(p.jsx)(i.a,{size:"xl"})});var s=W[n];return Object(p.jsx)(s,{items:c})}));F.displayName="PackageList"},303:function(e,t,n){"use strict";n.d(t,"a",(function(){return y}));var a=n(363),c=n(306),r=n(146),i=n(206),s=n(6),o=n(204),u=n(33),l=n(1),j=function(e){var t=e.icon,n=e.offset,a=e.getPageUrl,c={"aria-label":"Page ".concat(n," link"),borderRadius:"md",borderColor:"blue.500",colorScheme:"blue",icon:Object(l.jsx)(t,{color:"blue.500",h:5,w:5}),mx:2,h:10,w:10,variant:"outline"};return void 0!==n?Object(l.jsx)(o.a,Object(s.a)(Object(s.a)({},c),{},{as:u.b,to:a({offset:n})})):Object(l.jsx)(o.a,Object(s.a)(Object(s.a)({},c),{},{disabled:!0}))},b=n(5),d=n(228),f=n(197),O=n(0),h=n(21),m=function(e){var t=e.pageLimit,n=e.offset,a=e.getPageUrl,c=Object(O.useState)((n+1).toString()),r=Object(b.a)(c,2),s=r[0],o=r[1],u=Object(h.g)().push;Object(O.useEffect)((function(){o((n+1).toString())}),[n]);return Object(l.jsxs)(i.a,{align:"center",as:"form",mx:2,onSubmit:function(e){e.preventDefault(),u(a({offset:parseInt(s)-1}))},children:[Object(l.jsx)(d.a,{colorScheme:"blue",h:10,max:t+1,min:1,name:"page",onChange:function(e){e.preventDefault(),o(e.target.value)},p:0,textAlign:"center",type:"number",value:s,w:10}),Object(l.jsxs)(f.a,{ml:2,w:"max-content",children:["of ",t+1]})]})},g=n(362),p=n(152),v={children:"Next Page",colorScheme:"blue",rightIcon:Object(l.jsx)(g.a,{color:"white"})},x=function(e){var t=e.nextPageUrl;return t?Object(l.jsx)(p.a,Object(s.a)(Object(s.a)({},v),{},{as:u.b,to:t})):Object(l.jsx)(p.a,Object(s.a)(Object(s.a)({},v),{},{disabled:!0}))},y=function(e){var t=e.offset,n=e.pageLimit,s=e.getPageUrl,o=t<n?t+1:void 0,u=t>0?t-1:void 0;return Object(l.jsxs)(r.a,{alignItems:"center",pt:4,templateColumns:"repeat(3, 1fr)",templateRows:"1fr",children:[Object(l.jsx)(r.b,{colStart:2,justifySelf:"center",children:Object(l.jsx)(x,{nextPageUrl:o?s({offset:o}):void 0})}),Object(l.jsx)(r.b,{colStart:3,justifySelf:"end",children:Object(l.jsxs)(i.a,{align:"center",justify:"center",py:4,children:[Object(l.jsx)(m,{getPageUrl:s,offset:t,pageLimit:n}),Object(l.jsx)(j,{getPageUrl:s,icon:a.a,offset:u}),Object(l.jsx)(j,{getPageUrl:s,icon:c.a,offset:o})]})})]})}},603:function(e,t,n){"use strict";n.r(t),n.d(t,"SearchRedesign",(function(){return ie})),n.d(t,"default",(function(){return ie}));var a,c=n(146),r=n(234),i=n(230),s=n(217),o=n(86),u=n(18),l=n(5),j=n(0),b=n(222),d=n(197),f=n(598),O=n(206),h=n(585),m=n(204),g=n(1),p=function(e){var t=e.name,n=e.hint;return Object(g.jsxs)(O.a,{align:"center",children:[Object(g.jsx)(s.a,{as:"h4",size:"sm",w:"max-content",children:t}),n?Object(g.jsxs)(h.a,{placement:"top-end",children:[Object(g.jsx)(h.g,{children:Object(g.jsx)(m.a,{"aria-label":"Hint: ".concat(t),icon:Object(g.jsx)(f.a,{h:4,w:4}),ml:2,px:0,py:0,size:"sm",variant:"ghost"})}),Object(g.jsxs)(h.e,{fontSize:"sm",children:[Object(g.jsx)(h.b,{}),Object(g.jsx)(h.d,{}),Object(g.jsxs)(h.f,{children:["Hint: ",t]}),Object(g.jsx)(h.c,{children:Object(g.jsx)(d.a,{children:n})})]})]}):null]})},v=function(e){var t=e.hint,n=e.name,a=e.options,c=e.values,r=e.onValueChange,s=function(e){return function(){r(e)}};return Object(g.jsxs)(i.a,{spacing:2,children:[Object(g.jsx)(p,{hint:t,name:n}),a.map((function(e){var t=e.display,n=e.value;return Object(g.jsx)(b.a,{isChecked:c.includes(n),onChange:s(n),children:Object(g.jsx)(d.a,{color:"gray.600",fontSize:"sm",isTruncated:!0,children:t})},n)}))]})},x=function(){var e=Object(j.useState)([]),t=Object(l.a)(e,2),n=t[0],a=t[1];return Object(g.jsx)(v,{name:"Author",onValueChange:function(e){a(n.includes(e)?n.filter((function(t){return t!==e})):[].concat(Object(u.a)(n),[e]))},options:[{display:"Community",value:"community"},{display:"AWS",value:"aws"}],values:n})},y=n(4),S=n(6),C=n(65),w=n(92),k=n(359),P=n(610),A=function(e){var t=e.value,n=e.onValueChange,a=e.options,c=e.name,r=e.hint;return Object(g.jsxs)(i.a,{spacing:2,children:[Object(g.jsx)(p,{hint:r,name:c}),Object(g.jsx)(k.a,{onChange:n,value:t,children:Object(g.jsx)(i.a,{children:a.map((function(e){var t=e.display,n=e.value;return Object(g.jsx)(P.a,{value:n,children:Object(g.jsx)(d.a,{color:"gray.600",fontSize:"sm",isTruncated:!0,children:t})},n)}))})})]})},T=n(16),R=n(87),L=n(239),I=n(301),z=function(e){var t=parseInt(e);return"NaN"==="".concat(t)?0:t},D=Object(j.createContext)(void 0),U=function(){var e=Object(j.useContext)(D);if(!e)throw new Error("This hook must be called in a child of <SearchStateProvider />");return e},E=function(e){var t,n,a,c,r,i=e.children,s=Object(L.a)(),o=z(null!==(t=s.get(T.b.OFFSET))&&void 0!==t?t:"0"),u=decodeURIComponent(null!==(n=s.get(T.b.SEARCH_QUERY))&&void 0!==n?n:""),l=(r=s.get(T.b.LANGUAGES))?decodeURIComponent(r).split(","):[],b=null!==(a=s.get(T.b.SORT))&&void 0!==a?a:void 0,d=null!==(c=s.get(T.b.CDK_TYPE))&&void 0!==c?c:void 0,f=s.get(T.b.CDK_MAJOR),O=f?z(f):void 0,h=Object(R.a)({defaultCdkMajor:O,defaultCdkType:d,defaultLanguages:l,defaultQuery:u,defaultSort:b});return Object(j.useEffect)((function(){u!==h.query&&h.setQuery(u)}),[u]),Object(g.jsx)(D.Provider,{value:{limit:I.a,offset:o,query:u,searchAPI:h},children:i})},M=function(){var e,t=U().searchAPI,n=t.cdkType,a=t.setCdkType,c=t.cdkMajor,r=t.setCdkMajor,i=Object(w.b)(),s=Object(j.useMemo)((function(){var e=i.constructFrameworks,t=Object.entries(e).reduce((function(e,t){var n=Object(l.a)(t,2),a=n[0],c=n[1];return c.pkgCount<1?e:Object(S.a)(Object(S.a)({},e),{},Object(y.a)({},a,Object(S.a)({display:C.a[a],value:a},c)))}),{});return Object.keys(t).length?t:void 0}),[i]),o=Object(j.useMemo)((function(){var e;if(s&&n){var t=null===(e=s[n])||void 0===e?void 0:e.majorVersions;if(t)return Object(u.a)(t).sort((function(e,t){return e-t})).map((function(e){return{value:e.toString(),display:"".concat(C.a[n]," v").concat(e)}}))}}),[s,n]);if(!s)return null;return Object(g.jsxs)(g.Fragment,{children:[Object(g.jsx)(A,{hint:"Constructs support distinct output types: AWS CDK libraries output Cloudformation Templates, CDK8s libraries output Kubernetes manifests, and CDKtf libraries output Terraform Configuration. The Construct Hub attempts to detect the output type of each library, but results are not guaranteed to be completely accurate.",name:"CDK Type",onValueChange:function(e){var t=e;r(void 0),a(e?t:void 0)},options:[{display:"Any CDK Type",value:""}].concat(Object(u.a)(Object.values(s))),value:null!==n&&void 0!==n?n:""}),!!(o&&o.length>1)&&Object(g.jsx)(A,{hint:"Allows you to filter by a major version of your selected CDK Type: (".concat(C.a[n],")"),name:"CDK Major Version",onValueChange:function(e){if(e){var t=parseInt(e,10);r(t)}else r(void 0)},options:[{display:"Any Major Version",value:""}].concat(Object(u.a)(o)),value:null!==(e=null===c||void 0===c?void 0:c.toString())&&void 0!==e?e:""})]})},N=n(108),W=Object.entries(N.b).filter((function(e){var t=Object(l.a)(e,1)[0];return N.e.has(t)})).map((function(e){var t=Object(l.a)(e,2),n=t[0];return{display:t[1],value:n}})),F=function(){var e=U().searchAPI,t=e.languages,n=e.setLanguages;return Object(g.jsx)(v,{hint:"Select one or more programming languages to filter by. Results will match at least one of the selected languages. If no languages are selected, results will not be filtered by langauges.",name:"Programming Language",onValueChange:function(e){var a=e;n(t.includes(a)?t.filter((function(e){return e!==a})):[].concat(Object(u.a)(t),[a]))},options:W,values:t})},V=function(){return Object(g.jsx)(o.a,{borderRadius:"none",boxShadow:"none",maxH:"full",maxW:"368px",minW:"100%",overflow:"hidden auto",p:4,children:Object(g.jsxs)(i.a,{color:"blue.800",spacing:6,children:[Object(g.jsx)(s.a,{as:"h3",size:"sm",children:"Filters"}),Object(g.jsx)(M,{}),Object(g.jsx)(F,{}),Object(g.jsx)(x,{})]})})},H=n(208),q=n(21),K=n(302),G=n(70),Q=n(121),_=n(127),J=n(84),Y=n(303),Z=n(300),B=n(211),X=n(221),$=n(152),ee=n(66),te=(a={},Object(y.a)(a,ee.a.NameAsc,"A-Z"),Object(y.a)(a,ee.a.NameDesc,"Z-A"),Object(y.a)(a,ee.a.PublishDateAsc,"Oldest first"),Object(y.a)(a,ee.a.PublishDateDesc,"Newest first"),a),ne=function(){var e=U().searchAPI,t=e.sort,n=e.setSort,a=t?te[t]:"Relevance";return Object(g.jsxs)(O.a,{align:"center",children:[Object(g.jsx)(d.a,{children:"Sorted by"}),Object(g.jsxs)(X.a,{children:[Object(g.jsx)(X.b,{as:$.a,color:"blue.500",ml:2,pl:2,pr:2,py:1,rightIcon:Object(g.jsx)(B.a,{}),variant:"link",children:a}),Object(g.jsxs)(X.f,{zIndex:"sticky",children:[Object(g.jsx)(X.e,{onClick:function(){return n(void 0)},children:"Relevance"},"Relevance"),Object.entries(te).map((function(e){var t=Object(l.a)(e,2),a=t[0],c=t[1];return Object(g.jsx)(X.e,{onClick:function(){return n(a)},children:c},a)}))]})]})]})},ae=function(){var e=Object(j.useRef)(!0),t=Object(q.g)().push,n=U(),a=n.query,c=n.searchAPI,s=n.offset,o=n.limit,u=c.languages,l=c.sort,b=c.cdkType,d=c.cdkMajor,f=c.onSearch,h=Object(_.a)(c.query),m=Object(Q.a)({offset:s,limit:o,query:a,languages:u,cdkMajor:d,cdkType:b,sort:l}),p=m.page,v=m.pageLimit,x=m.results,y=function(e){var t,n;return Object(J.c)({cdkMajor:d,cdkType:b,query:null!==(t=e.q)&&void 0!==t?t:a,languages:u,sort:l,offset:null!==(n=e.offset)&&void 0!==n?n:s})};return Object(j.useEffect)((function(){x.length&&(s<0||s>v)&&t(y(s<0?{offset:0}:{offset:v}))}),[x,s,v]),Object(j.useEffect)((function(){e.current?e.current=!1:f({replace:!0})}),[h,l,u,b,d]),Object(g.jsx)(r.a,{meta:{title:a||"Search",description:a?"".concat(x.length," results for ").concat(a," at Construct Hub"):"Search reusable components for your cloud application"},pageName:"search",children:Object(g.jsxs)(i.a,{direction:"column",maxW:"100vw",pb:4,px:4,spacing:4,children:[Object(g.jsx)(G.a,{bg:"white",hasButton:!0,onChange:c.onQueryChange,onSubmit:c.onSubmit,value:c.query}),Object(g.jsx)(H.a,{}),Object(g.jsxs)(O.a,{justify:"space-between",children:[Object(g.jsx)(Z.a,{count:x.length,filtered:!!a,limit:o,offset:s}),Object(g.jsx)(ne,{})]}),Object(g.jsx)(K.a,{items:p}),Object(g.jsx)(Y.a,{getPageUrl:y,limit:o,offset:s,pageLimit:v})]})})},ce=n(56),re=Object(ce.a)("searchRedesign",["page"]),ie=function(){return Object(g.jsx)(E,{children:Object(g.jsx)(r.a,{meta:{title:"Search - Construct Hub",description:"This is a placeholder"},pageName:"search",children:Object(g.jsxs)(c.a,{"data-testid":re.page,gap:4,h:"full",maxW:"100%",p:6,templateColumns:"auto 1fr",templateRows:"1fr",children:[Object(g.jsx)(V,{}),Object(g.jsx)(ae,{})]})})})}}}]);
|
|
2
|
+
//# sourceMappingURL=9.2e9cba2f.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["constants/pageInfo.ts","components/Page/Page.tsx","hooks/useQueryParams/useQueryParams.ts","hooks/useLanguage/useLanguage.ts","components/LanguageSupportTooltip/LanguageSupportTooltip.tsx","components/Time/Time.tsx","views/SearchResults/components/ShowingDetails.tsx","views/SearchResults/constants.ts","components/PackageCard/constants.ts","components/PackageCard/testIds.ts","components/PackageCard/Details.tsx","components/PackageCard/Heading.tsx","components/PackageLanguages/PackageLanguages.tsx","components/PackageCard/Languages.tsx","components/PackageCard/WideCard.tsx","components/PackageCard/PackageCard.tsx","components/PackageList/PackageList.tsx","components/PackageList/WideCardList.tsx","views/SearchResults/components/ArrowButton.tsx","views/SearchResults/components/GoToPage.tsx","views/SearchResults/components/NextPage.tsx","views/SearchResults/components/PageControls.tsx","views/SearchRedesign/FilterHeading.tsx","views/SearchRedesign/CheckboxFilter.tsx","views/SearchRedesign/AuthorFilter.tsx","views/SearchRedesign/RadioFilter.tsx","views/SearchRedesign/util.ts","views/SearchRedesign/SearchState.tsx","views/SearchRedesign/CDKFilter.tsx","views/SearchRedesign/LanguageFilter.tsx","views/SearchRedesign/FilterPanel.tsx","views/SearchRedesign/SortedBy.tsx","views/SearchRedesign/SearchResults.tsx","views/SearchRedesign/testIds.ts","views/SearchRedesign/SearchRedesign.tsx"],"names":["pageInfo","home","event","name","faq","packageProfile","search","siteTerms","notFound","page","pageType","Page","children","meta","pageName","trackPageView","usePageView","useEffect","suffix","title","description","formattedTitle","Helmet","process","content","charSet","property","useQueryParams","useLocation","useMemo","URLSearchParams","defaultLang","Language","TypeScript","LOCAL_KEY","isValidLang","lang","TEMP_SUPPORTED_LANGUAGES","has","getInitialLang","langFromParams","storedLang","localStorage","getItem","useLanguage","options","updateUrl","updateSaved","pathname","hash","useHistory","replace","params","get","QUERY_PARAMS","LANGUAGE","useState","language","setLanguage","set","toString","update","useCallback","val","setItem","LanguageSupportTooltip","hasArrow","label","LANGUAGE_NAME_MAP","placement","Time","forwardRef","ref","date","formatString","format","boxProps","as","dateTime","toISOString","displayName","Em","color","fontWeight","ShowingDetails","limit","offset","count","filtered","first","last","LIMIT","PackageCardType","testIds","createTestIds","Detail","dataTestid","value","fontSize","Details","currentLanguage","usePackageCard","author","metadata","version","authorName","published","Date","NavLink","to","getSearchPath","query","Heading","comment","constructFramework","cdkType","cdkVersion","majorVersion","Link","getPackagePath","align","CDKTYPE_RENDER_MAP","undefined","alt","h","mr","src","imgsrc","w","zIndex","lineHeight","noOfLines","sizes","sm","md","lg","PackageLanguages","isRounded","languages","packageName","size","targets","Object","keys","entries","LANGUAGE_RENDER_MAP","sort","left","right","LANGUAGES","indexOf","map","info","isSupportedByLibrary","includes","isSupportedByConstructHub","Icon","icon","borderRadius","opacity","Languages","pkg","WideCard","_hover","bg","border","wideContainer","gap","p","templateColumns","base","templateRows","spacing","direction","alignSelf","PackageCardContext","createContext","useContext","PackageCard","variant","Wide","Provider","listViews","items","PackageList","memo","cardView","loading","View","ArrowButton","getPageUrl","props","borderColor","colorScheme","mx","disabled","GoToPage","pageLimit","inputValue","setInputValue","push","onSubmit","e","preventDefault","parseInt","max","min","onChange","target","textAlign","type","ml","btnProps","rightIcon","ArrowForward","NextPage","nextPageUrl","PageControls","nextOffset","prevOffset","alignItems","pt","colStart","justifySelf","justify","py","ChevronLeftIcon","ChevronRightIcon","FilterHeading","hint","Question","px","CheckboxFilter","checkedValues","values","onValueChange","getOnChange","display","isChecked","isTruncated","AuthorFilter","authors","setAuthors","filter","a","RadioFilter","checkedValue","toNum","result","SearchStateContext","useSearchState","state","Error","SearchStateProvider","langQuery","queryParams","OFFSET","decodeURIComponent","SEARCH_QUERY","split","SORT","CDK_TYPE","cdkMajorParam","CDK_MAJOR","cdkMajor","searchAPI","useCatalogSearch","defaultCdkMajor","defaultCdkType","defaultLanguages","defaultQuery","defaultSort","setQuery","CDKFilter","setCdkType","setCdkMajor","useSearchContext","cdkOptions","cdkTypes","constructFrameworks","reduce","opts","pkgCount","CDKTYPE_NAME_MAP","length","majorsOptions","majorVersions","b","cdk","major","majorNum","languageOptions","key","LanguageFilter","setLanguages","l","FilterPanel","Card","boxShadow","maxH","maxW","minW","overflow","SORT_RENDER_MAP","CatalogSearchSort","NameAsc","NameDesc","PublishDateAsc","PublishDateDesc","SortedBy","setSort","selected","Button","pl","pr","ChevronDown","onClick","SearchResults","isFirstRender","useRef","onSearch","debouncedQuery","useDebounce","useCatalogResults","results","getUrl","q","current","pb","SearchBar","hasButton","onQueryChange","SearchRedesign"],"mappings":"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","file":"static/js/9.2e9cba2f.chunk.js","sourcesContent":["export const pageInfo = {\n home: {\n event: {\n name: \"Home Load\",\n },\n },\n faq: {\n event: {\n name: \"Frequently Asked Questions Load\",\n },\n },\n packageProfile: {\n event: {\n name: \"Package Profile Load\",\n },\n },\n search: {\n event: {\n name: \"Search Load\",\n },\n },\n siteTerms: {\n event: {\n name: \"Site Terms Load\",\n },\n },\n notFound: {\n page: {\n pageType: \"errorPage\",\n },\n event: {\n name: \"404 Page Load\",\n },\n },\n} as const;\n","import { FunctionComponent, useEffect } from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport { pageInfo } from \"../../constants/pageInfo\";\nimport { usePageView } from \"../../contexts/Analytics\";\n\nexport interface PageProps {\n pageName: keyof typeof pageInfo;\n meta: {\n suffix?: boolean;\n title: string;\n description: string;\n };\n}\n\nexport const Page: FunctionComponent<PageProps> = ({\n children,\n meta,\n pageName,\n}) => {\n const trackPageView = usePageView(pageInfo[pageName]);\n\n useEffect(() => {\n trackPageView();\n }, [trackPageView]);\n\n const { suffix = true, title, description } = meta;\n const formattedTitle = suffix ? `${title} - Construct Hub` : title;\n\n return (\n <>\n <Helmet>\n {process.env.NODE_ENV === \"development\" && (\n <meta\n content=\"default-src 'self' 'unsafe-inline' https://*.awsstatic.com https://amazonwebservices.d2.sc.omtrdc.net; connect-src 'self' https://*.shortbread.aws.dev ws://localhost:3000 https://*.awsstatic.com https://amazonwebservices.d2.sc.omtrdc.net; frame-src 'none'; img-src 'self' https://* http://*.omtrdc.net; object-src 'none'; style-src 'self' 'unsafe-inline';\"\n httpEquiv=\"Content-Security-Policy\"\n />\n )}\n\n <meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />\n <meta charSet=\"utf-8\" />\n\n <title>{formattedTitle}</title>\n <meta content={formattedTitle} property=\"og:title\" />\n <meta content={formattedTitle} name=\"twitter:title\" />\n <meta content=\"summary\" name=\"twitter:card\" />\n\n <meta content={description} name=\"description\" />\n <meta content={description} property=\"og:description\" />\n <meta content={description} name=\"twitter:description\" />\n </Helmet>\n {children}\n </>\n );\n};\n","import { 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 { 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 { 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<LanguageSupportTooltipProps> =\n ({ children, language }) => {\n const isSupported = TEMP_SUPPORTED_LANGUAGES.has(language);\n\n if (isSupported) {\n return <>{children}</>;\n }\n\n return (\n <Tooltip\n hasArrow\n label={`Documentation support for ${LANGUAGE_NAME_MAP[language]} is coming soon!`}\n placement=\"top-start\"\n >\n <span>{children}</span>\n </Tooltip>\n );\n };\n","import { Box, BoxProps, forwardRef } from \"@chakra-ui/react\";\nimport { format } from \"date-fns\";\n\nexport interface TimeOptions {\n date: Date;\n format: string;\n}\n\nexport interface TimeProps extends BoxProps, TimeOptions {}\n\nexport const Time = forwardRef<TimeProps, \"time\">(\n ({ date, format: formatString, ...boxProps }, ref) => {\n return (\n <Box as=\"time\" dateTime={date.toISOString()} ref={ref} {...boxProps}>\n {format(date, formatString)}\n </Box>\n );\n }\n);\n\nTime.displayName = \"Time\";\n","import { Text } from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\n\nexport interface ShowingDetailsProps {\n limit: number;\n offset: number;\n count: number;\n filtered: boolean;\n}\n\nconst Em: FunctionComponent = ({ children }) => (\n <Text as=\"em\" color=\"blue.500\" fontWeight=\"bold\">\n {children}\n </Text>\n);\n\nexport const ShowingDetails: FunctionComponent<ShowingDetailsProps> = ({\n limit,\n offset,\n count,\n filtered,\n}) => {\n const first = limit * offset;\n const last = first + limit;\n return (\n <Text>\n Displaying{\" \"}\n <Em>\n {count ? first + 1 : count} - {last > count ? count : last}\n </Em>{\" \"}\n of <Em>{count}</Em> {filtered ? \"search results\" : \"constructs\"}.\n </Text>\n );\n};\n","import type { QueryParamKey } from \"../../constants/url\";\n\nexport const LIMITS = [25, 50, 75, 100];\nexport const LIMIT = LIMITS[0];\n\nexport type SearchQueryParam = Extract<QueryParamKey, \"offset\" | \"q\">;\n","export enum PackageCardType {\n Wide = \"wide\",\n}\n","import { createTestIds } from \"../../util/createTestIds\";\n\nconst testIds = createTestIds(\"packageCard\", [\n \"author\",\n \"description\",\n \"languages\",\n \"published\",\n \"title\",\n \"version\",\n \"comment\",\n \"wideContainer\",\n] as const);\n\nexport default testIds;\n","import { Text } from \"@chakra-ui/react\";\nimport type { FunctionComponent, ReactChild } from \"react\";\nimport { useLanguage } from \"../../hooks/useLanguage\";\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 label: string;\n value: ReactChild;\n}\n\nconst Detail: FunctionComponent<DetailProps> = ({\n \"data-testid\": dataTestid,\n label,\n value,\n}) => (\n <Text data-testid={dataTestid} fontSize=\"xs\">\n <strong>{label}</strong> {value}\n </Text>\n);\n\nexport const Details: FunctionComponent = () => {\n const [currentLanguage] = useLanguage();\n\n const {\n author,\n metadata: { date },\n version,\n } = usePackageCard();\n\n const authorName = typeof author === \"string\" ? author : author.name;\n\n return (\n <>\n <Detail data-testid={testIds.version} label=\"Version\" value={version} />\n <Detail\n data-testid={testIds.published}\n label=\"Published\"\n value={\n <Time date={new Date(date)} fontSize=\"xs\" format=\"MMM dd, yyyy\" />\n }\n />\n <Detail\n data-testid={testIds.author}\n label=\"Author\"\n value={\n <NavLink\n to={getSearchPath({\n query: `\"${authorName}\"`,\n language: currentLanguage,\n })}\n >\n {authorName}\n </NavLink>\n }\n />\n </>\n );\n};\n","import {\n Flex,\n Image,\n Heading as ChakraHeading,\n LinkOverlay,\n Text,\n Tooltip,\n} from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { CDKTYPE_RENDER_MAP } from \"../../constants/constructs\";\nimport { useLanguage } from \"../../hooks/useLanguage\";\nimport { getPackagePath } from \"../../util/url\";\nimport { usePackageCard } from \"./PackageCard\";\nimport testIds from \"./testIds\";\n\nexport const Heading: FunctionComponent = () => {\n const [currentLanguage] = useLanguage();\n const {\n comment,\n description,\n metadata: { constructFramework },\n name,\n version,\n } = usePackageCard();\n\n const cdkType = constructFramework?.name;\n const cdkVersion = constructFramework?.majorVersion;\n\n return (\n <>\n <LinkOverlay\n as={Link}\n to={getPackagePath({\n name,\n version,\n language: currentLanguage,\n })}\n >\n <Flex align=\"center\">\n {cdkType && (\n <Tooltip\n hasArrow\n label={\n CDKTYPE_RENDER_MAP[cdkType].name +\n (cdkVersion !== undefined ? ` v${cdkVersion}` : \"\")\n }\n placement=\"top\"\n >\n <Image\n alt={`${CDKTYPE_RENDER_MAP[cdkType].name} icon`}\n h={5}\n mr={2}\n src={CDKTYPE_RENDER_MAP[cdkType].imgsrc}\n w={5}\n zIndex={1}\n />\n </Tooltip>\n )}\n <ChakraHeading\n as=\"h3\"\n color=\"blue.800\"\n data-testid={testIds.title}\n fontSize=\"md\"\n fontWeight=\"bold\"\n >\n {name}\n </ChakraHeading>\n </Flex>\n </LinkOverlay>\n <Text\n data-testid={testIds.description}\n fontSize=\"md\"\n lineHeight=\"tall\"\n noOfLines={4}\n >\n {description || \"No description available.\"}\n </Text>\n {comment && (\n <Text\n data-testid={testIds.comment}\n fontSize=\"md\"\n lineHeight=\"tall\"\n noOfLines={4}\n >\n <Text\n as=\"span\"\n color=\"blue.500\"\n fontSize=\"md\"\n fontWeight=\"bold\"\n lineHeight=\"tall\"\n >\n Editor's note:{\" \"}\n </Text>\n {comment}\n </Text>\n )}\n </>\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 { Grid, Stack, LinkBox } from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\nimport { Details } from \"./Details\";\nimport { Heading } from \"./Heading\";\nimport { Languages } from \"./Languages\";\nimport testIds from \"./testIds\";\n\nexport const WideCard: FunctionComponent = () => {\n return (\n <LinkBox\n _hover={{\n \"> article\": {\n bg: \"gray.50\",\n },\n }}\n >\n <Grid\n as=\"article\"\n bg=\"white\"\n border=\"base\"\n borderRadius=\"sm\"\n color=\"gray.600\"\n data-testid={testIds.wideContainer}\n gap={5}\n p={5}\n templateColumns={{ base: \"1fr\", md: \"2fr 1fr\" }}\n templateRows={{ base: \"auto\", md: \"1fr\" }}\n w=\"100%\"\n >\n {/* Name + Desc */}\n <Stack spacing={2}>\n <Heading />\n\n <Stack direction=\"row\" spacing={1}>\n <Languages />\n </Stack>\n </Stack>\n\n <Stack\n alignSelf=\"center\"\n data-testid={testIds.languages}\n fontSize=\"xs\"\n spacing={1}\n >\n <Details />\n </Stack>\n </Grid>\n </LinkBox>\n );\n};\n","import { createContext, FunctionComponent, useContext } from \"react\";\nimport { CatalogPackage } from \"../../api/package/packages\";\nimport { PackageCardType } from \"./constants\";\nimport { WideCard } from \"./WideCard\";\n\nexport interface PackageCardProps {\n pkg: CatalogPackage;\n variant?: PackageCardType;\n}\n\nconst PackageCardContext = createContext<\n (CatalogPackage & { comment?: string }) | null\n>(null);\n\nexport const usePackageCard = () => useContext(PackageCardContext)!;\n\nexport const PackageCard: FunctionComponent<PackageCardProps> = ({\n pkg,\n variant = PackageCardType.Wide,\n}) => {\n return (\n <PackageCardContext.Provider value={pkg}>\n {variant === PackageCardType.Wide && <WideCard />}\n </PackageCardContext.Provider>\n );\n};\n","import { Center, Spinner } from \"@chakra-ui/react\";\nimport { FunctionComponent, memo } from \"react\";\nimport { CatalogPackage } from \"../../api/package/packages\";\nimport { PackageCardType } from \"../PackageCard\";\nimport { WideCardList } from \"./WideCardList\";\n\nconst listViews = {\n [PackageCardType.Wide]: WideCardList,\n};\n\nexport interface PackageListViewProps {\n items: CatalogPackage[];\n}\n\nexport interface PackageListProps extends Partial<PackageListViewProps> {\n cardView?: PackageCardType;\n loading?: boolean;\n title?: string;\n}\n\nexport const PackageList: FunctionComponent<PackageListProps> = memo(\n ({\n cardView = PackageCardType.Wide,\n items,\n loading,\n // title,\n }) => {\n if (loading || !items) {\n return (\n <Center>\n <Spinner size=\"xl\" />\n </Center>\n );\n }\n\n const View = listViews[cardView];\n\n return <View items={items} />;\n }\n);\n\nPackageList.displayName = \"PackageList\";\n","import { Stack } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { PackageCard, PackageCardType } from \"../PackageCard\";\nimport { PackageListViewProps } from \"./PackageList\";\n\nexport const WideCardList: FunctionComponent<PackageListViewProps> = ({\n items,\n}) => {\n return (\n <Stack spacing={4}>\n {items.map((pkg) => (\n <PackageCard\n key={`${pkg.name}-${pkg.version}`}\n pkg={pkg}\n variant={PackageCardType.Wide}\n />\n ))}\n </Stack>\n );\n};\n","import { IconButton, IconProps } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nexport interface ArrowButtonProps {\n icon: FunctionComponent<IconProps>;\n offset?: number;\n getPageUrl: (params: { offset: number }) => string;\n}\n\nexport const ArrowButton: FunctionComponent<ArrowButtonProps> = ({\n icon: Icon,\n offset,\n getPageUrl,\n}) => {\n const label = `Page ${offset} link`;\n\n const props = {\n \"aria-label\": label,\n borderRadius: \"md\",\n borderColor: \"blue.500\",\n colorScheme: \"blue\",\n icon: <Icon color=\"blue.500\" h={5} w={5} />,\n mx: 2,\n h: 10,\n w: 10,\n variant: \"outline\",\n };\n\n if (offset !== undefined) {\n return <IconButton {...props} as={Link} to={getPageUrl({ offset })} />;\n }\n\n return <IconButton {...props} disabled />;\n};\n","import { Flex, Input, Text } from \"@chakra-ui/react\";\nimport {\n FormEventHandler,\n FunctionComponent,\n SyntheticEvent,\n useEffect,\n useState,\n} from \"react\";\nimport { useHistory } from \"react-router-dom\";\n\nexport interface GoToPageProps {\n pageLimit: number;\n offset: number;\n getPageUrl: (params: { offset: number }) => string;\n}\n\nexport const GoToPage: FunctionComponent<GoToPageProps> = ({\n pageLimit,\n offset,\n getPageUrl,\n}) => {\n const [inputValue, setInputValue] = useState((offset + 1).toString());\n const { push } = useHistory();\n\n useEffect(() => {\n setInputValue((offset + 1).toString());\n }, [offset]);\n\n const onInputChange = (e: SyntheticEvent<HTMLInputElement>) => {\n e.preventDefault();\n setInputValue((e.target as HTMLInputElement).value);\n };\n\n const onSubmit: FormEventHandler<HTMLInputElement> = (e) => {\n e.preventDefault();\n push(getPageUrl({ offset: parseInt(inputValue) - 1 }));\n };\n\n return (\n <Flex align=\"center\" as=\"form\" mx={2} onSubmit={onSubmit}>\n <Input\n colorScheme=\"blue\"\n h={10}\n max={pageLimit + 1}\n min={1}\n name=\"page\"\n onChange={onInputChange}\n p={0}\n textAlign=\"center\"\n type=\"number\"\n value={inputValue}\n w={10}\n />\n <Text ml={2} w=\"max-content\">\n of {pageLimit + 1}\n </Text>\n </Flex>\n );\n};\n","import { ArrowForwardIcon } from \"@chakra-ui/icons\";\nimport { Button } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nexport interface NextPageProps {\n nextPageUrl?: string;\n}\n\nconst btnProps = {\n children: \"Next Page\",\n colorScheme: \"blue\",\n rightIcon: <ArrowForwardIcon color=\"white\" />,\n};\n\nexport const NextPage: FunctionComponent<NextPageProps> = ({ nextPageUrl }) => {\n if (!nextPageUrl) {\n return <Button {...btnProps} disabled />;\n }\n\n return <Button {...btnProps} as={Link} to={nextPageUrl} />;\n};\n","import { ChevronLeftIcon, ChevronRightIcon } from \"@chakra-ui/icons\";\nimport { Flex, Grid, GridItem } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { ArrowButton } from \"./ArrowButton\";\nimport { GoToPage } from \"./GoToPage\";\nimport { NextPage } from \"./NextPage\";\n\nexport interface PageControlsProps {\n limit: number;\n offset: number;\n pageLimit: number;\n getPageUrl: (params: { offset?: number }) => string;\n}\n\nexport const PageControls: FunctionComponent<PageControlsProps> = ({\n offset,\n pageLimit,\n getPageUrl,\n}) => {\n const nextOffset = offset < pageLimit ? offset + 1 : undefined;\n const prevOffset = offset > 0 ? offset - 1 : undefined;\n\n return (\n <Grid\n alignItems=\"center\"\n pt={4}\n templateColumns=\"repeat(3, 1fr)\"\n templateRows=\"1fr\"\n >\n <GridItem colStart={2} justifySelf=\"center\">\n <NextPage\n nextPageUrl={\n nextOffset ? getPageUrl({ offset: nextOffset }) : undefined\n }\n />\n </GridItem>\n <GridItem colStart={3} justifySelf=\"end\">\n <Flex align=\"center\" justify=\"center\" py={4}>\n <GoToPage\n getPageUrl={getPageUrl}\n offset={offset}\n pageLimit={pageLimit}\n />\n <ArrowButton\n getPageUrl={getPageUrl}\n icon={ChevronLeftIcon}\n offset={prevOffset}\n />\n <ArrowButton\n getPageUrl={getPageUrl}\n icon={ChevronRightIcon}\n offset={nextOffset}\n />\n </Flex>\n </GridItem>\n </Grid>\n );\n};\n","import { QuestionIcon } from \"@chakra-ui/icons\";\nimport {\n Flex,\n Heading,\n Text,\n Popover,\n IconButton,\n PopoverHeader,\n PopoverTrigger,\n PopoverBody,\n PopoverCloseButton,\n PopoverArrow,\n PopoverContent,\n} from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\n\nexport interface FilterHeadingProps {\n name: string;\n hint?: string;\n}\n\nexport const FilterHeading: FunctionComponent<FilterHeadingProps> = ({\n name,\n hint,\n}) => {\n return (\n <Flex align=\"center\">\n <Heading as=\"h4\" size=\"sm\" w=\"max-content\">\n {name}\n </Heading>\n {hint ? (\n <Popover placement=\"top-end\">\n <PopoverTrigger>\n <IconButton\n aria-label={`Hint: ${name}`}\n icon={<QuestionIcon h={4} w={4} />}\n ml={2}\n px={0}\n py={0}\n size=\"sm\"\n variant=\"ghost\"\n />\n </PopoverTrigger>\n <PopoverContent fontSize=\"sm\">\n <PopoverArrow />\n <PopoverCloseButton />\n <PopoverHeader>Hint: {name}</PopoverHeader>\n <PopoverBody>\n <Text>{hint}</Text>\n </PopoverBody>\n </PopoverContent>\n </Popover>\n ) : null}\n </Flex>\n );\n};\n","import { Checkbox, Stack, Text } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { FilterHeading, FilterHeadingProps } from \"./FilterHeading\";\n\nexport interface CheckboxFilterProps extends FilterHeadingProps {\n options: {\n display: string;\n value: string;\n }[];\n values: string[];\n onValueChange: (value: string) => void;\n}\n\nexport const CheckboxFilter: FunctionComponent<CheckboxFilterProps> = ({\n hint,\n name,\n options,\n values: checkedValues,\n onValueChange,\n}) => {\n const getOnChange = (value: string) => () => {\n onValueChange(value);\n };\n\n return (\n <Stack spacing={2}>\n <FilterHeading hint={hint} name={name} />\n {options.map(({ display, value }) => (\n <Checkbox\n isChecked={checkedValues.includes(value)}\n key={value}\n onChange={getOnChange(value)}\n >\n <Text color=\"gray.600\" fontSize=\"sm\" isTruncated>\n {display}\n </Text>\n </Checkbox>\n ))}\n </Stack>\n );\n};\n","import { FunctionComponent, useState } from \"react\";\nimport { CheckboxFilter } from \"./CheckboxFilter\";\n\n// TODO: This filter is currently non-functional\nexport const AuthorFilter: FunctionComponent = () => {\n const [authors, setAuthors] = useState<string[]>([]);\n\n const onAuthorsChange = (author: string) => {\n setAuthors(\n authors.includes(author)\n ? authors.filter((a) => a !== author)\n : [...authors, author]\n );\n };\n\n return (\n <CheckboxFilter\n name=\"Author\"\n onValueChange={onAuthorsChange}\n options={[\n {\n display: \"Community\",\n value: \"community\",\n },\n {\n display: \"AWS\",\n value: \"aws\",\n },\n ]}\n values={authors}\n />\n );\n};\n","import { Radio, RadioGroup, Stack, Text } from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\nimport { FilterHeading, FilterHeadingProps } from \"./FilterHeading\";\n\nexport interface RadioFilterProps extends FilterHeadingProps {\n value?: string;\n onValueChange: (value: string) => void;\n options: {\n display: string;\n value: string;\n }[];\n}\n\nexport const RadioFilter: FunctionComponent<RadioFilterProps> = ({\n value: checkedValue,\n onValueChange,\n options,\n name,\n hint,\n}) => {\n return (\n <Stack spacing={2}>\n <FilterHeading hint={hint} name={name} />\n <RadioGroup onChange={onValueChange} value={checkedValue}>\n <Stack>\n {options.map(({ display, value }) => (\n <Radio key={value} value={value}>\n <Text color=\"gray.600\" fontSize=\"sm\" isTruncated>\n {display}\n </Text>\n </Radio>\n ))}\n </Stack>\n </RadioGroup>\n </Stack>\n );\n};\n","import { Language } from \"../../constants/languages\";\n\nexport const toNum = (val: string) => {\n const result = parseInt(val);\n\n if (`${result}` === \"NaN\") {\n return 0;\n }\n\n return result;\n};\n\nexport const parseLangs = (langQuery: string | null) => {\n if (!langQuery) return [];\n\n const langs = decodeURIComponent(langQuery).split(\",\");\n return langs as Language[];\n};\n","/**\n * @fileoverview Exposes page-level state and setters to all components in the new SearchResults View.\n */\nimport { createContext, FunctionComponent, useContext, useEffect } from \"react\";\nimport { CatalogSearchSort } from \"../../api/catalog-search/constants\";\nimport { CDKType } from \"../../constants/constructs\";\nimport { QUERY_PARAMS } from \"../../constants/url\";\nimport {\n UseCatalogSearchReturn,\n useCatalogSearch,\n} from \"../../hooks/useCatalogSearch\";\nimport { useQueryParams } from \"../../hooks/useQueryParams\";\nimport { LIMIT } from \"../SearchResults/constants\";\nimport { parseLangs, toNum } from \"./util\";\n\nexport interface SearchState {\n limit: number;\n offset: number;\n query: string;\n searchAPI: UseCatalogSearchReturn;\n}\n\nconst SearchStateContext = createContext<SearchState | undefined>(undefined);\n\n/**\n * A hook to access Search Page specific state. This can only be in descendants of the new Search Page\n * and will otherwise throw an error.\n */\nexport const useSearchState = () => {\n const state = useContext(SearchStateContext);\n\n if (!state) {\n throw new Error(\n `This hook must be called in a child of <SearchStateProvider />`\n );\n }\n\n return state;\n};\n\nexport const SearchStateProvider: FunctionComponent = ({ children }) => {\n const queryParams = useQueryParams();\n\n const offset = toNum(queryParams.get(QUERY_PARAMS.OFFSET) ?? \"0\");\n\n const query = decodeURIComponent(\n queryParams.get(QUERY_PARAMS.SEARCH_QUERY) ?? \"\"\n );\n\n const languages = parseLangs(queryParams.get(QUERY_PARAMS.LANGUAGES));\n\n const sort = (queryParams.get(QUERY_PARAMS.SORT) ?? undefined) as\n | CatalogSearchSort\n | undefined;\n\n const cdkType =\n (queryParams.get(QUERY_PARAMS.CDK_TYPE) as CDKType) ?? undefined;\n\n const cdkMajorParam = queryParams.get(QUERY_PARAMS.CDK_MAJOR);\n const cdkMajor = cdkMajorParam ? toNum(cdkMajorParam) : undefined;\n\n const searchAPI = useCatalogSearch({\n defaultCdkMajor: cdkMajor,\n defaultCdkType: cdkType,\n defaultLanguages: languages,\n defaultQuery: query,\n defaultSort: sort,\n });\n\n useEffect(() => {\n if (query !== searchAPI.query) {\n searchAPI.setQuery(query);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [query]);\n\n return (\n <SearchStateContext.Provider\n value={{\n limit: LIMIT,\n offset,\n query,\n searchAPI,\n }}\n >\n {children}\n </SearchStateContext.Provider>\n );\n};\n","import { FunctionComponent, useMemo } from \"react\";\nimport { CatalogConstructFrameworkMeta } from \"../../api/catalog-search\";\nimport { CDKType, CDKTYPE_NAME_MAP } from \"../../constants/constructs\";\nimport { useSearchContext } from \"../../contexts/Search\";\nimport { RadioFilter } from \"./RadioFilter\";\nimport { useSearchState } from \"./SearchState\";\n\ntype CDKOptions = Partial<{\n [key in CDKType]: CatalogConstructFrameworkMeta & {\n display: string;\n value: key;\n };\n}>;\n\nexport const CDKFilter: FunctionComponent = () => {\n const { cdkType, setCdkType, cdkMajor, setCdkMajor } =\n useSearchState().searchAPI;\n const searchAPI = useSearchContext()!;\n\n // Options with less than one package will be omitted\n const cdkOptions = useMemo(() => {\n const cdkTypes = searchAPI.constructFrameworks;\n const options = Object.entries(cdkTypes).reduce((opts, [name, meta]) => {\n if (meta.pkgCount < 1) {\n return opts;\n }\n\n return {\n ...opts,\n [name]: {\n display: CDKTYPE_NAME_MAP[name as CDKType],\n value: name,\n ...meta,\n },\n };\n }, {});\n\n return Object.keys(options).length ? (options as CDKOptions) : undefined;\n }, [searchAPI]);\n\n const majorsOptions = useMemo(() => {\n if (!cdkOptions || !cdkType) return undefined;\n const majorVersions = cdkOptions[cdkType]?.majorVersions;\n\n if (!majorVersions) return undefined;\n\n return [...majorVersions]\n .sort((a, b) => a - b)\n .map((value) => ({\n value: value.toString(),\n display: `${CDKTYPE_NAME_MAP[cdkType]} v${value}`,\n }));\n }, [cdkOptions, cdkType]);\n\n if (!cdkOptions) {\n return null;\n }\n\n const onCdkTypeChange = (type: string) => {\n const cdk = type as CDKType;\n setCdkMajor(undefined);\n setCdkType(type ? cdk : undefined);\n };\n\n const onCdkMajorChange = (major: string) => {\n if (!major) {\n setCdkMajor(undefined);\n return;\n }\n\n const majorNum = parseInt(major, 10);\n\n setCdkMajor(majorNum);\n };\n\n return (\n <>\n <RadioFilter\n hint=\"Constructs support distinct output types: AWS CDK libraries output Cloudformation Templates, CDK8s libraries output Kubernetes manifests, and CDKtf libraries output Terraform Configuration. The Construct Hub attempts to detect the output type of each library, but results are not guaranteed to be completely accurate.\"\n name=\"CDK Type\"\n onValueChange={onCdkTypeChange}\n options={[\n { display: \"Any CDK Type\", value: \"\" },\n ...Object.values(cdkOptions),\n ]}\n value={cdkType ?? \"\"}\n />\n {/* No point in showing major versions if only a single one is available */}\n {!!(majorsOptions && majorsOptions.length > 1) && (\n <RadioFilter\n hint={`Allows you to filter by a major version of your selected CDK Type: (${\n CDKTYPE_NAME_MAP[cdkType!]\n })`}\n name=\"CDK Major Version\"\n onValueChange={onCdkMajorChange}\n options={[\n { display: \"Any Major Version\", value: \"\" },\n ...majorsOptions,\n ]}\n value={cdkMajor?.toString() ?? \"\"}\n />\n )}\n </>\n );\n};\n","import { FunctionComponent } from \"react\";\nimport {\n Language,\n LANGUAGE_NAME_MAP,\n TEMP_SUPPORTED_LANGUAGES,\n} from \"../../constants/languages\";\nimport { CheckboxFilter } from \"./CheckboxFilter\";\nimport { useSearchState } from \"./SearchState\";\n\nconst languageOptions = Object.entries(LANGUAGE_NAME_MAP)\n .filter(([key]) => TEMP_SUPPORTED_LANGUAGES.has(key as Language))\n .map(([key, value]) => ({\n display: value,\n value: key,\n }));\n\nexport const LanguageFilter: FunctionComponent = () => {\n const { languages, setLanguages } = useSearchState().searchAPI;\n\n const onLanguagesChange = (lang: string) => {\n const language = lang as Language;\n\n setLanguages(\n languages.includes(language)\n ? languages.filter((l) => l !== language)\n : [...languages, language]\n );\n };\n\n return (\n <CheckboxFilter\n hint=\"Select one or more programming languages to filter by. Results will match at least one of the selected languages. If no languages are selected, results will not be filtered by langauges.\"\n name=\"Programming Language\"\n onValueChange={onLanguagesChange}\n options={languageOptions}\n values={languages}\n />\n );\n};\n","import { Heading, Stack } from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\nimport { Card } from \"../../components/Card\";\nimport { AuthorFilter } from \"./AuthorFilter\";\nimport { CDKFilter } from \"./CDKFilter\";\nimport { LanguageFilter } from \"./LanguageFilter\";\n\nexport interface FilterPanelProps {}\n\nexport const FilterPanel: FunctionComponent<FilterPanelProps> = () => {\n return (\n <Card\n borderRadius=\"none\"\n boxShadow=\"none\"\n maxH=\"full\"\n maxW=\"368px\"\n minW=\"100%\"\n overflow=\"hidden auto\"\n p={4}\n >\n <Stack color=\"blue.800\" spacing={6}>\n <Heading as=\"h3\" size=\"sm\">\n Filters\n </Heading>\n <CDKFilter />\n <LanguageFilter />\n <AuthorFilter />\n </Stack>\n </Card>\n );\n};\n","import { ChevronDownIcon } from \"@chakra-ui/icons\";\nimport {\n Flex,\n Text,\n Menu,\n MenuButton,\n MenuList,\n MenuItem,\n Button,\n} from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\nimport { CatalogSearchSort } from \"../../api/catalog-search/constants\";\nimport { useSearchState } from \"./SearchState\";\n\nconst SORT_RENDER_MAP = {\n [CatalogSearchSort.NameAsc]: \"A-Z\",\n [CatalogSearchSort.NameDesc]: \"Z-A\",\n [CatalogSearchSort.PublishDateAsc]: \"Oldest first\",\n [CatalogSearchSort.PublishDateDesc]: \"Newest first\",\n};\n\nexport const SortedBy: FunctionComponent = () => {\n const { searchAPI } = useSearchState();\n const { sort, setSort } = searchAPI;\n\n const selected = sort ? SORT_RENDER_MAP[sort] : \"Relevance\";\n\n return (\n <Flex align=\"center\">\n <Text>Sorted by</Text>\n <Menu>\n <MenuButton\n as={Button}\n color=\"blue.500\"\n ml={2}\n pl={2} // For some reason, the px shorthand doesn't work on this Button\n pr={2}\n py={1}\n rightIcon={<ChevronDownIcon />}\n variant=\"link\"\n >\n {selected}\n </MenuButton>\n <MenuList zIndex=\"sticky\">\n <MenuItem key=\"Relevance\" onClick={() => setSort(undefined)}>\n Relevance\n </MenuItem>\n {Object.entries(SORT_RENDER_MAP).map(([value, display]) => (\n <MenuItem\n key={value}\n onClick={() => setSort(value as CatalogSearchSort)}\n >\n {display}\n </MenuItem>\n ))}\n </MenuList>\n </Menu>\n </Flex>\n );\n};\n","import { Divider, Flex, Stack } from \"@chakra-ui/react\";\nimport { FunctionComponent, useEffect, useRef } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { PackageList } from \"../../components/PackageList\";\nimport { Page } from \"../../components/Page\";\nimport { SearchBar } from \"../../components/SearchBar\";\nimport { useCatalogResults } from \"../../hooks/useCatalogResults\";\nimport { useDebounce } from \"../../hooks/useDebounce\";\nimport { getSearchPath } from \"../../util/url\";\nimport { PageControls } from \"../SearchResults/components/PageControls\";\nimport { ShowingDetails } from \"../SearchResults/components/ShowingDetails\";\nimport { SearchQueryParam } from \"../SearchResults/constants\";\nimport { useSearchState } from \"./SearchState\";\nimport { SortedBy } from \"./SortedBy\";\n\nexport const SearchResults: FunctionComponent = () => {\n const isFirstRender = useRef(true);\n const { push } = useHistory();\n\n const { query, searchAPI, offset, limit } = useSearchState();\n const { languages, sort, cdkType, cdkMajor, onSearch } = searchAPI;\n const debouncedQuery = useDebounce(searchAPI.query);\n\n const { page, pageLimit, results } = useCatalogResults({\n offset,\n limit,\n query,\n languages,\n cdkMajor,\n cdkType,\n sort,\n });\n\n const getUrl = (\n params: Partial<{ [key in SearchQueryParam]: number | string }>\n ) => {\n return getSearchPath({\n cdkMajor,\n cdkType,\n query: (params.q ?? query) as string,\n languages,\n sort,\n offset: params.offset ?? offset,\n });\n };\n\n useEffect(() => {\n // If the query has results but the page has nothing to show...\n if (results.length && (offset < 0 || offset > pageLimit)) {\n // Handle an out of bounds offset\n if (offset < 0) {\n push(getUrl({ offset: 0 }));\n } else {\n // Offset is too large, just take last page\n push(getUrl({ offset: pageLimit }));\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [results, offset, pageLimit]);\n\n // Reset offset and update url when query, filters, or sort change\n // We want to avoid doing this on first render / when a user directly navigates to a search URL\n // so we keep a ref to prevent this\n useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n } else {\n // Trigger a history replace rather than push to avoid bloating browser history\n onSearch({ replace: true });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [debouncedQuery, sort, languages, cdkType, cdkMajor]);\n\n return (\n <Page\n meta={{\n title: query || \"Search\",\n description: query\n ? `${results.length} results for ${query} at Construct Hub`\n : \"Search reusable components for your cloud application\",\n }}\n pageName=\"search\"\n >\n <Stack direction=\"column\" maxW=\"100vw\" pb={4} px={4} spacing={4}>\n <SearchBar\n bg=\"white\"\n hasButton\n onChange={searchAPI.onQueryChange}\n onSubmit={searchAPI.onSubmit}\n value={searchAPI.query}\n />\n\n <Divider />\n\n <Flex justify=\"space-between\">\n <ShowingDetails\n count={results.length}\n filtered={!!query}\n limit={limit}\n offset={offset}\n />\n\n <SortedBy />\n </Flex>\n\n <PackageList items={page} />\n\n <PageControls\n getPageUrl={getUrl}\n limit={limit}\n offset={offset}\n pageLimit={pageLimit}\n />\n </Stack>\n </Page>\n );\n};\n","import { createTestIds } from \"../../util/createTestIds\";\n\nexport default createTestIds(\"searchRedesign\", [\"page\"] as const);\n","import { Grid } from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\nimport { Page } from \"../../components/Page\";\nimport { FilterPanel } from \"./FilterPanel\";\nimport { SearchResults } from \"./SearchResults\";\nimport { SearchStateProvider } from \"./SearchState\";\nimport testIds from \"./testIds\";\n\nexport const SearchRedesign: FunctionComponent = () => {\n return (\n <SearchStateProvider>\n <Page\n meta={{\n title: \"Search - Construct Hub\",\n description: \"This is a placeholder\",\n }}\n pageName=\"search\"\n >\n <Grid\n data-testid={testIds.page}\n gap={4}\n h=\"full\"\n maxW=\"100%\"\n p={6}\n templateColumns=\"auto 1fr\"\n templateRows=\"1fr\"\n >\n {/* Filter Panel */}\n <FilterPanel />\n {/* Results, Info, and Controls */}\n\n <SearchResults />\n </Grid>\n </Page>\n </SearchStateProvider>\n );\n};\n"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(this["webpackJsonpconstruct-hub-webapp"]=this["webpackJsonpconstruct-hub-webapp"]||[]).push([[3],{105:function(e,t,n){"use strict";n.d(t,"b",(function(){return p})),n.d(t,"a",(function(){return m}));var r=n(6),c=n(5),a=n(199),i=n(0),o="prefersWarnOnExternalLinkClick",s=n(200),u=n(43),l=n(197),d=n(222),b=n(152),j=n(224),f=n(57),h=n(1),O=function(e){var t=e.href,n=e.isOpen,r=e.onClick,a=e.onClose,O=e.setShouldWarn,v=Object(i.useState)(!0),p=Object(c.a)(v,2),m=p[0],g=p[1];return Object(h.jsx)(u.a,{closeOnOverlayClick:!1,isOpen:n,onClose:a,children:Object(h.jsx)(u.h,{children:Object(h.jsxs)(u.d,{color:"blue.800",children:[Object(h.jsx)(u.g,{children:"Confirm"}),Object(h.jsxs)(u.b,{children:[Object(h.jsx)(l.a,{fontSize:"lg",mb:2,children:"This link is taking you to an external site"}),Object(h.jsx)(l.a,{bg:"gray.100",borderRadius:"sm",color:"blue.500",fontSize:"sm",mb:4,p:1,children:t}),Object(h.jsx)(d.a,{onChange:function(e){var t=!e.target.checked;g(t)},children:"Do not show this warning again."})]}),Object(h.jsxs)(u.f,{children:[Object(h.jsx)(b.a,{onClick:function(){g(!0),a()},variant:"ghost",children:"Cancel"}),Object(h.jsx)(j.a,{hasArrow:!0,label:t,placement:"top",children:Object(h.jsx)(f.a,{hasIcon:!1,hasWarning:!1,href:t,noFollow:!0,onClick:function(e){if(!m){O(m);try{localStorage.setItem(o,JSON.stringify(m))}catch(t){}}null===r||void 0===r||r(e),a()},children:Object(h.jsx)(b.a,{colorScheme:"blue",ml:4,rightIcon:Object(h.jsx)(s.a,{}),tabIndex:0,variant:"ghost",children:"Proceed"})})})]})]})})})},v=Object(i.createContext)((function(e){return e.onClick})),p=function(){return Object(i.useContext)(v)},m=function(e){var t=e.children,n=Object(i.useState)(null),s=Object(c.a)(n,2),u=s[0],l=s[1],d=Object(a.a)({onClose:function(){l(null)}}),b=d.isOpen,j=d.onOpen,f=d.onClose,p=Object(i.useState)((function(){try{var e,t=null!==(e=localStorage.getItem(o))&&void 0!==e?e:"true";return JSON.parse(t)}catch(n){return!0}})),m=Object(c.a)(p,2),g=m[0],x=m[1],k=Object(i.useCallback)((function(e){var t=e.href,n=e.onClick;if(!g)return n;return function(e){l({href:t,onClick:n}),e.preventDefault(),j()}}),[j,g]);return Object(h.jsxs)(v.Provider,{value:k,children:[t,Object(h.jsx)(O,Object(r.a)({isOpen:b,onClose:f,setShouldWarn:x},u))]})}},108:function(e,t,n){"use strict";n.d(t,"d",(function(){return a})),n.d(t,"a",(function(){return l})),n.d(t,"b",(function(){return d})),n.d(t,"e",(function(){return b})),n.d(t,"c",(function(){return j}));var r,c,a,i=n(4),o=n(6),s=n(106),u=n(1);!function(e){e.DotNet="dotnet",e.TypeScript="typescript",e.Python="python",e.Go="golang",e.Java="java"}(a||(a={}));var l=[a.TypeScript,a.Python,a.Java,a.Go,a.DotNet],d=(r={},Object(i.a)(r,a.TypeScript,"TypeScript"),Object(i.a)(r,a.Python,"Python"),Object(i.a)(r,a.Java,"Java"),Object(i.a)(r,a.Go,"Go"),Object(i.a)(r,a.DotNet,".NET"),r),b=new Set([a.Python,a.TypeScript,a.Java]),j=(c={},Object(i.a)(c,a.TypeScript,{name:d.typescript,icon:function(e){return Object(u.jsxs)(s.a,Object(o.a)(Object(o.a)({},e),{},{"aria-hidden":"true",transform:"rotate(360)",viewBox:"0 0 256 256",children:[Object(u.jsx)("path",{d:"M0 128v128h256V0H0z",fill:"#007ACC"}),Object(u.jsx)("path",{d:"M56.611 128.85l-.081 10.483h33.32v94.68h23.57v-94.68h33.32v-10.28c0-5.69-.122-10.444-.284-10.566-.122-.162-20.399-.244-44.983-.203l-44.739.122-.122 10.443zM206.567 118.108c6.501 1.626 11.459 4.51 16.01 9.224 2.357 2.52 5.851 7.112 6.136 8.209.08.325-11.053 7.802-17.798 11.987-.244.163-1.22-.894-2.317-2.52-3.291-4.794-6.745-6.867-12.028-7.232-7.76-.529-12.759 3.535-12.718 10.32 0 1.992.284 3.17 1.097 4.796 1.707 3.535 4.876 5.648 14.832 9.955 18.326 7.884 26.168 13.085 31.045 20.48 5.445 8.25 6.664 21.415 2.966 31.208-4.063 10.646-14.14 17.88-28.323 20.277-4.388.772-14.79.65-19.504-.203-10.28-1.829-20.033-6.908-26.047-13.572-2.357-2.601-6.949-9.387-6.664-9.875.122-.162 1.178-.812 2.356-1.503 1.138-.65 5.446-3.13 9.509-5.486l7.355-4.267 1.544 2.276c2.154 3.291 6.867 7.802 9.712 9.305 8.167 4.308 19.383 3.698 24.909-1.26 2.357-2.153 3.332-4.388 3.332-7.68 0-2.966-.366-4.266-1.91-6.5-1.99-2.845-6.054-5.243-17.595-10.24-13.206-5.69-18.895-9.225-24.096-14.833-3.007-3.25-5.852-8.452-7.03-12.8-.975-3.616-1.22-12.678-.447-16.335 2.723-12.76 12.353-21.658 26.25-24.3 4.51-.853 14.994-.528 19.424.57z",fill:"#FFF"})]}))}}),Object(i.a)(c,a.Python,{name:d.python,icon:function(e){return Object(u.jsxs)(s.a,Object(o.a)(Object(o.a)({},e),{},{version:"1.0",viewBox:"0 0 110.421 109.846",children:[Object(u.jsxs)("defs",{children:[Object(u.jsxs)("linearGradient",{id:"a",children:[Object(u.jsx)("stop",{offset:"0",stopColor:"#ffe052"}),Object(u.jsx)("stop",{offset:"1",stopColor:"#ffc331"})]}),Object(u.jsx)("linearGradient",{gradientUnits:"userSpaceOnUse",id:"d",x1:"89.137",x2:"147.777",xlinkHref:"#a",y1:"111.921",y2:"168.101"}),Object(u.jsxs)("linearGradient",{id:"b",children:[Object(u.jsx)("stop",{offset:"0",stopColor:"#387eb8"}),Object(u.jsx)("stop",{offset:"1",stopColor:"#366994"})]}),Object(u.jsx)("linearGradient",{gradientUnits:"userSpaceOnUse",id:"c",x1:"55.549",x2:"110.149",xlinkHref:"#b",y1:"77.07",y2:"131.853"})]}),Object(u.jsxs)("g",{color:"#000",children:[Object(u.jsx)("path",{d:"M99.75 67.469c-28.032 0-26.281 12.156-26.281 12.156l.031 12.594h26.75V96H62.875s-17.938-2.034-17.938 26.25 15.657 27.281 15.657 27.281h9.343v-13.125s-.503-15.656 15.407-15.656h26.531s14.906.241 14.906-14.406V82.125s2.263-14.656-27.031-14.656zM85 75.938a4.808 4.808 0 014.813 4.812A4.808 4.808 0 0185 85.563a4.808 4.808 0 01-4.813-4.813A4.808 4.808 0 0185 75.937z",fill:"url(#c)",overflow:"visible",style:{marker:"none"},transform:"translate(-44.938 -67.469)"}),Object(u.jsx)("path",{d:"M100.546 177.315c28.032 0 26.281-12.156 26.281-12.156l-.03-12.594h-26.75v-3.781h37.374s17.938 2.034 17.938-26.25c0-28.285-15.657-27.282-15.657-27.282h-9.343v13.125s.503 15.657-15.407 15.657h-26.53s-14.907-.241-14.907 14.406v24.219s-2.263 14.656 27.031 14.656zm14.75-8.469a4.808 4.808 0 01-4.812-4.812 4.808 4.808 0 014.812-4.813 4.808 4.808 0 014.813 4.813 4.808 4.808 0 01-4.813 4.812z",fill:"url(#d)",overflow:"visible",style:{marker:"none"},transform:"translate(-44.938 -67.469)"})]})]}))}}),Object(i.a)(c,a.Java,{name:d.java,icon:function(e){return Object(u.jsxs)(s.a,Object(o.a)(Object(o.a)({},e),{},{"aria-hidden":"true",transform:"rotate(360)",viewBox:"0 0 256 346",children:[Object(u.jsx)("path",{d:"M82.554 267.473s-13.198 7.675 9.393 10.272c27.369 3.122 41.356 2.675 71.517-3.034 0 0 7.93 4.972 19.003 9.279-67.611 28.977-153.019-1.679-99.913-16.517M74.292 229.659s-14.803 10.958 7.805 13.296c29.236 3.016 52.324 3.263 92.276-4.43 0 0 5.526 5.602 14.215 8.666-81.747 23.904-172.798 1.885-114.296-17.532",fill:"#5382A1"}),Object(u.jsx)("path",{d:"M143.942 165.515c16.66 19.18-4.377 36.44-4.377 36.44s42.301-21.837 22.874-49.183c-18.144-25.5-32.059-38.172 43.268-81.858 0 0-118.238 29.53-61.765 94.6",fill:"#E76F00"}),Object(u.jsx)("path",{d:"M233.364 295.442s9.767 8.047-10.757 14.273c-39.026 11.823-162.432 15.393-196.714.471-12.323-5.36 10.787-12.8 18.056-14.362 7.581-1.644 11.914-1.337 11.914-1.337-13.705-9.655-88.583 18.957-38.034 27.15 137.853 22.356 251.292-10.066 215.535-26.195M88.9 190.48s-62.771 14.91-22.228 20.323c17.118 2.292 51.243 1.774 83.03-.89 25.978-2.19 52.063-6.85 52.063-6.85s-9.16 3.923-15.787 8.448c-63.744 16.765-186.886 8.966-151.435-8.183 29.981-14.492 54.358-12.848 54.358-12.848M201.506 253.422c64.8-33.672 34.839-66.03 13.927-61.67-5.126 1.066-7.411 1.99-7.411 1.99s1.903-2.98 5.537-4.27c41.37-14.545 73.187 42.897-13.355 65.647 0 .001 1.003-.895 1.302-1.697",fill:"#5382A1"}),Object(u.jsx)("path",{d:"M162.439.371s35.887 35.9-34.037 91.101c-56.071 44.282-12.786 69.53-.023 98.377-32.73-29.53-56.75-55.526-40.635-79.72C111.395 74.612 176.918 57.393 162.439.37",fill:"#E76F00"}),Object(u.jsx)("path",{d:"M95.268 344.665c62.199 3.982 157.712-2.209 159.974-31.64 0 0-4.348 11.158-51.404 20.018-53.088 9.99-118.564 8.824-157.399 2.421.001 0 7.95 6.58 48.83 9.201",fill:"#5382A1"})]}))}}),Object(i.a)(c,a.Go,{name:d.golang,icon:function(e){return Object(u.jsx)(s.a,Object(o.a)(Object(o.a)({},e),{},{"aria-hidden":"true",transform:"rotate(360)",viewBox:"0 0 512 192",children:Object(u.jsx)("path",{d:"M292.533 13.295l1.124.75c13.212 8.725 22.685 20.691 28.917 35.15 1.496 2.243.499 3.49-2.493 4.237l-5.063 1.296c-11.447 2.949-20.53 5.429-31.827 8.378l-6.443 1.678c-2.32.574-2.96.333-5.428-2.477l-.348-.399c-3.519-3.988-6.155-6.652-10.817-9.03l-.899-.443c-15.705-7.727-30.911-5.484-45.12 3.74-16.952 10.968-25.677 27.172-25.428 47.364.25 19.942 13.96 36.395 33.654 39.137 16.951 2.244 31.16-3.739 42.378-16.452 2.244-2.743 4.238-5.734 6.73-9.224h-48.11c-5.235 0-6.481-3.24-4.736-7.478l.864-2.035c3.204-7.454 8.173-18.168 11.4-24.294l.704-1.319c.862-1.494 2.612-3.513 5.977-3.513h80.224c3.603-11.415 9.449-22.201 17.246-32.407 18.198-23.931 40.135-36.396 69.8-41.63 25.427-4.488 49.359-1.995 71.046 12.713 19.694 13.461 31.909 31.66 35.15 55.59 4.237 33.654-5.485 61.075-28.668 84.508-16.453 16.702-36.645 27.172-59.829 31.908-6.73 1.247-13.461 1.496-19.942 2.244-22.685-.499-43.376-6.98-60.826-21.937-12.273-10.61-20.727-23.648-24.928-38.828a104.937 104.937 0 01-10.47 16.89c-17.949 23.683-41.381 38.39-71.046 42.38-24.43 3.24-47.115-1.497-67.058-16.454-18.447-13.96-28.917-32.407-31.66-55.34-3.24-27.173 4.737-51.603 21.19-73.041 17.7-23.184 41.132-37.891 69.8-43.126 22.999-4.16 45.037-1.595 64.936 11.464zM411.12 49.017l-.798.178c-23.183 5.235-38.14 19.942-43.624 43.375-4.488 19.444 4.985 39.138 22.934 47.115 13.71 5.983 27.421 5.235 40.633-1.496 19.694-10.22 30.413-26.175 31.66-47.613-.25-3.24-.25-5.734-.749-8.227-4.436-24.401-26.664-38.324-50.056-33.332zM116.416 94.564c.997 0 1.496.748 1.496 1.745l-.499 5.983c0 .997-.997 1.745-1.745 1.745l-54.344-.249c-.997 0-1.246-.748-.748-1.496l3.49-6.232c.499-.748 1.496-1.496 2.493-1.496h49.857zM121.9 71.63c.997 0 1.496.748 1.247 1.496l-1.995 5.983c-.249.997-1.246 1.495-2.243 1.495l-117.912.25c-.997 0-1.246-.499-.748-1.247l5.235-6.73c.499-.748 1.745-1.247 2.742-1.247H121.9zm12.963-22.934c.997 0 1.246.748.748 1.496l-4.238 6.481c-.499.748-1.745 1.496-2.493 1.496l-90.24-.25c-.998 0-1.247-.498-.749-1.246l5.235-6.73c.499-.748 1.745-1.247 2.742-1.247h88.995z",fill:"#00ACD7"})}))}}),Object(i.a)(c,a.DotNet,{name:d.dotnet,icon:function(e){return Object(u.jsx)(s.a,Object(o.a)(Object(o.a)({},e),{},{"aria-hidden":"true",transform:"rotate(360)",viewBox:"0 0 32 32",children:Object(u.jsx)("path",{d:"M4.224 10.089v11.667h1.365v-8.438a12.58 12.58 0 00-.068-1.599h.052c.099.255.224.5.37.729l6 9.302h1.672V10.089h-1.359v8.203c-.016.573.016 1.146.083 1.714h-.031a13.986 13.986 0 00-.474-.781L5.995 10.09zm12.417 0v11.667h6.203l.005-1.281h-4.813v-4.047h4.214v-1.229h-4.214v-3.875h4.521V10.09zm7.25 0v1.234h3.354v10.432h1.365V11.323h3.391v-1.234zm-23.021 10a.86.86 0 00-.609.276.91.91 0 00-.26.641.901.901 0 001.542.641c.172-.167.271-.401.271-.641s-.099-.474-.271-.641a.876.876 0 00-.641-.276H.871z",fill:"#626262"})}))}}),c)},118:function(e,t,n){"use strict";n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return u}));var r=n(0),c=n(21),a=n(1),i=Object(r.createContext)({trackPageView:function(){}}),o=function(e){var t=e.children,n=Object(c.h)().pathname,o=Object(r.useRef)(null),s=Object(r.useCallback)((function(e){var t,r,c;o.current!==n&&(null===(t=window)||void 0===t||null===(r=t.AWSMA)||void 0===r||null===(c=r.ready)||void 0===c||c.call(r,(function(){document.dispatchEvent(new CustomEvent(window.AWSMA.TRIGGER_EVENT,{detail:e})),o.current=n})))}),[n]);return Object(a.jsx)(i.Provider,{value:{trackPageView:s},children:t})},s=n(6),u=function(e){var t=Object(r.useContext)(i).trackPageView,n=Object(c.h)().pathname,a=Object(r.useMemo)((function(){return{page:Object(s.a)({pageURL:window.location.href.replace("://localhost:3000","://constructs.local.dev")},e.page),event:{type:"pageview",name:e.event.name,description:e.event.description}}}),[n,e]);return Object(r.useCallback)((function(){return t(a)}),[t,a])}},121:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(0),c=function(e,t){var n=t.limit,r=t.offset*n,c=r+n;return e.slice(r,c)},a=n(18),i=n(92),o=function(e){var t=e.cdkMajor,n=e.cdkType,o=e.limit,s=e.offset,u=void 0===s?0:s,l=e.query,d=void 0===l?"":l,b=e.language,j=void 0===b?null:b,f=e.languages,h=e.sort,O=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.query,n=e.filters,c=e.sort,o=Object(i.b)();if(!o)throw new Error("This hook can only be called within a descendant of a <SearchProvider />");return Object(r.useMemo)((function(){return Object(a.a)(o.search({query:t,filters:n,sort:c}).values())}),[o,t,n,c])}({filters:Object(r.useMemo)((function(){return{cdkMajor:t,cdkType:n,language:null!==j&&void 0!==j?j:void 0,languages:f}}),[t,n,j,f]),query:d,sort:h}),v=function(e,t){var n=null!==t&&void 0!==t?t:{},a=n.limit,i=void 0===a?25:a,o=n.offset,s=void 0===o?0:o,u=e?Math.floor(e.length/i):0;return Object(r.useMemo)((function(){return{page:c(e,{limit:i,offset:s>u?u:s}),pageLimit:u}}),[e,i,s,u])}(O,{offset:u,limit:o}),p=v.page,m=v.pageLimit;return Object(r.useMemo)((function(){return{results:O,page:p,pageLimit:m}}),[p,m,O])}},127:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(5),c=n(0),a=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Object(c.useState)(e),a=Object(r.a)(n,2),i=a[0],o=a[1],s=t.delay,u=void 0===s?250:s,l=t.onChange;return Object(c.useEffect)((function(){var t=setTimeout((function(){o(e),null===l||void 0===l||l(e)}),u);return function(){clearTimeout(t)}}),[e,u,l]),i}},128:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(6),c=n(17),a=n(20),i=n(1),o=Object(c.a)((function(e,t){return Object(i.jsx)(a.a.form,Object(r.a)(Object(r.a)({},e),{},{ref:t}))}));o.displayName="Form"},137:function(e,t,n){"use strict";n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return u}));var r=n(31),c=n.n(r),a=n(50),i=n(16),o={sections:[{name:"Recently updated",showLastUpdated:10}]},s={featureFlags:{homeRedesign:!1,searchRedesign:!1},packageLinks:[],featuredPackages:o},u=function(){var e=Object(a.a)(c.a.mark((function e(){var t;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!window.configOverride){e.next=2;break}return e.abrupt("return",window.configOverride);case 2:return e.next=4,fetch(i.a.CONFIG);case 4:if((t=e.sent).ok){e.next=8;break}return console.log("Failed to fetch application config, using default values"),e.abrupt("return",s);case 8:return e.abrupt("return",t.json().catch((function(e){return console.error(e),console.log("Invalid config response, using default values"),s})));case 9:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},140:function(e,t,n){"use strict";n.d(t,"a",(function(){return u}));var r=n(6),c=n(27),a=n(17),i=n(216),o=n(1),s=["name","onClick"],u=Object(a.a)((function(e,t){var n=e.name,a=e.onClick,u=Object(c.a)(e,s);return Object(o.jsx)(i.a,Object(r.a)(Object(r.a)({_hover:{cursor:"pointer"},alignItems:"center",display:"flex",fontSize:"md",lineHeight:"base",listStyleType:"none",minH:8,onClick:a,onKeyDown:function(e){["Enter"," "].includes(e.key)&&(e.preventDefault(),a())},px:4,ref:t,role:"option",sx:{":hover, :focus":{bg:"gray.100"}},tabIndex:0},u),{},{children:n}))}));u.displayName="SearchItem"},16:function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return c})),n.d(t,"c",(function(){return a}));var r={PACKAGES_PREFIX:"/data",CATALOG_SUFFIX:"/catalog.json",ASSEMBLY_SUFFIX:"/assembly.json",METADATA_SUFFIX:"/metadata.json",CONFIG:"/config.json"},c={CDK_TYPE:"cdk",LANGUAGE:"lang",LANGUAGES:"langs",OFFSET:"offset",SEARCH_QUERY:"q",SORT:"sort",SUBMODULE:"submodule",CDK_MAJOR:"cdkver"},a={FAQ:"/faq",HOME:"/",PACKAGES:"/packages",SEARCH:"/search",SITE_TERMS:"/terms"}},166:function(e,t,n){},173:function(e,t,n){"use strict";n.r(t);var r={};n.r(r),n.d(r,"initialize",(function(){return R})),n.d(r,"access",(function(){return D})),n.d(r,"checkForCookieConsent",(function(){return N})),n.d(r,"customizeCookies",(function(){return G})),n.d(r,"getConsentCookie",(function(){return W})),n.d(r,"hasConsent",(function(){return H}));var c,a,i=n(0),o=n.n(i),s=n(81),u=n.n(s),l=n(33),d=(n(166),n(146)),b=n(21),j=n(203),f=n(205),h=n(199),O=n(193),v=n(202),p=n(197),m=n(204),g=n(86),x=n(57),k=n(1),y="showing-dev-preview-banner",w=function(){var e,t=Object(h.a)({defaultIsOpen:JSON.parse(null!==(e=window.sessionStorage.getItem(y))&&void 0!==e?e:"true"),onClose:function(){return window.sessionStorage.setItem(y,"false")}}),n=t.isOpen,r=t.onClose;return Object(k.jsx)(O.a,{h:"max-content",children:Object(k.jsx)(v.a,{in:n,children:Object(k.jsxs)(g.a,{"aria-label":"Preview Banner",bg:"blue.500",border:"none",boxShadow:"none",color:"white",mt:4,mx:4,p:4,position:"relative",role:"alertdialog",children:[Object(k.jsx)(j.a,{h:5,left:4,position:"absolute",top:4,w:5}),Object(k.jsxs)(p.a,{fontSize:"md",mx:8,textAlign:"center",children:["This application is in Dev Preview. Some features may change. If you find any issues, please report them"," ",Object(k.jsx)(x.a,{color:"inherit",hasWarning:!1,href:"https://github.com/cdklabs/construct-hub-webapp/issues",textDecoration:"underline",children:"here"})]}),Object(k.jsx)(m.a,{"aria-label":"Dismiss banner",colorScheme:"white",icon:Object(k.jsx)(f.a,{}),onClick:r,position:"absolute",right:4,size:"xs",top:3,variant:"ghost"})]})})})},C=n(5),S=n(206),E=n(207),T=n(208),A=n(152),M=n(27),F=n(31),I=n.n(F),z=n(50),P=function(){new URLSearchParams(window.location.search).get("sb")},R=function(){var e=Object(z.a)(I.a.mark((function e(){return I.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,t){window.addEventListener("load",Object(z.a)(I.a.mark((function r(){var a,i,o;return I.a.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,a={domain:window.location.hostname,language:navigator.language,__storeWriter:P()},r.next=4,n.e(16).then(n.t.bind(null,599,7));case 4:i=r.sent,o=i.AWSCShortbread,c=o(a),e(),r.next=13;break;case 10:r.prev=10,r.t0=r.catch(0),t(r.t0);case 13:case"end":return r.stop()}}),r,null,[[0,10]])}))))})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),L=function(e){return function(){var t;if(!c)throw new Error("shortbread has not been initialized");return(t=c)[e].apply(t,arguments)}},D=L("access"),N=L("checkForCookieConsent"),G=L("customizeCookies"),W=L("getConsentCookie"),H=L("hasConsent"),U=R,_=Object(M.a)(r,["initialize"]),B=Object(i.createContext)({}),q=function(e){var t=e.children,n=Object(i.useState)(!1),r=Object(C.a)(n,2),c=r[0],a=r[1];return Object(i.useEffect)((function(){var e=!1;return U().then((function(){e||(_.checkForCookieConsent(),a(!0))})).catch((function(t){console.error(t),e||a(!1)})),function(){e=!0,a(!1)}}),[]),Object(k.jsx)(B.Provider,{value:c?_:{},children:t})},V=n(85),J=n(16),K={SERVICE_TERMS:{display:"AWS Service Terms",url:"https://aws.amazon.com/service-terms/",testId:"service-terms"},PRIVACY:{display:"Privacy",url:"https://aws.amazon.com/privacy/",testId:"privacy"},SITE_TERMS:{display:"Construct Hub Site Terms",url:J.c.SITE_TERMS,testId:"site-terms",isExternal:!1},LEGAL:{display:"Legal",url:"https://aws.amazon.com/legal/",testId:"legal"}},Q=n(18),Y=n(56),X=Object(Y.a)("footer",["container","links","disclaimer","manageCookies"].concat(Object(Q.a)(Object.values(K).map((function(e){return e.testId}))))),Z=function(){var e=Object(i.useContext)(B).customizeCookies;return Object(k.jsxs)(S.a,{align:"center",as:"footer",bg:"blue.800",color:"white","data-testid":X.container,direction:"column",justify:"center",py:4,children:[Object(k.jsx)(E.a,{columnGap:6,columns:[1,2,4],"data-testid":X.links,children:Object.entries(K).map((function(e,t){var n=Object(C.a)(e,2),r=n[0],c=n[1],a=c.display,i=c.isExternal,o=void 0===i||i,s=c.testId,u=c.url;return Object(k.jsxs)(S.a,{align:"center",direction:{base:"column",md:"row"},children:[Object(k.jsx)(O.a,{display:{base:"none",md:0!==t?"initial":"none"},h:5,children:Object(k.jsx)(T.a,{borderColor:"white",mr:6,orientation:"vertical"})}),o?Object(k.jsx)(x.a,{color:"currentcolor","data-testid":X[s],hasWarning:!1,href:u,lineHeight:10,mx:"auto",children:a}):Object(k.jsx)(V.a,{color:"currentcolor","data-testid":X[s],lineHeight:10,mx:"auto",to:u,children:a}),Object(k.jsx)(O.a,{display:{base:"none",sm:t<2?"initial":"none",md:"none"},w:"100%",children:Object(k.jsx)(T.a,{borderColor:"white"})})]},r)}))}),Object(k.jsx)(p.a,{"data-testid":X.disclaimer,fontSize:"xs",mt:4,children:"2021 Amazon Web Services, Inc. All rights reserved."}),Object(k.jsx)(A.a,{color:"white","data-testid":X.manageCookies,fontSize:"xs",fontWeight:"normal",mt:4,onClick:e,variant:"link",children:"Manage Cookies"})]})},$=n(6),ee=[{display:"FAQ",isNavLink:!0,url:"/faq"},{display:"Construct Hub on GitHub",url:"https://github.com/cdklabs/construct-hub"},{display:"Issues on GitHub",url:"https://github.com/cdklabs/construct-hub/issues"}],te=[{display:"AWS CDK",links:[{display:"Home",url:"https://aws.amazon.com/cdk/"},{display:"Getting Started",url:"https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html"},{display:"Workshop",url:"https://cdkworkshop.com/"},{display:"Best Practices",url:"https://aws.amazon.com/blogs/devops/best-practices-for-developing-cloud-applications-with-aws-cdk"}]},{display:"CDK for Terraform",links:[{display:"Getting Started",url:"https://learn.hashicorp.com/tutorials/terraform/cdktf"},{display:"Tutorials",url:"https://learn.hashicorp.com/collections/terraform/cdktf"}]},{display:"CDK for Kubernetes",links:[{display:"Home",url:"https://cdk8s.io"},{display:"Getting Started",url:"https://cdk8s.io/docs/latest/getting-started"},{display:"Documentation",url:"https://cdk8s.io/docs/latest"},{display:"API Reference",url:"https://cdk8s.io/docs/latest/reference/index.html"}]},{display:"Community",links:[{display:"Slack",url:"https://join.slack.com/t/cdk-dev/shared_invite/zt-mso6p56d-qJp7SOTBvMaQuDrx7R2wHg"},{display:"Community Hub",url:"https://cdk.dev"}]}],ne=n(221),re=["children"],ce=function(e){var t=e.children,n=Object(M.a)(e,re);return Object(k.jsx)(ne.a,Object($.a)(Object($.a)({colorScheme:"blue.800",strategy:"fixed"},n),{},{children:t}))},ae=n(17),ie=["items"],oe=function(e){var t=e.display,n=e.isNavLink,r=e.url;return n?Object(k.jsx)(V.a,{color:"blue.500",to:r,children:t}):Object(k.jsx)(x.a,{alignItems:"center",display:"flex",hasWarning:!1,href:r,justifyContent:"space-between",w:"100%",children:t})},se=Object(ae.a)((function(e,t){var n=e.items,r=Object(M.a)(e,ie);return Object(k.jsx)(ne.f,Object($.a)(Object($.a)({},r),{},{ref:t,children:n.map((function(e,t){return"links"in e?Object(k.jsxs)(i.Fragment,{children:[Object(k.jsx)(ne.d,{align:"left",title:e.display,children:e.links.map((function(e,t){return Object(k.jsx)(ne.e,{children:Object(k.jsx)(oe,Object($.a)({},e))},"".concat(e.display,"-").concat(t))}))}),t!==n.length-1&&Object(k.jsx)(ne.c,{})]},"".concat(e.display,"-").concat(t)):Object(k.jsx)(ne.e,{children:Object(k.jsx)(oe,Object($.a)({},e))},"".concat(e.display,"-").concat(t))}))}))})),ue=n(211),le=["children"],de=Object(ae.a)((function(e,t){var n=e.children,r=Object(M.a)(e,le);return Object(k.jsx)(ne.b,Object($.a)(Object($.a)({as:A.a,color:"blue.800",fontWeight:"500",ref:t,rightIcon:Object(k.jsx)(ue.a,{h:6,w:6}),size:"md",variant:"link"},r),{},{children:n}))})),be=Object(Y.a)("header",["container","title","gettingStartedTrigger","gettingStartedMenu","resourcesTrigger","resourcesMenu","navOpen","navClose","searchInput","searchIcon","mobileNav"]),je=function(){return Object(k.jsxs)(ce,{children:[Object(k.jsx)(de,{"data-testid":be.gettingStartedTrigger,children:"Getting Started"}),Object(k.jsx)(se,{"data-testid":be.gettingStartedMenu,items:ee})]})},fe=n(214),he=n(70),Oe=n(227),ve=n(43),pe=n(230),me=n(87),ge=Object(Y.a)("searchModal",["container"]),xe=function(e){var t=e.isOpen,n=e.onClose,r=Object(me.a)(),c=r.query,a=r.onQueryChange,i=r.onSubmit,o=r.onSearch;return Object(k.jsx)(Oe.a,{children:Object(k.jsx)(ve.a,{isOpen:t,onClose:n,children:Object(k.jsx)(ve.h,{children:Object(k.jsxs)(ve.d,{"data-testid":ge.container,children:[Object(k.jsx)(ve.c,{}),Object(k.jsx)(ve.g,{children:"Search"}),Object(k.jsx)(ve.b,{children:Object(k.jsxs)(pe.a,{pb:4,spacing:4,children:[Object(k.jsx)(he.a,{onChange:a,onSubmit:i,value:c}),Object(k.jsx)(A.a,{colorScheme:"blue",onClick:function(){return o()},children:"Find Constructs"})]})})]})})})})},ke=function(){var e=Object(h.a)();return Object(k.jsxs)(b.d,{children:[Object(k.jsx)(b.b,{exact:!0,path:[J.c.HOME,J.c.SEARCH]}),Object(k.jsxs)(b.b,{path:"*",children:[Object(k.jsx)(O.a,{"data-testid":be.searchInput,display:{base:"none",md:"initial"},children:Object(k.jsxs)(he.a,{bg:"gray.50",children:[Object(k.jsx)(he.b,{}),Object(k.jsx)(he.c,{})]})}),Object(k.jsxs)(O.a,{display:{base:"initial",md:"none"},children:[Object(k.jsx)(m.a,{"aria-label":"Search Icon",borderRadius:"md","data-testid":be.searchIcon,icon:Object(k.jsx)(fe.a,{color:"gray.600"}),onClick:e.onOpen,variant:"ghost"}),Object(k.jsx)(xe,Object($.a)({},e))]})]})]})},ye=n(218),we=n(231),Ce=function(){return Object(k.jsxs)(ce,{children:[Object(k.jsx)(de,{"data-testid":be.resourcesTrigger,children:"Resources"}),Object(k.jsx)(se,{"data-testid":be.resourcesMenu,items:te})]})},Se=n(217),Ee=function(){return Object(k.jsx)(Se.a,{as:"h1",color:"blue.800","data-testid":be.title,size:"lg",children:Object(k.jsxs)(l.b,{to:"/",children:[Object(k.jsx)(O.a,{as:"span",color:"blue.500",children:"Construct"})," ","Hub"]})})},Te=function(e){var t=e.isOpen,n=e.onClose;return Object(k.jsx)(Oe.a,{children:Object(k.jsxs)(we.a,{isOpen:t,onClose:n,placement:"left",size:"xs",children:[Object(k.jsx)(ve.h,{}),Object(k.jsxs)(we.b,{"data-testid":be.mobileNav,children:[Object(k.jsx)(ve.c,{}),Object(k.jsx)(ve.g,{display:"flex",justifyContent:"center",children:Object(k.jsx)(Ee,{})}),Object(k.jsx)(ve.b,{children:Object(k.jsxs)(pe.a,{align:"start",justify:"start",spacing:4,children:[Object(k.jsx)(je,{}),Object(k.jsx)(Ce,{})]})})]})]})})},Ae=function(){var e=Object(h.a)();return Object(k.jsxs)(k.Fragment,{children:[Object(k.jsx)(m.a,{"aria-label":"Navigation Menu",borderRadius:"md","data-testid":be.navOpen,display:{md:"none"},icon:Object(k.jsx)(ye.a,{}),onClick:e.onOpen,variant:"ghost"}),Object(k.jsx)(Te,Object($.a)({},e))]})},Me=function(e){return Object(k.jsx)(d.b,Object($.a)({align:"center",justify:"center",rowStart:1},e))},Fe=function(){return Object(k.jsxs)(d.a,{alignItems:"center",as:"header",bg:"white",boxShadow:"base","data-testid":be.container,gap:6,gridTemplateColumns:{base:"1fr max-content 1fr",md:"max-content minmax(200px, 500px) auto"},gridTemplateRows:"1fr",maxW:"100vw",position:"sticky",px:4,py:4,top:0,w:"100%",zIndex:"sticky",children:[Object(k.jsx)(Me,{colStart:{base:2,md:1},justifySelf:{base:"center",md:"start"},children:Object(k.jsx)(Ee,{})}),Object(k.jsx)(Me,{colStart:{base:3,md:2},justifySelf:{base:"end",md:"stretch"},children:Object(k.jsx)(ke,{})}),Object(k.jsxs)(Me,{colStart:{base:1,md:3},justifySelf:{base:"start",md:"end"},children:[Object(k.jsxs)(d.a,{display:{base:"none",md:"grid"},gap:4,gridTemplateColumns:"1fr 1fr",gridTemplateRows:"1fr",placeItems:"center",w:"100%",children:[Object(k.jsx)(O.a,{children:Object(k.jsx)(je,{})}),Object(k.jsx)(O.a,{children:Object(k.jsx)(Ce,{})})]}),Object(k.jsx)(Ae,{})]})]})},Ie=n(75),ze=["component"],Pe=function(e){var t=e.component,n=Object(M.a)(e,ze);return Object(k.jsx)(b.b,Object($.a)(Object($.a)({},n),{},{children:Object(k.jsx)(i.Suspense,{fallback:Object(k.jsx)(Ie.a,{}),children:Object(k.jsx)(t,{})})}))},Re=n(89),Le=Object(i.lazy)((function(){return Promise.all([n.e(0),n.e(13)]).then(n.bind(null,605))})),De=Object(i.lazy)((function(){return Promise.all([n.e(0),n.e(1),n.e(2),n.e(15)]).then(n.bind(null,607))})),Ne=Object(i.lazy)((function(){return Promise.all([n.e(0),n.e(1),n.e(8)]).then(n.bind(null,604))})),Ge=Object(i.lazy)((function(){return Promise.all([n.e(0),n.e(12)]).then(n.bind(null,278))})),We=Object(i.lazy)((function(){return Promise.all([n.e(0),n.e(1),n.e(5),n.e(7)]).then(n.bind(null,601))})),He=Object(i.lazy)((function(){return Promise.all([n.e(0),n.e(1),n.e(2),n.e(11)]).then(n.bind(null,608))})),Ue=Object(i.lazy)((function(){return Promise.all([n.e(0),n.e(1),n.e(10),n.e(9)]).then(n.bind(null,603))})),_e=Object(i.lazy)((function(){return Promise.all([n.e(0),n.e(14)]).then(n.bind(null,609))})),Be=function(){var e,t=Object(Re.b)(),n=t.data,r=t.loading,c=null!==(e=null===n||void 0===n?void 0:n.featureFlags)&&void 0!==e?e:{},a=(null===c||void 0===c?void 0:c.homeRedesign)||(null===c||void 0===c?void 0:c.searchRedesign);return Object(k.jsxs)(d.a,{as:"main",bg:"bgPrimary",gridTemplateColumns:"1fr",gridTemplateRows:"auto auto 1fr auto",h:"100vh",maxH:"100%",maxW:"100%",overflow:"hidden auto",children:[Object(k.jsx)(Fe,{}),r||a?Object(k.jsx)("div",{}):Object(k.jsx)(w,{}),r?Object(k.jsx)(Ie.a,{}):Object(k.jsxs)(b.d,{children:[Object(k.jsx)(Pe,{component:Le,exact:!0,path:J.c.FAQ}),Object(k.jsx)(Pe,{component:(null===c||void 0===c?void 0:c.homeRedesign)?Ne:De,exact:!0,path:J.c.HOME}),Object(k.jsx)(Pe,{component:_e,exact:!0,path:J.c.SITE_TERMS}),Object(k.jsx)(Pe,{component:We,path:J.c.PACKAGES}),Object(k.jsx)(Pe,{component:(null===c||void 0===c?void 0:c.searchRedesign)?Ue:He,exact:!0,path:J.c.SEARCH}),Object(k.jsx)(Pe,{component:Ge,path:"*"})]}),Object(k.jsx)(Z,{})]})},qe=n(118),Ve=n(88),Je=n(105),Ke=n(92),Qe=n(223),Ye=n(219),Xe=n(101),Ze=Xe.theme.components.Code,$e=Object($.a)(Object($.a)({},Ze),{},{variants:Object($.a)(Object($.a)({},Ze.variants),{},{"code-block":Object($.a)(Object($.a)({},Ze.variants.subtle),{},{display:"block",whiteSpace:"pre"})})}),et=function(e,t){return function(n){var r="function"===typeof e?e(n):e;return Object($.a)(Object($.a)({},r),{},{container:Object($.a)(Object($.a)({},r.container),t)})}},tt=Xe.theme.components.Tag,nt=Object($.a)(Object($.a)({},tt),{},{baseStyle:{container:{fontWeight:"normal"}},variants:Object($.a)(Object($.a)({},tt.variants),{},{subtle:et(tt.variants.subtle,{background:"#F2F2F2",color:"blue.800"}),official:et(tt.variants.subtle,{background:"rgba(33, 150, 83, 0.1)",color:"#219653"})})}),rt=Object($.a)(Object($.a)({},Xe.theme.components),{},{Code:$e,Divider:{defaultProps:{borderColor:"rgba(0, 124, 253, 0.15)"}},Tag:nt}),ct={borders:{base:"1px solid rgba(0, 124, 253, 0.15)"},colors:Object($.a)(Object($.a)({},Xe.theme.colors),{},{blue:{50:"#dcf3ff",100:"#aed9ff",200:"#7dbeff",300:"#4aa4ff",400:"#1a8aff",500:"#0070e6",600:"#0057b4",700:"#003e82",800:"#002551",900:"#000d21"},bgPrimary:"#F8F8F8"}),radii:{card:"0.75rem"},sizes:{container:{"2xl":"1920px"}},shadows:{base:"0px 4px 15px rgba(40, 132, 178, 0.15)"}},at=Object(Ye.a)(Object($.a)(Object($.a)({},ct),{},{components:rt})),it=function(e){var t=e.children;return Object(k.jsx)(Qe.a,{resetCSS:!0,theme:at,children:t})},ot=Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)),st=function(e,t){navigator.serviceWorker.register(e).then((function(e){e.onupdatefound=function(){var n=e.installing;null!=n&&(n.onstatechange=function(){"installed"===n.state&&(navigator.serviceWorker.controller?(console.log("New content is available and will be used when all tabs for this page are closed. See https://cra.link/PWA."),t&&t.onUpdate&&t.onUpdate(e)):(console.log("Content is cached for offline use."),t&&t.onSuccess&&t.onSuccess(e)))})}})).catch((function(e){console.error("Error during service worker registration:",e)}))};u.a.render(Object(k.jsx)(o.a.StrictMode,{children:Object(k.jsx)(l.a,{children:Object(k.jsx)(q,{children:Object(k.jsx)(qe.a,{children:Object(k.jsx)(Re.a,{children:Object(k.jsx)(Ve.a,{children:Object(k.jsx)(Ke.a,{children:Object(k.jsx)(it,{children:Object(k.jsx)(Je.a,{children:Object(k.jsx)(Be,{})})})})})})})})})}),document.getElementById("root")),a&&a instanceof Function&&n.e(17).then(n.bind(null,600)).then((function(e){var t=e.getCLS,n=e.getFID,r=e.getFCP,c=e.getLCP,i=e.getTTFB;t(a),n(a),r(a),c(a),i(a)}),(function(){})),function(e){if("serviceWorker"in navigator){if(new URL("",window.location.href).origin!==window.location.origin)return;window.addEventListener("load",(function(){var t="".concat("","/service-worker.js");ot?(!function(e,t){fetch(e,{headers:{"Service-Worker":"script"}}).then((function(n){var r=n.headers.get("content-type");404===n.status||null!=r&&-1===r.indexOf("javascript")?navigator.serviceWorker.ready.then((function(e){e.unregister().then((function(){window.location.reload()}))})):st(e,t)})).catch((function(){console.log("No internet connection found. App is running in offline mode.")}))}(t,e),navigator.serviceWorker.ready.then((function(){console.log("This web app is being served cache-first by a service worker. To learn more, visit https://cra.link/PWA")}))):st(t,e)}))}}()},56:function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=function(e,t){return t.reduce((function(t,n){return t[n]="".concat(e,"-").concat(n),t}),{})}},57:function(e,t,n){"use strict";n.d(t,"a",(function(){return d}));var r=n(6),c=n(27),a=n(200),i=n(17),o=n(201),s=n(105),u=n(1),l=["children","hasIcon","hasWarning","href","onClick","noFollow"],d=Object(i.a)((function(e,t){var n=e.children,i=e.hasIcon,d=void 0===i||i,b=e.hasWarning,j=void 0===b||b,f=e.href,h=e.onClick,O=e.noFollow,v=Object(c.a)(e,l),p=Object(s.b)(),m="noopener noreferrer";return(j||O)&&(m+=" nofollow"),Object(u.jsxs)(o.a,Object(r.a)(Object(r.a)({color:"blue.500",href:f,isExternal:!0,onClick:j?p({href:f,onClick:h}):h,ref:t,rel:m},v),{},{children:[n," ",d&&Object(u.jsx)(a.a,{mb:1,ml:2})]}))}));d.displayName="ExternalLink"},65:function(e,t,n){"use strict";n.d(t,"c",(function(){return a})),n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return s}));var r,c,a,i=n(4);!function(e){e.awscdk="aws-cdk",e.cdktf="cdktf",e.cdk8s="cdk8s"}(a||(a={}));var o=(r={},Object(i.a)(r,a.awscdk,"AWS CDK"),Object(i.a)(r,a.cdktf,"CDKtf"),Object(i.a)(r,a.cdk8s,"CDK8s"),r),s=(c={},Object(i.a)(c,a.awscdk,{name:o[a.awscdk],imgsrc:"/assets/awscdk-icon.png"}),Object(i.a)(c,a.cdk8s,{name:o[a.cdk8s],imgsrc:"/assets/cdk8s-icon.png"}),Object(i.a)(c,a.cdktf,{name:o[a.cdktf],imgsrc:"/assets/cdktf-icon.png"}),c)},66:function(e,t,n){"use strict";var r;n.d(t,"a",(function(){return r})),function(e){e.NameAsc="asc",e.NameDesc="desc",e.PublishDateAsc="oldest",e.PublishDateDesc="newest"}(r||(r={}))},70:function(e,t,n){"use strict";n.d(t,"a",(function(){return g})),n.d(t,"b",(function(){return y})),n.d(t,"c",(function(){return L}));var r=n(6),c=n(27),a=n(214),i=n(199),o=n(212),s=n(213),u=n(228),l=n(152),d=n(0),b=n(87),j=n(128),f=n(56),h=Object(f.a)("searchBar",["input","searchIcon","searchButton","overlay","suggestionsList","suggestion"]),O=n(1),v=["children","hasButton","onSubmit","value","onChange"],p=Object(d.createContext)(void 0),m=function(){var e=Object(d.useContext)(p);if(!e)throw new Error("This component must be a child of a <SearchBar />");return e},g=function(e){var t=e.children,n=e.hasButton,f=e.onSubmit,m=e.value,g=e.onChange,x=Object(c.a)(e,v),k=Object(i.a)(),y=Object(d.useRef)(null),w=Object(b.a)();return Object(d.useEffect)((function(){var e=function(e){y.current&&e.target&&(y.current.contains(e.target)||k.onClose())},t=function(e){var t,n;"Escape"===e.key&&(null===(t=y.current)||void 0===t||null===(n=t.blur)||void 0===n||n.call(t),k.onClose())};return window.addEventListener("keyup",t),window.addEventListener("click",e),function(){window.removeEventListener("keyup",t),window.removeEventListener("click",e)}}),[]),Object(O.jsx)(p.Provider,{value:{query:null!==m&&void 0!==m?m:w.query,isOpen:k.isOpen},children:Object(O.jsxs)(j.a,{color:"initial",onSubmit:null!==f&&void 0!==f?f:w.onSubmit,pos:"relative",children:[Object(O.jsxs)(o.a,{pos:"relative",zIndex:k.isOpen?3:"initial",children:[n&&Object(O.jsx)(s.a,{children:Object(O.jsx)(a.a,{"data-testid":h.searchIcon})}),Object(O.jsx)(u.a,Object(r.a)({_focus:{boxShadow:"base",borderColor:"inherit"},bg:"white",boxShadow:k.isOpen?"base":"none","data-testid":h.input,onChange:null!==g&&void 0!==g?g:w.onQueryChange,onFocus:k.onOpen,placeholder:"Search construct libraries",ref:y,value:null!==m&&void 0!==m?m:w.query},x)),n?Object(O.jsx)(s.b,{w:"140px",children:Object(O.jsx)(l.a,{borderLeftRadius:"0",colorScheme:"blue","data-testid":h.searchButton,type:"submit",children:"Find Constructs"})}):Object(O.jsx)(s.b,{children:Object(O.jsx)(a.a,{"data-testid":h.searchIcon})})]}),t]})})},x=n(17),k=n(193),y=Object(x.a)((function(e,t){var n=m().isOpen;return Object(O.jsx)(k.a,Object(r.a)({bg:"gray.700","data-testid":h.overlay,display:n?"initial":"none",inset:"0",opacity:"0.5",pos:"fixed",ref:t,zIndex:"1"},e))})),w=n(229),C=n(216),S=n(208),E=n(230),T=n(197),A=n(21),M=n(65),F=n(121),I=n(127),z=n(84),P=n(86),R=n(140),L=Object(x.a)((function(e,t){var n=m(),c=n.query,a=n.isOpen,i=Object(I.a)(c),o=Object(A.g)().push,s=Object(F.a)({limit:5,offset:0,query:i}).page;if(!a||s.length<1||!i)return null;return Object(O.jsx)(P.a,Object(r.a)(Object(r.a)({as:C.c,"data-testid":h.suggestionsList,left:0,ml:0,pos:"absolute",pt:10,px:0,ref:t,right:0,top:0,zIndex:2},e),{},{children:s.map((function(e,t){var n=function(e){var t,n=e.metadata,r=null,c=null===n||void 0===n||null===(t=n.constructFramework)||void 0===t?void 0:t.name;return c&&c in M.b&&(r=Object(O.jsx)(w.a,{alt:"".concat(c," Logo"),h:5,src:M.b[c].imgsrc,w:5})),r}(e);return Object(O.jsxs)(O.Fragment,{children:[t>0&&Object(O.jsx)(S.a,{mx:4,w:"auto"}),Object(O.jsx)(R.a,{"data-testid":h.suggestion,name:Object(O.jsxs)(E.a,{align:"center",direction:"row",spacing:4,children:[n,Object(O.jsx)(T.a,{ml:n?0:9,children:e.name})]}),onClick:function(){return o(Object(z.a)(e))},py:2,textAlign:"left"},e.id)]})}))}))}))},75:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(215),c=n(198),a=n(1),i=function(){return Object(a.jsx)(r.a,{children:Object(a.jsx)(c.a,{size:"xl"})})}},76:function(e,t,n){"use strict";n.d(t,"b",(function(){return u})),n.d(t,"a",(function(){return l}));var r,c=n(4),a=n(108),i=n(66),o=function(e){return function(t,n){var r=new Date(t.metadata.date),c=new Date(n.metadata.date);return r===c?0:e?c<r?1:-1:r<c?1:-1}},s=function(e){return function(t,n){return t.name.localeCompare(n.name)*(e?1:-1)}},u=(r={},Object(c.a)(r,i.a.NameAsc,s(!0)),Object(c.a)(r,i.a.NameDesc,s(!1)),Object(c.a)(r,i.a.PublishDateAsc,o(!0)),Object(c.a)(r,i.a.PublishDateDesc,o(!1)),r),l={cdkType:function(e){if(e)return function(t){var n,r;return(null===(n=t.metadata)||void 0===n||null===(r=n.constructFramework)||void 0===r?void 0:r.name)===e}},cdkMajor:function(e){if("number"===typeof e)return function(t){var n,r;return(null===(n=t.metadata)||void 0===n||null===(r=n.constructFramework)||void 0===r?void 0:r.majorVersion)===e}},language:function(e){if(e&&e!==a.d.TypeScript)return function(t){var n;return void 0!==(null===(n=t.languages)||void 0===n?void 0:n[e])}},languages:function(e){var t,n=(null!==(t=null===e||void 0===e?void 0:e.length)&&void 0!==t?t:0)>0?new Set(e):void 0;if(n&&!n.has(a.d.TypeScript))return function(e){var t;return Object.keys(null!==(t=e.languages)&&void 0!==t?t:{}).some((function(e){return n.has(e)}))}}}},84:function(e,t,n){"use strict";n.d(t,"b",(function(){return o})),n.d(t,"c",(function(){return u})),n.d(t,"a",(function(){return l}));var r=n(4),c=n(5),a=n(16),i=new RegExp(/git@github\.com:([a-zA-Z-]+)+\/?([a-zA-Z-]+)*(\.git)?/),o=function(e){try{var t=e,n=e.match(i);if(n){var r=Object(c.a)(n,3),a=r[1],o=r[2];t="https://github.com/".concat(a,"/").concat(o)}return{hostname:new URL(t).hostname,url:t}}catch(s){return}},s=function(e,t){var n=e;if(t){var r=function(e,t){var n=new URLSearchParams(t);return Object.entries(e).filter((function(e){return null!=Object(c.a)(e,2)[1]})).forEach((function(e){var t=Object(c.a)(e,2),r=t[0],a=t[1];n.set(r,"".concat(a))})),n.toString()}(t);r&&(n+="?".concat(r))}return n},u=function(e){var t,n=e.cdkMajor,c=e.cdkType,i=e.query,o=e.offset,u=e.language,l=e.languages,d=e.sort;return s(a.c.SEARCH,(t={},Object(r.a)(t,a.b.SEARCH_QUERY,i),Object(r.a)(t,a.b.CDK_TYPE,c),Object(r.a)(t,a.b.CDK_MAJOR,n),Object(r.a)(t,a.b.LANGUAGE,u),Object(r.a)(t,a.b.LANGUAGES,(null===l||void 0===l?void 0:l.length)?l.join(","):null),Object(r.a)(t,a.b.SORT,d),Object(r.a)(t,a.b.OFFSET,null!==o&&void 0!==o?o:0),t))},l=function(e){var t,n=e.name,c=e.version,i=e.language,o=e.submodule;return s("".concat(a.c.PACKAGES,"/").concat(n,"/v/").concat(c),(t={},Object(r.a)(t,a.b.SUBMODULE,o),Object(r.a)(t,a.b.LANGUAGE,i),t))}},85:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(6),c=n(201),a=n(33),i=n(1),o=function(e){return Object(i.jsx)(c.a,Object(r.a)({as:a.b},e))}},86:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(6),c=n(17),a=n(193),i=n(1),o=Object(c.a)((function(e,t){return Object(i.jsx)(a.a,Object(r.a)({bg:"white",border:"base",borderRadius:"card",boxShadow:"base",p:2,ref:t},e))}));o.displayName="Card"},87:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(5),c=n(0),a=n(21),i=n(84),o=function(){var e,t,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=Object(c.useState)(null!==(e=n.defaultQuery)&&void 0!==e?e:""),s=Object(r.a)(o,2),u=s[0],l=s[1],d=Object(c.useState)(n.defaultCdkType),b=Object(r.a)(d,2),j=b[0],f=b[1],h=Object(c.useState)(n.defaultCdkMajor),O=Object(r.a)(h,2),v=O[0],p=O[1],m=Object(c.useState)(null!==(t=n.defaultLanguages)&&void 0!==t?t:[]),g=Object(r.a)(m,2),x=g[0],k=g[1],y=Object(c.useState)(n.defaultLanguage),w=Object(r.a)(y,2),C=w[0],S=w[1],E=Object(c.useState)(n.defaultSort),T=Object(r.a)(E,2),A=T[0],M=T[1],F=Object(a.g)(),I=F.push,z=F.replace,P=function(e){e.preventDefault(),l(e.target.value)},R=Object(c.useCallback)((function(e){((null===e||void 0===e?void 0:e.replace)?z:I)(Object(i.c)({cdkType:j,cdkMajor:v,language:C,languages:x,query:u,sort:A}))}),[j,v,C,x,I,u,z,A]),L=Object(c.useCallback)((function(e){null===e||void 0===e||e.preventDefault(),R()}),[R]);return Object(c.useMemo)((function(){return{cdkMajor:v,cdkType:j,language:C,languages:x,onLanguageChange:S,onQueryChange:P,onSearch:R,onSubmit:L,query:u,setCdkMajor:p,setCdkType:f,setLanguage:S,setLanguages:k,setQuery:l,setSort:M,sort:A}}),[v,j,C,x,R,L,u,A])}},88:function(e,t,n){"use strict";n.d(t,"b",(function(){return j})),n.d(t,"a",(function(){return f}));var r=n(5),c=n(0),a=n(31),i=n.n(a),o=n(50),s=n(16),u=function(){var e=Object(o.a)(i.a.mark((function e(){var t;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(s.a.CATALOG_SUFFIX);case 2:if((t=e.sent).ok){e.next=6;break}throw console.error(t.statusText),new Error("Failed fetching packages index: ".concat(t.statusText));case 6:return e.abrupt("return",t.json());case 7:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),l=n(93),d=n(1),b=Object(c.createContext)({loading:!1,data:void 0,error:void 0}),j=function(){return Object(c.useContext)(b)},f=function(e){var t=e.children,n=Object(l.a)(u),a=Object(r.a)(n,2),i=a[0],o=a[1];return Object(c.useEffect)((function(){i()}),[i]),Object(d.jsx)(b.Provider,{value:o,children:t})}},89:function(e,t,n){"use strict";n.d(t,"a",(function(){return b})),n.d(t,"b",(function(){return d}));var r=n(6),c=n(5),a=n(0),i=n(137),o=n(93),s=n(1),u=Object(a.createContext)({loading:!1,data:void 0,error:void 0}),l="construct-hub-config",d=function(){return Object(a.useContext)(u)},b=function(e){var t=e.children,n=Object(a.useState)((function(){try{var e=localStorage.getItem(l);return e?JSON.parse(e):void 0}catch(t){console.error(t)}})),d=Object(c.a)(n,2),b=d[0],j=d[1],f=Object(o.a)(i.b,{onSuccess:function(e){j(e);try{localStorage.setItem(l,JSON.stringify(e))}catch(t){console.error(t)}}}),h=Object(c.a)(f,2),O=h[0],v=h[1];return Object(a.useEffect)((function(){O()}),[]),Object(s.jsx)(u.Provider,{value:Object(r.a)(Object(r.a)({},v),{},{data:b}),children:t})}},92:function(e,t,n){"use strict";n.d(t,"b",(function(){return g})),n.d(t,"a",(function(){return x}));var r=n(0),c=n(4),a=n(5),i=n(18),o=n(6),s=n(62),u=n(71),l=n(148),d=n.n(l),b=n(65),j=n(66),f=n(76),h=function(){function e(t){Object(s.a)(this,e),this.map=void 0,this.index=void 0,this.constructFrameworks=void 0;var n=t.reduce((function(e,t){var n=[t.name,t.version].join("@");return e.set(n,Object(o.a)(Object(o.a)({},t),{},{id:n})),e}),new Map);this.map=this.sort(n,j.a.PublishDateDesc),this.constructFrameworks=this.detectConstructFrameworks(),this.index=d()((function(){var e=this;this.ref("id"),this.field("name"),this.field("scope"),this.field("packageName"),this.field("description"),this.field("authorName"),this.field("authorEmail"),Object(i.a)(n.values()).forEach((function(t){var n=t.author,r=t.name.split("/"),c=Object(a.a)(r,2),i=c[0],o=c[1];i&&o&&(t.scope=i,t.packageName=o),"string"===typeof n&&(t.authorName=n),(null===n||void 0===n?void 0:n.name)&&(t.authorName=n.name),(null===n||void 0===n?void 0:n.email)&&(t.authorEmail=n.email),e.add(t)}))}))}return Object(u.a)(e,[{key:"search",value:function(e){var t=null!==e&&void 0!==e?e:{},n=t.query,r=t.filters,c=t.sort,a=n?this.query(n):new Map(this.map);return r&&(a=this.filter(a,r)),c&&(a=this.sort(a,c)),a}},{key:"query",value:function(e){var t=this,n=[];try{n=this.index.search(e)}catch(r){console.error(r)}return n.reduce((function(e,n){var r=n.ref,c=t.map.get(r);return c&&e.set(r,c),e}),new Map)}},{key:"filter",value:function(e,t){var n=t.cdkType,r=t.cdkMajor,c=t.language,a=t.languages,i=new Map(e),o=[f.a.cdkType(n),f.a.cdkMajor(n?r:void 0),f.a.language(c),f.a.languages(a)].filter(Boolean);return i.forEach((function(e){var t=!1;o.forEach((function(n){t||n(e)||(t=!0)})),t&&i.delete(e.id)})),i}},{key:"sort",value:function(e,t){return t?new Map(Object(i.a)(e.entries()).sort((function(e,n){var r=Object(a.a)(e,2)[1],c=Object(a.a)(n,2)[1];return f.b[t](r,c)}))):e}},{key:"detectConstructFrameworks",value:function(){var e;return Object(i.a)(this.map.values()).reduce((function(e,t){var n,r,c=t.metadata,a=null===c||void 0===c||null===(n=c.constructFramework)||void 0===n?void 0:n.name,i=null===c||void 0===c||null===(r=c.constructFramework)||void 0===r?void 0:r.majorVersion;if(a){var o=e[a];void 0===i||o.majorVersions.includes(i)||o.majorVersions.push(i),o.pkgCount+=1}return e}),(e={},Object(c.a)(e,b.c.awscdk,{majorVersions:[],pkgCount:0}),Object(c.a)(e,b.c.cdk8s,{majorVersions:[],pkgCount:0}),Object(c.a)(e,b.c.cdktf,{majorVersions:[],pkgCount:0}),e))}}]),e}(),O=n(75),v=n(88),p=n(1),m=Object(r.createContext)(void 0),g=function(){return Object(r.useContext)(m)},x=function(e){var t=e.children,n=Object(v.b)(),c=n.data,a=n.loading,i=Object(r.useMemo)((function(){if(void 0!==(null===c||void 0===c?void 0:c.packages)&&!a)return new h(c.packages)}),[c,a]);return i?Object(p.jsx)(m.Provider,{value:i,children:t}):Object(p.jsx)(O.a,{})}},93:function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));var r=n(31),c=n.n(r),a=n(50),i=n(5),o=n(0),s=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.initialValue,r=t.onSuccess,s=t.onError,u=Object(o.useState)(!1),l=Object(i.a)(u,2),d=l[0],b=l[1],j=Object(o.useState)(n),f=Object(i.a)(j,2),h=f[0],O=f[1],v=Object(o.useState)(),p=Object(i.a)(v,2),m=p[0],g=p[1],x=Object(o.useRef)(!1);Object(o.useEffect)((function(){return x.current=!0,function(){x.current=!1}}),[]);var k=Object(o.useCallback)(Object(a.a)(c.a.mark((function t(){var a,i=arguments;return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(x.current){t.next=2;break}return t.abrupt("return");case 2:return b(!0),g(void 0),t.prev=4,t.next=7,e.apply(void 0,i);case 7:a=t.sent,null===r||void 0===r||r(a),x.current&&(O(a),b(!1)),t.next=17;break;case 12:t.prev=12,t.t0=t.catch(4),console.error(t.t0),null===s||void 0===s||s(t.t0),x.current&&(O(n),g(t.t0),b(!1));case 17:case"end":return t.stop()}}),t,null,[[4,12]])}))),[s,r]);return Object(o.useMemo)((function(){return[k,{data:h,loading:d,error:m}]}),[k,h,d,m])}}},[[173,4,6]]]);
|
|
2
|
+
//# sourceMappingURL=main.09317a58.chunk.js.map
|