construct-hub-webapp 0.1.1006 → 0.1.1007

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.
Files changed (57) hide show
  1. package/build/asset-manifest.json +33 -33
  2. package/build/index.html +1 -1
  3. package/build/static/js/168.7afc32df.chunk.js +2 -0
  4. package/build/static/js/{225.797a8414.chunk.js.map → 168.7afc32df.chunk.js.map} +1 -1
  5. package/build/static/js/176.80cca111.chunk.js +2 -0
  6. package/build/static/js/{679.8e068bbf.chunk.js.map → 176.80cca111.chunk.js.map} +1 -1
  7. package/build/static/js/188.b838dd91.chunk.js +2 -0
  8. package/build/static/js/{639.eef4be15.chunk.js.map → 188.b838dd91.chunk.js.map} +1 -1
  9. package/build/static/js/20.8db75690.chunk.js +3 -0
  10. package/build/static/js/20.8db75690.chunk.js.map +1 -0
  11. package/build/static/js/212.e83e4834.chunk.js +3 -0
  12. package/build/static/js/{466.86e52ef3.chunk.js.map → 212.e83e4834.chunk.js.map} +1 -1
  13. package/build/static/js/{577.fb671f69.chunk.js → 240.75069f7d.chunk.js} +2 -2
  14. package/build/static/js/{577.fb671f69.chunk.js.map → 240.75069f7d.chunk.js.map} +1 -1
  15. package/build/static/js/496.37a28473.chunk.js +2 -0
  16. package/build/static/js/{270.3b12a4c2.chunk.js.map → 496.37a28473.chunk.js.map} +1 -1
  17. package/build/static/js/528.c2a8d074.chunk.js +2 -0
  18. package/build/static/js/{540.cf7b9c02.chunk.js.map → 528.c2a8d074.chunk.js.map} +1 -1
  19. package/build/static/js/544.d9b0e633.chunk.js +2 -0
  20. package/build/static/js/544.d9b0e633.chunk.js.map +1 -0
  21. package/build/static/js/{787.7fd88075.chunk.js → 592.a33c00ce.chunk.js} +2 -2
  22. package/build/static/js/{787.7fd88075.chunk.js.map → 592.a33c00ce.chunk.js.map} +1 -1
  23. package/build/static/js/624.874d0cc8.chunk.js +2 -0
  24. package/build/static/js/624.874d0cc8.chunk.js.map +1 -0
  25. package/build/static/js/640.7cb967bb.chunk.js +2 -0
  26. package/build/static/js/640.7cb967bb.chunk.js.map +1 -0
  27. package/build/static/js/832.b37e8815.chunk.js +2 -0
  28. package/build/static/js/832.b37e8815.chunk.js.map +1 -0
  29. package/build/static/js/856.aef3ab68.chunk.js +2 -0
  30. package/build/static/js/{418.62ce0500.chunk.js.map → 856.aef3ab68.chunk.js.map} +1 -1
  31. package/build/static/js/960.7e5407b7.chunk.js +2 -0
  32. package/build/static/js/{122.82f37711.chunk.js.map → 960.7e5407b7.chunk.js.map} +1 -1
  33. package/build/static/js/main.a0a9f427.js +3 -0
  34. package/build/static/js/{main.315a42be.js.map → main.a0a9f427.js.map} +1 -1
  35. package/package.json +1 -1
  36. package/build/static/js/122.82f37711.chunk.js +0 -2
  37. package/build/static/js/19.81fc7bd5.chunk.js +0 -2
  38. package/build/static/js/19.81fc7bd5.chunk.js.map +0 -1
  39. package/build/static/js/225.797a8414.chunk.js +0 -2
  40. package/build/static/js/259.93073aff.chunk.js +0 -3
  41. package/build/static/js/259.93073aff.chunk.js.map +0 -1
  42. package/build/static/js/270.3b12a4c2.chunk.js +0 -2
  43. package/build/static/js/418.62ce0500.chunk.js +0 -2
  44. package/build/static/js/466.86e52ef3.chunk.js +0 -3
  45. package/build/static/js/51.d3f35d18.chunk.js +0 -2
  46. package/build/static/js/51.d3f35d18.chunk.js.map +0 -1
  47. package/build/static/js/540.cf7b9c02.chunk.js +0 -2
  48. package/build/static/js/545.c4864b51.chunk.js +0 -2
  49. package/build/static/js/545.c4864b51.chunk.js.map +0 -1
  50. package/build/static/js/58.904cc501.chunk.js +0 -2
  51. package/build/static/js/58.904cc501.chunk.js.map +0 -1
  52. package/build/static/js/639.eef4be15.chunk.js +0 -2
  53. package/build/static/js/679.8e068bbf.chunk.js +0 -2
  54. package/build/static/js/main.315a42be.js +0 -3
  55. /package/build/static/js/{259.93073aff.chunk.js.LICENSE.txt → 20.8db75690.chunk.js.LICENSE.txt} +0 -0
  56. /package/build/static/js/{466.86e52ef3.chunk.js.LICENSE.txt → 212.e83e4834.chunk.js.LICENSE.txt} +0 -0
  57. /package/build/static/js/{main.315a42be.js.LICENSE.txt → main.a0a9f427.js.LICENSE.txt} +0 -0
@@ -1,44 +1,44 @@
1
1
  {
2
2
  "files": {
3
3
  "main.css": "/static/css/main.efe592a7.css",
4
- "main.js": "/static/js/main.315a42be.js",
5
- "static/js/19.81fc7bd5.chunk.js": "/static/js/19.81fc7bd5.chunk.js",
6
- "static/js/679.8e068bbf.chunk.js": "/static/js/679.8e068bbf.chunk.js",
7
- "static/js/58.904cc501.chunk.js": "/static/js/58.904cc501.chunk.js",
8
- "static/js/577.fb671f69.chunk.js": "/static/js/577.fb671f69.chunk.js",
9
- "static/js/545.c4864b51.chunk.js": "/static/js/545.c4864b51.chunk.js",
10
- "static/js/418.62ce0500.chunk.js": "/static/js/418.62ce0500.chunk.js",
11
- "static/js/51.d3f35d18.chunk.js": "/static/js/51.d3f35d18.chunk.js",
12
- "static/js/540.cf7b9c02.chunk.js": "/static/js/540.cf7b9c02.chunk.js",
13
- "static/js/259.93073aff.chunk.js": "/static/js/259.93073aff.chunk.js",
14
- "static/js/787.7fd88075.chunk.js": "/static/js/787.7fd88075.chunk.js",
15
- "static/js/270.3b12a4c2.chunk.js": "/static/js/270.3b12a4c2.chunk.js",
16
- "static/js/639.eef4be15.chunk.js": "/static/js/639.eef4be15.chunk.js",
17
- "static/js/466.86e52ef3.chunk.js": "/static/js/466.86e52ef3.chunk.js",
18
- "static/js/122.82f37711.chunk.js": "/static/js/122.82f37711.chunk.js",
19
- "static/js/225.797a8414.chunk.js": "/static/js/225.797a8414.chunk.js",
4
+ "main.js": "/static/js/main.a0a9f427.js",
5
+ "static/js/624.874d0cc8.chunk.js": "/static/js/624.874d0cc8.chunk.js",
6
+ "static/js/176.80cca111.chunk.js": "/static/js/176.80cca111.chunk.js",
7
+ "static/js/544.d9b0e633.chunk.js": "/static/js/544.d9b0e633.chunk.js",
8
+ "static/js/240.75069f7d.chunk.js": "/static/js/240.75069f7d.chunk.js",
9
+ "static/js/832.b37e8815.chunk.js": "/static/js/832.b37e8815.chunk.js",
10
+ "static/js/856.aef3ab68.chunk.js": "/static/js/856.aef3ab68.chunk.js",
11
+ "static/js/640.7cb967bb.chunk.js": "/static/js/640.7cb967bb.chunk.js",
12
+ "static/js/528.c2a8d074.chunk.js": "/static/js/528.c2a8d074.chunk.js",
13
+ "static/js/20.8db75690.chunk.js": "/static/js/20.8db75690.chunk.js",
14
+ "static/js/592.a33c00ce.chunk.js": "/static/js/592.a33c00ce.chunk.js",
15
+ "static/js/496.37a28473.chunk.js": "/static/js/496.37a28473.chunk.js",
16
+ "static/js/188.b838dd91.chunk.js": "/static/js/188.b838dd91.chunk.js",
17
+ "static/js/212.e83e4834.chunk.js": "/static/js/212.e83e4834.chunk.js",
18
+ "static/js/960.7e5407b7.chunk.js": "/static/js/960.7e5407b7.chunk.js",
19
+ "static/js/168.7afc32df.chunk.js": "/static/js/168.7afc32df.chunk.js",
20
20
  "service-worker.js": "/service-worker.js",
21
21
  "index.html": "/index.html",
22
22
  "main.efe592a7.css.map": "/static/css/main.efe592a7.css.map",
23
- "main.315a42be.js.map": "/static/js/main.315a42be.js.map",
24
- "19.81fc7bd5.chunk.js.map": "/static/js/19.81fc7bd5.chunk.js.map",
25
- "679.8e068bbf.chunk.js.map": "/static/js/679.8e068bbf.chunk.js.map",
26
- "58.904cc501.chunk.js.map": "/static/js/58.904cc501.chunk.js.map",
27
- "577.fb671f69.chunk.js.map": "/static/js/577.fb671f69.chunk.js.map",
28
- "545.c4864b51.chunk.js.map": "/static/js/545.c4864b51.chunk.js.map",
29
- "418.62ce0500.chunk.js.map": "/static/js/418.62ce0500.chunk.js.map",
30
- "51.d3f35d18.chunk.js.map": "/static/js/51.d3f35d18.chunk.js.map",
31
- "540.cf7b9c02.chunk.js.map": "/static/js/540.cf7b9c02.chunk.js.map",
32
- "259.93073aff.chunk.js.map": "/static/js/259.93073aff.chunk.js.map",
33
- "787.7fd88075.chunk.js.map": "/static/js/787.7fd88075.chunk.js.map",
34
- "270.3b12a4c2.chunk.js.map": "/static/js/270.3b12a4c2.chunk.js.map",
35
- "639.eef4be15.chunk.js.map": "/static/js/639.eef4be15.chunk.js.map",
36
- "466.86e52ef3.chunk.js.map": "/static/js/466.86e52ef3.chunk.js.map",
37
- "122.82f37711.chunk.js.map": "/static/js/122.82f37711.chunk.js.map",
38
- "225.797a8414.chunk.js.map": "/static/js/225.797a8414.chunk.js.map"
23
+ "main.a0a9f427.js.map": "/static/js/main.a0a9f427.js.map",
24
+ "624.874d0cc8.chunk.js.map": "/static/js/624.874d0cc8.chunk.js.map",
25
+ "176.80cca111.chunk.js.map": "/static/js/176.80cca111.chunk.js.map",
26
+ "544.d9b0e633.chunk.js.map": "/static/js/544.d9b0e633.chunk.js.map",
27
+ "240.75069f7d.chunk.js.map": "/static/js/240.75069f7d.chunk.js.map",
28
+ "832.b37e8815.chunk.js.map": "/static/js/832.b37e8815.chunk.js.map",
29
+ "856.aef3ab68.chunk.js.map": "/static/js/856.aef3ab68.chunk.js.map",
30
+ "640.7cb967bb.chunk.js.map": "/static/js/640.7cb967bb.chunk.js.map",
31
+ "528.c2a8d074.chunk.js.map": "/static/js/528.c2a8d074.chunk.js.map",
32
+ "20.8db75690.chunk.js.map": "/static/js/20.8db75690.chunk.js.map",
33
+ "592.a33c00ce.chunk.js.map": "/static/js/592.a33c00ce.chunk.js.map",
34
+ "496.37a28473.chunk.js.map": "/static/js/496.37a28473.chunk.js.map",
35
+ "188.b838dd91.chunk.js.map": "/static/js/188.b838dd91.chunk.js.map",
36
+ "212.e83e4834.chunk.js.map": "/static/js/212.e83e4834.chunk.js.map",
37
+ "960.7e5407b7.chunk.js.map": "/static/js/960.7e5407b7.chunk.js.map",
38
+ "168.7afc32df.chunk.js.map": "/static/js/168.7afc32df.chunk.js.map"
39
39
  },
40
40
  "entrypoints": [
41
41
  "static/css/main.efe592a7.css",
42
- "static/js/main.315a42be.js"
42
+ "static/js/main.a0a9f427.js"
43
43
  ]
44
44
  }
package/build/index.html CHANGED
@@ -1 +1 @@
1
- <!doctype html><html lang="en"><head><script src="/preload.js"></script><meta charset="utf-8"/><meta name="description" content="Construct Hub helps developers find open-source construct libraries for use with AWS CDK, CDK8s, CDKTF and other construct-based tools."/><meta name="viewport" content="width=device-width,initial-scale=1"/><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"><link rel="manifest" href="/manifest.json"><meta name="theme-color" content="#ffffff"><title>Construct Hub</title><script defer="defer" src="/static/js/main.315a42be.js"></script><link href="/static/css/main.efe592a7.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
1
+ <!doctype html><html lang="en"><head><script src="/preload.js"></script><meta charset="utf-8"/><meta name="description" content="Construct Hub helps developers find open-source construct libraries for use with AWS CDK, CDK8s, CDKTF and other construct-based tools."/><meta name="viewport" content="width=device-width,initial-scale=1"/><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"><link rel="manifest" href="/manifest.json"><meta name="theme-color" content="#ffffff"><title>Construct Hub</title><script defer="defer" src="/static/js/main.a0a9f427.js"></script><link href="/static/css/main.efe592a7.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunkconstruct_hub_webapp=self.webpackChunkconstruct_hub_webapp||[]).push([[168],{96704:(e,n,t)=>{t.d(n,{Gk:()=>T,kZ:()=>D,on:()=>j,qc:()=>k,sO:()=>I});var a=t(83832),r=t(88696),i=t(69060),o=t(73540),s=t(1180),c=t(59272),l=t(20240),u=t(5396);function d(){return d=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a])}return e},d.apply(this,arguments)}function f(e,n){if(null==e)return{};var t,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)t=i[a],n.indexOf(t)>=0||(r[t]=e[t]);return r}var v=["defaultIndex","onChange","index","isManual","isLazy","lazyBehavior","orientation","direction"],m=["isDisabled","isFocusable"],h=["isSelected","id","children"],b=(0,s.x)(),p=b[0],w=b[1],y=b[2],x=b[3];var g=(0,u.GY)({name:"TabsContext",errorMessage:"useTabsContext: `context` is undefined. Seems you forgot to wrap all tabs components within <Tabs />"}),_=g[0],E=g[1];function N(e,n){return e+"--tab-"+n}function S(e,n){return e+"--tabpanel-"+n}var z=["children","className"],M=["htmlProps","descendants"],D=(0,a.wd)((function(e,n){var t=(0,a.M3)("Tabs",e),o=(0,a.m_)(e),s=o.children,l=o.className,u=function(e){var n=e.defaultIndex,t=e.onChange,a=e.index,r=e.isManual,o=e.isLazy,s=e.lazyBehavior,l=void 0===s?"unmount":s,u=e.orientation,d=void 0===u?"horizontal":u,m=e.direction,h=void 0===m?"ltr":m,b=f(e,v),p=i.useState(null!=n?n:0),w=p[0],x=p[1],g=(0,c.W2)({defaultValue:null!=n?n:0,value:a,onChange:t}),_=g[0],E=g[1];i.useEffect((function(){null!=a&&x(a)}),[a]);var N=y();return{id:(0,c.IN)(e.id,"tabs"),selectedIndex:_,focusedIndex:w,setSelectedIndex:E,setFocusedIndex:x,isManual:r,isLazy:o,lazyBehavior:l,orientation:d,descendants:N,direction:h,htmlProps:b}}(f(o,z)),m=u.htmlProps,h=u.descendants,b=f(u,M),w=i.useMemo((function(){return b}),[b]),x=(0,r.qn)(m,["isFitted"]);return i.createElement(p,{value:h},i.createElement(_,{value:w},i.createElement(a.yy,{value:t},i.createElement(a.Mj.div,d({className:(0,r.cx)("chakra-tabs",l),ref:n},x,{__css:t.root}),s))))}));r.Sw&&(D.displayName="Tabs");var I=(0,a.wd)((function(e,n){var t=(0,a.yw)(),s=function(e){var n=e.isDisabled,t=e.isFocusable,a=f(e,m),i=E(),s=i.setSelectedIndex,c=i.isManual,l=i.id,v=i.setFocusedIndex,h=i.selectedIndex,b=x({disabled:n&&!t}),p=b.index,w=b.register,y=p===h,g=(0,o.s)(d({},a,{ref:(0,u.wd)(w,e.ref),isDisabled:n,isFocusable:t,onClick:(0,r._i)(e.onClick,(function(){s(p)}))}));return d({},g,{id:N(l,p),role:"tab",tabIndex:y?0:-1,type:"button","aria-selected":y,"aria-controls":S(l,p),onFocus:n?void 0:(0,r._i)(e.onFocus,(function(){v(p),!c&&(!n||!t)&&s(p)}))})}(d({},e,{ref:n})),c=d({outline:"0",display:"flex",alignItems:"center",justifyContent:"center"},t.tab);return i.createElement(a.Mj.button,d({},s,{className:(0,r.cx)("chakra-tabs__tab",e.className),__css:c}))}));r.Sw&&(I.displayName="Tab");var k=(0,a.wd)((function(e,n){var t=function(e){var n=E(),t=n.focusedIndex,a=n.orientation,o=n.direction,s=w(),c=i.useCallback((function(e){var n,i=function(){var e=s.nextEnabled(t);e&&(0,r.sz)(e.node)},c=function(){var e=s.prevEnabled(t);e&&(0,r.sz)(e.node)},l="horizontal"===a,u="vertical"===a,d=(0,r.uE)(e),f="ltr"===o?"ArrowRight":"ArrowLeft",v=((n={})["ltr"===o?"ArrowLeft":"ArrowRight"]=function(){return l&&c()},n[f]=function(){return l&&i()},n.ArrowDown=function(){return u&&i()},n.ArrowUp=function(){return u&&c()},n.Home=function(){var e=s.firstEnabled();e&&(0,r.sz)(e.node)},n.End=function(){var e=s.lastEnabled();e&&(0,r.sz)(e.node)},n)[d];v&&(e.preventDefault(),v(e))}),[s,t,a,o]);return d({},e,{role:"tablist","aria-orientation":a,onKeyDown:(0,r._i)(e.onKeyDown,c)})}(d({},e,{ref:n})),o=d({display:"flex"},(0,a.yw)().tablist);return i.createElement(a.Mj.div,d({},t,{className:(0,r.cx)("chakra-tabs__tablist",e.className),__css:o}))}));r.Sw&&(k.displayName="TabList");var T=(0,a.wd)((function(e,n){var t=function(e){var n=e.isSelected,t=e.id,a=e.children,o=f(e,h),s=E(),c=s.isLazy,l=s.lazyBehavior,u=i.useRef(!1);return n&&(u.current=!0),d({tabIndex:0},o,{children:(0,r.G0)({hasBeenSelected:u.current,isSelected:n,isLazy:c,lazyBehavior:l})?a:null,role:"tabpanel",hidden:!n,id:t})}(d({},e,{ref:n})),o=(0,a.yw)();return i.createElement(a.Mj.div,d({outline:"0"},t,{className:(0,r.cx)("chakra-tabs__tab-panel",e.className),__css:o.tabpanel}))}));r.Sw&&(T.displayName="TabPanel");var j=(0,a.wd)((function(e,n){var t=function(e){var n=E(),t=n.id,a=n.selectedIndex;return d({},e,{children:(0,u.Kk)(e.children).map((function(e,n){return i.cloneElement(e,{isSelected:n===a,id:S(t,n),"aria-labelledby":N(t,n)})}))})}(e),o=(0,a.yw)();return i.createElement(a.Mj.div,d({},t,{width:"100%",ref:n,className:(0,r.cx)("chakra-tabs__tab-panels",e.className),__css:o.tabpanels}))}));r.Sw&&(j.displayName="TabPanels");var C=(0,a.wd)((function(e,n){var t=function(){var e=E(),n=w(),t=e.selectedIndex,a=e.orientation,o="horizontal"===a,s="vertical"===a,c=i.useState((function(){return o?{left:0,width:0}:s?{top:0,height:0}:void 0})),u=c[0],f=c[1],v=i.useState(!1),m=v[0],h=v[1];return(0,l.a)((function(){if(!(0,r.Y3)(t)){var e=n.item(t);if(!(0,r.Y3)(e)){o&&f({left:e.node.offsetLeft,width:e.node.offsetWidth}),s&&f({top:e.node.offsetTop,height:e.node.offsetHeight});var a=requestAnimationFrame((function(){h(!0)}));return function(){a&&cancelAnimationFrame(a)}}}}),[t,o,s,n]),d({position:"absolute",transitionProperty:"left, right, top, bottom, height, width",transitionDuration:m?"200ms":"0ms",transitionTimingFunction:"cubic-bezier(0, 0, 0.2, 1)"},u)}(),o=d({},e.style,t),s=(0,a.yw)();return i.createElement(a.Mj.div,d({ref:n},e,{className:(0,r.cx)("chakra-tabs__tab-indicator",e.className),style:o,__css:s.indicator}))}));r.Sw&&(C.displayName="TabIndicator")},81552:(e,n,t)=>{t.d(n,{c:()=>m});var a=t(34936),r=t(66371),i=t(41248),o=t(76400);function s(e,n){if(null==e)throw new TypeError("assign requires that input parameter not be null or undefined");for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=n[t]);return e}var c=t(22132),l=6e4,u=1440,d=30*u,f=365*u;function v(e,n,t){var v,m,h;(0,o.c)(2,arguments);var b=(0,a.w)(),p=null!==(v=null!==(m=null===t||void 0===t?void 0:t.locale)&&void 0!==m?m:b.locale)&&void 0!==v?v:c.c;if(!p.formatDistance)throw new RangeError("locale must contain localize.formatDistance property");var w=function(e,n){(0,o.c)(2,arguments);var t=(0,i.c)(e),a=(0,i.c)(n),r=t.getTime()-a.getTime();return r<0?-1:r>0?1:r}(e,n);if(isNaN(w))throw new RangeError("Invalid time value");var y,x,g=s(s({},t),{addSuffix:Boolean(null===t||void 0===t?void 0:t.addSuffix),comparison:w});w>0?(y=(0,i.c)(n),x=(0,i.c)(e)):(y=(0,i.c)(e),x=(0,i.c)(n));var _,E=String(null!==(h=null===t||void 0===t?void 0:t.roundingMethod)&&void 0!==h?h:"round");if("floor"===E)_=Math.floor;else if("ceil"===E)_=Math.ceil;else{if("round"!==E)throw new RangeError("roundingMethod must be 'floor', 'ceil' or 'round'");_=Math.round}var N,S=x.getTime()-y.getTime(),z=S/l,M=(S-((0,r.c)(x)-(0,r.c)(y)))/l,D=null===t||void 0===t?void 0:t.unit;if("second"===(N=D?String(D):z<1?"second":z<60?"minute":z<u?"hour":M<d?"day":M<f?"month":"year")){var I=_(S/1e3);return p.formatDistance("xSeconds",I,g)}if("minute"===N){var k=_(z);return p.formatDistance("xMinutes",k,g)}if("hour"===N){var T=_(z/60);return p.formatDistance("xHours",T,g)}if("day"===N){var j=_(M/u);return p.formatDistance("xDays",j,g)}if("month"===N){var C=_(M/d);return 12===C&&"month"!==D?p.formatDistance("xYears",1,g):p.formatDistance("xMonths",C,g)}if("year"===N){var F=_(M/f);return p.formatDistance("xYears",F,g)}throw new RangeError("unit must be 'second', 'minute', 'hour', 'day', 'month' or 'year'")}function m(e,n){return(0,o.c)(1,arguments),v(e,Date.now(),n)}},86692:(e,n,t)=>{function a(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}t.d(n,{c:()=>a})}}]);
2
+ //# sourceMappingURL=168.7afc32df.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"static/js/225.797a8414.chunk.js","mappings":"4QAQA,SAASA,IAeP,OAdAA,EAAWC,OAAOC,QAAU,SAAUC,GACpC,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,IAAIG,EAASF,UAAUD,GAEvB,IAAK,IAAII,KAAOD,EACVN,OAAOQ,UAAUC,eAAeC,KAAKJ,EAAQC,KAC/CL,EAAOK,GAAOD,EAAOC,GAG3B,CAEA,OAAOL,CACT,EAEOH,EAASY,MAAMC,KAAMR,UAC9B,CAEA,SAASS,EAA8BP,EAAQQ,GAC7C,GAAc,MAAVR,EAAgB,MAAO,CAAC,EAC5B,IAEIC,EAAKJ,EAFLD,EAAS,CAAC,EACVa,EAAaf,OAAOgB,KAAKV,GAG7B,IAAKH,EAAI,EAAGA,EAAIY,EAAWV,OAAQF,IACjCI,EAAMQ,EAAWZ,GACbW,EAASG,QAAQV,IAAQ,IAC7BL,EAAOK,GAAOD,EAAOC,IAGvB,OAAOL,CACT,CAEA,IAAIgB,EAAc,CAAC,eAAgB,WAAY,QAAS,WAAY,SAAU,eAAgB,cAAe,aACzGC,EAAe,CAAC,aAAc,eAC9BC,EAAa,CAAC,aAAc,KAAM,YAKlCC,GAAwBC,EAAAA,EAAAA,KACxBC,EAA0BF,EAAsB,GAChDG,EAA4BH,EAAsB,GAClDI,EAAqBJ,EAAsB,GAC3CK,EAAoBL,EAAsB,GAqF9C,IAAIM,GAAiBC,EAAAA,EAAAA,IAAc,CACjCC,KAAM,cACNC,aAAc,yGAEZC,EAAeJ,EAAe,GAC9BK,EAAiBL,EAAe,GAwQpC,SAASM,EAAUC,EAAIC,GACrB,OAAOD,EAAK,SAAWC,CACzB,CAEA,SAASC,EAAeF,EAAIC,GAC1B,OAAOD,EAAK,cAAgBC,CAC9B,CAEA,IAAIE,EAAY,CAAC,WAAY,aACzBC,EAAa,CAAC,YAAa,eAO3BC,GAAoBC,EAAAA,EAAAA,KAAW,SAAUC,EAAOC,GAClD,IAAIC,GAASC,EAAAA,EAAAA,IAAoB,OAAQH,GAErCI,GAAoBC,EAAAA,EAAAA,IAAiBL,GACrCM,EAAWF,EAAkBE,SAC7BC,EAAYH,EAAkBG,UAG9BC,EA/WN,SAAiBR,GACf,IAAIS,EAAeT,EAAMS,aACrBC,EAAWV,EAAMU,SACjBhB,EAAQM,EAAMN,MACdiB,EAAWX,EAAMW,SACjBC,EAASZ,EAAMY,OACfC,EAAsBb,EAAMc,aAC5BA,OAAuC,IAAxBD,EAAiC,UAAYA,EAC5DE,EAAqBf,EAAMgB,YAC3BA,OAAqC,IAAvBD,EAAgC,aAAeA,EAC7DE,EAAmBjB,EAAMkB,UACzBA,OAAiC,IAArBD,EAA8B,MAAQA,EAClDE,EAAY/C,EAA8B4B,EAAOvB,GAejD2C,EAAkBC,EAAAA,SAA+B,MAAhBZ,EAAuBA,EAAe,GACvEa,EAAeF,EAAgB,GAC/BG,EAAkBH,EAAgB,GAElCI,GAAwBC,EAAAA,EAAAA,IAAqB,CAC/CC,aAA8B,MAAhBjB,EAAuBA,EAAe,EACpDkB,MAAOjC,EACPgB,SAAUA,IAERkB,EAAgBJ,EAAsB,GACtCK,EAAmBL,EAAsB,GAM7CH,EAAAA,WAAgB,WACD,MAAT3B,GACF6B,EAAgB7B,EAEpB,GAAG,CAACA,IAKJ,IAAIoC,EAAc9C,IAMlB,MAAO,CACLS,IAFOsC,EAAAA,EAAAA,IAAM/B,EAAMP,GAAI,QAGvBmC,cAAeA,EACfN,aAAcA,EACdO,iBAAkBA,EAClBN,gBAAiBA,EACjBZ,SAAUA,EACVC,OAAQA,EACRE,aAAcA,EACdE,YAAaA,EACbc,YAAaA,EACbZ,UAAWA,EACXC,UAAWA,EAEf,CAuSiBa,CAFJ5D,EAA8BgC,EAAmBR,IAGxDuB,EAAYX,EAASW,UACrBW,EAActB,EAASsB,YACvBG,EAAM7D,EAA8BoC,EAAUX,GAE9CqC,EAAUb,EAAAA,SAAc,WAC1B,OAAOY,CACT,GAAG,CAACA,IACAE,GAAYC,EAAAA,EAAAA,IAAKjB,EAAW,CAAC,aACjC,OAAoBE,EAAAA,cAAoBvC,EAAyB,CAC/D6C,MAAOG,GACOT,EAAAA,cAAoB/B,EAAc,CAChDqC,MAAOO,GACOb,EAAAA,cAAoBgB,EAAAA,GAAgB,CAClDV,MAAOzB,GACOmB,EAAAA,cAAoBiB,EAAAA,GAAOC,IAAKjF,EAAS,CACvDiD,WAAWiC,EAAAA,EAAAA,IAAG,cAAejC,GAC7BN,IAAKA,GACJkC,EAAW,CACZM,MAAOvC,EAAOwC,OACZpC,KACN,IAEIqC,EAAAA,KACF7C,EAAK8C,YAAc,QAOrB,IAAIC,GAAmB9C,EAAAA,EAAAA,KAAW,SAAUC,EAAOC,GACjD,IAAIC,GAAS4C,EAAAA,EAAAA,MACTC,EAzPN,SAAgB/C,GACd,IAAIgD,EAAahD,EAAMgD,WACnBC,EAAcjD,EAAMiD,YACpB9B,EAAY/C,EAA8B4B,EAAOtB,GAEjDwE,EAAmB3D,IACnBsC,EAAmBqB,EAAiBrB,iBACpClB,EAAWuC,EAAiBvC,SAC5BlB,EAAKyD,EAAiBzD,GACtB8B,EAAkB2B,EAAiB3B,gBACnCK,EAAgBsB,EAAiBtB,cAEjCuB,EAAqBlE,EAAkB,CACzCmE,SAAUJ,IAAeC,IAEvBvD,EAAQyD,EAAmBzD,MAC3B2D,EAAWF,EAAmBE,SAE9BC,EAAa5D,IAAUkC,EAgBvB2B,GAAiBC,EAAAA,EAAAA,GAAalG,EAAS,CAAC,EAAG6D,EAAW,CACxDlB,KAAKwD,EAAAA,EAAAA,IAAUJ,EAAUrD,EAAMC,KAC/B+C,WAAYA,EACZC,YAAaA,EACbS,SAASC,EAAAA,EAAAA,IAAgB3D,EAAM0D,SAlBnB,WACZ7B,EAAiBnC,EACnB,OAmBA,OAAOpC,EAAS,CAAC,EAAGiG,EAAgB,CAClC9D,GAAID,EAAUC,EAAIC,GAClBkE,KAAM,MACNC,SAAUP,EAAa,GAAK,EAC5BQ,KALS,SAMT,gBAAiBR,EACjB,gBAAiB3D,EAAeF,EAAIC,GACpCqE,QAASf,OAAagB,GAAYL,EAAAA,EAAAA,IAAgB3D,EAAM+D,SAxB5C,WACZxC,EAAgB7B,IAEIiB,KADSqC,IAAcC,IAIzCpB,EAAiBnC,EAErB,KAkBF,CAuMiBuE,CAAO3G,EAAS,CAAC,EAAG0C,EAAO,CACxCC,IAAKA,KAGHiE,EAAY5G,EAAS,CACvB6G,QAAS,IACTC,QAAS,OACTC,WAAY,SACZC,eAAgB,UACfpE,EAAOqE,KAEV,OAAoBlD,EAAAA,cAAoBiB,EAAAA,GAAOkC,OAAQlH,EAAS,CAAC,EAAGyF,EAAU,CAC5ExC,WAAWiC,EAAAA,EAAAA,IAAG,mBAAoBxC,EAAMO,WACxCkC,MAAOyB,IAEX,IAEIvB,EAAAA,KACFE,EAAID,YAAc,OAOpB,IAAI6B,GAAuB1E,EAAAA,EAAAA,KAAW,SAAUC,EAAOC,GACrD,IAAIyE,EAnVN,SAAoB1E,GAClB,IAAI2E,EAAkBpF,IAClB+B,EAAeqD,EAAgBrD,aAC/BN,EAAc2D,EAAgB3D,YAC9BE,EAAYyD,EAAgBzD,UAE5BY,EAAc/C,IACd6F,EAAYvD,EAAAA,aAAkB,SAAUwD,GAC1C,IAAIC,EAEAC,EAAU,WACZ,IAAIC,EAAOlD,EAAYmD,YAAY3D,GAC/B0D,IAAME,EAAAA,EAAAA,IAAMF,EAAKG,KACvB,EAEIC,EAAU,WACZ,IAAIC,EAAOvD,EAAYwD,YAAYhE,GAC/B+D,IAAMH,EAAAA,EAAAA,IAAMG,EAAKF,KACvB,EAYII,EAA+B,eAAhBvE,EACfwE,EAA6B,aAAhBxE,EACbyE,GAAWC,EAAAA,EAAAA,IAAkBb,GAE7Bc,EAAyB,QAAdzE,EAAsB,aAAe,YAUhD0E,IATUd,EAAU,CAAC,GAFM,QAAd5D,EAAsB,YAAc,cAEH,WAChD,OAAOqE,GAAgBH,GACzB,EAAGN,EAAQa,GAAY,WACrB,OAAOJ,GAAgBR,GACzB,EAAGD,EAAQe,UAAY,WACrB,OAAOL,GAAcT,GACvB,EAAGD,EAAQgB,QAAU,WACnB,OAAON,GAAcJ,GACvB,EAAGN,EAAQiB,KAvBI,WACb,IAAIC,EAAQlE,EAAYmE,eACpBD,IAAOd,EAAAA,EAAAA,IAAMc,EAAMb,KACzB,EAoB4BL,EAAQoB,IAlBtB,WACZ,IAAIC,EAAOrE,EAAYsE,cACnBD,IAAMjB,EAAAA,EAAAA,IAAMiB,EAAKhB,KACvB,EAemDL,GAC/BW,GAEhBG,IACFf,EAAMwB,iBACNT,EAAOf,GAEX,GAAG,CAAC/C,EAAaR,EAAcN,EAAaE,IAC5C,OAAO5D,EAAS,CAAC,EAAG0C,EAAO,CACzB4D,KAAM,UACN,mBAAoB5C,EACpB4D,WAAWjB,EAAAA,EAAAA,IAAgB3D,EAAM4E,UAAWA,IAEhD,CA2RqB0B,CAAWhJ,EAAS,CAAC,EAAG0C,EAAO,CAChDC,IAAKA,KAIHsG,EAAgBjJ,EAAS,CAC3B8G,QAAS,SAHEtB,EAAAA,EAAAA,MAIH0D,SAEV,OAAoBnF,EAAAA,cAAoBiB,EAAAA,GAAOC,IAAKjF,EAAS,CAAC,EAAGoH,EAAc,CAC7EnE,WAAWiC,EAAAA,EAAAA,IAAG,uBAAwBxC,EAAMO,WAC5CkC,MAAO8D,IAEX,IAEI5D,EAAAA,KACF8B,EAAQ7B,YAAc,WAOxB,IAAI6D,GAAwB1G,EAAAA,EAAAA,KAAW,SAAUC,EAAOC,GACtD,IAAIyG,EAtNN,SAAqB1G,GACnB,IAAIsD,EAAatD,EAAMsD,WACnB7D,EAAKO,EAAMP,GACXa,EAAWN,EAAMM,SACjBa,EAAY/C,EAA8B4B,EAAOrB,GAEjDgI,EAAmBpH,IACnBqB,EAAS+F,EAAiB/F,OAC1BE,EAAe6F,EAAiB7F,aAEhC8F,EAAkBvF,EAAAA,QAAa,GAYnC,OAVIiC,IACFsD,EAAgBC,SAAU,GASrBvJ,EAAS,CAEduG,SAAU,GACT1C,EAAW,CACZb,UAVyBwG,EAAAA,EAAAA,IAAsB,CAC/CF,gBAAiBA,EAAgBC,QACjCvD,WAAYA,EACZ1C,OAAQA,EACRE,aAAcA,IAMmBR,EAAW,KAC5CsD,KAAM,WACNmD,QAASzD,EACT7D,GAAIA,GAER,CAuLmBuH,CAAY1J,EAAS,CAAC,EAAG0C,EAAO,CAC/CC,IAAKA,KAEHC,GAAS4C,EAAAA,EAAAA,MACb,OAAoBzB,EAAAA,cAAoBiB,EAAAA,GAAOC,IAAKjF,EAAS,CAC3D6G,QAAS,KACRuC,EAAY,CACbnG,WAAWiC,EAAAA,EAAAA,IAAG,yBAA0BxC,EAAMO,WAC9CkC,MAAOvC,EAAO+G,WAElB,IAEItE,EAAAA,KACF8D,EAAS7D,YAAc,YAWzB,IAAIsE,GAAyBnH,EAAAA,EAAAA,KAAW,SAAUC,EAAOC,GACvD,IAAIkH,EAvQN,SAAsBnH,GACpB,IAAIkC,EAAU3C,IACVE,EAAKyC,EAAQzC,GACbmC,EAAgBM,EAAQN,cAU5B,OAAOtE,EAAS,CAAC,EAAG0C,EAAO,CACzBM,UAVkB8G,EAAAA,EAAAA,IAAiBpH,EAAMM,UACd+G,KAAI,SAAUC,EAAO5H,GAChD,OAAoB2B,EAAAA,aAAmBiG,EAAO,CAC5ChE,WAAY5D,IAAUkC,EACtBnC,GAAIE,EAAeF,EAAIC,GAEvB,kBAAmBF,EAAUC,EAAIC,IAErC,KAIF,CAuPoB6H,CAAavH,GAC3BE,GAAS4C,EAAAA,EAAAA,MACb,OAAoBzB,EAAAA,cAAoBiB,EAAAA,GAAOC,IAAKjF,EAAS,CAAC,EAAG6J,EAAa,CAC5EK,MAAO,OACPvH,IAAKA,EACLM,WAAWiC,EAAAA,EAAAA,IAAG,0BAA2BxC,EAAMO,WAC/CkC,MAAOvC,EAAOuH,YAElB,IAEI9E,EAAAA,KACFuE,EAAUtE,YAAc,aAS1B,IAAI8E,GAA4B3H,EAAAA,EAAAA,KAAW,SAAUC,EAAOC,GAC1D,IAAI0H,EA3NN,WACE,IAAIzF,EAAU3C,IACVuC,EAAc/C,IACd6C,EAAgBM,EAAQN,cACxBZ,EAAckB,EAAQlB,YACtBuE,EAA+B,eAAhBvE,EACfwE,EAA6B,aAAhBxE,EAEb4G,EAAmBvG,EAAAA,UAAe,WACpC,OAAIkE,EAAqB,CACvBsC,KAAM,EACNL,MAAO,GAELhC,EAAmB,CACrBsC,IAAK,EACLC,OAAQ,QAFV,CAKF,IACIC,EAAOJ,EAAiB,GACxBK,EAAUL,EAAiB,GAE3BM,EAAmB7G,EAAAA,UAAe,GAClC8G,EAAcD,EAAiB,GAC/BE,EAAiBF,EAAiB,GAkCtC,OA/BAG,EAAAA,EAAAA,IAAoB,WAClB,KAAIC,EAAAA,EAAAA,IAAY1G,GAAhB,CACA,IAAI2C,EAAMzC,EAAYyG,KAAK3G,GAC3B,KAAI0G,EAAAA,EAAAA,IAAY/D,GAAhB,CAEIgB,GACF0C,EAAQ,CACNJ,KAAMtD,EAAIY,KAAKqD,WACfhB,MAAOjD,EAAIY,KAAKsD,cAKhBjD,GACFyC,EAAQ,CACNH,IAAKvD,EAAIY,KAAKuD,UACdX,OAAQxD,EAAIY,KAAKwD,eAMrB,IAAIlJ,EAAKmJ,uBAAsB,WAC7BR,GAAe,EACjB,IACA,OAAO,WACD3I,GACFoJ,qBAAqBpJ,EAEzB,CA1BsC,CAFU,CA6BlD,GAAG,CAACmC,EAAe2D,EAAcC,EAAY1D,IACtCxE,EAAS,CACdwL,SAAU,WACVC,mBAAoB,0CACpBC,mBAAoBb,EAAc,QAAU,MAC5Cc,yBAA0B,8BACzBjB,EACL,CA2JuBkB,GAEjBC,EAAQ7L,EAAS,CAAC,EAAG0C,EAAMmJ,MAAOxB,GAElCzH,GAAS4C,EAAAA,EAAAA,MACb,OAAoBzB,EAAAA,cAAoBiB,EAAAA,GAAOC,IAAKjF,EAAS,CAC3D2C,IAAKA,GACJD,EAAO,CACRO,WAAWiC,EAAAA,EAAAA,IAAG,6BAA8BxC,EAAMO,WAClD4I,MAAOA,EACP1G,MAAOvC,EAAOkJ,YAElB,IAEIzG,EAAAA,KACF+E,EAAa9E,YAAc,e,iFC9jBd,SAASpF,EAAOC,EAAQ4L,GACrC,GAAc,MAAV5L,EACF,MAAM,IAAI6L,UAAU,iEAEtB,IAAK,IAAIC,KAAYF,EACf9L,OAAOQ,UAAUC,eAAeC,KAAKoL,EAAQE,KAE/C9L,EAAO8L,GAAYF,EAAOE,IAG9B,OAAO9L,CACT,C,eCHI+L,EAAyB,IACzBC,EAAiB,KACjBC,EAAoC,GAAjBD,EACnBE,EAAmC,IAAjBF,EAoFP,SAASG,EAAqBC,EAAWC,EAAeC,GACrE,IAAIC,EAAMC,EAAiBC,GAC3BC,EAAAA,EAAAA,GAAa,EAAGxM,WAChB,IAAIyM,GAAiBC,EAAAA,EAAAA,KACjBC,EAA4L,QAAlLN,EAAgG,QAAxFC,EAA8B,OAAZF,QAAgC,IAAZA,OAAqB,EAASA,EAAQO,cAAwC,IAApBL,EAA6BA,EAAkBG,EAAeE,cAA6B,IAATN,EAAkBA,EAAOO,EAAAA,EACjO,IAAKD,EAAOE,eACV,MAAM,IAAIC,WAAW,wDAEvB,IAAIC,ECrES,SAAoBC,EAAeC,IAChDT,EAAAA,EAAAA,GAAa,EAAGxM,WAChB,IAAIkN,GAAWC,EAAAA,EAAAA,GAAOH,GAClBI,GAAYD,EAAAA,EAAAA,GAAOF,GACnBI,EAAOH,EAASI,UAAYF,EAAUE,UAC1C,OAAID,EAAO,GACD,EACCA,EAAO,EACT,EAGAA,CAEX,CDwDmBE,CAAWrB,EAAWC,GACvC,GAAIqB,MAAMT,GACR,MAAM,IAAID,WAAW,sBAEvB,IAIII,EACAE,EALAK,EAAkB5N,EEzGfA,EAAO,CAAC,EFyG0BuM,GAAU,CACjDsB,UAAWC,QAAoB,OAAZvB,QAAgC,IAAZA,OAAqB,EAASA,EAAQsB,WAC7EX,WAAYA,IAIVA,EAAa,GACfG,GAAWC,EAAAA,EAAAA,GAAOhB,GAClBiB,GAAYD,EAAAA,EAAAA,GAAOjB,KAEnBgB,GAAWC,EAAAA,EAAAA,GAAOjB,GAClBkB,GAAYD,EAAAA,EAAAA,GAAOhB,IAErB,IACIyB,EADAC,EAAiBC,OAA8G,QAAtGvB,EAAoC,OAAZH,QAAgC,IAAZA,OAAqB,EAASA,EAAQyB,sBAAsD,IAA1BtB,EAAmCA,EAAwB,SAEtM,GAAuB,UAAnBsB,EACFD,EAAmBG,KAAKC,WACnB,GAAuB,SAAnBH,EACTD,EAAmBG,KAAKE,SACnB,IAAuB,UAAnBJ,EAGT,MAAM,IAAIf,WAAW,qDAFrBc,EAAmBG,KAAKG,KAG1B,CACA,IAQIC,EARAC,EAAehB,EAAUE,UAAYJ,EAASI,UAC9Ce,EAAUD,EAAevC,EAKzByC,GAAwBF,IAJPG,EAAAA,EAAAA,GAAgCnB,IAAamB,EAAAA,EAAAA,GAAgCrB,KAIrCrB,EACzD2C,EAA0B,OAAZpC,QAAgC,IAAZA,OAAqB,EAASA,EAAQ+B,KAqB5E,GAAa,YAJXA,EAfGK,EAeIV,OAAOU,GAdVH,EAAU,EACL,SACEA,EAAU,GACZ,SACEA,EAAUvC,EACZ,OACEwC,EAAuBvC,EACzB,MACEuC,EAAuBtC,EACzB,QAEA,QAOY,CACrB,IAAIyC,EAAUb,EAAiBQ,EAAe,KAC9C,OAAOzB,EAAOE,eAAe,WAAY4B,EAAShB,EAGpD,CAAO,GAAa,WAATU,EAAmB,CAC5B,IAAIO,EAAiBd,EAAiBS,GACtC,OAAO1B,EAAOE,eAAe,WAAY6B,EAAgBjB,EAG3D,CAAO,GAAa,SAATU,EAAiB,CAC1B,IAAIQ,EAAQf,EAAiBS,EAAU,IACvC,OAAO1B,EAAOE,eAAe,SAAU8B,EAAOlB,EAGhD,CAAO,GAAa,QAATU,EAAgB,CACzB,IAAIS,EAAOhB,EAAiBU,EAAuBxC,GACnD,OAAOa,EAAOE,eAAe,QAAS+B,EAAMnB,EAG9C,CAAO,GAAa,UAATU,EAAkB,CAC3B,IAAIU,EAASjB,EAAiBU,EAAuBvC,GACrD,OAAkB,KAAX8C,GAAiC,UAAhBL,EAA0B7B,EAAOE,eAAe,SAAU,EAAGY,GAAmBd,EAAOE,eAAe,UAAWgC,EAAQpB,EAGnJ,CAAO,GAAa,SAATU,EAAiB,CAC1B,IAAIW,EAAQlB,EAAiBU,EAAuBtC,GACpD,OAAOW,EAAOE,eAAe,SAAUiC,EAAOrB,EAChD,CACA,MAAM,IAAIX,WAAW,oEACvB,CGjHe,SAASiC,EAA0B7C,EAAWE,GAE3D,OADAI,EAAAA,EAAAA,GAAa,EAAGxM,WACTiM,EAAqBC,EAAW8C,KAAKC,MAAO7C,EACrD,C,kBC/Ee,SAAS8C,EAAuBC,EAASC,GAItD,OAHKA,IACHA,EAAMD,EAAQE,MAAM,IAEfzP,OAAO0P,OAAO1P,OAAO2P,iBAAiBJ,EAAS,CACpDC,IAAK,CACHpL,MAAOpE,OAAO0P,OAAOF,MAG3B,C","sources":["../node_modules/@chakra-ui/tabs/dist/chakra-ui-tabs.esm.js","../node_modules/date-fns/esm/_lib/assign/index.js","../node_modules/date-fns/esm/formatDistanceStrict/index.js","../node_modules/date-fns/esm/compareAsc/index.js","../node_modules/date-fns/esm/_lib/cloneObject/index.js","../node_modules/date-fns/esm/formatDistanceToNowStrict/index.js","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js"],"sourcesContent":["import { forwardRef, useMultiStyleConfig, omitThemingProps, StylesProvider, chakra, useStyles } from '@chakra-ui/system';\nimport { normalizeEventKey, callAllHandlers, determineLazyBehavior, isUndefined, focus, omit, cx, __DEV__ } from '@chakra-ui/utils';\nimport * as React from 'react';\nimport { useClickable } from '@chakra-ui/clickable';\nimport { createDescendantContext } from '@chakra-ui/descendant';\nimport { useControllableState, useId, useSafeLayoutEffect } from '@chakra-ui/hooks';\nimport { createContext, mergeRefs, getValidChildren } from '@chakra-ui/react-utils';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nvar _excluded$1 = [\"defaultIndex\", \"onChange\", \"index\", \"isManual\", \"isLazy\", \"lazyBehavior\", \"orientation\", \"direction\"],\n _excluded2$1 = [\"isDisabled\", \"isFocusable\"],\n _excluded3 = [\"isSelected\", \"id\", \"children\"];\n/* -------------------------------------------------------------------------------------------------\n * Create context to track descendants and their indices\n * -----------------------------------------------------------------------------------------------*/\n\nvar _createDescendantCont = createDescendantContext(),\n TabsDescendantsProvider = _createDescendantCont[0],\n useTabsDescendantsContext = _createDescendantCont[1],\n useTabsDescendants = _createDescendantCont[2],\n useTabsDescendant = _createDescendantCont[3];\n\n/**\n * Tabs hook that provides all the states, and accessibility\n * helpers to keep all things working properly.\n *\n * Its returned object will be passed unto a Context Provider\n * so all child components can read from it.\n * There is no document link yet\n * @see Docs https://chakra-ui.com/docs/components/useTabs\n */\nfunction useTabs(props) {\n var defaultIndex = props.defaultIndex,\n onChange = props.onChange,\n index = props.index,\n isManual = props.isManual,\n isLazy = props.isLazy,\n _props$lazyBehavior = props.lazyBehavior,\n lazyBehavior = _props$lazyBehavior === void 0 ? \"unmount\" : _props$lazyBehavior,\n _props$orientation = props.orientation,\n orientation = _props$orientation === void 0 ? \"horizontal\" : _props$orientation,\n _props$direction = props.direction,\n direction = _props$direction === void 0 ? \"ltr\" : _props$direction,\n htmlProps = _objectWithoutPropertiesLoose(props, _excluded$1);\n /**\n * We use this to keep track of the index of the focused tab.\n *\n * Tabs can be automatically activated, this means selection follows focus.\n * When we navigate with the arrow keys, we move focus and selection to next/prev tab\n *\n * Tabs can also be manually activated, this means selection does not follow focus.\n * When we navigate with the arrow keys, we only move focus NOT selection. The user\n * will need not manually activate the tab using `Enter` or `Space`.\n *\n * This is why we need to keep track of the `focusedIndex` and `selectedIndex`\n */\n\n\n var _React$useState = React.useState(defaultIndex != null ? defaultIndex : 0),\n focusedIndex = _React$useState[0],\n setFocusedIndex = _React$useState[1];\n\n var _useControllableState = useControllableState({\n defaultValue: defaultIndex != null ? defaultIndex : 0,\n value: index,\n onChange: onChange\n }),\n selectedIndex = _useControllableState[0],\n setSelectedIndex = _useControllableState[1];\n /**\n * Sync focused `index` with controlled `selectedIndex` (which is the `props.index`)\n */\n\n\n React.useEffect(function () {\n if (index != null) {\n setFocusedIndex(index);\n }\n }, [index]);\n /**\n * Think of `useDescendants` as a register for the tab nodes.\n */\n\n var descendants = useTabsDescendants();\n /**\n * Generate a unique id or use user-provided id for the tabs widget\n */\n\n var id = useId(props.id, \"tabs\");\n return {\n id: id,\n selectedIndex: selectedIndex,\n focusedIndex: focusedIndex,\n setSelectedIndex: setSelectedIndex,\n setFocusedIndex: setFocusedIndex,\n isManual: isManual,\n isLazy: isLazy,\n lazyBehavior: lazyBehavior,\n orientation: orientation,\n descendants: descendants,\n direction: direction,\n htmlProps: htmlProps\n };\n}\n\nvar _createContext = createContext({\n name: \"TabsContext\",\n errorMessage: \"useTabsContext: `context` is undefined. Seems you forgot to wrap all tabs components within <Tabs />\"\n}),\n TabsProvider = _createContext[0],\n useTabsContext = _createContext[1];\n\n/**\n * Tabs hook to manage multiple tab buttons,\n * and ensures only one tab is selected per time.\n *\n * @param props props object for the tablist\n */\nfunction useTabList(props) {\n var _useTabsContext = useTabsContext(),\n focusedIndex = _useTabsContext.focusedIndex,\n orientation = _useTabsContext.orientation,\n direction = _useTabsContext.direction;\n\n var descendants = useTabsDescendantsContext();\n var onKeyDown = React.useCallback(function (event) {\n var _keyMap;\n\n var nextTab = function nextTab() {\n var next = descendants.nextEnabled(focusedIndex);\n if (next) focus(next.node);\n };\n\n var prevTab = function prevTab() {\n var prev = descendants.prevEnabled(focusedIndex);\n if (prev) focus(prev.node);\n };\n\n var firstTab = function firstTab() {\n var first = descendants.firstEnabled();\n if (first) focus(first.node);\n };\n\n var lastTab = function lastTab() {\n var last = descendants.lastEnabled();\n if (last) focus(last.node);\n };\n\n var isHorizontal = orientation === \"horizontal\";\n var isVertical = orientation === \"vertical\";\n var eventKey = normalizeEventKey(event);\n var ArrowStart = direction === \"ltr\" ? \"ArrowLeft\" : \"ArrowRight\";\n var ArrowEnd = direction === \"ltr\" ? \"ArrowRight\" : \"ArrowLeft\";\n var keyMap = (_keyMap = {}, _keyMap[ArrowStart] = function () {\n return isHorizontal && prevTab();\n }, _keyMap[ArrowEnd] = function () {\n return isHorizontal && nextTab();\n }, _keyMap.ArrowDown = function ArrowDown() {\n return isVertical && nextTab();\n }, _keyMap.ArrowUp = function ArrowUp() {\n return isVertical && prevTab();\n }, _keyMap.Home = firstTab, _keyMap.End = lastTab, _keyMap);\n var action = keyMap[eventKey];\n\n if (action) {\n event.preventDefault();\n action(event);\n }\n }, [descendants, focusedIndex, orientation, direction]);\n return _extends({}, props, {\n role: \"tablist\",\n \"aria-orientation\": orientation,\n onKeyDown: callAllHandlers(props.onKeyDown, onKeyDown)\n });\n}\n\n/**\n * Tabs hook to manage each tab button.\n *\n * A tab can be disabled and focusable, or both,\n * hence the use of `useClickable` to handle this scenario\n */\nfunction useTab(props) {\n var isDisabled = props.isDisabled,\n isFocusable = props.isFocusable,\n htmlProps = _objectWithoutPropertiesLoose(props, _excluded2$1);\n\n var _useTabsContext2 = useTabsContext(),\n setSelectedIndex = _useTabsContext2.setSelectedIndex,\n isManual = _useTabsContext2.isManual,\n id = _useTabsContext2.id,\n setFocusedIndex = _useTabsContext2.setFocusedIndex,\n selectedIndex = _useTabsContext2.selectedIndex;\n\n var _useTabsDescendant = useTabsDescendant({\n disabled: isDisabled && !isFocusable\n }),\n index = _useTabsDescendant.index,\n register = _useTabsDescendant.register;\n\n var isSelected = index === selectedIndex;\n\n var onClick = function onClick() {\n setSelectedIndex(index);\n };\n\n var onFocus = function onFocus() {\n setFocusedIndex(index);\n var isDisabledButFocusable = isDisabled && isFocusable;\n var shouldSelect = !isManual && !isDisabledButFocusable;\n\n if (shouldSelect) {\n setSelectedIndex(index);\n }\n };\n\n var clickableProps = useClickable(_extends({}, htmlProps, {\n ref: mergeRefs(register, props.ref),\n isDisabled: isDisabled,\n isFocusable: isFocusable,\n onClick: callAllHandlers(props.onClick, onClick)\n }));\n var type = \"button\";\n return _extends({}, clickableProps, {\n id: makeTabId(id, index),\n role: \"tab\",\n tabIndex: isSelected ? 0 : -1,\n type: type,\n \"aria-selected\": isSelected,\n \"aria-controls\": makeTabPanelId(id, index),\n onFocus: isDisabled ? undefined : callAllHandlers(props.onFocus, onFocus)\n });\n}\n\n/**\n * Tabs hook for managing the visibility of multiple tab panels.\n *\n * Since only one panel can be show at a time, we use `cloneElement`\n * to inject `selected` panel to each TabPanel.\n *\n * It returns a cloned version of its children with\n * all functionality included.\n */\nfunction useTabPanels(props) {\n var context = useTabsContext();\n var id = context.id,\n selectedIndex = context.selectedIndex;\n var validChildren = getValidChildren(props.children);\n var children = validChildren.map(function (child, index) {\n return /*#__PURE__*/React.cloneElement(child, {\n isSelected: index === selectedIndex,\n id: makeTabPanelId(id, index),\n // Refers to the associated tab element, and also provides an accessible name to the tab panel.\n \"aria-labelledby\": makeTabId(id, index)\n });\n });\n return _extends({}, props, {\n children: children\n });\n}\n/**\n * Tabs hook for managing the visible/hidden states\n * of the tab panel.\n *\n * @param props props object for the tab panel\n */\n\nfunction useTabPanel(props) {\n var isSelected = props.isSelected,\n id = props.id,\n children = props.children,\n htmlProps = _objectWithoutPropertiesLoose(props, _excluded3);\n\n var _useTabsContext3 = useTabsContext(),\n isLazy = _useTabsContext3.isLazy,\n lazyBehavior = _useTabsContext3.lazyBehavior;\n\n var hasBeenSelected = React.useRef(false);\n\n if (isSelected) {\n hasBeenSelected.current = true;\n }\n\n var shouldRenderChildren = determineLazyBehavior({\n hasBeenSelected: hasBeenSelected.current,\n isSelected: isSelected,\n isLazy: isLazy,\n lazyBehavior: lazyBehavior\n });\n return _extends({\n // Puts the tabpanel in the page `Tab` sequence.\n tabIndex: 0\n }, htmlProps, {\n children: shouldRenderChildren ? children : null,\n role: \"tabpanel\",\n hidden: !isSelected,\n id: id\n });\n}\n/**\n * Tabs hook to show an animated indicators that\n * follows the active tab.\n *\n * The way we do it is by measuring the DOM Rect (or dimensions)\n * of the active tab, and return that as CSS style for\n * the indicator.\n */\n\nfunction useTabIndicator() {\n var context = useTabsContext();\n var descendants = useTabsDescendantsContext();\n var selectedIndex = context.selectedIndex,\n orientation = context.orientation;\n var isHorizontal = orientation === \"horizontal\";\n var isVertical = orientation === \"vertical\"; // Get the clientRect of the selected tab\n\n var _React$useState2 = React.useState(function () {\n if (isHorizontal) return {\n left: 0,\n width: 0\n };\n if (isVertical) return {\n top: 0,\n height: 0\n };\n return undefined;\n }),\n rect = _React$useState2[0],\n setRect = _React$useState2[1];\n\n var _React$useState3 = React.useState(false),\n hasMeasured = _React$useState3[0],\n setHasMeasured = _React$useState3[1]; // Update the selected tab rect when the selectedIndex changes\n\n\n useSafeLayoutEffect(function () {\n if (isUndefined(selectedIndex)) return undefined;\n var tab = descendants.item(selectedIndex);\n if (isUndefined(tab)) return undefined; // Horizontal Tab: Calculate width and left distance\n\n if (isHorizontal) {\n setRect({\n left: tab.node.offsetLeft,\n width: tab.node.offsetWidth\n });\n } // Vertical Tab: Calculate height and top distance\n\n\n if (isVertical) {\n setRect({\n top: tab.node.offsetTop,\n height: tab.node.offsetHeight\n });\n } // Prevent unwanted transition from 0 to measured rect\n // by setting the measured state in the next tick\n\n\n var id = requestAnimationFrame(function () {\n setHasMeasured(true);\n });\n return function () {\n if (id) {\n cancelAnimationFrame(id);\n }\n };\n }, [selectedIndex, isHorizontal, isVertical, descendants]);\n return _extends({\n position: \"absolute\",\n transitionProperty: \"left, right, top, bottom, height, width\",\n transitionDuration: hasMeasured ? \"200ms\" : \"0ms\",\n transitionTimingFunction: \"cubic-bezier(0, 0, 0.2, 1)\"\n }, rect);\n}\n\nfunction makeTabId(id, index) {\n return id + \"--tab-\" + index;\n}\n\nfunction makeTabPanelId(id, index) {\n return id + \"--tabpanel-\" + index;\n}\n\nvar _excluded = [\"children\", \"className\"],\n _excluded2 = [\"htmlProps\", \"descendants\"];\n\n/**\n * Tabs\n *\n * Provides context and logic for all tabs components.\n */\nvar Tabs = /*#__PURE__*/forwardRef(function (props, ref) {\n var styles = useMultiStyleConfig(\"Tabs\", props);\n\n var _omitThemingProps = omitThemingProps(props),\n children = _omitThemingProps.children,\n className = _omitThemingProps.className,\n rest = _objectWithoutPropertiesLoose(_omitThemingProps, _excluded);\n\n var _useTabs = useTabs(rest),\n htmlProps = _useTabs.htmlProps,\n descendants = _useTabs.descendants,\n ctx = _objectWithoutPropertiesLoose(_useTabs, _excluded2);\n\n var context = React.useMemo(function () {\n return ctx;\n }, [ctx]);\n var rootProps = omit(htmlProps, [\"isFitted\"]);\n return /*#__PURE__*/React.createElement(TabsDescendantsProvider, {\n value: descendants\n }, /*#__PURE__*/React.createElement(TabsProvider, {\n value: context\n }, /*#__PURE__*/React.createElement(StylesProvider, {\n value: styles\n }, /*#__PURE__*/React.createElement(chakra.div, _extends({\n className: cx(\"chakra-tabs\", className),\n ref: ref\n }, rootProps, {\n __css: styles.root\n }), children))));\n});\n\nif (__DEV__) {\n Tabs.displayName = \"Tabs\";\n}\n\n/**\n * Tab button used to activate a specific tab panel. It renders a `button`,\n * and is responsible for automatic and manual selection modes.\n */\nvar Tab = /*#__PURE__*/forwardRef(function (props, ref) {\n var styles = useStyles();\n var tabProps = useTab(_extends({}, props, {\n ref: ref\n }));\n\n var tabStyles = _extends({\n outline: \"0\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\"\n }, styles.tab);\n\n return /*#__PURE__*/React.createElement(chakra.button, _extends({}, tabProps, {\n className: cx(\"chakra-tabs__tab\", props.className),\n __css: tabStyles\n }));\n});\n\nif (__DEV__) {\n Tab.displayName = \"Tab\";\n}\n\n/**\n * TabList is used to manage a list of tab buttons. It renders a `div` by default,\n * and is responsible the keyboard interaction between tabs.\n */\nvar TabList = /*#__PURE__*/forwardRef(function (props, ref) {\n var tablistProps = useTabList(_extends({}, props, {\n ref: ref\n }));\n var styles = useStyles();\n\n var tablistStyles = _extends({\n display: \"flex\"\n }, styles.tablist);\n\n return /*#__PURE__*/React.createElement(chakra.div, _extends({}, tablistProps, {\n className: cx(\"chakra-tabs__tablist\", props.className),\n __css: tablistStyles\n }));\n});\n\nif (__DEV__) {\n TabList.displayName = \"TabList\";\n}\n\n/**\n * TabPanel\n * Used to render the content for a specific tab.\n */\nvar TabPanel = /*#__PURE__*/forwardRef(function (props, ref) {\n var panelProps = useTabPanel(_extends({}, props, {\n ref: ref\n }));\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.div, _extends({\n outline: \"0\"\n }, panelProps, {\n className: cx(\"chakra-tabs__tab-panel\", props.className),\n __css: styles.tabpanel\n }));\n});\n\nif (__DEV__) {\n TabPanel.displayName = \"TabPanel\";\n}\n\n/**\n * TabPanel\n *\n * Used to manage the rendering of multiple tab panels. It uses\n * `cloneElement` to hide/show tab panels.\n *\n * It renders a `div` by default.\n */\nvar TabPanels = /*#__PURE__*/forwardRef(function (props, ref) {\n var panelsProps = useTabPanels(props);\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.div, _extends({}, panelsProps, {\n width: \"100%\",\n ref: ref,\n className: cx(\"chakra-tabs__tab-panels\", props.className),\n __css: styles.tabpanels\n }));\n});\n\nif (__DEV__) {\n TabPanels.displayName = \"TabPanels\";\n}\n\n/**\n * TabIndicator\n *\n * Used to render an active tab indicator that animates between\n * selected tabs.\n */\nvar TabIndicator = /*#__PURE__*/forwardRef(function (props, ref) {\n var indicatorStyle = useTabIndicator();\n\n var style = _extends({}, props.style, indicatorStyle);\n\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.div, _extends({\n ref: ref\n }, props, {\n className: cx(\"chakra-tabs__tab-indicator\", props.className),\n style: style,\n __css: styles.indicator\n }));\n});\n\nif (__DEV__) {\n TabIndicator.displayName = \"TabIndicator\";\n}\n\nexport { Tab, TabIndicator, TabList, TabPanel, TabPanels, Tabs, TabsDescendantsProvider, TabsProvider, useTab, useTabIndicator, useTabList, useTabPanel, useTabPanels, useTabs, useTabsContext, useTabsDescendant, useTabsDescendants, useTabsDescendantsContext };\n","export default function assign(target, object) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n for (var property in object) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n ;\n target[property] = object[property];\n }\n }\n return target;\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport cloneObject from \"../_lib/cloneObject/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 1000 * 60;\nvar MINUTES_IN_DAY = 60 * 24;\nvar MINUTES_IN_MONTH = MINUTES_IN_DAY * 30;\nvar MINUTES_IN_YEAR = MINUTES_IN_DAY * 365;\n\n/**\n * @name formatDistanceStrict\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words, using strict units.\n * This is like `formatDistance`, but does not use helpers like 'almost', 'over',\n * 'less than' and the like.\n *\n * | Distance between dates | Result |\n * |------------------------|---------------------|\n * | 0 ... 59 secs | [0..59] seconds |\n * | 1 ... 59 mins | [1..59] minutes |\n * | 1 ... 23 hrs | [1..23] hours |\n * | 1 ... 29 days | [1..29] days |\n * | 1 ... 11 months | [1..11] months |\n * | 1 ... N years | [1..N] years |\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {'second'|'minute'|'hour'|'day'|'month'|'year'} [options.unit] - if specified, will force a unit\n * @param {'floor'|'ceil'|'round'} [options.roundingMethod='round'] - which way to round partial units\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.roundingMethod` must be 'floor', 'ceil' or 'round'\n * @throws {RangeError} `options.unit` must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * const result = formatDistanceStrict(new Date(2014, 6, 2), new Date(2015, 0, 2))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00?\n * const result = formatDistanceStrict(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0)\n * )\n * //=> '15 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * const result = formatDistanceStrict(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> '1 year ago'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, in minutes?\n * const result = formatDistanceStrict(new Date(2016, 0, 1), new Date(2015, 0, 1), {\n * unit: 'minute'\n * })\n * //=> '525600 minutes'\n *\n * @example\n * // What is the distance from 1 January 2015\n * // to 28 January 2015, in months, rounded up?\n * const result = formatDistanceStrict(new Date(2015, 0, 28), new Date(2015, 0, 1), {\n * unit: 'month',\n * roundingMethod: 'ceil'\n * })\n * //=> '1 month'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = formatDistanceStrict(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> '1 jaro'\n */\n\nexport default function formatDistanceStrict(dirtyDate, dirtyBaseDate, options) {\n var _ref, _options$locale, _options$roundingMeth;\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain localize.formatDistance property');\n }\n var comparison = compareAsc(dirtyDate, dirtyBaseDate);\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value');\n }\n var localizeOptions = assign(cloneObject(options), {\n addSuffix: Boolean(options === null || options === void 0 ? void 0 : options.addSuffix),\n comparison: comparison\n });\n var dateLeft;\n var dateRight;\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate);\n dateRight = toDate(dirtyDate);\n } else {\n dateLeft = toDate(dirtyDate);\n dateRight = toDate(dirtyBaseDate);\n }\n var roundingMethod = String((_options$roundingMeth = options === null || options === void 0 ? void 0 : options.roundingMethod) !== null && _options$roundingMeth !== void 0 ? _options$roundingMeth : 'round');\n var roundingMethodFn;\n if (roundingMethod === 'floor') {\n roundingMethodFn = Math.floor;\n } else if (roundingMethod === 'ceil') {\n roundingMethodFn = Math.ceil;\n } else if (roundingMethod === 'round') {\n roundingMethodFn = Math.round;\n } else {\n throw new RangeError(\"roundingMethod must be 'floor', 'ceil' or 'round'\");\n }\n var milliseconds = dateRight.getTime() - dateLeft.getTime();\n var minutes = milliseconds / MILLISECONDS_IN_MINUTE;\n var timezoneOffset = getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft);\n\n // Use DST-normalized difference in minutes for years, months and days;\n // use regular difference in minutes for hours, minutes and seconds.\n var dstNormalizedMinutes = (milliseconds - timezoneOffset) / MILLISECONDS_IN_MINUTE;\n var defaultUnit = options === null || options === void 0 ? void 0 : options.unit;\n var unit;\n if (!defaultUnit) {\n if (minutes < 1) {\n unit = 'second';\n } else if (minutes < 60) {\n unit = 'minute';\n } else if (minutes < MINUTES_IN_DAY) {\n unit = 'hour';\n } else if (dstNormalizedMinutes < MINUTES_IN_MONTH) {\n unit = 'day';\n } else if (dstNormalizedMinutes < MINUTES_IN_YEAR) {\n unit = 'month';\n } else {\n unit = 'year';\n }\n } else {\n unit = String(defaultUnit);\n }\n\n // 0 up to 60 seconds\n if (unit === 'second') {\n var seconds = roundingMethodFn(milliseconds / 1000);\n return locale.formatDistance('xSeconds', seconds, localizeOptions);\n\n // 1 up to 60 mins\n } else if (unit === 'minute') {\n var roundedMinutes = roundingMethodFn(minutes);\n return locale.formatDistance('xMinutes', roundedMinutes, localizeOptions);\n\n // 1 up to 24 hours\n } else if (unit === 'hour') {\n var hours = roundingMethodFn(minutes / 60);\n return locale.formatDistance('xHours', hours, localizeOptions);\n\n // 1 up to 30 days\n } else if (unit === 'day') {\n var days = roundingMethodFn(dstNormalizedMinutes / MINUTES_IN_DAY);\n return locale.formatDistance('xDays', days, localizeOptions);\n\n // 1 up to 12 months\n } else if (unit === 'month') {\n var months = roundingMethodFn(dstNormalizedMinutes / MINUTES_IN_MONTH);\n return months === 12 && defaultUnit !== 'month' ? locale.formatDistance('xYears', 1, localizeOptions) : locale.formatDistance('xMonths', months, localizeOptions);\n\n // 1 year up to max Date\n } else if (unit === 'year') {\n var years = roundingMethodFn(dstNormalizedMinutes / MINUTES_IN_YEAR);\n return locale.formatDistance('xYears', years, localizeOptions);\n }\n throw new RangeError(\"unit must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\");\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","import assign from \"../assign/index.js\";\nexport default function cloneObject(object) {\n return assign({}, object);\n}","import formatDistanceStrict from \"../formatDistanceStrict/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatDistanceToNowStrict\n * @category Common Helpers\n * @summary Return the distance between the given date and now in words.\n * @pure false\n *\n * @description\n * Return the distance between the given dates in words, using strict units.\n * This is like `formatDistance`, but does not use helpers like 'almost', 'over',\n * 'less than' and the like.\n *\n * | Distance between dates | Result |\n * |------------------------|---------------------|\n * | 0 ... 59 secs | [0..59] seconds |\n * | 1 ... 59 mins | [1..59] minutes |\n * | 1 ... 23 hrs | [1..23] hours |\n * | 1 ... 29 days | [1..29] days |\n * | 1 ... 11 months | [1..11] months |\n * | 1 ... N years | [1..N] years |\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {'second'|'minute'|'hour'|'day'|'month'|'year'} [options.unit] - if specified, will force a unit\n * @param {'floor'|'ceil'|'round'} [options.roundingMethod='round'] - which way to round partial units\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // If today is 1 January 2015, what is the distance to 2 July 2014?\n * const result = formatDistanceToNowStrict(\n * new Date(2014, 6, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // If now is 1 January 2015 00:00:00,\n * // what is the distance to 1 January 2015 00:00:15, including seconds?\n * const result = formatDistanceToNowStrict(\n * new Date(2015, 0, 1, 0, 0, 15)\n * )\n * //=> '15 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * const result = formatDistanceToNowStrict(\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'in 1 year'\n *\n * @example\n * // If today is 28 January 2015,\n * // what is the distance to 1 January 2015, in months, rounded up??\n * const result = formatDistanceToNowStrict(new Date(2015, 0, 1), {\n * unit: 'month',\n * roundingMethod: 'ceil'\n * })\n * //=> '1 month'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016 in Esperanto?\n * const eoLocale = require('date-fns/locale/eo')\n * const result = formatDistanceToNowStrict(\n * new Date(2016, 0, 1),\n * {locale: eoLocale}\n * )\n * //=> '1 jaro'\n */\nexport default function formatDistanceToNowStrict(dirtyDate, options) {\n requiredArgs(1, arguments);\n return formatDistanceStrict(dirtyDate, Date.now(), options);\n}","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}"],"names":["_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","_objectWithoutPropertiesLoose","excluded","sourceKeys","keys","indexOf","_excluded$1","_excluded2$1","_excluded3","_createDescendantCont","createDescendantContext","TabsDescendantsProvider","useTabsDescendantsContext","useTabsDescendants","useTabsDescendant","_createContext","createContext","name","errorMessage","TabsProvider","useTabsContext","makeTabId","id","index","makeTabPanelId","_excluded","_excluded2","Tabs","forwardRef","props","ref","styles","useMultiStyleConfig","_omitThemingProps","omitThemingProps","children","className","_useTabs","defaultIndex","onChange","isManual","isLazy","_props$lazyBehavior","lazyBehavior","_props$orientation","orientation","_props$direction","direction","htmlProps","_React$useState","React","focusedIndex","setFocusedIndex","_useControllableState","useControllableState","defaultValue","value","selectedIndex","setSelectedIndex","descendants","useId","useTabs","ctx","context","rootProps","omit","StylesProvider","chakra","div","cx","__css","root","__DEV__","displayName","Tab","useStyles","tabProps","isDisabled","isFocusable","_useTabsContext2","_useTabsDescendant","disabled","register","isSelected","clickableProps","useClickable","mergeRefs","onClick","callAllHandlers","role","tabIndex","type","onFocus","undefined","useTab","tabStyles","outline","display","alignItems","justifyContent","tab","button","TabList","tablistProps","_useTabsContext","onKeyDown","event","_keyMap","nextTab","next","nextEnabled","focus","node","prevTab","prev","prevEnabled","isHorizontal","isVertical","eventKey","normalizeEventKey","ArrowEnd","action","ArrowDown","ArrowUp","Home","first","firstEnabled","End","last","lastEnabled","preventDefault","useTabList","tablistStyles","tablist","TabPanel","panelProps","_useTabsContext3","hasBeenSelected","current","determineLazyBehavior","hidden","useTabPanel","tabpanel","TabPanels","panelsProps","getValidChildren","map","child","useTabPanels","width","tabpanels","TabIndicator","indicatorStyle","_React$useState2","left","top","height","rect","setRect","_React$useState3","hasMeasured","setHasMeasured","useSafeLayoutEffect","isUndefined","item","offsetLeft","offsetWidth","offsetTop","offsetHeight","requestAnimationFrame","cancelAnimationFrame","position","transitionProperty","transitionDuration","transitionTimingFunction","useTabIndicator","style","indicator","object","TypeError","property","MILLISECONDS_IN_MINUTE","MINUTES_IN_DAY","MINUTES_IN_MONTH","MINUTES_IN_YEAR","formatDistanceStrict","dirtyDate","dirtyBaseDate","options","_ref","_options$locale","_options$roundingMeth","requiredArgs","defaultOptions","getDefaultOptions","locale","defaultLocale","formatDistance","RangeError","comparison","dirtyDateLeft","dirtyDateRight","dateLeft","toDate","dateRight","diff","getTime","compareAsc","isNaN","localizeOptions","addSuffix","Boolean","roundingMethodFn","roundingMethod","String","Math","floor","ceil","round","unit","milliseconds","minutes","dstNormalizedMinutes","getTimezoneOffsetInMilliseconds","defaultUnit","seconds","roundedMinutes","hours","days","months","years","formatDistanceToNowStrict","Date","now","_taggedTemplateLiteral","strings","raw","slice","freeze","defineProperties"],"sourceRoot":""}
1
+ {"version":3,"file":"static/js/168.7afc32df.chunk.js","mappings":"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","sources":["../node_modules/@chakra-ui/tabs/dist/chakra-ui-tabs.esm.js","../node_modules/date-fns/esm/_lib/assign/index.js","../node_modules/date-fns/esm/formatDistanceStrict/index.js","../node_modules/date-fns/esm/compareAsc/index.js","../node_modules/date-fns/esm/_lib/cloneObject/index.js","../node_modules/date-fns/esm/formatDistanceToNowStrict/index.js","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js"],"sourcesContent":["import { forwardRef, useMultiStyleConfig, omitThemingProps, StylesProvider, chakra, useStyles } from '@chakra-ui/system';\nimport { normalizeEventKey, callAllHandlers, determineLazyBehavior, isUndefined, focus, omit, cx, __DEV__ } from '@chakra-ui/utils';\nimport * as React from 'react';\nimport { useClickable } from '@chakra-ui/clickable';\nimport { createDescendantContext } from '@chakra-ui/descendant';\nimport { useControllableState, useId, useSafeLayoutEffect } from '@chakra-ui/hooks';\nimport { createContext, mergeRefs, getValidChildren } from '@chakra-ui/react-utils';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nvar _excluded$1 = [\"defaultIndex\", \"onChange\", \"index\", \"isManual\", \"isLazy\", \"lazyBehavior\", \"orientation\", \"direction\"],\n _excluded2$1 = [\"isDisabled\", \"isFocusable\"],\n _excluded3 = [\"isSelected\", \"id\", \"children\"];\n/* -------------------------------------------------------------------------------------------------\n * Create context to track descendants and their indices\n * -----------------------------------------------------------------------------------------------*/\n\nvar _createDescendantCont = createDescendantContext(),\n TabsDescendantsProvider = _createDescendantCont[0],\n useTabsDescendantsContext = _createDescendantCont[1],\n useTabsDescendants = _createDescendantCont[2],\n useTabsDescendant = _createDescendantCont[3];\n\n/**\n * Tabs hook that provides all the states, and accessibility\n * helpers to keep all things working properly.\n *\n * Its returned object will be passed unto a Context Provider\n * so all child components can read from it.\n * There is no document link yet\n * @see Docs https://chakra-ui.com/docs/components/useTabs\n */\nfunction useTabs(props) {\n var defaultIndex = props.defaultIndex,\n onChange = props.onChange,\n index = props.index,\n isManual = props.isManual,\n isLazy = props.isLazy,\n _props$lazyBehavior = props.lazyBehavior,\n lazyBehavior = _props$lazyBehavior === void 0 ? \"unmount\" : _props$lazyBehavior,\n _props$orientation = props.orientation,\n orientation = _props$orientation === void 0 ? \"horizontal\" : _props$orientation,\n _props$direction = props.direction,\n direction = _props$direction === void 0 ? \"ltr\" : _props$direction,\n htmlProps = _objectWithoutPropertiesLoose(props, _excluded$1);\n /**\n * We use this to keep track of the index of the focused tab.\n *\n * Tabs can be automatically activated, this means selection follows focus.\n * When we navigate with the arrow keys, we move focus and selection to next/prev tab\n *\n * Tabs can also be manually activated, this means selection does not follow focus.\n * When we navigate with the arrow keys, we only move focus NOT selection. The user\n * will need not manually activate the tab using `Enter` or `Space`.\n *\n * This is why we need to keep track of the `focusedIndex` and `selectedIndex`\n */\n\n\n var _React$useState = React.useState(defaultIndex != null ? defaultIndex : 0),\n focusedIndex = _React$useState[0],\n setFocusedIndex = _React$useState[1];\n\n var _useControllableState = useControllableState({\n defaultValue: defaultIndex != null ? defaultIndex : 0,\n value: index,\n onChange: onChange\n }),\n selectedIndex = _useControllableState[0],\n setSelectedIndex = _useControllableState[1];\n /**\n * Sync focused `index` with controlled `selectedIndex` (which is the `props.index`)\n */\n\n\n React.useEffect(function () {\n if (index != null) {\n setFocusedIndex(index);\n }\n }, [index]);\n /**\n * Think of `useDescendants` as a register for the tab nodes.\n */\n\n var descendants = useTabsDescendants();\n /**\n * Generate a unique id or use user-provided id for the tabs widget\n */\n\n var id = useId(props.id, \"tabs\");\n return {\n id: id,\n selectedIndex: selectedIndex,\n focusedIndex: focusedIndex,\n setSelectedIndex: setSelectedIndex,\n setFocusedIndex: setFocusedIndex,\n isManual: isManual,\n isLazy: isLazy,\n lazyBehavior: lazyBehavior,\n orientation: orientation,\n descendants: descendants,\n direction: direction,\n htmlProps: htmlProps\n };\n}\n\nvar _createContext = createContext({\n name: \"TabsContext\",\n errorMessage: \"useTabsContext: `context` is undefined. Seems you forgot to wrap all tabs components within <Tabs />\"\n}),\n TabsProvider = _createContext[0],\n useTabsContext = _createContext[1];\n\n/**\n * Tabs hook to manage multiple tab buttons,\n * and ensures only one tab is selected per time.\n *\n * @param props props object for the tablist\n */\nfunction useTabList(props) {\n var _useTabsContext = useTabsContext(),\n focusedIndex = _useTabsContext.focusedIndex,\n orientation = _useTabsContext.orientation,\n direction = _useTabsContext.direction;\n\n var descendants = useTabsDescendantsContext();\n var onKeyDown = React.useCallback(function (event) {\n var _keyMap;\n\n var nextTab = function nextTab() {\n var next = descendants.nextEnabled(focusedIndex);\n if (next) focus(next.node);\n };\n\n var prevTab = function prevTab() {\n var prev = descendants.prevEnabled(focusedIndex);\n if (prev) focus(prev.node);\n };\n\n var firstTab = function firstTab() {\n var first = descendants.firstEnabled();\n if (first) focus(first.node);\n };\n\n var lastTab = function lastTab() {\n var last = descendants.lastEnabled();\n if (last) focus(last.node);\n };\n\n var isHorizontal = orientation === \"horizontal\";\n var isVertical = orientation === \"vertical\";\n var eventKey = normalizeEventKey(event);\n var ArrowStart = direction === \"ltr\" ? \"ArrowLeft\" : \"ArrowRight\";\n var ArrowEnd = direction === \"ltr\" ? \"ArrowRight\" : \"ArrowLeft\";\n var keyMap = (_keyMap = {}, _keyMap[ArrowStart] = function () {\n return isHorizontal && prevTab();\n }, _keyMap[ArrowEnd] = function () {\n return isHorizontal && nextTab();\n }, _keyMap.ArrowDown = function ArrowDown() {\n return isVertical && nextTab();\n }, _keyMap.ArrowUp = function ArrowUp() {\n return isVertical && prevTab();\n }, _keyMap.Home = firstTab, _keyMap.End = lastTab, _keyMap);\n var action = keyMap[eventKey];\n\n if (action) {\n event.preventDefault();\n action(event);\n }\n }, [descendants, focusedIndex, orientation, direction]);\n return _extends({}, props, {\n role: \"tablist\",\n \"aria-orientation\": orientation,\n onKeyDown: callAllHandlers(props.onKeyDown, onKeyDown)\n });\n}\n\n/**\n * Tabs hook to manage each tab button.\n *\n * A tab can be disabled and focusable, or both,\n * hence the use of `useClickable` to handle this scenario\n */\nfunction useTab(props) {\n var isDisabled = props.isDisabled,\n isFocusable = props.isFocusable,\n htmlProps = _objectWithoutPropertiesLoose(props, _excluded2$1);\n\n var _useTabsContext2 = useTabsContext(),\n setSelectedIndex = _useTabsContext2.setSelectedIndex,\n isManual = _useTabsContext2.isManual,\n id = _useTabsContext2.id,\n setFocusedIndex = _useTabsContext2.setFocusedIndex,\n selectedIndex = _useTabsContext2.selectedIndex;\n\n var _useTabsDescendant = useTabsDescendant({\n disabled: isDisabled && !isFocusable\n }),\n index = _useTabsDescendant.index,\n register = _useTabsDescendant.register;\n\n var isSelected = index === selectedIndex;\n\n var onClick = function onClick() {\n setSelectedIndex(index);\n };\n\n var onFocus = function onFocus() {\n setFocusedIndex(index);\n var isDisabledButFocusable = isDisabled && isFocusable;\n var shouldSelect = !isManual && !isDisabledButFocusable;\n\n if (shouldSelect) {\n setSelectedIndex(index);\n }\n };\n\n var clickableProps = useClickable(_extends({}, htmlProps, {\n ref: mergeRefs(register, props.ref),\n isDisabled: isDisabled,\n isFocusable: isFocusable,\n onClick: callAllHandlers(props.onClick, onClick)\n }));\n var type = \"button\";\n return _extends({}, clickableProps, {\n id: makeTabId(id, index),\n role: \"tab\",\n tabIndex: isSelected ? 0 : -1,\n type: type,\n \"aria-selected\": isSelected,\n \"aria-controls\": makeTabPanelId(id, index),\n onFocus: isDisabled ? undefined : callAllHandlers(props.onFocus, onFocus)\n });\n}\n\n/**\n * Tabs hook for managing the visibility of multiple tab panels.\n *\n * Since only one panel can be show at a time, we use `cloneElement`\n * to inject `selected` panel to each TabPanel.\n *\n * It returns a cloned version of its children with\n * all functionality included.\n */\nfunction useTabPanels(props) {\n var context = useTabsContext();\n var id = context.id,\n selectedIndex = context.selectedIndex;\n var validChildren = getValidChildren(props.children);\n var children = validChildren.map(function (child, index) {\n return /*#__PURE__*/React.cloneElement(child, {\n isSelected: index === selectedIndex,\n id: makeTabPanelId(id, index),\n // Refers to the associated tab element, and also provides an accessible name to the tab panel.\n \"aria-labelledby\": makeTabId(id, index)\n });\n });\n return _extends({}, props, {\n children: children\n });\n}\n/**\n * Tabs hook for managing the visible/hidden states\n * of the tab panel.\n *\n * @param props props object for the tab panel\n */\n\nfunction useTabPanel(props) {\n var isSelected = props.isSelected,\n id = props.id,\n children = props.children,\n htmlProps = _objectWithoutPropertiesLoose(props, _excluded3);\n\n var _useTabsContext3 = useTabsContext(),\n isLazy = _useTabsContext3.isLazy,\n lazyBehavior = _useTabsContext3.lazyBehavior;\n\n var hasBeenSelected = React.useRef(false);\n\n if (isSelected) {\n hasBeenSelected.current = true;\n }\n\n var shouldRenderChildren = determineLazyBehavior({\n hasBeenSelected: hasBeenSelected.current,\n isSelected: isSelected,\n isLazy: isLazy,\n lazyBehavior: lazyBehavior\n });\n return _extends({\n // Puts the tabpanel in the page `Tab` sequence.\n tabIndex: 0\n }, htmlProps, {\n children: shouldRenderChildren ? children : null,\n role: \"tabpanel\",\n hidden: !isSelected,\n id: id\n });\n}\n/**\n * Tabs hook to show an animated indicators that\n * follows the active tab.\n *\n * The way we do it is by measuring the DOM Rect (or dimensions)\n * of the active tab, and return that as CSS style for\n * the indicator.\n */\n\nfunction useTabIndicator() {\n var context = useTabsContext();\n var descendants = useTabsDescendantsContext();\n var selectedIndex = context.selectedIndex,\n orientation = context.orientation;\n var isHorizontal = orientation === \"horizontal\";\n var isVertical = orientation === \"vertical\"; // Get the clientRect of the selected tab\n\n var _React$useState2 = React.useState(function () {\n if (isHorizontal) return {\n left: 0,\n width: 0\n };\n if (isVertical) return {\n top: 0,\n height: 0\n };\n return undefined;\n }),\n rect = _React$useState2[0],\n setRect = _React$useState2[1];\n\n var _React$useState3 = React.useState(false),\n hasMeasured = _React$useState3[0],\n setHasMeasured = _React$useState3[1]; // Update the selected tab rect when the selectedIndex changes\n\n\n useSafeLayoutEffect(function () {\n if (isUndefined(selectedIndex)) return undefined;\n var tab = descendants.item(selectedIndex);\n if (isUndefined(tab)) return undefined; // Horizontal Tab: Calculate width and left distance\n\n if (isHorizontal) {\n setRect({\n left: tab.node.offsetLeft,\n width: tab.node.offsetWidth\n });\n } // Vertical Tab: Calculate height and top distance\n\n\n if (isVertical) {\n setRect({\n top: tab.node.offsetTop,\n height: tab.node.offsetHeight\n });\n } // Prevent unwanted transition from 0 to measured rect\n // by setting the measured state in the next tick\n\n\n var id = requestAnimationFrame(function () {\n setHasMeasured(true);\n });\n return function () {\n if (id) {\n cancelAnimationFrame(id);\n }\n };\n }, [selectedIndex, isHorizontal, isVertical, descendants]);\n return _extends({\n position: \"absolute\",\n transitionProperty: \"left, right, top, bottom, height, width\",\n transitionDuration: hasMeasured ? \"200ms\" : \"0ms\",\n transitionTimingFunction: \"cubic-bezier(0, 0, 0.2, 1)\"\n }, rect);\n}\n\nfunction makeTabId(id, index) {\n return id + \"--tab-\" + index;\n}\n\nfunction makeTabPanelId(id, index) {\n return id + \"--tabpanel-\" + index;\n}\n\nvar _excluded = [\"children\", \"className\"],\n _excluded2 = [\"htmlProps\", \"descendants\"];\n\n/**\n * Tabs\n *\n * Provides context and logic for all tabs components.\n */\nvar Tabs = /*#__PURE__*/forwardRef(function (props, ref) {\n var styles = useMultiStyleConfig(\"Tabs\", props);\n\n var _omitThemingProps = omitThemingProps(props),\n children = _omitThemingProps.children,\n className = _omitThemingProps.className,\n rest = _objectWithoutPropertiesLoose(_omitThemingProps, _excluded);\n\n var _useTabs = useTabs(rest),\n htmlProps = _useTabs.htmlProps,\n descendants = _useTabs.descendants,\n ctx = _objectWithoutPropertiesLoose(_useTabs, _excluded2);\n\n var context = React.useMemo(function () {\n return ctx;\n }, [ctx]);\n var rootProps = omit(htmlProps, [\"isFitted\"]);\n return /*#__PURE__*/React.createElement(TabsDescendantsProvider, {\n value: descendants\n }, /*#__PURE__*/React.createElement(TabsProvider, {\n value: context\n }, /*#__PURE__*/React.createElement(StylesProvider, {\n value: styles\n }, /*#__PURE__*/React.createElement(chakra.div, _extends({\n className: cx(\"chakra-tabs\", className),\n ref: ref\n }, rootProps, {\n __css: styles.root\n }), children))));\n});\n\nif (__DEV__) {\n Tabs.displayName = \"Tabs\";\n}\n\n/**\n * Tab button used to activate a specific tab panel. It renders a `button`,\n * and is responsible for automatic and manual selection modes.\n */\nvar Tab = /*#__PURE__*/forwardRef(function (props, ref) {\n var styles = useStyles();\n var tabProps = useTab(_extends({}, props, {\n ref: ref\n }));\n\n var tabStyles = _extends({\n outline: \"0\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\"\n }, styles.tab);\n\n return /*#__PURE__*/React.createElement(chakra.button, _extends({}, tabProps, {\n className: cx(\"chakra-tabs__tab\", props.className),\n __css: tabStyles\n }));\n});\n\nif (__DEV__) {\n Tab.displayName = \"Tab\";\n}\n\n/**\n * TabList is used to manage a list of tab buttons. It renders a `div` by default,\n * and is responsible the keyboard interaction between tabs.\n */\nvar TabList = /*#__PURE__*/forwardRef(function (props, ref) {\n var tablistProps = useTabList(_extends({}, props, {\n ref: ref\n }));\n var styles = useStyles();\n\n var tablistStyles = _extends({\n display: \"flex\"\n }, styles.tablist);\n\n return /*#__PURE__*/React.createElement(chakra.div, _extends({}, tablistProps, {\n className: cx(\"chakra-tabs__tablist\", props.className),\n __css: tablistStyles\n }));\n});\n\nif (__DEV__) {\n TabList.displayName = \"TabList\";\n}\n\n/**\n * TabPanel\n * Used to render the content for a specific tab.\n */\nvar TabPanel = /*#__PURE__*/forwardRef(function (props, ref) {\n var panelProps = useTabPanel(_extends({}, props, {\n ref: ref\n }));\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.div, _extends({\n outline: \"0\"\n }, panelProps, {\n className: cx(\"chakra-tabs__tab-panel\", props.className),\n __css: styles.tabpanel\n }));\n});\n\nif (__DEV__) {\n TabPanel.displayName = \"TabPanel\";\n}\n\n/**\n * TabPanel\n *\n * Used to manage the rendering of multiple tab panels. It uses\n * `cloneElement` to hide/show tab panels.\n *\n * It renders a `div` by default.\n */\nvar TabPanels = /*#__PURE__*/forwardRef(function (props, ref) {\n var panelsProps = useTabPanels(props);\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.div, _extends({}, panelsProps, {\n width: \"100%\",\n ref: ref,\n className: cx(\"chakra-tabs__tab-panels\", props.className),\n __css: styles.tabpanels\n }));\n});\n\nif (__DEV__) {\n TabPanels.displayName = \"TabPanels\";\n}\n\n/**\n * TabIndicator\n *\n * Used to render an active tab indicator that animates between\n * selected tabs.\n */\nvar TabIndicator = /*#__PURE__*/forwardRef(function (props, ref) {\n var indicatorStyle = useTabIndicator();\n\n var style = _extends({}, props.style, indicatorStyle);\n\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.div, _extends({\n ref: ref\n }, props, {\n className: cx(\"chakra-tabs__tab-indicator\", props.className),\n style: style,\n __css: styles.indicator\n }));\n});\n\nif (__DEV__) {\n TabIndicator.displayName = \"TabIndicator\";\n}\n\nexport { Tab, TabIndicator, TabList, TabPanel, TabPanels, Tabs, TabsDescendantsProvider, TabsProvider, useTab, useTabIndicator, useTabList, useTabPanel, useTabPanels, useTabs, useTabsContext, useTabsDescendant, useTabsDescendants, useTabsDescendantsContext };\n","export default function assign(target, object) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n for (var property in object) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n ;\n target[property] = object[property];\n }\n }\n return target;\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport cloneObject from \"../_lib/cloneObject/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 1000 * 60;\nvar MINUTES_IN_DAY = 60 * 24;\nvar MINUTES_IN_MONTH = MINUTES_IN_DAY * 30;\nvar MINUTES_IN_YEAR = MINUTES_IN_DAY * 365;\n\n/**\n * @name formatDistanceStrict\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words, using strict units.\n * This is like `formatDistance`, but does not use helpers like 'almost', 'over',\n * 'less than' and the like.\n *\n * | Distance between dates | Result |\n * |------------------------|---------------------|\n * | 0 ... 59 secs | [0..59] seconds |\n * | 1 ... 59 mins | [1..59] minutes |\n * | 1 ... 23 hrs | [1..23] hours |\n * | 1 ... 29 days | [1..29] days |\n * | 1 ... 11 months | [1..11] months |\n * | 1 ... N years | [1..N] years |\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {'second'|'minute'|'hour'|'day'|'month'|'year'} [options.unit] - if specified, will force a unit\n * @param {'floor'|'ceil'|'round'} [options.roundingMethod='round'] - which way to round partial units\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.roundingMethod` must be 'floor', 'ceil' or 'round'\n * @throws {RangeError} `options.unit` must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * const result = formatDistanceStrict(new Date(2014, 6, 2), new Date(2015, 0, 2))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00?\n * const result = formatDistanceStrict(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0)\n * )\n * //=> '15 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * const result = formatDistanceStrict(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> '1 year ago'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, in minutes?\n * const result = formatDistanceStrict(new Date(2016, 0, 1), new Date(2015, 0, 1), {\n * unit: 'minute'\n * })\n * //=> '525600 minutes'\n *\n * @example\n * // What is the distance from 1 January 2015\n * // to 28 January 2015, in months, rounded up?\n * const result = formatDistanceStrict(new Date(2015, 0, 28), new Date(2015, 0, 1), {\n * unit: 'month',\n * roundingMethod: 'ceil'\n * })\n * //=> '1 month'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = formatDistanceStrict(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> '1 jaro'\n */\n\nexport default function formatDistanceStrict(dirtyDate, dirtyBaseDate, options) {\n var _ref, _options$locale, _options$roundingMeth;\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain localize.formatDistance property');\n }\n var comparison = compareAsc(dirtyDate, dirtyBaseDate);\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value');\n }\n var localizeOptions = assign(cloneObject(options), {\n addSuffix: Boolean(options === null || options === void 0 ? void 0 : options.addSuffix),\n comparison: comparison\n });\n var dateLeft;\n var dateRight;\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate);\n dateRight = toDate(dirtyDate);\n } else {\n dateLeft = toDate(dirtyDate);\n dateRight = toDate(dirtyBaseDate);\n }\n var roundingMethod = String((_options$roundingMeth = options === null || options === void 0 ? void 0 : options.roundingMethod) !== null && _options$roundingMeth !== void 0 ? _options$roundingMeth : 'round');\n var roundingMethodFn;\n if (roundingMethod === 'floor') {\n roundingMethodFn = Math.floor;\n } else if (roundingMethod === 'ceil') {\n roundingMethodFn = Math.ceil;\n } else if (roundingMethod === 'round') {\n roundingMethodFn = Math.round;\n } else {\n throw new RangeError(\"roundingMethod must be 'floor', 'ceil' or 'round'\");\n }\n var milliseconds = dateRight.getTime() - dateLeft.getTime();\n var minutes = milliseconds / MILLISECONDS_IN_MINUTE;\n var timezoneOffset = getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft);\n\n // Use DST-normalized difference in minutes for years, months and days;\n // use regular difference in minutes for hours, minutes and seconds.\n var dstNormalizedMinutes = (milliseconds - timezoneOffset) / MILLISECONDS_IN_MINUTE;\n var defaultUnit = options === null || options === void 0 ? void 0 : options.unit;\n var unit;\n if (!defaultUnit) {\n if (minutes < 1) {\n unit = 'second';\n } else if (minutes < 60) {\n unit = 'minute';\n } else if (minutes < MINUTES_IN_DAY) {\n unit = 'hour';\n } else if (dstNormalizedMinutes < MINUTES_IN_MONTH) {\n unit = 'day';\n } else if (dstNormalizedMinutes < MINUTES_IN_YEAR) {\n unit = 'month';\n } else {\n unit = 'year';\n }\n } else {\n unit = String(defaultUnit);\n }\n\n // 0 up to 60 seconds\n if (unit === 'second') {\n var seconds = roundingMethodFn(milliseconds / 1000);\n return locale.formatDistance('xSeconds', seconds, localizeOptions);\n\n // 1 up to 60 mins\n } else if (unit === 'minute') {\n var roundedMinutes = roundingMethodFn(minutes);\n return locale.formatDistance('xMinutes', roundedMinutes, localizeOptions);\n\n // 1 up to 24 hours\n } else if (unit === 'hour') {\n var hours = roundingMethodFn(minutes / 60);\n return locale.formatDistance('xHours', hours, localizeOptions);\n\n // 1 up to 30 days\n } else if (unit === 'day') {\n var days = roundingMethodFn(dstNormalizedMinutes / MINUTES_IN_DAY);\n return locale.formatDistance('xDays', days, localizeOptions);\n\n // 1 up to 12 months\n } else if (unit === 'month') {\n var months = roundingMethodFn(dstNormalizedMinutes / MINUTES_IN_MONTH);\n return months === 12 && defaultUnit !== 'month' ? locale.formatDistance('xYears', 1, localizeOptions) : locale.formatDistance('xMonths', months, localizeOptions);\n\n // 1 year up to max Date\n } else if (unit === 'year') {\n var years = roundingMethodFn(dstNormalizedMinutes / MINUTES_IN_YEAR);\n return locale.formatDistance('xYears', years, localizeOptions);\n }\n throw new RangeError(\"unit must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\");\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","import assign from \"../assign/index.js\";\nexport default function cloneObject(object) {\n return assign({}, object);\n}","import formatDistanceStrict from \"../formatDistanceStrict/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatDistanceToNowStrict\n * @category Common Helpers\n * @summary Return the distance between the given date and now in words.\n * @pure false\n *\n * @description\n * Return the distance between the given dates in words, using strict units.\n * This is like `formatDistance`, but does not use helpers like 'almost', 'over',\n * 'less than' and the like.\n *\n * | Distance between dates | Result |\n * |------------------------|---------------------|\n * | 0 ... 59 secs | [0..59] seconds |\n * | 1 ... 59 mins | [1..59] minutes |\n * | 1 ... 23 hrs | [1..23] hours |\n * | 1 ... 29 days | [1..29] days |\n * | 1 ... 11 months | [1..11] months |\n * | 1 ... N years | [1..N] years |\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {'second'|'minute'|'hour'|'day'|'month'|'year'} [options.unit] - if specified, will force a unit\n * @param {'floor'|'ceil'|'round'} [options.roundingMethod='round'] - which way to round partial units\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // If today is 1 January 2015, what is the distance to 2 July 2014?\n * const result = formatDistanceToNowStrict(\n * new Date(2014, 6, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // If now is 1 January 2015 00:00:00,\n * // what is the distance to 1 January 2015 00:00:15, including seconds?\n * const result = formatDistanceToNowStrict(\n * new Date(2015, 0, 1, 0, 0, 15)\n * )\n * //=> '15 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * const result = formatDistanceToNowStrict(\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'in 1 year'\n *\n * @example\n * // If today is 28 January 2015,\n * // what is the distance to 1 January 2015, in months, rounded up??\n * const result = formatDistanceToNowStrict(new Date(2015, 0, 1), {\n * unit: 'month',\n * roundingMethod: 'ceil'\n * })\n * //=> '1 month'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016 in Esperanto?\n * const eoLocale = require('date-fns/locale/eo')\n * const result = formatDistanceToNowStrict(\n * new Date(2016, 0, 1),\n * {locale: eoLocale}\n * )\n * //=> '1 jaro'\n */\nexport default function formatDistanceToNowStrict(dirtyDate, options) {\n requiredArgs(1, arguments);\n return formatDistanceStrict(dirtyDate, Date.now(), options);\n}","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}"],"names":["_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","_objectWithoutPropertiesLoose","excluded","sourceKeys","keys","indexOf","_excluded$1","_excluded2$1","_excluded3","_createDescendantCont","createDescendantContext","TabsDescendantsProvider","useTabsDescendantsContext","useTabsDescendants","useTabsDescendant","_createContext","createContext","name","errorMessage","TabsProvider","useTabsContext","makeTabId","id","index","makeTabPanelId","_excluded","_excluded2","Tabs","forwardRef","props","ref","styles","useMultiStyleConfig","_omitThemingProps","omitThemingProps","children","className","_useTabs","defaultIndex","onChange","isManual","isLazy","_props$lazyBehavior","lazyBehavior","_props$orientation","orientation","_props$direction","direction","htmlProps","_React$useState","React","focusedIndex","setFocusedIndex","_useControllableState","useControllableState","defaultValue","value","selectedIndex","setSelectedIndex","descendants","useId","useTabs","ctx","context","rootProps","omit","StylesProvider","chakra","div","cx","__css","root","__DEV__","displayName","Tab","useStyles","tabProps","isDisabled","isFocusable","_useTabsContext2","_useTabsDescendant","disabled","register","isSelected","clickableProps","useClickable","mergeRefs","onClick","callAllHandlers","role","tabIndex","type","onFocus","undefined","useTab","tabStyles","outline","display","alignItems","justifyContent","tab","button","TabList","tablistProps","_useTabsContext","onKeyDown","event","_keyMap","nextTab","next","nextEnabled","focus","node","prevTab","prev","prevEnabled","isHorizontal","isVertical","eventKey","normalizeEventKey","ArrowEnd","action","ArrowDown","ArrowUp","Home","first","firstEnabled","End","last","lastEnabled","preventDefault","useTabList","tablistStyles","tablist","TabPanel","panelProps","_useTabsContext3","hasBeenSelected","current","determineLazyBehavior","hidden","useTabPanel","tabpanel","TabPanels","panelsProps","getValidChildren","map","child","useTabPanels","width","tabpanels","TabIndicator","indicatorStyle","_React$useState2","left","top","height","rect","setRect","_React$useState3","hasMeasured","setHasMeasured","useSafeLayoutEffect","isUndefined","item","offsetLeft","offsetWidth","offsetTop","offsetHeight","requestAnimationFrame","cancelAnimationFrame","position","transitionProperty","transitionDuration","transitionTimingFunction","useTabIndicator","style","indicator","object","TypeError","property","MILLISECONDS_IN_MINUTE","MINUTES_IN_DAY","MINUTES_IN_MONTH","MINUTES_IN_YEAR","formatDistanceStrict","dirtyDate","dirtyBaseDate","options","_ref","_options$locale","_options$roundingMeth","requiredArgs","defaultOptions","getDefaultOptions","locale","defaultLocale","formatDistance","RangeError","comparison","dirtyDateLeft","dirtyDateRight","dateLeft","toDate","dateRight","diff","getTime","compareAsc","isNaN","localizeOptions","addSuffix","Boolean","roundingMethodFn","roundingMethod","String","Math","floor","ceil","round","unit","milliseconds","minutes","dstNormalizedMinutes","getTimezoneOffsetInMilliseconds","defaultUnit","seconds","roundedMinutes","hours","days","months","years","formatDistanceToNowStrict","Date","now","_taggedTemplateLiteral","strings","raw","slice","freeze","defineProperties"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunkconstruct_hub_webapp=self.webpackChunkconstruct_hub_webapp||[]).push([[176],{21450:(e,t,n)=>{n.d(t,{Y5:()=>o,gD:()=>i,fO:()=>c,Kg:()=>d,CU:()=>u,GS:()=>h});var r=n(93872),s=n(82496);const o=e=>{let{children:t}=e;return(0,s.jsxs)(r.kv,{bg:"bgSecondary",color:"textPrimary",h:"100%",w:"100%",children:[t,(0,s.jsx)(r.kv,{py:5,width:"100%"})]})},i=e=>{let{children:t}=e;return(0,s.jsx)(r.kv,{bg:"bgPrimary",py:20,width:"100%",children:(0,s.jsx)(r._m,{as:"h1",color:"textPrimary",mx:"auto",textAlign:"center",children:t})})};var a=n(13200);const c=e=>{let{question:t,children:n}=e;return(0,s.jsxs)(a.eS,{children:[(0,s.jsxs)(a.Gy,{children:[(0,s.jsx)(r.kv,{flex:"1",py:2,textAlign:"left",children:(0,s.jsx)(r._m,{as:"h3",ml:8,size:"sm",children:t})}),(0,s.jsx)(a.ch,{})]}),(0,s.jsx)(a.Uh,{px:12,py:4,children:(0,s.jsx)(r.a,{color:"textPrimary",fontSize:"md",sx:{p:{marginTop:"0",marginBottom:"4"}},children:n})})]})};var l=n(46712);const d=e=>{let{href:t,children:n}=e;return(0,s.jsx)(l.o,{color:"inherit",hasWarning:!1,href:t,textDecoration:"underline",children:n})},u=e=>{let{heading:t,children:n}=e;return(0,s.jsxs)(a.eS,{children:[(0,s.jsxs)(a.Gy,{children:[(0,s.jsx)(r.kv,{flex:"1",textAlign:"left",children:(0,s.jsx)(r._m,{as:"h2",ml:4,my:4,size:"lg",children:t})}),(0,s.jsx)(a.ch,{})]}),(0,s.jsx)(a.Uh,{p:0,children:(0,s.jsx)(a.G7,{allowMultiple:!0,w:"100%",children:n})})]})},h=e=>{let{children:t,...n}=e;return(0,s.jsx)(a.G7,{allowMultiple:!0,...n,children:t})}},63252:(e,t,n)=>{n.d(t,{K:()=>l});var r=n(69060),s=n(20496);const o={contribute:{event:{name:"Contribute Load"}},home:{event:{name:"Home Load"}},faq:{event:{name:"Frequently Asked Questions Load"}},packageProfile:{event:{name:"Package Profile Load"}},search:{event:{name:"Search Load"}},siteTerms:{event:{name:"Site Terms Load"}},notFound:{page:{pageType:"errorPage"},event:{name:"404 Page Load"}}};var i=n(59600),a=n(53620),c=n(82496);["default-src 'self' 'unsafe-inline' http://*.awsstatic.com;","connect-src 'self' https://*.shortbread.aws.dev http://*.shortbread.aws.dev http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;","frame-src http://aws.demdex.net http://dpm.demdex.net;","img-src 'self' https://* http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;","object-src 'none';","style-src 'self' 'unsafe-inline';"].join(" ");const l=e=>{let{children:t,meta:n,pageName:l}=e;const d=(0,i.KQ)(o[l]);(0,r.useEffect)((()=>{d()}),[d]);const u=(0,a.W)("feeds")||[],{suffix:h=!0,title:p,description:m}=n,f=h?"".concat(p," - Construct Hub"):p;return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(s.S,{children:[!1,(0,c.jsx)("meta",{content:"width=device-width, initial-scale=1",name:"viewport"}),(0,c.jsx)("meta",{charSet:"utf-8"}),u.map((e=>{let{url:t,mimeType:n}=e;return(0,c.jsx)("link",{href:t,rel:"alternate",type:n},t)})),(0,c.jsx)("title",{children:f}),(0,c.jsx)("meta",{content:f,property:"og:title"}),(0,c.jsx)("meta",{content:f,name:"twitter:title"}),(0,c.jsx)("meta",{content:"summary",name:"twitter:card"}),(0,c.jsx)("meta",{content:m,name:"description"}),(0,c.jsx)("meta",{content:m,property:"og:description"}),(0,c.jsx)("meta",{content:m,name:"twitter:description"})]}),t]})}},53620:(e,t,n)=>{n.d(t,{W:()=>s});var r=n(68580);const s=e=>{const{data:t}=(0,r.E)();return(null!==t&&void 0!==t?t:{})[e]}},37176:(e,t,n)=>{n.r(t),n.d(t,{default:()=>c});var r=n(93872),s=n(21450),o=n(63252),i=n(7628),a=n(82496);const c=()=>(0,a.jsx)(o.K,{meta:{title:"FAQ",description:"Frequently Asked Questions"},pageName:"faq",children:(0,a.jsxs)(s.Y5,{children:[(0,a.jsx)(s.gD,{children:"Frequently Asked Questions"}),(0,a.jsxs)(s.GS,{defaultIndex:[0,1],children:[(0,a.jsxs)(s.CU,{heading:"General",children:[(0,a.jsxs)(s.fO,{question:"How can I contribute to Construct Hub?",children:["You are encouraged to contribute to the construct ecosystem by publishing CDK libraries, contributing code to Construct Hub and providing us and libraries\u2019 publishers feedback. For more information, go to"," ",(0,a.jsx)(s.Kg,{href:"https://constructs.dev/contribute",children:"https://constructs.dev/contribute"}),"."]}),(0,a.jsx)(s.fO,{question:"What is Construct Hub?",children:(0,a.jsx)("p",{children:"Construct Hub is a place to discover CDK constructs \u2014 a central destination for discovering and sharing cloud application design patterns and reference architectures defined for the AWS CDK, CDK for Kubernetes (CDK8s), CDK for Terraform (CDKTF) and other construct-based tools."})}),(0,a.jsx)(s.fO,{question:"Why should I use Construct Hub?",children:(0,a.jsx)(r.a,{children:"Construct Hub is a central venue where CDK developers can discover construct libraries to help them build their applications. You can find construct libraries in TypeScript, Python, Java and .NET (Go is coming soon!), browse their developer guides and API references, and explore code samples in all the programming language that the package supports."})}),(0,a.jsx)(s.fO,{question:"What is a construct?",children:(0,a.jsxs)(r.a,{children:["The Constructs Programming Model (CPM) introduces the notion of"," ",(0,a.jsx)("strong",{children:"constructs"}),", which represent building blocks that can be used to assemble complete cloud applications of any complexity. AWS, enterprises, startups, and individual developers use CDK constructs to share proven architecture patterns as reusable code libraries, so that everyone can benefit from the collective wisdom of the community."]})}),(0,a.jsxs)(s.fO,{question:"What are the prerequisites for using a construct library?",children:[(0,a.jsxs)(r.a,{children:["To use a construct library in your code, you need to have your preferred programming language installed. In order to synthesize, diff, and deploy collections of resources you will need to install the CDK Toolkit command-line tool. For AWS CDK install the"," ",(0,a.jsx)(s.Kg,{href:"https://docs.aws.amazon.com/cdk/latest/guide/cli.html",children:"AWS CDK Toolkit command-line tool,"})," ","for CDK8s install the"," ",(0,a.jsx)(s.Kg,{href:"https://cdk8s.io/docs/latest/getting-started/",children:"CDK8s command-line tool"})," ","and for CDKTF install the"," ",(0,a.jsx)(s.Kg,{href:"https://learn.hashicorp.com/tutorials/terraform/cdktf-install",children:"CDKTF command-line tool."})]}),(0,a.jsx)(r.a,{children:"The CDK8s CLI doesn\u2019t require having any registered account nor having a running Kubernetes cluster as it only updates Kubernetes manifests."}),(0,a.jsx)(r.a,{children:"The CDKTF CLI requires having Terraform, Node, Yarn and Docker installed."}),(0,a.jsx)(r.a,{children:"Some construct libraries\u2019 documentation may include additional prerequisites which are unique to their implementation."})]}),(0,a.jsx)(s.fO,{question:"Who owns the constructs in Construct Hub?",children:(0,a.jsx)(r.a,{children:"Constructs are user-generated content owned by the publishers of the individual packages. Each is governed by its own license terms chosen by its publisher (although only packages that were published to the npm registry under Apache, BSD, EPL, MPL-2.0, ISC and CDDL or MIT open source licenses are included in Construct Hub). License information can be accessed directly through the hyperlinked package page."})}),(0,a.jsx)(s.fO,{question:"Is the content served in Construct Hub meant to be consumed programmatically?",children:(0,a.jsxs)(r.a,{children:["No. The content displayed in the site is user-generated, with some display formatting. We do not advise that you consume constructs from the search results programmatically. Construct Hub is a search engine or portal intended to surface third-party content from a public endpoint. We provide these results for your convenience AS-IS in accordance with our"," ",(0,a.jsx)(s.Kg,{href:"https://constructs.dev/terms",children:"Construct Hub Site Terms"}),"."]})}),(0,a.jsx)(s.fO,{question:"Which CDK types are available on the Construct Hub?",children:(0,a.jsx)(r.a,{children:"Construct Hub currently has constructs for the CDK for CloudFormation (AWS CDK), CDK for Kubernetes (CDK8s) and CDK for Terraform (CDKTF). We are open to adding other construct-based tools as they evolve."})}),(0,a.jsx)(s.fO,{question:"What is CDK for CloudFormation (AWS CDK)?",children:(0,a.jsxs)(r.a,{children:["CDK for CloudFormation (AWS CDK) is an open-source software development framework for defining applications on AWS and reusable abstractions using familiar programming languages and rich object-oriented APIs. AWS CDK apps synthesize into standard AWS CloudFormation templates, which can be deployed to create infrastructure on AWS. See"," ",(0,a.jsx)(s.Kg,{href:"https://aws.amazon.com/cdk/",children:"AWS Cloud Development Kit"})," ","for more information."]})}),(0,a.jsx)(s.fO,{question:"What is CDK for Kubernetes (CDK8s)?",children:(0,a.jsxs)(r.a,{children:["CDK for Kubernetes (CDK8s, pronounced \u201ccd kates\u201d) is an open-source software development framework for defining Kubernetes applications and reusable abstractions using familiar programming languages and rich object-oriented APIs. CDK8s apps synthesize into standard Kubernetes manifests that can be applied to any Kubernetes cluster. See"," ",(0,a.jsx)(s.Kg,{href:"https://cdk8s.io/",children:"CDK for Kubernetes"})," for more information."]})}),(0,a.jsx)(s.fO,{question:"What is CDK for Terraform (CDKTF)?",children:(0,a.jsxs)(r.a,{children:["The community preview of the Cloud Development Kit for Terraform (CDKTF) allows you to define infrastructure using a familiar programming language such as TypeScript, Python, or Go, while leveraging the hundreds of providers and thousands of module definitions provided by Terraform and the Terraform ecosystem. See"," ",(0,a.jsx)(s.Kg,{href:"https://learn.hashicorp.com/tutorials/terraform/cdktf",children:"CDK for Terraform"})," ","for more information."]})}),(0,a.jsx)(s.fO,{question:"What programming languages are supported?",children:(0,a.jsx)(r.a,{children:"The Construct Hub GA supports constructs available for Python, TypeScript, Java and .NET. Support for Go will be included soon."})}),(0,a.jsx)(s.fO,{question:"Will Go be supported?",children:(0,a.jsx)(r.a,{children:"Yes! We can\u2019t promise exactly when, but it should be soon."})}),(0,a.jsx)(s.fO,{question:"Can I view the source code of a construct?",children:(0,a.jsx)(r.a,{children:"Source code is usually available via the repository link provided by the construct\u2019s publisher; this link appears on Construct Hub. We have noticed that the code in the linked repository can sometimes be newer or older than the code in the published package, so exercise care."})}),(0,a.jsx)(s.fO,{question:"How can I install a package?",children:(0,a.jsx)(r.a,{children:"The details vary by construct. Click \u201cInstall\u201d in the package page to see the construct\u2019s installation instructions."})}),(0,a.jsx)(s.fO,{question:"How can I report abuse?",children:(0,a.jsx)(r.a,{children:'Your trust is vital to the success of Construct Hub. If you believe a package contains suspicious code, violates its dependencies\u2019 licenses, or is otherwise not behaving as a good citizen of the community, click "Report abuse" at the bottom of the package page and send us an email with explanations and evidence to support your claims. If we can verify the issue, we will take appropriate action, up to and including removing the package from Construct Hub.'})}),(0,a.jsx)(s.fO,{question:"How can I report a bug or contribute code to a construct?",children:(0,a.jsx)(r.a,{children:'Each package is owned by its publisher, so contributions, such as bug reports and pull requests, should be made via the repository link provided by the publisher. You may press the "Provide feedback" link at the package page to open a new issue in the package\u2019s repository.'})}),(0,a.jsx)(s.fO,{question:"Why isn\u2019t my package displayed on Construct Hub?",children:(0,a.jsxs)(r.a,{children:["Construct Hub includes publicly-available constructs that are JSII-compatible and that were published to the npm Registry under Apache, BSD, EPL, MPL-2.0, ISC and CDDL or MIT open source licenses and with a CDK keyword: aws-cdk, cdk8s, or cdktf. If you believe your package qualifies, but it still does not appear in Construct Hub, please raise an issue"," ",(0,a.jsx)(s.Kg,{href:"".concat(i._C,"/issues/new"),children:"here"}),"."]})}),(0,a.jsx)(s.fO,{question:"Can I update my package after it has been displayed?",children:(0,a.jsx)(r.a,{children:"Yes, you can and should! After you publish a new valid version to the public npm Registry, it should appear on Construct Hub in about 30 minutes."})}),(0,a.jsx)(s.fO,{question:"How does Construct Hub relates to the Construct Catalog?",children:(0,a.jsxs)(r.a,{children:["The Construct Catalog was built by the CDK community in collaboration with the AWS CDK team. Construct Hub is the official version of the Construct Catalog with ongoing support by the AWS CDK team and essentially replaces the Construct Catalog."," ",(0,a.jsx)(s.Kg,{href:"https://awscdk.io/",children:"https://awscdk.io"})," now redirects to Construct Hub."]})}),(0,a.jsx)(s.fO,{question:"Is there a cost for using third-party constructs from Construct Hub?",children:(0,a.jsx)(r.a,{children:"All packages on Construct Hub are published under Apache, BSD, EPL, MPL-2.0, ISC and CDDL or MIT open source licenses and can be freely used in your applications. For details, review the package\u2019s license via its repository link."})}),(0,a.jsx)(s.fO,{question:"How can I participate in the Construct Hub community?",children:(0,a.jsxs)(r.a,{children:["Construct Hub is itself an open-source construct! Join the"," ",(0,a.jsx)(s.Kg,{href:i._C,children:"Construct Hub GitHub community"}),". You are also welcome to join the ",(0,a.jsx)("code",{children:"#construct-hub-dev"})," ","channel in the"," ",(0,a.jsx)(s.Kg,{href:"https://cdk.dev/",children:"CDK community"})," Slack workspace."]})}),(0,a.jsx)(s.fO,{question:"Is there a community slack channel for the CDK community?",children:(0,a.jsxs)(r.a,{children:["Please join the CDK Slack channel (",(0,a.jsx)(s.Kg,{href:"https://cdk.dev/",children:"https://cdk.dev/"}),"). This Slack channel is managed by the CDK community for the CDK community."]})})]}),(0,a.jsxs)(s.CU,{heading:"Getting Started",children:[(0,a.jsx)(s.fO,{question:"Do I need a user account for Construct Hub?",children:(0,a.jsx)(r.a,{children:"No. Construct Hub doesn\u2019t require any signup."})}),(0,a.jsx)(s.fO,{question:"How do I get started?",children:(0,a.jsx)(r.a,{children:"Start by exploring featured, community and official libraries for the CDK of your interest. Run a free-text search to find libraries for your needs, then filter the results by your preferred programming language, CDK type, CDK major version and/or author type. To learn more about a library, click its card to see helpful information like metadata, README, API reference and code samples in your preferred programing language."})})]})]})]})})}}]);
2
+ //# sourceMappingURL=176.80cca111.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"static/js/679.8e068bbf.chunk.js","mappings":"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","sources":["components/FAQ/FAQ.tsx","components/FAQ/FAQHeading.tsx","components/FAQ/FAQItem.tsx","components/FAQ/FAQLink.tsx","components/FAQ/FAQSection.tsx","components/FAQ/FAQSections.tsx","constants/pageInfo.ts","components/Page/Page.tsx","hooks/useConfigValue/useConfigValue.ts","views/FAQ/FAQ.tsx"],"sourcesContent":["import { Box } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\n\nexport const FAQ: FunctionComponent = ({ children }) => (\n <Box bg=\"bgSecondary\" color=\"textPrimary\" h=\"100%\" w=\"100%\">\n {children}\n <Box py={5} width=\"100%\" />\n </Box>\n);\n","import { Box, Heading } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\n\nexport const FAQHeading: FunctionComponent = ({ children }) => (\n <Box bg=\"bgPrimary\" py={20} width=\"100%\">\n <Heading as=\"h1\" color=\"textPrimary\" mx=\"auto\" textAlign=\"center\">\n {children}\n </Heading>\n </Box>\n);\n","import {\n Heading,\n Text,\n AccordionIcon,\n AccordionButton,\n AccordionItem,\n AccordionPanel,\n Box,\n} from \"@chakra-ui/react\";\nimport type { FunctionComponent, ReactChild } from \"react\";\n\nexport interface FAQItemProps {\n question: ReactChild;\n}\n\nexport const FAQItem: FunctionComponent<FAQItemProps> = ({\n question,\n children,\n}) => (\n <AccordionItem>\n <AccordionButton>\n <Box flex=\"1\" py={2} textAlign=\"left\">\n <Heading as=\"h3\" ml={8} size=\"sm\">\n {question}\n </Heading>\n </Box>\n <AccordionIcon />\n </AccordionButton>\n <AccordionPanel px={12} py={4}>\n <Text\n color=\"textPrimary\"\n fontSize=\"md\"\n sx={{ p: { marginTop: \"0\", marginBottom: \"4\" } }}\n >\n {children}\n </Text>\n </AccordionPanel>\n </AccordionItem>\n);\n","import { FunctionComponent } from \"react\";\nimport { ExternalLink } from \"../../components/ExternalLink\";\n\nexport interface FAQLinkProps {\n href: string;\n}\n\nexport const FAQLink: FunctionComponent<FAQLinkProps> = ({\n href,\n children,\n}) => (\n <ExternalLink\n color=\"inherit\"\n hasWarning={false}\n href={href}\n textDecoration=\"underline\"\n >\n {children}\n </ExternalLink>\n);\n","import {\n AccordionIcon,\n AccordionButton,\n AccordionItem,\n AccordionPanel,\n Heading,\n Box,\n Accordion,\n} from \"@chakra-ui/react\";\n\nimport type { FunctionComponent } from \"react\";\n\nexport interface FAQSectionProps {\n heading: string;\n}\n\nexport const FAQSection: FunctionComponent<FAQSectionProps> = ({\n heading,\n children,\n}) => (\n <AccordionItem>\n <AccordionButton>\n <Box flex=\"1\" textAlign=\"left\">\n <Heading as=\"h2\" ml={4} my={4} size=\"lg\">\n {heading}\n </Heading>\n </Box>\n <AccordionIcon />\n </AccordionButton>\n <AccordionPanel p={0}>\n <Accordion allowMultiple w=\"100%\">\n {children}\n </Accordion>\n </AccordionPanel>\n </AccordionItem>\n);\n","import { Accordion, AccordionProps } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\n\nexport const FAQSections: FunctionComponent<AccordionProps> = ({\n children,\n ...accordionProps\n}) => (\n <Accordion allowMultiple {...accordionProps}>\n {children}\n </Accordion>\n);\n","export const pageInfo = {\n contribute: {\n event: {\n name: \"Contribute Load\",\n },\n },\n home: {\n event: {\n name: \"Home Load\",\n },\n },\n faq: {\n event: {\n name: \"Frequently Asked Questions Load\",\n },\n },\n packageProfile: {\n event: {\n name: \"Package Profile Load\",\n },\n },\n search: {\n event: {\n name: \"Search Load\",\n },\n },\n siteTerms: {\n event: {\n name: \"Site Terms Load\",\n },\n },\n notFound: {\n page: {\n pageType: \"errorPage\",\n },\n event: {\n name: \"404 Page Load\",\n },\n },\n} as const;\n","import { FunctionComponent, useEffect } from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport { pageInfo } from \"../../constants/pageInfo\";\nimport { usePageView } from \"../../contexts/Analytics\";\nimport { useConfigValue } from \"../../hooks/useConfigValue\";\n\nexport interface PageProps {\n pageName: keyof typeof pageInfo;\n meta: {\n suffix?: boolean;\n title: string;\n description: string;\n };\n}\n\n// Should be the same as the \"real\" CSP, except most things come from HTTP\n// instead of HTTPS (because it is protocol-relative, and the dev site is\n// served over plain HTTP).\nconst csp = [\n \"default-src 'self' 'unsafe-inline' http://*.awsstatic.com;\",\n \"connect-src 'self' https://*.shortbread.aws.dev http://*.shortbread.aws.dev http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;\",\n \"frame-src http://aws.demdex.net http://dpm.demdex.net;\",\n \"img-src 'self' https://* http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;\",\n \"object-src 'none';\",\n \"style-src 'self' 'unsafe-inline';\",\n].join(\" \");\n\nexport const Page: FunctionComponent<PageProps> = ({\n children,\n meta,\n pageName,\n}) => {\n const trackPageView = usePageView(pageInfo[pageName]);\n\n useEffect(() => {\n trackPageView();\n }, [trackPageView]);\n\n const feedUrls = useConfigValue(\"feeds\") || [];\n const { suffix = true, title, description } = meta;\n const formattedTitle = suffix ? `${title} - Construct Hub` : title;\n\n return (\n <>\n <Helmet>\n {process.env.NODE_ENV === \"development\" && (\n <meta content={csp} httpEquiv=\"Content-Security-Policy\" />\n )}\n\n <meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />\n <meta charSet=\"utf-8\" />\n {feedUrls.map(({ url, mimeType }) => (\n <link href={url} key={url} rel=\"alternate\" type={mimeType} />\n ))}\n\n <title>{formattedTitle}</title>\n <meta content={formattedTitle} property=\"og:title\" />\n <meta content={formattedTitle} name=\"twitter:title\" />\n <meta content=\"summary\" name=\"twitter:card\" />\n\n <meta content={description} name=\"description\" />\n <meta content={description} property=\"og:description\" />\n <meta content={description} name=\"twitter:description\" />\n </Helmet>\n {children}\n </>\n );\n};\n","import type { Config } from \"../../api/config\";\nimport { useConfig } from \"../../contexts/Config\";\n\nexport const useConfigValue = <T extends keyof Config>(key: T) => {\n const { data } = useConfig();\n return (data ?? {})[key];\n};\n","import { Text } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport {\n FAQ,\n FAQHeading,\n FAQSections,\n FAQSection,\n FAQItem,\n FAQLink,\n} from \"../../components/FAQ\";\nimport { Page } from \"../../components/Page\";\nimport { CONSTRUCT_HUB_REPO_URL } from \"../../constants/links\";\n\nexport const FAQPage: FunctionComponent = () => (\n <Page\n meta={{\n title: \"FAQ\",\n description: \"Frequently Asked Questions\",\n }}\n pageName=\"faq\"\n >\n <FAQ>\n <FAQHeading>Frequently Asked Questions</FAQHeading>\n\n <FAQSections defaultIndex={[0, 1]}>\n <FAQSection heading=\"General\">\n <FAQItem question=\"How can I contribute to Construct Hub?\">\n You are encouraged to contribute to the construct ecosystem by\n publishing CDK libraries, contributing code to Construct Hub and\n providing us and libraries’ publishers feedback. For more\n information, go to{\" \"}\n <FAQLink href=\"https://constructs.dev/contribute\">\n https://constructs.dev/contribute\n </FAQLink>\n .\n </FAQItem>\n\n <FAQItem question=\"What is Construct Hub?\">\n <p>\n Construct Hub is a place to discover CDK constructs &mdash; a\n central destination for discovering and sharing cloud application\n design patterns and reference architectures defined for the AWS\n CDK, CDK for Kubernetes (CDK8s), CDK for Terraform (CDKTF) and\n other construct-based tools.\n </p>\n </FAQItem>\n\n <FAQItem question=\"Why should I use Construct Hub?\">\n <Text>\n Construct Hub is a central venue where CDK developers can discover\n construct libraries to help them build their applications. You can\n find construct libraries in TypeScript, Python, Java and .NET (Go\n is coming soon!), browse their developer guides and API\n references, and explore code samples in all the programming\n language that the package supports.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"What is a construct?\">\n <Text>\n The Constructs Programming Model (CPM) introduces the notion of{\" \"}\n <strong>constructs</strong>, which represent building blocks that\n can be used to assemble complete cloud applications of any\n complexity. AWS, enterprises, startups, and individual developers\n use CDK constructs to share proven architecture patterns as\n reusable code libraries, so that everyone can benefit from the\n collective wisdom of the community.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"What are the prerequisites for using a construct library?\">\n <Text>\n To use a construct library in your code, you need to have your\n preferred programming language installed. In order to synthesize,\n diff, and deploy collections of resources you will need to install\n the CDK Toolkit command-line tool. For AWS CDK install the{\" \"}\n <FAQLink href=\"https://docs.aws.amazon.com/cdk/latest/guide/cli.html\">\n AWS CDK Toolkit command-line tool,\n </FAQLink>{\" \"}\n for CDK8s install the{\" \"}\n <FAQLink href=\"https://cdk8s.io/docs/latest/getting-started/\">\n CDK8s command-line tool\n </FAQLink>{\" \"}\n and for CDKTF install the{\" \"}\n <FAQLink href=\"https://learn.hashicorp.com/tutorials/terraform/cdktf-install\">\n CDKTF command-line tool.\n </FAQLink>\n </Text>\n <Text>\n The CDK8s CLI doesn’t require having any registered account nor\n having a running Kubernetes cluster as it only updates Kubernetes\n manifests.\n </Text>\n <Text>\n The CDKTF CLI requires having Terraform, Node, Yarn and Docker\n installed.\n </Text>\n <Text>\n Some construct libraries’ documentation may include additional\n prerequisites which are unique to their implementation.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"Who owns the constructs in Construct Hub?\">\n <Text>\n Constructs are user-generated content owned by the publishers of\n the individual packages. Each is governed by its own license terms\n chosen by its publisher (although only packages that were\n published to the npm registry under Apache, BSD, EPL, MPL-2.0, ISC\n and CDDL or MIT open source licenses are included in Construct\n Hub). License information can be accessed directly through the\n hyperlinked package page.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"Is the content served in Construct Hub meant to be consumed programmatically?\">\n <Text>\n No. The content displayed in the site is user-generated, with some\n display formatting. We do not advise that you consume constructs\n from the search results programmatically. Construct Hub is a\n search engine or portal intended to surface third-party content\n from a public endpoint. We provide these results for your\n convenience AS-IS in accordance with our{\" \"}\n <FAQLink href=\"https://constructs.dev/terms\">\n Construct Hub Site Terms\n </FAQLink>\n .\n </Text>\n </FAQItem>\n\n <FAQItem question=\"Which CDK types are available on the Construct Hub?\">\n <Text>\n Construct Hub currently has constructs for the CDK for\n CloudFormation (AWS CDK), CDK for Kubernetes (CDK8s) and CDK for\n Terraform (CDKTF). We are open to adding other construct-based\n tools as they evolve.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"What is CDK for CloudFormation (AWS CDK)?\">\n <Text>\n CDK for CloudFormation (AWS CDK) is an open-source software\n development framework for defining applications on AWS and\n reusable abstractions using familiar programming languages and\n rich object-oriented APIs. AWS CDK apps synthesize into standard\n AWS CloudFormation templates, which can be deployed to create\n infrastructure on AWS. See{\" \"}\n <FAQLink href=\"https://aws.amazon.com/cdk/\">\n AWS Cloud Development Kit\n </FAQLink>{\" \"}\n for more information.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"What is CDK for Kubernetes (CDK8s)?\">\n <Text>\n CDK for Kubernetes (CDK8s, pronounced “cd kates”) is an\n open-source software development framework for defining Kubernetes\n applications and reusable abstractions using familiar programming\n languages and rich object-oriented APIs. CDK8s apps synthesize\n into standard Kubernetes manifests that can be applied to any\n Kubernetes cluster. See{\" \"}\n <FAQLink href=\"https://cdk8s.io/\">CDK for Kubernetes</FAQLink> for\n more information.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"What is CDK for Terraform (CDKTF)?\">\n <Text>\n The community preview of the Cloud Development Kit for Terraform\n (CDKTF) allows you to define infrastructure using a familiar\n programming language such as TypeScript, Python, or Go, while\n leveraging the hundreds of providers and thousands of module\n definitions provided by Terraform and the Terraform ecosystem. See{\" \"}\n <FAQLink href=\"https://learn.hashicorp.com/tutorials/terraform/cdktf\">\n CDK for Terraform\n </FAQLink>{\" \"}\n for more information.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"What programming languages are supported?\">\n <Text>\n The Construct Hub GA supports constructs available for Python,\n TypeScript, Java and .NET. Support for Go will be included soon.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"Will Go be supported?\">\n <Text>\n Yes! We can’t promise exactly when, but it should be soon.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"Can I view the source code of a construct?\">\n <Text>\n Source code is usually available via the repository link provided\n by the construct’s publisher; this link appears on Construct Hub.\n We have noticed that the code in the linked repository can\n sometimes be newer or older than the code in the published\n package, so exercise care.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"How can I install a package?\">\n <Text>\n The details vary by construct. Click “Install” in the package page\n to see the construct’s installation instructions.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"How can I report abuse?\">\n <Text>\n Your trust is vital to the success of Construct Hub. If you\n believe a package contains suspicious code, violates its\n dependencies’ licenses, or is otherwise not behaving as a good\n citizen of the community, click &quot;Report abuse&quot; at the\n bottom of the package page and send us an email with explanations\n and evidence to support your claims. If we can verify the issue,\n we will take appropriate action, up to and including removing the\n package from Construct Hub.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"How can I report a bug or contribute code to a construct?\">\n <Text>\n Each package is owned by its publisher, so contributions, such as\n bug reports and pull requests, should be made via the repository\n link provided by the publisher. You may press the &quot;Provide\n feedback&quot; link at the package page to open a new issue in the\n package’s repository.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"Why isn’t my package displayed on Construct Hub?\">\n <Text>\n Construct Hub includes publicly-available constructs that are\n JSII-compatible and that were published to the npm Registry under\n Apache, BSD, EPL, MPL-2.0, ISC and CDDL or MIT open source\n licenses and with a CDK keyword: aws-cdk, cdk8s, or cdktf. If you\n believe your package qualifies, but it still does not appear in\n Construct Hub, please raise an issue{\" \"}\n <FAQLink href={`${CONSTRUCT_HUB_REPO_URL}/issues/new`}>\n here\n </FAQLink>\n .\n </Text>\n </FAQItem>\n\n <FAQItem question=\"Can I update my package after it has been displayed?\">\n <Text>\n Yes, you can and should! After you publish a new valid version to\n the public npm Registry, it should appear on Construct Hub in\n about 30 minutes.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"How does Construct Hub relates to the Construct Catalog?\">\n <Text>\n The Construct Catalog was built by the CDK community in\n collaboration with the AWS CDK team. Construct Hub is the official\n version of the Construct Catalog with ongoing support by the AWS\n CDK team and essentially replaces the Construct Catalog.{\" \"}\n <FAQLink href=\"https://awscdk.io/\">https://awscdk.io</FAQLink> now\n redirects to Construct Hub.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"Is there a cost for using third-party constructs from Construct Hub?\">\n <Text>\n All packages on Construct Hub are published under Apache, BSD,\n EPL, MPL-2.0, ISC and CDDL or MIT open source licenses and can be\n freely used in your applications. For details, review the\n package’s license via its repository link.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"How can I participate in the Construct Hub community?\">\n <Text>\n Construct Hub is itself an open-source construct! Join the{\" \"}\n <FAQLink href={CONSTRUCT_HUB_REPO_URL}>\n Construct Hub GitHub community\n </FAQLink>\n . You are also welcome to join the <code>#construct-hub-dev</code>{\" \"}\n channel in the{\" \"}\n <FAQLink href=\"https://cdk.dev/\">CDK community</FAQLink> Slack\n workspace.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"Is there a community slack channel for the CDK community?\">\n <Text>\n Please join the CDK Slack channel (\n <FAQLink href=\"https://cdk.dev/\">https://cdk.dev/</FAQLink>). This\n Slack channel is managed by the CDK community for the CDK\n community.\n </Text>\n </FAQItem>\n </FAQSection>\n\n <FAQSection heading=\"Getting Started\">\n <FAQItem question=\"Do I need a user account for Construct Hub?\">\n <Text>No. Construct Hub doesn’t require any signup.</Text>\n </FAQItem>\n\n <FAQItem question=\"How do I get started?\">\n <Text>\n Start by exploring featured, community and official libraries for\n the CDK of your interest. Run a free-text search to find libraries\n for your needs, then filter the results by your preferred\n programming language, CDK type, CDK major version and/or author\n type. To learn more about a library, click its card to see helpful\n information like metadata, README, API reference and code samples\n in your preferred programing language.\n </Text>\n </FAQItem>\n </FAQSection>\n </FAQSections>\n </FAQ>\n </Page>\n);\n"],"names":["FAQ","_ref","children","_jsxs","Box","bg","color","h","w","_jsx","py","width","FAQHeading","Heading","as","mx","textAlign","FAQItem","question","AccordionItem","AccordionButton","flex","ml","size","AccordionIcon","AccordionPanel","px","Text","fontSize","sx","p","marginTop","marginBottom","FAQLink","href","ExternalLink","hasWarning","textDecoration","FAQSection","heading","my","Accordion","allowMultiple","FAQSections","accordionProps","pageInfo","contribute","event","name","home","faq","packageProfile","search","siteTerms","notFound","page","pageType","join","Page","meta","pageName","trackPageView","usePageView","useEffect","feedUrls","useConfigValue","suffix","title","description","formattedTitle","concat","_Fragment","Helmet","process","content","charSet","map","_ref2","url","mimeType","rel","type","property","key","data","useConfig","FAQPage","defaultIndex","CONSTRUCT_HUB_REPO_URL"],"sourceRoot":""}
1
+ {"version":3,"file":"static/js/176.80cca111.chunk.js","mappings":"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","sources":["components/FAQ/FAQ.tsx","components/FAQ/FAQHeading.tsx","components/FAQ/FAQItem.tsx","components/FAQ/FAQLink.tsx","components/FAQ/FAQSection.tsx","components/FAQ/FAQSections.tsx","constants/pageInfo.ts","components/Page/Page.tsx","hooks/useConfigValue/useConfigValue.ts","views/FAQ/FAQ.tsx"],"sourcesContent":["import { Box } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\n\nexport const FAQ: FunctionComponent = ({ children }) => (\n <Box bg=\"bgSecondary\" color=\"textPrimary\" h=\"100%\" w=\"100%\">\n {children}\n <Box py={5} width=\"100%\" />\n </Box>\n);\n","import { Box, Heading } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\n\nexport const FAQHeading: FunctionComponent = ({ children }) => (\n <Box bg=\"bgPrimary\" py={20} width=\"100%\">\n <Heading as=\"h1\" color=\"textPrimary\" mx=\"auto\" textAlign=\"center\">\n {children}\n </Heading>\n </Box>\n);\n","import {\n Heading,\n Text,\n AccordionIcon,\n AccordionButton,\n AccordionItem,\n AccordionPanel,\n Box,\n} from \"@chakra-ui/react\";\nimport type { FunctionComponent, ReactChild } from \"react\";\n\nexport interface FAQItemProps {\n question: ReactChild;\n}\n\nexport const FAQItem: FunctionComponent<FAQItemProps> = ({\n question,\n children,\n}) => (\n <AccordionItem>\n <AccordionButton>\n <Box flex=\"1\" py={2} textAlign=\"left\">\n <Heading as=\"h3\" ml={8} size=\"sm\">\n {question}\n </Heading>\n </Box>\n <AccordionIcon />\n </AccordionButton>\n <AccordionPanel px={12} py={4}>\n <Text\n color=\"textPrimary\"\n fontSize=\"md\"\n sx={{ p: { marginTop: \"0\", marginBottom: \"4\" } }}\n >\n {children}\n </Text>\n </AccordionPanel>\n </AccordionItem>\n);\n","import { FunctionComponent } from \"react\";\nimport { ExternalLink } from \"../../components/ExternalLink\";\n\nexport interface FAQLinkProps {\n href: string;\n}\n\nexport const FAQLink: FunctionComponent<FAQLinkProps> = ({\n href,\n children,\n}) => (\n <ExternalLink\n color=\"inherit\"\n hasWarning={false}\n href={href}\n textDecoration=\"underline\"\n >\n {children}\n </ExternalLink>\n);\n","import {\n AccordionIcon,\n AccordionButton,\n AccordionItem,\n AccordionPanel,\n Heading,\n Box,\n Accordion,\n} from \"@chakra-ui/react\";\n\nimport type { FunctionComponent } from \"react\";\n\nexport interface FAQSectionProps {\n heading: string;\n}\n\nexport const FAQSection: FunctionComponent<FAQSectionProps> = ({\n heading,\n children,\n}) => (\n <AccordionItem>\n <AccordionButton>\n <Box flex=\"1\" textAlign=\"left\">\n <Heading as=\"h2\" ml={4} my={4} size=\"lg\">\n {heading}\n </Heading>\n </Box>\n <AccordionIcon />\n </AccordionButton>\n <AccordionPanel p={0}>\n <Accordion allowMultiple w=\"100%\">\n {children}\n </Accordion>\n </AccordionPanel>\n </AccordionItem>\n);\n","import { Accordion, AccordionProps } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\n\nexport const FAQSections: FunctionComponent<AccordionProps> = ({\n children,\n ...accordionProps\n}) => (\n <Accordion allowMultiple {...accordionProps}>\n {children}\n </Accordion>\n);\n","export const pageInfo = {\n contribute: {\n event: {\n name: \"Contribute Load\",\n },\n },\n home: {\n event: {\n name: \"Home Load\",\n },\n },\n faq: {\n event: {\n name: \"Frequently Asked Questions Load\",\n },\n },\n packageProfile: {\n event: {\n name: \"Package Profile Load\",\n },\n },\n search: {\n event: {\n name: \"Search Load\",\n },\n },\n siteTerms: {\n event: {\n name: \"Site Terms Load\",\n },\n },\n notFound: {\n page: {\n pageType: \"errorPage\",\n },\n event: {\n name: \"404 Page Load\",\n },\n },\n} as const;\n","import { FunctionComponent, useEffect } from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport { pageInfo } from \"../../constants/pageInfo\";\nimport { usePageView } from \"../../contexts/Analytics\";\nimport { useConfigValue } from \"../../hooks/useConfigValue\";\n\nexport interface PageProps {\n pageName: keyof typeof pageInfo;\n meta: {\n suffix?: boolean;\n title: string;\n description: string;\n };\n}\n\n// Should be the same as the \"real\" CSP, except most things come from HTTP\n// instead of HTTPS (because it is protocol-relative, and the dev site is\n// served over plain HTTP).\nconst csp = [\n \"default-src 'self' 'unsafe-inline' http://*.awsstatic.com;\",\n \"connect-src 'self' https://*.shortbread.aws.dev http://*.shortbread.aws.dev http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;\",\n \"frame-src http://aws.demdex.net http://dpm.demdex.net;\",\n \"img-src 'self' https://* http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;\",\n \"object-src 'none';\",\n \"style-src 'self' 'unsafe-inline';\",\n].join(\" \");\n\nexport const Page: FunctionComponent<PageProps> = ({\n children,\n meta,\n pageName,\n}) => {\n const trackPageView = usePageView(pageInfo[pageName]);\n\n useEffect(() => {\n trackPageView();\n }, [trackPageView]);\n\n const feedUrls = useConfigValue(\"feeds\") || [];\n const { suffix = true, title, description } = meta;\n const formattedTitle = suffix ? `${title} - Construct Hub` : title;\n\n return (\n <>\n <Helmet>\n {process.env.NODE_ENV === \"development\" && (\n <meta content={csp} httpEquiv=\"Content-Security-Policy\" />\n )}\n\n <meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />\n <meta charSet=\"utf-8\" />\n {feedUrls.map(({ url, mimeType }) => (\n <link href={url} key={url} rel=\"alternate\" type={mimeType} />\n ))}\n\n <title>{formattedTitle}</title>\n <meta content={formattedTitle} property=\"og:title\" />\n <meta content={formattedTitle} name=\"twitter:title\" />\n <meta content=\"summary\" name=\"twitter:card\" />\n\n <meta content={description} name=\"description\" />\n <meta content={description} property=\"og:description\" />\n <meta content={description} name=\"twitter:description\" />\n </Helmet>\n {children}\n </>\n );\n};\n","import type { Config } from \"../../api/config\";\nimport { useConfig } from \"../../contexts/Config\";\n\nexport const useConfigValue = <T extends keyof Config>(key: T) => {\n const { data } = useConfig();\n return (data ?? {})[key];\n};\n","import { Text } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport {\n FAQ,\n FAQHeading,\n FAQSections,\n FAQSection,\n FAQItem,\n FAQLink,\n} from \"../../components/FAQ\";\nimport { Page } from \"../../components/Page\";\nimport { CONSTRUCT_HUB_REPO_URL } from \"../../constants/links\";\n\nexport const FAQPage: FunctionComponent = () => (\n <Page\n meta={{\n title: \"FAQ\",\n description: \"Frequently Asked Questions\",\n }}\n pageName=\"faq\"\n >\n <FAQ>\n <FAQHeading>Frequently Asked Questions</FAQHeading>\n\n <FAQSections defaultIndex={[0, 1]}>\n <FAQSection heading=\"General\">\n <FAQItem question=\"How can I contribute to Construct Hub?\">\n You are encouraged to contribute to the construct ecosystem by\n publishing CDK libraries, contributing code to Construct Hub and\n providing us and libraries’ publishers feedback. For more\n information, go to{\" \"}\n <FAQLink href=\"https://constructs.dev/contribute\">\n https://constructs.dev/contribute\n </FAQLink>\n .\n </FAQItem>\n\n <FAQItem question=\"What is Construct Hub?\">\n <p>\n Construct Hub is a place to discover CDK constructs &mdash; a\n central destination for discovering and sharing cloud application\n design patterns and reference architectures defined for the AWS\n CDK, CDK for Kubernetes (CDK8s), CDK for Terraform (CDKTF) and\n other construct-based tools.\n </p>\n </FAQItem>\n\n <FAQItem question=\"Why should I use Construct Hub?\">\n <Text>\n Construct Hub is a central venue where CDK developers can discover\n construct libraries to help them build their applications. You can\n find construct libraries in TypeScript, Python, Java and .NET (Go\n is coming soon!), browse their developer guides and API\n references, and explore code samples in all the programming\n language that the package supports.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"What is a construct?\">\n <Text>\n The Constructs Programming Model (CPM) introduces the notion of{\" \"}\n <strong>constructs</strong>, which represent building blocks that\n can be used to assemble complete cloud applications of any\n complexity. AWS, enterprises, startups, and individual developers\n use CDK constructs to share proven architecture patterns as\n reusable code libraries, so that everyone can benefit from the\n collective wisdom of the community.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"What are the prerequisites for using a construct library?\">\n <Text>\n To use a construct library in your code, you need to have your\n preferred programming language installed. In order to synthesize,\n diff, and deploy collections of resources you will need to install\n the CDK Toolkit command-line tool. For AWS CDK install the{\" \"}\n <FAQLink href=\"https://docs.aws.amazon.com/cdk/latest/guide/cli.html\">\n AWS CDK Toolkit command-line tool,\n </FAQLink>{\" \"}\n for CDK8s install the{\" \"}\n <FAQLink href=\"https://cdk8s.io/docs/latest/getting-started/\">\n CDK8s command-line tool\n </FAQLink>{\" \"}\n and for CDKTF install the{\" \"}\n <FAQLink href=\"https://learn.hashicorp.com/tutorials/terraform/cdktf-install\">\n CDKTF command-line tool.\n </FAQLink>\n </Text>\n <Text>\n The CDK8s CLI doesn’t require having any registered account nor\n having a running Kubernetes cluster as it only updates Kubernetes\n manifests.\n </Text>\n <Text>\n The CDKTF CLI requires having Terraform, Node, Yarn and Docker\n installed.\n </Text>\n <Text>\n Some construct libraries’ documentation may include additional\n prerequisites which are unique to their implementation.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"Who owns the constructs in Construct Hub?\">\n <Text>\n Constructs are user-generated content owned by the publishers of\n the individual packages. Each is governed by its own license terms\n chosen by its publisher (although only packages that were\n published to the npm registry under Apache, BSD, EPL, MPL-2.0, ISC\n and CDDL or MIT open source licenses are included in Construct\n Hub). License information can be accessed directly through the\n hyperlinked package page.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"Is the content served in Construct Hub meant to be consumed programmatically?\">\n <Text>\n No. The content displayed in the site is user-generated, with some\n display formatting. We do not advise that you consume constructs\n from the search results programmatically. Construct Hub is a\n search engine or portal intended to surface third-party content\n from a public endpoint. We provide these results for your\n convenience AS-IS in accordance with our{\" \"}\n <FAQLink href=\"https://constructs.dev/terms\">\n Construct Hub Site Terms\n </FAQLink>\n .\n </Text>\n </FAQItem>\n\n <FAQItem question=\"Which CDK types are available on the Construct Hub?\">\n <Text>\n Construct Hub currently has constructs for the CDK for\n CloudFormation (AWS CDK), CDK for Kubernetes (CDK8s) and CDK for\n Terraform (CDKTF). We are open to adding other construct-based\n tools as they evolve.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"What is CDK for CloudFormation (AWS CDK)?\">\n <Text>\n CDK for CloudFormation (AWS CDK) is an open-source software\n development framework for defining applications on AWS and\n reusable abstractions using familiar programming languages and\n rich object-oriented APIs. AWS CDK apps synthesize into standard\n AWS CloudFormation templates, which can be deployed to create\n infrastructure on AWS. See{\" \"}\n <FAQLink href=\"https://aws.amazon.com/cdk/\">\n AWS Cloud Development Kit\n </FAQLink>{\" \"}\n for more information.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"What is CDK for Kubernetes (CDK8s)?\">\n <Text>\n CDK for Kubernetes (CDK8s, pronounced “cd kates”) is an\n open-source software development framework for defining Kubernetes\n applications and reusable abstractions using familiar programming\n languages and rich object-oriented APIs. CDK8s apps synthesize\n into standard Kubernetes manifests that can be applied to any\n Kubernetes cluster. See{\" \"}\n <FAQLink href=\"https://cdk8s.io/\">CDK for Kubernetes</FAQLink> for\n more information.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"What is CDK for Terraform (CDKTF)?\">\n <Text>\n The community preview of the Cloud Development Kit for Terraform\n (CDKTF) allows you to define infrastructure using a familiar\n programming language such as TypeScript, Python, or Go, while\n leveraging the hundreds of providers and thousands of module\n definitions provided by Terraform and the Terraform ecosystem. See{\" \"}\n <FAQLink href=\"https://learn.hashicorp.com/tutorials/terraform/cdktf\">\n CDK for Terraform\n </FAQLink>{\" \"}\n for more information.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"What programming languages are supported?\">\n <Text>\n The Construct Hub GA supports constructs available for Python,\n TypeScript, Java and .NET. Support for Go will be included soon.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"Will Go be supported?\">\n <Text>\n Yes! We can’t promise exactly when, but it should be soon.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"Can I view the source code of a construct?\">\n <Text>\n Source code is usually available via the repository link provided\n by the construct’s publisher; this link appears on Construct Hub.\n We have noticed that the code in the linked repository can\n sometimes be newer or older than the code in the published\n package, so exercise care.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"How can I install a package?\">\n <Text>\n The details vary by construct. Click “Install” in the package page\n to see the construct’s installation instructions.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"How can I report abuse?\">\n <Text>\n Your trust is vital to the success of Construct Hub. If you\n believe a package contains suspicious code, violates its\n dependencies’ licenses, or is otherwise not behaving as a good\n citizen of the community, click &quot;Report abuse&quot; at the\n bottom of the package page and send us an email with explanations\n and evidence to support your claims. If we can verify the issue,\n we will take appropriate action, up to and including removing the\n package from Construct Hub.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"How can I report a bug or contribute code to a construct?\">\n <Text>\n Each package is owned by its publisher, so contributions, such as\n bug reports and pull requests, should be made via the repository\n link provided by the publisher. You may press the &quot;Provide\n feedback&quot; link at the package page to open a new issue in the\n package’s repository.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"Why isn’t my package displayed on Construct Hub?\">\n <Text>\n Construct Hub includes publicly-available constructs that are\n JSII-compatible and that were published to the npm Registry under\n Apache, BSD, EPL, MPL-2.0, ISC and CDDL or MIT open source\n licenses and with a CDK keyword: aws-cdk, cdk8s, or cdktf. If you\n believe your package qualifies, but it still does not appear in\n Construct Hub, please raise an issue{\" \"}\n <FAQLink href={`${CONSTRUCT_HUB_REPO_URL}/issues/new`}>\n here\n </FAQLink>\n .\n </Text>\n </FAQItem>\n\n <FAQItem question=\"Can I update my package after it has been displayed?\">\n <Text>\n Yes, you can and should! After you publish a new valid version to\n the public npm Registry, it should appear on Construct Hub in\n about 30 minutes.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"How does Construct Hub relates to the Construct Catalog?\">\n <Text>\n The Construct Catalog was built by the CDK community in\n collaboration with the AWS CDK team. Construct Hub is the official\n version of the Construct Catalog with ongoing support by the AWS\n CDK team and essentially replaces the Construct Catalog.{\" \"}\n <FAQLink href=\"https://awscdk.io/\">https://awscdk.io</FAQLink> now\n redirects to Construct Hub.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"Is there a cost for using third-party constructs from Construct Hub?\">\n <Text>\n All packages on Construct Hub are published under Apache, BSD,\n EPL, MPL-2.0, ISC and CDDL or MIT open source licenses and can be\n freely used in your applications. For details, review the\n package’s license via its repository link.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"How can I participate in the Construct Hub community?\">\n <Text>\n Construct Hub is itself an open-source construct! Join the{\" \"}\n <FAQLink href={CONSTRUCT_HUB_REPO_URL}>\n Construct Hub GitHub community\n </FAQLink>\n . You are also welcome to join the <code>#construct-hub-dev</code>{\" \"}\n channel in the{\" \"}\n <FAQLink href=\"https://cdk.dev/\">CDK community</FAQLink> Slack\n workspace.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"Is there a community slack channel for the CDK community?\">\n <Text>\n Please join the CDK Slack channel (\n <FAQLink href=\"https://cdk.dev/\">https://cdk.dev/</FAQLink>). This\n Slack channel is managed by the CDK community for the CDK\n community.\n </Text>\n </FAQItem>\n </FAQSection>\n\n <FAQSection heading=\"Getting Started\">\n <FAQItem question=\"Do I need a user account for Construct Hub?\">\n <Text>No. Construct Hub doesn’t require any signup.</Text>\n </FAQItem>\n\n <FAQItem question=\"How do I get started?\">\n <Text>\n Start by exploring featured, community and official libraries for\n the CDK of your interest. Run a free-text search to find libraries\n for your needs, then filter the results by your preferred\n programming language, CDK type, CDK major version and/or author\n type. To learn more about a library, click its card to see helpful\n information like metadata, README, API reference and code samples\n in your preferred programing language.\n </Text>\n </FAQItem>\n </FAQSection>\n </FAQSections>\n </FAQ>\n </Page>\n);\n"],"names":["FAQ","_ref","children","_jsxs","Box","bg","color","h","w","_jsx","py","width","FAQHeading","Heading","as","mx","textAlign","FAQItem","question","AccordionItem","AccordionButton","flex","ml","size","AccordionIcon","AccordionPanel","px","Text","fontSize","sx","p","marginTop","marginBottom","FAQLink","href","ExternalLink","hasWarning","textDecoration","FAQSection","heading","my","Accordion","allowMultiple","FAQSections","accordionProps","pageInfo","contribute","event","name","home","faq","packageProfile","search","siteTerms","notFound","page","pageType","join","Page","meta","pageName","trackPageView","usePageView","useEffect","feedUrls","useConfigValue","suffix","title","description","formattedTitle","concat","_Fragment","Helmet","process","content","charSet","map","_ref2","url","mimeType","rel","type","property","key","data","useConfig","FAQPage","defaultIndex","CONSTRUCT_HUB_REPO_URL"],"sourceRoot":""}