construct-hub 0.3.136 → 0.3.141
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitattributes +1 -0
- package/.jsii +2 -2
- package/lib/construct-hub.js +1 -1
- package/lib/package-sources/code-artifact.js +1 -1
- package/lib/package-sources/npmjs.js +1 -1
- package/lib/package-tag/index.js +2 -2
- package/lib/spdx-license.js +1 -1
- package/package.json +2 -2
- package/website/asset-manifest.json +40 -40
- package/website/assets/aqua-security.png +0 -0
- package/website/index.html +1 -1
- package/website/static/js/{0.75bd4211.chunk.js → 0.740a33f8.chunk.js} +2 -2
- package/website/static/js/{0.75bd4211.chunk.js.map → 0.740a33f8.chunk.js.map} +1 -1
- package/website/static/js/{1.de94dd4f.chunk.js → 1.64a9b795.chunk.js} +2 -2
- package/website/static/js/{1.de94dd4f.chunk.js.map → 1.64a9b795.chunk.js.map} +1 -1
- package/website/static/js/{10.63153bb8.chunk.js → 10.30ecd71a.chunk.js} +2 -2
- package/website/static/js/{10.63153bb8.chunk.js.map → 10.30ecd71a.chunk.js.map} +1 -1
- package/website/static/js/11.9e53aff3.chunk.js +2 -0
- package/website/static/js/11.9e53aff3.chunk.js.map +1 -0
- package/website/static/js/12.7d44c985.chunk.js +2 -0
- package/website/static/js/12.7d44c985.chunk.js.map +1 -0
- package/website/static/js/{13.d3fce156.chunk.js → 13.9c0ba67b.chunk.js} +2 -2
- package/website/static/js/{13.d3fce156.chunk.js.map → 13.9c0ba67b.chunk.js.map} +1 -1
- package/website/static/js/{14.e783508a.chunk.js → 14.924c14cb.chunk.js} +2 -2
- package/website/static/js/{14.e783508a.chunk.js.map → 14.924c14cb.chunk.js.map} +1 -1
- package/website/static/js/{15.06217ace.chunk.js → 15.c3f18810.chunk.js} +3 -3
- package/website/static/js/{15.06217ace.chunk.js.LICENSE.txt → 15.c3f18810.chunk.js.LICENSE.txt} +0 -0
- package/website/static/js/{15.06217ace.chunk.js.map → 15.c3f18810.chunk.js.map} +1 -1
- package/website/static/js/{16.0b2ec5e5.chunk.js → 16.84214b0e.chunk.js} +2 -2
- package/website/static/js/{16.0b2ec5e5.chunk.js.map → 16.84214b0e.chunk.js.map} +1 -1
- package/website/static/js/{4.91a3f4bb.chunk.js → 4.e051c405.chunk.js} +3 -3
- package/website/static/js/{4.91a3f4bb.chunk.js.LICENSE.txt → 4.e051c405.chunk.js.LICENSE.txt} +0 -0
- package/website/static/js/4.e051c405.chunk.js.map +1 -0
- package/website/static/js/5.05213cd1.chunk.js +3 -0
- package/website/static/js/{5.fb19ba3d.chunk.js.LICENSE.txt → 5.05213cd1.chunk.js.LICENSE.txt} +0 -0
- package/website/static/js/5.05213cd1.chunk.js.map +1 -0
- package/website/static/js/6.d05c0b08.chunk.js +2 -0
- package/website/static/js/6.d05c0b08.chunk.js.map +1 -0
- package/website/static/js/7.ebf6a179.chunk.js +2 -0
- package/website/static/js/7.ebf6a179.chunk.js.map +1 -0
- package/website/static/js/{8.73c2c7f3.chunk.js → 8.8e96ad43.chunk.js} +2 -2
- package/website/static/js/{8.73c2c7f3.chunk.js.map → 8.8e96ad43.chunk.js.map} +1 -1
- package/website/static/js/{9.8b744886.chunk.js → 9.174f64fc.chunk.js} +2 -2
- package/website/static/js/{9.8b744886.chunk.js.map → 9.174f64fc.chunk.js.map} +1 -1
- package/website/static/js/main.8038c15f.chunk.js +2 -0
- package/website/static/js/main.8038c15f.chunk.js.map +1 -0
- package/website/static/js/{runtime-main.b8868b3c.js → runtime-main.3666b7b5.js} +2 -2
- package/website/static/js/{runtime-main.b8868b3c.js.map → runtime-main.3666b7b5.js.map} +1 -1
- package/website/static/js/11.95a7aff0.chunk.js +0 -2
- package/website/static/js/11.95a7aff0.chunk.js.map +0 -1
- package/website/static/js/12.755ea3fc.chunk.js +0 -2
- package/website/static/js/12.755ea3fc.chunk.js.map +0 -1
- package/website/static/js/4.91a3f4bb.chunk.js.map +0 -1
- package/website/static/js/5.fb19ba3d.chunk.js +0 -3
- package/website/static/js/5.fb19ba3d.chunk.js.map +0 -1
- package/website/static/js/6.ca3456ca.chunk.js +0 -2
- package/website/static/js/6.ca3456ca.chunk.js.map +0 -1
- package/website/static/js/7.f1806927.chunk.js +0 -2
- package/website/static/js/7.f1806927.chunk.js.map +0 -1
- package/website/static/js/main.40e21094.chunk.js +0 -2
- package/website/static/js/main.40e21094.chunk.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/index.ts","../../../src/link-box.tsx","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/date-fns/esm/compareAsc/index.js","../node_modules/date-fns/esm/_lib/cloneObject/index.js","../node_modules/date-fns/esm/_lib/assign/index.js","../node_modules/date-fns/esm/formatDistanceStrict/index.js","../node_modules/date-fns/esm/formatDistanceToNowStrict/index.js","../../../src/use-tabs.ts","../../../src/tabs.tsx","../../../src/wrap.tsx"],"names":["LinkOverlay","forwardRef","className","ref","cx","rel","isExternal","target","__css","position","content","cursor","display","top","left","zIndex","width","height","LinkBox","_taggedTemplateLiteral","strings","raw","slice","Object","freeze","defineProperties","value","compareAsc","dirtyDateLeft","dirtyDateRight","requiredArgs","arguments","dateLeft","toDate","dateRight","diff","getTime","cloneObject","dirtyObject","TypeError","property","prototype","hasOwnProperty","call","assign","MILLISECONDS_IN_MINUTE","MINUTES_IN_DAY","MINUTES_IN_MONTH","MINUTES_IN_YEAR","formatDistanceStrict","dirtyDate","dirtyBaseDate","options","length","undefined","locale","defaultLocale","formatDistance","RangeError","comparison","isNaN","localizeOptions","addSuffix","Boolean","roundingMethodFn","roundingMethod","String","Math","floor","ceil","round","unit","milliseconds","minutes","timezoneOffset","getTimezoneOffsetInMilliseconds","dstNormalizedMinutes","seconds","roundedMinutes","hours","days","months","years","formatDistanceToNowStrict","dirtyOptions","Date","now","createDescendantContext","createContext","name","errorMessage","makeTabId","id","makeTabPanelId","Tabs","styles","useMultiStyleConfig","omitThemingProps","props","lazyBehavior","orientation","direction","React","defaultIndex","useControllableState","defaultValue","onChange","index","setFocusedIndex","descendants","useTabsDescendants","useId","selectedIndex","focusedIndex","setSelectedIndex","isManual","isLazy","htmlProps","useTabs","context","rootProps","omit","root","Tab","useStyles","tabProps","isFocusable","useTabsContext","useTabsDescendant","disabled","isDisabled","register","isSelected","clickableProps","useClickable","mergeRefs","onClick","callAllHandlers","role","tabIndex","type","onFocus","useTab","tabStyles","outline","alignItems","justifyContent","TabList","tablistProps","useTabsDescendantsContext","onKeyDown","event","nextTab","next","focus","prevTab","prev","isHorizontal","isVertical","eventKey","normalizeEventKey","ArrowStart","ArrowEnd","action","first","last","useTabList","tablistStyles","TabPanel","panelProps","children","hasBeenSelected","determineLazyBehavior","hidden","useTabPanel","tabpanel","TabPanels","panelsProps","getValidChildren","useTabPanels","tabpanels","TabIndicator","indicatorStyle","useSafeLayoutEffect","isUndefined","tab","setRect","offsetWidth","offsetHeight","requestAnimationFrame","setHasMeasured","cancelAnimationFrame","transitionProperty","transitionDuration","hasMeasured","transitionTimingFunction","useTabIndicator","style","indicator","Wrap","spacing","shouldWrapChildren","theme","mapResponsive","tokenToCSSVar","flexWrap","flexDirection","listStyleType","padding","margin","justify","align","childrenToRender","key","WrapItem"],"mappings":"mIAAA,sX,kfCWO,IAAMA,EAAcC,aAAkC,cAC3D,IAAM,EAAN,EAAM,aAAN,EAAM,SAAN,EAAM,IAA2BC,EAAjC,EAAiCA,UAAjC,iDACA,OACE,gBAAC,IAAD,UAEEC,IAFF,EAGED,UAAWE,YAAG,0BAHhB,GAIEC,IAAKC,EAAa,sBAJpB,EAKEC,OAAQD,EAAa,SALvB,EAMEE,MAAO,CACLC,SADK,SAEL,YAAa,CACXC,QADW,KAEXC,OAFW,UAGXC,QAHW,QAIXH,SAJW,WAKXI,IALW,EAMXC,KANW,EAOXC,OAPW,EAQXC,MARW,OASXC,OAAQ,eAeLC,EAAUjB,aAAgC,cAC/C,IAAEC,EAAR,EAAQA,UAAR,qBAEA,OACE,gBAAC,IAAD,OACEC,IADF,EAEEM,SAAS,YAFX,GAIEP,UAAWE,YAAG,iBAJhB,GAKEI,MAAO,CAEL,qDAAsD,CACpDC,SADoD,WAEpDM,OAAQ,W,iCC3DH,SAASI,EAAuBC,EAASC,GAKtD,OAJKA,IACHA,EAAMD,EAAQE,MAAM,IAGfC,OAAOC,OAAOD,OAAOE,iBAAiBL,EAAS,CACpDC,IAAK,CACHK,MAAOH,OAAOC,OAAOH,OAP3B,mC,kGCuCe,SAASM,EAAWC,EAAeC,GAChDC,YAAa,EAAGC,WAChB,IAAIC,EAAWC,YAAOL,GAClBM,EAAYD,YAAOJ,GACnBM,EAAOH,EAASI,UAAYF,EAAUE,UAE1C,OAAID,EAAO,GACD,EACCA,EAAO,EACT,EAEAA,ECjDI,SAASE,EAAYC,GAClC,OCFa,SAAgB/B,EAAQ+B,GACrC,GAAc,MAAV/B,EACF,MAAM,IAAIgC,UAAU,iEAKtB,IAAK,IAAIC,KAFTF,EAAcA,GAAe,GAGvBf,OAAOkB,UAAUC,eAAeC,KAAKL,EAAaE,KACpDjC,EAAOiC,GAAYF,EAAYE,IAInC,OAAOjC,EDXAqC,CAAO,GAAIN,G,aEIhBO,EAAyB,IACzBC,EAAiB,KACjBC,EAAmBD,MACnBE,EAAkBF,OAwJP,SAASG,EAAqBC,EAAWC,GACtD,IAAIC,EAAUrB,UAAUsB,OAAS,QAAsBC,IAAjBvB,UAAU,GAAmBA,UAAU,GAAK,GAClFD,YAAa,EAAGC,WAChB,IAAIwB,EAASH,EAAQG,QAAUC,IAE/B,IAAKD,EAAOE,eACV,MAAM,IAAIC,WAAW,wDAGvB,IAAIC,EAAahC,EAAWuB,EAAWC,GAEvC,GAAIS,MAAMD,GACR,MAAM,IAAID,WAAW,sBAGvB,IAGI1B,EACAE,EAJA2B,EAAkBxB,EAAYe,GAClCS,EAAgBC,UAAYC,QAAQX,EAAQU,WAC5CD,EAAgBF,WAAaA,EAIzBA,EAAa,GACf3B,EAAWC,YAAOkB,GAClBjB,EAAYD,YAAOiB,KAEnBlB,EAAWC,YAAOiB,GAClBhB,EAAYD,YAAOkB,IAGrB,IACIa,EADAC,EAA2C,MAA1Bb,EAAQa,eAAyB,QAAUC,OAAOd,EAAQa,gBAG/E,GAAuB,UAAnBA,EACFD,EAAmBG,KAAKC,WACnB,GAAuB,SAAnBH,EACTD,EAAmBG,KAAKE,SACnB,IAAuB,UAAnBJ,EAGT,MAAM,IAAIP,WAAW,qDAFrBM,EAAmBG,KAAKG,MAK1B,IAMIC,EANAC,EAAetC,EAAUE,UAAYJ,EAASI,UAC9CqC,EAAUD,EAAe3B,EACzB6B,EAAiBC,YAAgCzC,GAAayC,YAAgC3C,GAG9F4C,GAAwBJ,EAAeE,GAAkB7B,EAsB7D,GAAa,YAjBT0B,EAFgB,MAAhBnB,EAAQmB,KACNE,EAAU,EACL,SACEA,EAAU,GACZ,SACEA,EAAU3B,EACZ,OACE8B,EAAuB7B,EACzB,MACE6B,EAAuB5B,EACzB,QAEA,OAGFkB,OAAOd,EAAQmB,OAID,CACrB,IAAIM,EAAUb,EAAiBQ,EAAe,KAC9C,OAAOjB,EAAOE,eAAe,WAAYoB,EAAShB,GAC7C,GAAa,WAATU,EAAmB,CAC5B,IAAIO,EAAiBd,EAAiBS,GACtC,OAAOlB,EAAOE,eAAe,WAAYqB,EAAgBjB,GACpD,GAAa,SAATU,EAAiB,CAC1B,IAAIQ,EAAQf,EAAiBS,EAAU,IACvC,OAAOlB,EAAOE,eAAe,SAAUsB,EAAOlB,GACzC,GAAa,QAATU,EAAgB,CACzB,IAAIS,EAAOhB,EAAiBY,EAAuB9B,GACnD,OAAOS,EAAOE,eAAe,QAASuB,EAAMnB,GACvC,GAAa,UAATU,EAAkB,CAC3B,IAAIU,EAASjB,EAAiBY,EAAuB7B,GACrD,OAAkB,KAAXkC,GAAkC,UAAjB7B,EAAQmB,KAAmBhB,EAAOE,eAAe,SAAU,EAAGI,GAAmBN,EAAOE,eAAe,UAAWwB,EAAQpB,GAC7I,GAAa,SAATU,EAAiB,CAC1B,IAAIW,EAAQlB,EAAiBY,EAAuB5B,GACpD,OAAOO,EAAOE,eAAe,SAAUyB,EAAOrB,GAGhD,MAAM,IAAIH,WAAW,qEC7KR,SAASyB,EAA0BjC,EAAWkC,GAE3D,OADAtD,YAAa,EAAGC,WACTkB,EAAqBC,EAAWmC,KAAKC,MAAOF,K,2tBCnD9C,MAKHG,cALG,mBAAM,EAAN,KAAM,EAAN,KAAM,EAAN,KAAM,EAAN,KAmJA,MAAuCC,YAA6B,CACzEC,KADyE,cAEzEC,aACE,yGAHG,mBAAM,EAAN,KAAM,EAAN,KA2RP,SAASC,EAAUC,EAAnB,GACE,OAAUA,EAAV,WAGF,SAASC,EAAeD,EAAxB,GACE,OAAUA,EAAV,gB,sVC5ZK,IAAME,EAAO7F,aAA6B,cAC/C,IAAM8F,EAASC,YAAoB,OAAnC,GACA,EAAyCC,YAAzC,GAAM,EAAN,EAAM,SAAY/F,EAAlB,EAAkBA,UAElB,ED+CK,SAAiBgG,GACtB,IAAM,EAAN,EAAM,eAAN,EAAM,WAAN,EAAM,QAAN,EAAM,WAAN,EAAM,OAAN,IAMEC,oBANF,MAAM,UAAN,MAOEC,mBAPF,MAAM,aAAN,MAQEC,iBARF,MAQc,MARd,0GAwBA,EAAwCC,iBAAeC,EAAfD,EAAxC,sBAAM,EAAN,KAAM,EAAN,KAEA,EAA0CE,YAAqB,CAC7DC,aAAY,MAAEF,EAAF,EADiD,EAE7D7E,MAF6D,EAG7DgF,aAHF,mBAAM,EAAN,KAAM,EAAN,KASAJ,aAAgB,WACd,MAAIK,GACFC,OAED,CAJHN,IASA,IAAMO,EAAcC,IAOpB,MAAO,CACLlB,GAHSmB,YAAMb,EAAD,GAAhB,QAIEc,gBACAC,eACAC,mBACAN,kBACAO,WACAC,SACAjB,eACAC,cACAS,cACAR,YACAgB,aC/GyCC,CAF3C,+BAEM,EAAN,EAAM,UAAaT,EAAnB,EAAmBA,YAAnB,mCACMU,EAAUjB,WAAc,kBAAdA,IAAyB,CAAzC,IAEMkB,EAAYC,YAAKJ,EAAkB,CAAzC,aAEA,OACE,mBAAyB3F,MAAOmF,GAC9B,mBAAcnF,MAAO6F,GACnB,qBAAgB7F,MAAOqE,GACrB,gBAAC,IAAD,OACE7F,UAAWE,YAAG,cADhB,GAEED,IAAKA,GAFP,GAIEK,MAAOuF,EAAO2B,OARxB,SAkBE,EAAJ,IACE5B,sBASK,IAAM6B,EAAM1H,aAA+B,cAChD,IAAM8F,EAAS6B,cACTC,ED0LD,YACL,IAAM,EAAN,EAAM,WAAcC,EAApB,EAAoBA,YAApB,oCAEA,EAMIC,IANE,EAAN,EAAM,mBAAN,EAAM,WAAN,EAAM,KAAN,EAAM,gBAKJf,EALF,EAKEA,cAGF,EAA4BgB,EAAkB,CAC5CC,SAAUC,IAAeJ,IADrB,EAAN,EAAM,MAASK,EAAf,EAAeA,SAITC,EAAazB,IAAnB,EAeM0B,EAAiBC,YAAa,EAAD,MAEjCnI,IAAKoI,YAAUJ,EAAUjC,EAFQ,KAGjCgC,aACAJ,cACAU,QAASC,YAAgBvC,EAAD,SAlBV,WACdgB,WAsBF,eAEEtB,GAAID,EAAUC,EAFhB,GAGE8C,KAHF,MAIEC,SAAUP,EAAa,GAJzB,EAKEQ,KAPF,SAQE,gBANF,EAOE,gBAAiB/C,EAAeD,EAPlC,GAQEiD,QAASX,OAAa5E,EAAYmF,YAAgBvC,EAAD,SA3BnC,WACdU,MAEsBO,KADSe,IAA/B,IAGEhB,UCpNa4B,CAAO,EAAD,MAAa3I,SAE9B4I,EAA+B,EAAH,CAChCC,QADgC,IAEhCpI,QAFgC,OAGhCqI,WAHgC,SAIhCC,eAAgB,UACbnD,EALL,KAQA,OACE,gBAAC,IAAD,eAEE7F,UAAWE,YAAG,mBAAoB8F,EAFpC,WAGE1F,MAAOuI,QAKT,EAAJ,IACEpB,qBAWK,IAAMwB,EAAUlJ,aAAgC,cACrD,IAAMmJ,EDyED,YACL,MAAiDrB,IAA3C,EAAN,EAAM,eAAN,EAAM,YAA6B1B,EAAnC,EAAmCA,UAE7BQ,EAAcwC,IAEdC,EAAY,eACfC,YAA+B,MACxBC,EAAU,WACd,IAAMC,EAAO5C,cAAb,GACA,GAAU6C,YAAMD,EAANC,OAENC,EAAU,WACd,IAAMC,EAAO/C,cAAb,GACA,GAAU6C,YAAME,EAANF,OAWNG,EAAN,eAAqBzD,EACf0D,EAAN,aAAmB1D,EAEb2D,EAAWC,YAAjB,GAEMC,EAAa5D,sBAAnB,aACM6D,EAAW7D,uBAAjB,YAWM8D,GATmB,mBACvB,GAAc,kBAAMN,GAAgBF,OADb,cAEvB,GAAY,kBAAME,GAAgBL,OAFX,2BAGZ,kBAAMM,GAAcN,OAHR,yBAId,kBAAMM,GAAcH,OAJN,sBAjBR,WACf,IAAMS,EAAQvD,EAAd,eACA,GAAW6C,YAAMU,EAANV,SAeY,qBAbT,WACd,IAAMW,EAAOxD,EAAb,cACA,GAAU6C,YAAMW,EAANX,SAWa,GASzB,GAEA,IACEH,mBACAY,QAGJ,CAACtD,EAAaI,EAAcb,EA3C9B,IA8CA,eAEEsC,KAFF,UAGE,mBAHF,EAIEY,UAAWb,YAAgBvC,EAAD,eChIPoE,CAAW,EAAD,MAAanK,SAItCoK,EAAmC,EAAH,CACpC3J,QAAS,QAHIgH,cAEf,SAKA,OACE,gBAAC,IAAD,YAEE1H,UAAWE,YAAG,uBAAwB8F,EAFxC,WAGE1F,MAAO+J,QAKT,EAAJ,IACEpB,yBASK,IAAMqB,EAAWvK,aAAiC,cACvD,IAAMwK,EDuND,SAAqBvE,GAC1B,IAAM,EAAN,EAAM,aAAN,EAAM,GAAkBwE,EAAxB,EAAwBA,SAAxB,sCACA,EAAiC3C,IAA3B,EAAN,EAAM,OAAU5B,EAAhB,EAAgBA,aAEVwE,EAAkBrE,UAAxB,GAYA,OAXA,IACEqE,cAUF,GAEEhC,SAAU,GAFZ,GAIE+B,SAX2BE,YAAsB,CACjDD,gBAAiBA,EADgC,QAEjDvC,aACAhB,SACAjB,iBAOiCuE,EAJnC,KAKEhC,KALF,WAMEmC,QANF,EAOEjF,OC9OiBkF,CAAY,EAAD,MAAa3K,SACrC4F,EAAS6B,cAEf,OACE,gBAAC,IAAD,OACEoB,QAAQ,KADV,GAGE9I,UAAWE,YAAG,yBAA0B8F,EAH1C,WAIE1F,MAAOuF,EAAOgF,eAKhB,EAAJ,IACEP,0BAaK,IAAMQ,EAAY/K,aAAkC,cACzD,IAAMgL,EDkKD,YACL,IAAM1D,EAAUQ,IAEV,EAAN,EAAM,GAAMf,EAAZ,EAAYA,cAaZ,eAAmB0D,SAXGQ,YAAiBhF,EAAvC,UAEiB,KAAkB,qBACjC,iBAAmC,CACjCkC,WAAYzB,IADqB,EAEjCf,GAAIC,EAAeD,EAFc,GAIjC,kBAAmBD,EAAUC,EAAIe,UC9KjBwE,CAApB,GACMpF,EAAS6B,cAEf,OACE,gBAAC,IAAD,YAEE5G,MAFF,OAGEb,IAHF,EAIED,UAAWE,YAAG,0BAA2B8F,EAJ3C,WAKE1F,MAAOuF,EAAOqF,gBAKhB,EAAJ,IACEJ,2BAWK,IAAMK,EAAepL,aAC1B,cACE,IAAMqL,EDkMH,WACL,IAAM/D,EAAUQ,IACVlB,EAAcwC,IAEd,EAAN,EAAM,cAAiBjD,EAAvB,EAAuBA,YAEjByD,EAAN,eAAqBzD,EACf0D,EAP+C,aAOlC1D,EAGnB,EAAwB,YAAe,WACrC,SAAyB,CAAEtF,KAAF,EAAWE,MAAO,GAC3C,EAAuB,CAAEH,IAAF,EAAUI,OAAQ,QAAzC,KAFF,mBAAM,EAAN,KAAM,EAAN,KAMA,EAAsCqF,YAhBe,GAgBrD,mBAAM,EAAN,KAAM,EAAN,KAgCA,OA7BAiF,aAAoB,WAClB,IAAIC,YAAJ,IAEA,IAAMC,EAAM5E,OAAZ,GACA,IAAI2E,YAAJ,IAGA,GACEE,EAAQ,CAAE5K,KAAM2K,OAAR,WAA6BzK,MAAOyK,OAASE,cAIvD,GACED,EAAQ,CAAE7K,IAAK4K,OAAP,UAA2BxK,OAAQwK,OAASG,eAKtD,IAAMhG,EAAKiG,uBAAsB,WAC/BC,SAGF,OAAO,WACL,GACEC,6BAGH,CAAC/E,EAAe6C,EAAcC,EA3BjCyB,IA6BA,GACE9K,SADF,WAEEuL,mBAFF,2BAGEC,mBAAoBC,EAAc,QAHpC,MAIEC,yBAA0B,8BAJ5B,GClPyBC,GACjBC,EAAQ,EAAH,GACNnG,EADM,MAAX,GAKMH,EAAS6B,cAEf,OACE,gBAAC,IAAD,OACEzH,IAAKA,GADP,GAGED,UAAWE,YAAG,6BAA8B8F,EAH9C,WAIEmG,MAJF,EAKE7L,MAAOuF,EAAOuG,gBAMlB,EAAJ,IACEjB,+B,sfCrLK,IAAMkB,EAAOtM,aAA6B,cAC/C,QACEuM,eADF,MAAM,SAAN,EAAM,EAAN,EAAM,WAAN,EAAM,UAAN,EAAM,YAAN,EAAM,QAAN,EAAM,UAOJC,EAPF,EAOEA,mBAPF,6FAWM1G,EAAS,WACb,iBAAO,CACL,wBAA0B2G,YAAD,OACvBC,YAAcH,GAAU9K,YAAD,OAAWkL,wBAAc,QAAdA,GAF/B,OAGL,iBAHK,uCAILhM,QAJK,OAKLiM,SALK,OAML3D,eANK,EAOLD,WAPK,EAQL6D,cARK,EASLC,cATK,OAULC,QAVK,IAWLC,OAXK,iCAYL,mBAAoB,CAClBA,OAAQ,0BAGZ,CAACT,EAASU,EAASC,EAjBrB,IAoBMC,EAAmBX,EACrB,kBAA6B,qBAC3B,mBAAUY,IAAK1G,GAFsB,MAA3C,EAMA,OACE,gBAAC,IAAD,OAAYxG,IAAZ,EAAsBD,UAAWE,YAAG,cAAeF,IAAnD,GACE,gBAAC,IAAD,IAAWA,UAAX,oBAAyCM,MAAOuF,GAFpD,OASE,EAAJ,IACEwG,sBAKK,IAAMe,EAAWrN,aAAgC,cAChD,IAAEC,EAAR,EAAQA,UAAR,qBACA,OACE,gBAAC,IAAD,MACEC,IADF,EAEEK,MAAO,CAAEI,QAAF,OAAmBqI,WAAY,cACtC/I,UAAWE,YAAG,wBAAyBF,IAJ3C,OAUE,EAAJ,IACEoN","file":"static/js/9.8b744886.chunk.js","sourcesContent":["export * from \"@chakra-ui/color-mode\"\nexport * from \"@chakra-ui/styled-system\"\nexport { keyframes } from \"@emotion/react\"\nexport type { Interpolation } from \"@emotion/react\"\nexport * from \"./hooks\"\nexport * from \"./system.types\"\nexport * from \"./providers\"\nexport { omitThemingProps } from \"./system.utils\"\nexport * from \"./system\"\nexport * from \"./forward-ref\"\nexport * from \"./use-style-config\"\nexport { shouldForwardProp } from \"./should-forward-prop\"\n","import { chakra, forwardRef, HTMLChakraProps } from \"@chakra-ui/system\"\nimport { cx } from \"@chakra-ui/utils\"\nimport * as React from \"react\"\n\nexport interface LinkOverlayProps extends HTMLChakraProps<\"a\"> {\n /**\n * If `true`, the link will open in new tab\n */\n isExternal?: boolean\n}\n\nexport const LinkOverlay = forwardRef<LinkOverlayProps, \"a\">((props, ref) => {\n const { isExternal, target, rel, className, ...rest } = props\n return (\n <chakra.a\n {...rest}\n ref={ref}\n className={cx(\"chakra-linkbox__overlay\", className)}\n rel={isExternal ? \"noopener noreferrer\" : rel}\n target={isExternal ? \"_blank\" : target}\n __css={{\n position: \"static\",\n \"&::before\": {\n content: \"''\",\n cursor: \"inherit\",\n display: \"block\",\n position: \"absolute\",\n top: 0,\n left: 0,\n zIndex: 0,\n width: \"100%\",\n height: \"100%\",\n },\n }}\n />\n )\n})\n\nexport interface LinkBoxProps extends HTMLChakraProps<\"div\"> {}\n\n/**\n * `LinkBox` is used to wrap content areas within a link while ensuring semantic html\n *\n * @see Docs https://chakra-ui.com/docs/navigation/link-overlay\n * @see Resources https://www.sarasoueidan.com/blog/nested-links\n */\nexport const LinkBox = forwardRef<LinkBoxProps, \"div\">((props, ref) => {\n const { className, ...rest } = props\n\n return (\n <chakra.div\n ref={ref}\n position=\"relative\"\n {...rest}\n className={cx(\"chakra-linkbox\", className)}\n __css={{\n /* Elevate the links and abbreviations up */\n \"a[href]:not(.chakra-linkbox__overlay), abbr[title]\": {\n position: \"relative\",\n zIndex: 1,\n },\n }}\n />\n )\n})\n","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 */\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\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1; // 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(dirtyObject) {\n return assign({}, dirtyObject);\n}","export default function assign(target, dirtyObject) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n\n dirtyObject = dirtyObject || {};\n\n for (var property in dirtyObject) {\n if (Object.prototype.hasOwnProperty.call(dirtyObject, property)) {\n target[property] = dirtyObject[property];\n }\n }\n\n return target;\n}","import 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 defaultLocale from \"../locale/en-US/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 * @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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `distanceInWordsStrict` to `formatDistanceStrict`\n * to make its name consistent with `format` and `formatRelative`.\n *\n * - The order of arguments is swapped to make the function\n * consistent with `differenceIn...` functions.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsStrict(\n * new Date(2015, 0, 2),\n * new Date(2014, 6, 2)\n * ) //=> '6 months'\n *\n * // v2.0.0 onward\n *\n * formatDistanceStrict(\n * new Date(2014, 6, 2),\n * new Date(2015, 0, 2)\n * ) //=> '6 months'\n * ```\n *\n * - `partialMethod` option is renamed to `roundingMethod`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsStrict(\n * new Date(1986, 3, 4, 10, 32, 0),\n * new Date(1986, 3, 4, 10, 33, 1),\n * { partialMethod: 'ceil' }\n * ) //=> '2 minutes'\n *\n * // v2.0.0 onward\n *\n * formatDistanceStrict(\n * new Date(1986, 3, 4, 10, 33, 1),\n * new Date(1986, 3, 4, 10, 32, 0),\n * { roundingMethod: 'ceil' }\n * ) //=> '2 minutes'\n * ```\n *\n * - If `roundingMethod` is not specified, it now defaults to `round` instead of `floor`.\n *\n * - `unit` option now accepts one of the strings:\n * 'second', 'minute', 'hour', 'day', 'month' or 'year' instead of 's', 'm', 'h', 'd', 'M' or 'Y'\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsStrict(\n * new Date(1986, 3, 4, 10, 32, 0),\n * new Date(1986, 3, 4, 10, 33, 1),\n * { unit: 'm' }\n * )\n *\n * // v2.0.0 onward\n *\n * formatDistanceStrict(\n * new Date(1986, 3, 4, 10, 33, 1),\n * new Date(1986, 3, 4, 10, 32, 0),\n * { unit: 'minute' }\n * )\n * ```\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) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n requiredArgs(2, arguments);\n var locale = options.locale || defaultLocale;\n\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain localize.formatDistance property');\n }\n\n var comparison = compareAsc(dirtyDate, dirtyBaseDate);\n\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value');\n }\n\n var localizeOptions = cloneObject(options);\n localizeOptions.addSuffix = Boolean(options.addSuffix);\n localizeOptions.comparison = comparison;\n var dateLeft;\n var dateRight;\n\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate);\n dateRight = toDate(dirtyDate);\n } else {\n dateLeft = toDate(dirtyDate);\n dateRight = toDate(dirtyBaseDate);\n }\n\n var roundingMethod = options.roundingMethod == null ? 'round' : String(options.roundingMethod);\n var roundingMethodFn;\n\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\n var milliseconds = dateRight.getTime() - dateLeft.getTime();\n var minutes = milliseconds / MILLISECONDS_IN_MINUTE;\n var timezoneOffset = getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft); // Use DST-normalized difference in minutes for years, months and days;\n // use regular difference in minutes for hours, minutes and seconds.\n\n var dstNormalizedMinutes = (milliseconds - timezoneOffset) / MILLISECONDS_IN_MINUTE;\n var unit;\n\n if (options.unit == null) {\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(options.unit);\n } // 0 up to 60 seconds\n\n\n if (unit === 'second') {\n var seconds = roundingMethodFn(milliseconds / 1000);\n return locale.formatDistance('xSeconds', seconds, localizeOptions); // 1 up to 60 mins\n } else if (unit === 'minute') {\n var roundedMinutes = roundingMethodFn(minutes);\n return locale.formatDistance('xMinutes', roundedMinutes, localizeOptions); // 1 up to 24 hours\n } else if (unit === 'hour') {\n var hours = roundingMethodFn(minutes / 60);\n return locale.formatDistance('xHours', hours, localizeOptions); // 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); // 1 up to 12 months\n } else if (unit === 'month') {\n var months = roundingMethodFn(dstNormalizedMinutes / MINUTES_IN_MONTH);\n return months === 12 && options.unit !== 'month' ? locale.formatDistance('xYears', 1, localizeOptions) : locale.formatDistance('xMonths', months, localizeOptions); // 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\n throw new RangeError(\"unit must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\");\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 * var 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 * var result = formatDistanceToNowStrict(\n * new Date(2015, 0, 1, 0, 0, 15)\n * )\n * //=> '20 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * var 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 * var 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 August 2016 in Esperanto?\n * var eoLocale = require('date-fns/locale/eo')\n * var result = formatDistanceToNowStrict(\n * new Date(2016, 7, 1),\n * {locale: eoLocale}\n * )\n * //=> '1 jaro'\n */\n\nexport default function formatDistanceToNowStrict(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n return formatDistanceStrict(dirtyDate, Date.now(), dirtyOptions);\n}","import { useClickable, UseClickableProps } from \"@chakra-ui/clickable\"\nimport { createDescendantContext } from \"@chakra-ui/descendant\"\nimport {\n useControllableState,\n useId,\n useSafeLayoutEffect,\n} from \"@chakra-ui/hooks\"\nimport {\n createContext,\n EventKeyMap,\n getValidChildren,\n mergeRefs,\n} from \"@chakra-ui/react-utils\"\nimport {\n callAllHandlers,\n determineLazyBehavior,\n Dict,\n focus,\n isUndefined,\n LazyBehavior,\n normalizeEventKey,\n} from \"@chakra-ui/utils\"\nimport * as React from \"react\"\n\n/* -------------------------------------------------------------------------------------------------\n * Create context to track descendants and their indices\n * -----------------------------------------------------------------------------------------------*/\n\nexport const [\n TabsDescendantsProvider,\n useTabsDescendantsContext,\n useTabsDescendants,\n useTabsDescendant,\n] = createDescendantContext<HTMLButtonElement>()\n\n/* -------------------------------------------------------------------------------------------------\n * useTabs - The root react hook that manages all tab items\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface UseTabsProps {\n /**\n * The orientation of the tab list.\n */\n orientation?: \"vertical\" | \"horizontal\"\n /**\n * If `true`, the tabs will be manually activated and\n * display its panel by pressing Space or Enter.\n *\n * If `false`, the tabs will be automatically activated\n * and their panel is displayed when they receive focus.\n */\n isManual?: boolean\n /**\n * Callback when the index (controlled or un-controlled) changes.\n */\n onChange?: (index: number) => void\n /**\n * The index of the selected tab (in controlled mode)\n */\n index?: number\n /**\n * The initial index of the selected tab (in uncontrolled mode)\n */\n defaultIndex?: number\n /**\n * The id of the tab\n */\n id?: string\n /**\n * Performance 🚀:\n * If `true`, rendering of the tab panel's will be deferred until it is selected.\n */\n isLazy?: boolean\n /**\n * Performance 🚀:\n * The lazy behavior of tab panels' content when not active.\n * Only works when `isLazy={true}`\n *\n * - \"unmount\": The content of inactive tab panels are always unmounted.\n * - \"keepMounted\": The content of inactive tab panels is initially unmounted,\n * but stays mounted when selected.\n *\n * @default \"unmount\"\n */\n lazyBehavior?: LazyBehavior\n /**\n * The writing mode direction.\n *\n * - When in RTL, the left and right navigation is flipped\n */\n direction?: \"rtl\" | \"ltr\"\n}\n\n/**\n * Tabs hooks 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 */\nexport function useTabs(props: UseTabsProps) {\n const {\n defaultIndex,\n onChange,\n index,\n isManual,\n isLazy,\n lazyBehavior = \"unmount\",\n orientation = \"horizontal\",\n direction = \"ltr\",\n ...htmlProps\n } = props\n\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 const [focusedIndex, setFocusedIndex] = React.useState(defaultIndex ?? 0)\n\n const [selectedIndex, setSelectedIndex] = useControllableState({\n defaultValue: defaultIndex ?? 0,\n value: index,\n onChange,\n })\n\n /**\n * Sync focused `index` with controlled `selectedIndex` (which is the `props.index`)\n */\n React.useEffect(() => {\n if (index != null) {\n setFocusedIndex(index)\n }\n }, [index])\n\n /**\n * Think of `useDescendants` as a register for the tab nodes.\n */\n const descendants = useTabsDescendants()\n\n /**\n * Generate a unique id or use user-provided id for the tabs widget\n */\n const id = useId(props.id, `tabs`)\n\n return {\n id,\n selectedIndex,\n focusedIndex,\n setSelectedIndex,\n setFocusedIndex,\n isManual,\n isLazy,\n lazyBehavior,\n orientation,\n descendants,\n direction,\n htmlProps,\n }\n}\n\nexport type UseTabsReturn = Omit<\n ReturnType<typeof useTabs>,\n \"htmlProps\" | \"descendants\"\n>\n\nexport const [TabsProvider, useTabsContext] = createContext<UseTabsReturn>({\n name: \"TabsContext\",\n errorMessage:\n \"useTabsContext: `context` is undefined. Seems you forgot to wrap all tabs components within <Tabs />\",\n})\n\ntype Child = React.ReactElement<any>\n\nexport interface UseTabListProps {\n children?: React.ReactNode\n onKeyDown?: React.KeyboardEventHandler\n ref?: React.Ref<any>\n}\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 */\nexport function useTabList<P extends UseTabListProps>(props: P) {\n const { focusedIndex, orientation, direction } = useTabsContext()\n\n const descendants = useTabsDescendantsContext()\n\n const onKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n const nextTab = () => {\n const next = descendants.nextEnabled(focusedIndex)\n if (next) focus(next.node)\n }\n const prevTab = () => {\n const prev = descendants.prevEnabled(focusedIndex)\n if (prev) focus(prev.node)\n }\n const firstTab = () => {\n const first = descendants.firstEnabled()\n if (first) focus(first.node)\n }\n const lastTab = () => {\n const last = descendants.lastEnabled()\n if (last) focus(last.node)\n }\n\n const isHorizontal = orientation === \"horizontal\"\n const isVertical = orientation === \"vertical\"\n\n const eventKey = normalizeEventKey(event)\n\n const ArrowStart = direction === \"ltr\" ? \"ArrowLeft\" : \"ArrowRight\"\n const ArrowEnd = direction === \"ltr\" ? \"ArrowRight\" : \"ArrowLeft\"\n\n const keyMap: EventKeyMap = {\n [ArrowStart]: () => isHorizontal && prevTab(),\n [ArrowEnd]: () => isHorizontal && nextTab(),\n ArrowDown: () => isVertical && nextTab(),\n ArrowUp: () => isVertical && prevTab(),\n Home: firstTab,\n End: lastTab,\n }\n\n const action = keyMap[eventKey]\n\n if (action) {\n event.preventDefault()\n action(event)\n }\n },\n [descendants, focusedIndex, orientation, direction],\n )\n\n return {\n ...props,\n role: \"tablist\",\n \"aria-orientation\": orientation,\n onKeyDown: callAllHandlers(props.onKeyDown, onKeyDown),\n }\n}\n\nexport type UseTabListReturn = ReturnType<typeof useTabList>\n\nexport interface UseTabOptions {\n id?: string\n isSelected?: boolean\n panelId?: string\n /**\n * If `true`, the `Tab` won't be toggleable\n */\n isDisabled?: boolean\n}\n\nexport interface UseTabProps\n extends Omit<UseClickableProps, \"color\">,\n UseTabOptions {}\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 */\nexport function useTab<P extends UseTabProps>(props: P) {\n const { isDisabled, isFocusable, ...htmlProps } = props\n\n const {\n setSelectedIndex,\n isManual,\n id,\n setFocusedIndex,\n selectedIndex,\n } = useTabsContext()\n\n const { index, register } = useTabsDescendant({\n disabled: isDisabled && !isFocusable,\n })\n\n const isSelected = index === selectedIndex\n\n const onClick = () => {\n setSelectedIndex(index)\n }\n\n const onFocus = () => {\n setFocusedIndex(index)\n const isDisabledButFocusable = isDisabled && isFocusable\n const shouldSelect = !isManual && !isDisabledButFocusable\n if (shouldSelect) {\n setSelectedIndex(index)\n }\n }\n\n const clickableProps = useClickable({\n ...htmlProps,\n ref: mergeRefs(register, props.ref),\n isDisabled,\n isFocusable,\n onClick: callAllHandlers(props.onClick, onClick),\n })\n\n const type: \"button\" | \"submit\" | \"reset\" = \"button\"\n\n return {\n ...clickableProps,\n id: makeTabId(id, index),\n role: \"tab\",\n tabIndex: isSelected ? 0 : -1,\n type,\n \"aria-selected\": isSelected,\n \"aria-controls\": makeTabPanelId(id, index),\n onFocus: isDisabled ? undefined : callAllHandlers(props.onFocus, onFocus),\n }\n}\n\nexport interface UseTabPanelsProps {\n children?: React.ReactNode\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 */\nexport function useTabPanels<P extends UseTabPanelsProps>(props: P) {\n const context = useTabsContext()\n\n const { id, selectedIndex } = context\n\n const validChildren = getValidChildren(props.children)\n\n const children = validChildren.map((child, index) =>\n React.cloneElement(child as 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\n return { ...props, 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 */\nexport function useTabPanel(props: Dict) {\n const { isSelected, id, children, ...htmlProps } = props\n const { isLazy, lazyBehavior } = useTabsContext()\n\n const hasBeenSelected = React.useRef(false)\n if (isSelected) {\n hasBeenSelected.current = true\n }\n\n const shouldRenderChildren = determineLazyBehavior({\n hasBeenSelected: hasBeenSelected.current,\n isSelected,\n isLazy,\n lazyBehavior,\n })\n\n return {\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,\n }\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 */\nexport function useTabIndicator(): React.CSSProperties {\n const context = useTabsContext()\n const descendants = useTabsDescendantsContext()\n\n const { selectedIndex, orientation } = context\n\n const isHorizontal = orientation === \"horizontal\"\n const isVertical = orientation === \"vertical\"\n\n // Get the clientRect of the selected tab\n const [rect, setRect] = React.useState(() => {\n if (isHorizontal) return { left: 0, width: 0 }\n if (isVertical) return { top: 0, height: 0 }\n return undefined\n })\n\n const [hasMeasured, setHasMeasured] = React.useState(false)\n\n // Update the selected tab rect when the selectedIndex changes\n useSafeLayoutEffect(() => {\n if (isUndefined(selectedIndex)) return undefined\n\n const tab = descendants.item(selectedIndex)\n if (isUndefined(tab)) return undefined\n\n // Horizontal Tab: Calculate width and left distance\n if (isHorizontal) {\n setRect({ left: tab.node.offsetLeft, width: tab.node.offsetWidth })\n }\n\n // Vertical Tab: Calculate height and top distance\n if (isVertical) {\n setRect({ top: tab.node.offsetTop, height: tab.node.offsetHeight })\n }\n\n // Prevent unwanted transition from 0 to measured rect\n // by setting the measured state in the next tick\n const id = requestAnimationFrame(() => {\n setHasMeasured(true)\n })\n\n return () => {\n if (id) {\n cancelAnimationFrame(id)\n }\n }\n }, [selectedIndex, isHorizontal, isVertical, descendants])\n\n return {\n position: \"absolute\",\n transitionProperty: \"left, right, top, bottom\",\n transitionDuration: hasMeasured ? \"200ms\" : \"0ms\",\n transitionTimingFunction: \"cubic-bezier(0, 0, 0.2, 1)\",\n ...rect,\n }\n}\n\nfunction makeTabId(id: string, index: number) {\n return `${id}--tab-${index}`\n}\n\nfunction makeTabPanelId(id: string, index: number) {\n return `${id}--tabpanel-${index}`\n}\n","import {\n chakra,\n forwardRef,\n omitThemingProps,\n StylesProvider,\n SystemStyleObject,\n ThemingProps,\n useMultiStyleConfig,\n useStyles,\n HTMLChakraProps,\n} from \"@chakra-ui/system\"\nimport { cx, omit, __DEV__ } from \"@chakra-ui/utils\"\nimport * as React from \"react\"\nimport {\n TabsDescendantsProvider,\n TabsProvider,\n useTab,\n useTabIndicator,\n useTabList,\n UseTabListProps,\n UseTabOptions,\n useTabPanel,\n useTabPanels,\n useTabs,\n UseTabsProps,\n} from \"./use-tabs\"\n\ninterface TabsOptions {\n /**\n * If `true`, tabs will stretch to width of the tablist.\n */\n isFitted?: boolean\n /**\n * The alignment of the tabs\n */\n align?: \"start\" | \"end\" | \"center\"\n}\n\nexport interface TabsProps\n extends UseTabsProps,\n ThemingProps<\"Tabs\">,\n Omit<HTMLChakraProps<\"div\">, \"onChange\">,\n TabsOptions {\n children: React.ReactNode\n}\n\n/**\n * Tabs\n *\n * Provides context and logic for all tabs components.\n */\nexport const Tabs = forwardRef<TabsProps, \"div\">((props, ref) => {\n const styles = useMultiStyleConfig(\"Tabs\", props)\n const { children, className, ...rest } = omitThemingProps(props)\n\n const { htmlProps, descendants, ...ctx } = useTabs(rest)\n const context = React.useMemo(() => ctx, [ctx])\n\n const rootProps = omit(htmlProps as any, [\"isFitted\"])\n\n return (\n <TabsDescendantsProvider value={descendants}>\n <TabsProvider value={context}>\n <StylesProvider value={styles}>\n <chakra.div\n className={cx(\"chakra-tabs\", className)}\n ref={ref}\n {...rootProps}\n __css={styles.root}\n >\n {children}\n </chakra.div>\n </StylesProvider>\n </TabsProvider>\n </TabsDescendantsProvider>\n )\n})\n\nif (__DEV__) {\n Tabs.displayName = \"Tabs\"\n}\n\nexport interface TabProps extends UseTabOptions, HTMLChakraProps<\"button\"> {}\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 */\nexport const Tab = forwardRef<TabProps, \"button\">((props, ref) => {\n const styles = useStyles()\n const tabProps = useTab({ ...props, ref })\n\n const tabStyles: SystemStyleObject = {\n outline: \"0\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n ...styles.tab,\n }\n\n return (\n <chakra.button\n {...tabProps}\n className={cx(\"chakra-tabs__tab\", props.className)}\n __css={tabStyles}\n />\n )\n})\n\nif (__DEV__) {\n Tab.displayName = \"Tab\"\n}\n\nexport interface TabListProps\n extends UseTabListProps,\n Omit<HTMLChakraProps<\"div\">, \"onKeyDown\" | \"ref\"> {}\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 */\nexport const TabList = forwardRef<TabListProps, \"div\">((props, ref) => {\n const tablistProps = useTabList({ ...props, ref })\n\n const styles = useStyles()\n\n const tablistStyles: SystemStyleObject = {\n display: \"flex\",\n ...styles.tablist,\n }\n\n return (\n <chakra.div\n {...tablistProps}\n className={cx(\"chakra-tabs__tablist\", props.className)}\n __css={tablistStyles}\n />\n )\n})\n\nif (__DEV__) {\n TabList.displayName = \"TabList\"\n}\n\nexport interface TabPanelProps extends HTMLChakraProps<\"div\"> {}\n\n/**\n * TabPanel\n * Used to render the content for a specific tab.\n */\nexport const TabPanel = forwardRef<TabPanelProps, \"div\">((props, ref) => {\n const panelProps = useTabPanel({ ...props, ref })\n const styles = useStyles()\n\n return (\n <chakra.div\n outline=\"0\"\n {...panelProps}\n className={cx(\"chakra-tabs__tab-panel\", props.className)}\n __css={styles.tabpanel}\n />\n )\n})\n\nif (__DEV__) {\n TabPanel.displayName = \"TabPanel\"\n}\n\nexport interface TabPanelsProps extends HTMLChakraProps<\"div\"> {}\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 */\nexport const TabPanels = forwardRef<TabPanelsProps, \"div\">((props, ref) => {\n const panelsProps = useTabPanels(props)\n const styles = useStyles()\n\n return (\n <chakra.div\n {...panelsProps}\n width=\"100%\"\n ref={ref}\n className={cx(\"chakra-tabs__tab-panels\", props.className)}\n __css={styles.tabpanels}\n />\n )\n})\n\nif (__DEV__) {\n TabPanels.displayName = \"TabPanels\"\n}\n\nexport interface TabIndicatorProps extends HTMLChakraProps<\"div\"> {}\n\n/**\n * TabIndicator\n *\n * Used to render an active tab indicator that animates between\n * selected tabs.\n */\nexport const TabIndicator = forwardRef<TabIndicatorProps, \"div\">(\n (props, ref) => {\n const indicatorStyle = useTabIndicator()\n const style = {\n ...props.style,\n ...indicatorStyle,\n }\n\n const styles = useStyles()\n\n return (\n <chakra.div\n ref={ref}\n {...props}\n className={cx(\"chakra-tabs__tab-indicator\", props.className)}\n style={style}\n __css={styles.indicator}\n />\n )\n },\n)\n\nif (__DEV__) {\n TabIndicator.displayName = \"TabIndicator\"\n}\n","import {\n chakra,\n forwardRef,\n HTMLChakraProps,\n SystemProps,\n tokenToCSSVar,\n} from \"@chakra-ui/system\"\nimport { cx, Dict, mapResponsive, __DEV__ } from \"@chakra-ui/utils\"\nimport * as React from \"react\"\n\nexport interface WrapProps extends HTMLChakraProps<\"div\"> {\n /**\n * The space between the each child (even if it wraps)\n * @type SystemProps[\"margin\"]\n */\n spacing?: SystemProps[\"margin\"]\n /**\n * The `justify-content` value (for cross-axis alignment)\n * @type SystemProps[\"justifyContent\"]\n */\n justify?: SystemProps[\"justifyContent\"]\n /**\n * The `align-items` value (for main axis alignment)\n * @type SystemProps[\"alignItems\"]\n */\n align?: SystemProps[\"alignItems\"]\n /**\n * The `flex-direction` value\n * @type SystemProps[\"flexDirection\"]\n */\n direction?: SystemProps[\"flexDirection\"]\n /**\n * If `true`, the children will be wrapped in a `WrapItem`\n */\n shouldWrapChildren?: boolean\n}\n\n/**\n * Layout component used to stack elements that differ in length\n * and are liable to wrap.\n *\n * Common use cases:\n * - Buttons that appear together at the end of forms\n * - Lists of tags and chips\n *\n * @see Docs https://chakra-ui.com/wrap\n */\nexport const Wrap = forwardRef<WrapProps, \"div\">((props, ref) => {\n const {\n spacing = \"0.5rem\",\n children,\n justify,\n direction,\n align,\n className,\n shouldWrapChildren,\n ...rest\n } = props\n\n const styles = React.useMemo(\n () => ({\n \"--chakra-wrap-spacing\": (theme: Dict) =>\n mapResponsive(spacing, (value) => tokenToCSSVar(\"space\", value)(theme)),\n \"--wrap-spacing\": \"calc(var(--chakra-wrap-spacing) / 2)\",\n display: \"flex\",\n flexWrap: \"wrap\",\n justifyContent: justify,\n alignItems: align,\n flexDirection: direction,\n listStyleType: \"none\",\n padding: \"0\",\n margin: \"calc(var(--wrap-spacing) * -1)\",\n \"& > *:not(style)\": {\n margin: \"var(--wrap-spacing)\",\n },\n }),\n [spacing, justify, align, direction],\n )\n\n const childrenToRender = shouldWrapChildren\n ? React.Children.map(children, (child, index) => (\n <WrapItem key={index}>{child}</WrapItem>\n ))\n : children\n\n return (\n <chakra.div ref={ref} className={cx(\"chakra-wrap\", className)} {...rest}>\n <chakra.ul className=\"chakra-wrap__list\" __css={styles}>\n {childrenToRender}\n </chakra.ul>\n </chakra.div>\n )\n})\n\nif (__DEV__) {\n Wrap.displayName = \"Wrap\"\n}\n\nexport interface WrapItemProps extends HTMLChakraProps<\"li\"> {}\n\nexport const WrapItem = forwardRef<WrapItemProps, \"li\">((props, ref) => {\n const { className, ...rest } = props\n return (\n <chakra.li\n ref={ref}\n __css={{ display: \"flex\", alignItems: \"flex-start\" }}\n className={cx(\"chakra-wrap__listitem\", className)}\n {...rest}\n />\n )\n})\n\nif (__DEV__) {\n WrapItem.displayName = \"WrapItem\"\n}\n"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["../../../src/index.ts","../../../src/link-box.tsx","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/date-fns/esm/compareAsc/index.js","../node_modules/date-fns/esm/_lib/cloneObject/index.js","../node_modules/date-fns/esm/_lib/assign/index.js","../node_modules/date-fns/esm/formatDistanceStrict/index.js","../node_modules/date-fns/esm/formatDistanceToNowStrict/index.js","../../../src/use-tabs.ts","../../../src/tabs.tsx","../../../src/wrap.tsx"],"names":["LinkOverlay","forwardRef","className","ref","cx","rel","isExternal","target","__css","position","content","cursor","display","top","left","zIndex","width","height","LinkBox","_taggedTemplateLiteral","strings","raw","slice","Object","freeze","defineProperties","value","compareAsc","dirtyDateLeft","dirtyDateRight","requiredArgs","arguments","dateLeft","toDate","dateRight","diff","getTime","cloneObject","dirtyObject","TypeError","property","prototype","hasOwnProperty","call","assign","MILLISECONDS_IN_MINUTE","MINUTES_IN_DAY","MINUTES_IN_MONTH","MINUTES_IN_YEAR","formatDistanceStrict","dirtyDate","dirtyBaseDate","options","length","undefined","locale","defaultLocale","formatDistance","RangeError","comparison","isNaN","localizeOptions","addSuffix","Boolean","roundingMethodFn","roundingMethod","String","Math","floor","ceil","round","unit","milliseconds","minutes","timezoneOffset","getTimezoneOffsetInMilliseconds","dstNormalizedMinutes","seconds","roundedMinutes","hours","days","months","years","formatDistanceToNowStrict","dirtyOptions","Date","now","createDescendantContext","createContext","name","errorMessage","makeTabId","id","makeTabPanelId","Tabs","styles","useMultiStyleConfig","omitThemingProps","props","lazyBehavior","orientation","direction","React","defaultIndex","useControllableState","defaultValue","onChange","index","setFocusedIndex","descendants","useTabsDescendants","useId","selectedIndex","focusedIndex","setSelectedIndex","isManual","isLazy","htmlProps","useTabs","context","rootProps","omit","root","Tab","useStyles","tabProps","isFocusable","useTabsContext","useTabsDescendant","disabled","isDisabled","register","isSelected","clickableProps","useClickable","mergeRefs","onClick","callAllHandlers","role","tabIndex","type","onFocus","useTab","tabStyles","outline","alignItems","justifyContent","TabList","tablistProps","useTabsDescendantsContext","onKeyDown","event","nextTab","next","focus","prevTab","prev","isHorizontal","isVertical","eventKey","normalizeEventKey","ArrowStart","ArrowEnd","action","first","last","useTabList","tablistStyles","TabPanel","panelProps","children","hasBeenSelected","determineLazyBehavior","hidden","useTabPanel","tabpanel","TabPanels","panelsProps","getValidChildren","useTabPanels","tabpanels","TabIndicator","indicatorStyle","useSafeLayoutEffect","isUndefined","tab","setRect","offsetWidth","offsetHeight","requestAnimationFrame","setHasMeasured","cancelAnimationFrame","transitionProperty","transitionDuration","hasMeasured","transitionTimingFunction","useTabIndicator","style","indicator","Wrap","spacing","shouldWrapChildren","theme","mapResponsive","tokenToCSSVar","flexWrap","flexDirection","listStyleType","padding","margin","justify","align","childrenToRender","key","WrapItem"],"mappings":"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","file":"static/js/9.174f64fc.chunk.js","sourcesContent":["export * from \"@chakra-ui/color-mode\"\nexport * from \"@chakra-ui/styled-system\"\nexport { keyframes } from \"@emotion/react\"\nexport type { Interpolation } from \"@emotion/react\"\nexport * from \"./hooks\"\nexport * from \"./system.types\"\nexport * from \"./providers\"\nexport { omitThemingProps } from \"./system.utils\"\nexport * from \"./system\"\nexport * from \"./forward-ref\"\nexport * from \"./use-style-config\"\nexport { shouldForwardProp } from \"./should-forward-prop\"\n","import { chakra, forwardRef, HTMLChakraProps } from \"@chakra-ui/system\"\nimport { cx } from \"@chakra-ui/utils\"\nimport * as React from \"react\"\n\nexport interface LinkOverlayProps extends HTMLChakraProps<\"a\"> {\n /**\n * If `true`, the link will open in new tab\n */\n isExternal?: boolean\n}\n\nexport const LinkOverlay = forwardRef<LinkOverlayProps, \"a\">((props, ref) => {\n const { isExternal, target, rel, className, ...rest } = props\n return (\n <chakra.a\n {...rest}\n ref={ref}\n className={cx(\"chakra-linkbox__overlay\", className)}\n rel={isExternal ? \"noopener noreferrer\" : rel}\n target={isExternal ? \"_blank\" : target}\n __css={{\n position: \"static\",\n \"&::before\": {\n content: \"''\",\n cursor: \"inherit\",\n display: \"block\",\n position: \"absolute\",\n top: 0,\n left: 0,\n zIndex: 0,\n width: \"100%\",\n height: \"100%\",\n },\n }}\n />\n )\n})\n\nexport interface LinkBoxProps extends HTMLChakraProps<\"div\"> {}\n\n/**\n * `LinkBox` is used to wrap content areas within a link while ensuring semantic html\n *\n * @see Docs https://chakra-ui.com/docs/navigation/link-overlay\n * @see Resources https://www.sarasoueidan.com/blog/nested-links\n */\nexport const LinkBox = forwardRef<LinkBoxProps, \"div\">((props, ref) => {\n const { className, ...rest } = props\n\n return (\n <chakra.div\n ref={ref}\n position=\"relative\"\n {...rest}\n className={cx(\"chakra-linkbox\", className)}\n __css={{\n /* Elevate the links and abbreviations up */\n \"a[href]:not(.chakra-linkbox__overlay), abbr[title]\": {\n position: \"relative\",\n zIndex: 1,\n },\n }}\n />\n )\n})\n","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 */\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\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1; // 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(dirtyObject) {\n return assign({}, dirtyObject);\n}","export default function assign(target, dirtyObject) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n\n dirtyObject = dirtyObject || {};\n\n for (var property in dirtyObject) {\n if (Object.prototype.hasOwnProperty.call(dirtyObject, property)) {\n target[property] = dirtyObject[property];\n }\n }\n\n return target;\n}","import 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 defaultLocale from \"../locale/en-US/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 * @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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `distanceInWordsStrict` to `formatDistanceStrict`\n * to make its name consistent with `format` and `formatRelative`.\n *\n * - The order of arguments is swapped to make the function\n * consistent with `differenceIn...` functions.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsStrict(\n * new Date(2015, 0, 2),\n * new Date(2014, 6, 2)\n * ) //=> '6 months'\n *\n * // v2.0.0 onward\n *\n * formatDistanceStrict(\n * new Date(2014, 6, 2),\n * new Date(2015, 0, 2)\n * ) //=> '6 months'\n * ```\n *\n * - `partialMethod` option is renamed to `roundingMethod`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsStrict(\n * new Date(1986, 3, 4, 10, 32, 0),\n * new Date(1986, 3, 4, 10, 33, 1),\n * { partialMethod: 'ceil' }\n * ) //=> '2 minutes'\n *\n * // v2.0.0 onward\n *\n * formatDistanceStrict(\n * new Date(1986, 3, 4, 10, 33, 1),\n * new Date(1986, 3, 4, 10, 32, 0),\n * { roundingMethod: 'ceil' }\n * ) //=> '2 minutes'\n * ```\n *\n * - If `roundingMethod` is not specified, it now defaults to `round` instead of `floor`.\n *\n * - `unit` option now accepts one of the strings:\n * 'second', 'minute', 'hour', 'day', 'month' or 'year' instead of 's', 'm', 'h', 'd', 'M' or 'Y'\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsStrict(\n * new Date(1986, 3, 4, 10, 32, 0),\n * new Date(1986, 3, 4, 10, 33, 1),\n * { unit: 'm' }\n * )\n *\n * // v2.0.0 onward\n *\n * formatDistanceStrict(\n * new Date(1986, 3, 4, 10, 33, 1),\n * new Date(1986, 3, 4, 10, 32, 0),\n * { unit: 'minute' }\n * )\n * ```\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) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n requiredArgs(2, arguments);\n var locale = options.locale || defaultLocale;\n\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain localize.formatDistance property');\n }\n\n var comparison = compareAsc(dirtyDate, dirtyBaseDate);\n\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value');\n }\n\n var localizeOptions = cloneObject(options);\n localizeOptions.addSuffix = Boolean(options.addSuffix);\n localizeOptions.comparison = comparison;\n var dateLeft;\n var dateRight;\n\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate);\n dateRight = toDate(dirtyDate);\n } else {\n dateLeft = toDate(dirtyDate);\n dateRight = toDate(dirtyBaseDate);\n }\n\n var roundingMethod = options.roundingMethod == null ? 'round' : String(options.roundingMethod);\n var roundingMethodFn;\n\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\n var milliseconds = dateRight.getTime() - dateLeft.getTime();\n var minutes = milliseconds / MILLISECONDS_IN_MINUTE;\n var timezoneOffset = getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft); // Use DST-normalized difference in minutes for years, months and days;\n // use regular difference in minutes for hours, minutes and seconds.\n\n var dstNormalizedMinutes = (milliseconds - timezoneOffset) / MILLISECONDS_IN_MINUTE;\n var unit;\n\n if (options.unit == null) {\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(options.unit);\n } // 0 up to 60 seconds\n\n\n if (unit === 'second') {\n var seconds = roundingMethodFn(milliseconds / 1000);\n return locale.formatDistance('xSeconds', seconds, localizeOptions); // 1 up to 60 mins\n } else if (unit === 'minute') {\n var roundedMinutes = roundingMethodFn(minutes);\n return locale.formatDistance('xMinutes', roundedMinutes, localizeOptions); // 1 up to 24 hours\n } else if (unit === 'hour') {\n var hours = roundingMethodFn(minutes / 60);\n return locale.formatDistance('xHours', hours, localizeOptions); // 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); // 1 up to 12 months\n } else if (unit === 'month') {\n var months = roundingMethodFn(dstNormalizedMinutes / MINUTES_IN_MONTH);\n return months === 12 && options.unit !== 'month' ? locale.formatDistance('xYears', 1, localizeOptions) : locale.formatDistance('xMonths', months, localizeOptions); // 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\n throw new RangeError(\"unit must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\");\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 * var 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 * var result = formatDistanceToNowStrict(\n * new Date(2015, 0, 1, 0, 0, 15)\n * )\n * //=> '20 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * var 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 * var 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 August 2016 in Esperanto?\n * var eoLocale = require('date-fns/locale/eo')\n * var result = formatDistanceToNowStrict(\n * new Date(2016, 7, 1),\n * {locale: eoLocale}\n * )\n * //=> '1 jaro'\n */\n\nexport default function formatDistanceToNowStrict(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n return formatDistanceStrict(dirtyDate, Date.now(), dirtyOptions);\n}","import { useClickable, UseClickableProps } from \"@chakra-ui/clickable\"\nimport { createDescendantContext } from \"@chakra-ui/descendant\"\nimport {\n useControllableState,\n useId,\n useSafeLayoutEffect,\n} from \"@chakra-ui/hooks\"\nimport {\n createContext,\n EventKeyMap,\n getValidChildren,\n mergeRefs,\n} from \"@chakra-ui/react-utils\"\nimport {\n callAllHandlers,\n determineLazyBehavior,\n Dict,\n focus,\n isUndefined,\n LazyBehavior,\n normalizeEventKey,\n} from \"@chakra-ui/utils\"\nimport * as React from \"react\"\n\n/* -------------------------------------------------------------------------------------------------\n * Create context to track descendants and their indices\n * -----------------------------------------------------------------------------------------------*/\n\nexport const [\n TabsDescendantsProvider,\n useTabsDescendantsContext,\n useTabsDescendants,\n useTabsDescendant,\n] = createDescendantContext<HTMLButtonElement>()\n\n/* -------------------------------------------------------------------------------------------------\n * useTabs - The root react hook that manages all tab items\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface UseTabsProps {\n /**\n * The orientation of the tab list.\n */\n orientation?: \"vertical\" | \"horizontal\"\n /**\n * If `true`, the tabs will be manually activated and\n * display its panel by pressing Space or Enter.\n *\n * If `false`, the tabs will be automatically activated\n * and their panel is displayed when they receive focus.\n */\n isManual?: boolean\n /**\n * Callback when the index (controlled or un-controlled) changes.\n */\n onChange?: (index: number) => void\n /**\n * The index of the selected tab (in controlled mode)\n */\n index?: number\n /**\n * The initial index of the selected tab (in uncontrolled mode)\n */\n defaultIndex?: number\n /**\n * The id of the tab\n */\n id?: string\n /**\n * Performance 🚀:\n * If `true`, rendering of the tab panel's will be deferred until it is selected.\n */\n isLazy?: boolean\n /**\n * Performance 🚀:\n * The lazy behavior of tab panels' content when not active.\n * Only works when `isLazy={true}`\n *\n * - \"unmount\": The content of inactive tab panels are always unmounted.\n * - \"keepMounted\": The content of inactive tab panels is initially unmounted,\n * but stays mounted when selected.\n *\n * @default \"unmount\"\n */\n lazyBehavior?: LazyBehavior\n /**\n * The writing mode direction.\n *\n * - When in RTL, the left and right navigation is flipped\n */\n direction?: \"rtl\" | \"ltr\"\n}\n\n/**\n * Tabs hooks 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 */\nexport function useTabs(props: UseTabsProps) {\n const {\n defaultIndex,\n onChange,\n index,\n isManual,\n isLazy,\n lazyBehavior = \"unmount\",\n orientation = \"horizontal\",\n direction = \"ltr\",\n ...htmlProps\n } = props\n\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 const [focusedIndex, setFocusedIndex] = React.useState(defaultIndex ?? 0)\n\n const [selectedIndex, setSelectedIndex] = useControllableState({\n defaultValue: defaultIndex ?? 0,\n value: index,\n onChange,\n })\n\n /**\n * Sync focused `index` with controlled `selectedIndex` (which is the `props.index`)\n */\n React.useEffect(() => {\n if (index != null) {\n setFocusedIndex(index)\n }\n }, [index])\n\n /**\n * Think of `useDescendants` as a register for the tab nodes.\n */\n const descendants = useTabsDescendants()\n\n /**\n * Generate a unique id or use user-provided id for the tabs widget\n */\n const id = useId(props.id, `tabs`)\n\n return {\n id,\n selectedIndex,\n focusedIndex,\n setSelectedIndex,\n setFocusedIndex,\n isManual,\n isLazy,\n lazyBehavior,\n orientation,\n descendants,\n direction,\n htmlProps,\n }\n}\n\nexport type UseTabsReturn = Omit<\n ReturnType<typeof useTabs>,\n \"htmlProps\" | \"descendants\"\n>\n\nexport const [TabsProvider, useTabsContext] = createContext<UseTabsReturn>({\n name: \"TabsContext\",\n errorMessage:\n \"useTabsContext: `context` is undefined. Seems you forgot to wrap all tabs components within <Tabs />\",\n})\n\ntype Child = React.ReactElement<any>\n\nexport interface UseTabListProps {\n children?: React.ReactNode\n onKeyDown?: React.KeyboardEventHandler\n ref?: React.Ref<any>\n}\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 */\nexport function useTabList<P extends UseTabListProps>(props: P) {\n const { focusedIndex, orientation, direction } = useTabsContext()\n\n const descendants = useTabsDescendantsContext()\n\n const onKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n const nextTab = () => {\n const next = descendants.nextEnabled(focusedIndex)\n if (next) focus(next.node)\n }\n const prevTab = () => {\n const prev = descendants.prevEnabled(focusedIndex)\n if (prev) focus(prev.node)\n }\n const firstTab = () => {\n const first = descendants.firstEnabled()\n if (first) focus(first.node)\n }\n const lastTab = () => {\n const last = descendants.lastEnabled()\n if (last) focus(last.node)\n }\n\n const isHorizontal = orientation === \"horizontal\"\n const isVertical = orientation === \"vertical\"\n\n const eventKey = normalizeEventKey(event)\n\n const ArrowStart = direction === \"ltr\" ? \"ArrowLeft\" : \"ArrowRight\"\n const ArrowEnd = direction === \"ltr\" ? \"ArrowRight\" : \"ArrowLeft\"\n\n const keyMap: EventKeyMap = {\n [ArrowStart]: () => isHorizontal && prevTab(),\n [ArrowEnd]: () => isHorizontal && nextTab(),\n ArrowDown: () => isVertical && nextTab(),\n ArrowUp: () => isVertical && prevTab(),\n Home: firstTab,\n End: lastTab,\n }\n\n const action = keyMap[eventKey]\n\n if (action) {\n event.preventDefault()\n action(event)\n }\n },\n [descendants, focusedIndex, orientation, direction],\n )\n\n return {\n ...props,\n role: \"tablist\",\n \"aria-orientation\": orientation,\n onKeyDown: callAllHandlers(props.onKeyDown, onKeyDown),\n }\n}\n\nexport type UseTabListReturn = ReturnType<typeof useTabList>\n\nexport interface UseTabOptions {\n id?: string\n isSelected?: boolean\n panelId?: string\n /**\n * If `true`, the `Tab` won't be toggleable\n */\n isDisabled?: boolean\n}\n\nexport interface UseTabProps\n extends Omit<UseClickableProps, \"color\">,\n UseTabOptions {}\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 */\nexport function useTab<P extends UseTabProps>(props: P) {\n const { isDisabled, isFocusable, ...htmlProps } = props\n\n const {\n setSelectedIndex,\n isManual,\n id,\n setFocusedIndex,\n selectedIndex,\n } = useTabsContext()\n\n const { index, register } = useTabsDescendant({\n disabled: isDisabled && !isFocusable,\n })\n\n const isSelected = index === selectedIndex\n\n const onClick = () => {\n setSelectedIndex(index)\n }\n\n const onFocus = () => {\n setFocusedIndex(index)\n const isDisabledButFocusable = isDisabled && isFocusable\n const shouldSelect = !isManual && !isDisabledButFocusable\n if (shouldSelect) {\n setSelectedIndex(index)\n }\n }\n\n const clickableProps = useClickable({\n ...htmlProps,\n ref: mergeRefs(register, props.ref),\n isDisabled,\n isFocusable,\n onClick: callAllHandlers(props.onClick, onClick),\n })\n\n const type: \"button\" | \"submit\" | \"reset\" = \"button\"\n\n return {\n ...clickableProps,\n id: makeTabId(id, index),\n role: \"tab\",\n tabIndex: isSelected ? 0 : -1,\n type,\n \"aria-selected\": isSelected,\n \"aria-controls\": makeTabPanelId(id, index),\n onFocus: isDisabled ? undefined : callAllHandlers(props.onFocus, onFocus),\n }\n}\n\nexport interface UseTabPanelsProps {\n children?: React.ReactNode\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 */\nexport function useTabPanels<P extends UseTabPanelsProps>(props: P) {\n const context = useTabsContext()\n\n const { id, selectedIndex } = context\n\n const validChildren = getValidChildren(props.children)\n\n const children = validChildren.map((child, index) =>\n React.cloneElement(child as 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\n return { ...props, 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 */\nexport function useTabPanel(props: Dict) {\n const { isSelected, id, children, ...htmlProps } = props\n const { isLazy, lazyBehavior } = useTabsContext()\n\n const hasBeenSelected = React.useRef(false)\n if (isSelected) {\n hasBeenSelected.current = true\n }\n\n const shouldRenderChildren = determineLazyBehavior({\n hasBeenSelected: hasBeenSelected.current,\n isSelected,\n isLazy,\n lazyBehavior,\n })\n\n return {\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,\n }\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 */\nexport function useTabIndicator(): React.CSSProperties {\n const context = useTabsContext()\n const descendants = useTabsDescendantsContext()\n\n const { selectedIndex, orientation } = context\n\n const isHorizontal = orientation === \"horizontal\"\n const isVertical = orientation === \"vertical\"\n\n // Get the clientRect of the selected tab\n const [rect, setRect] = React.useState(() => {\n if (isHorizontal) return { left: 0, width: 0 }\n if (isVertical) return { top: 0, height: 0 }\n return undefined\n })\n\n const [hasMeasured, setHasMeasured] = React.useState(false)\n\n // Update the selected tab rect when the selectedIndex changes\n useSafeLayoutEffect(() => {\n if (isUndefined(selectedIndex)) return undefined\n\n const tab = descendants.item(selectedIndex)\n if (isUndefined(tab)) return undefined\n\n // Horizontal Tab: Calculate width and left distance\n if (isHorizontal) {\n setRect({ left: tab.node.offsetLeft, width: tab.node.offsetWidth })\n }\n\n // Vertical Tab: Calculate height and top distance\n if (isVertical) {\n setRect({ top: tab.node.offsetTop, height: tab.node.offsetHeight })\n }\n\n // Prevent unwanted transition from 0 to measured rect\n // by setting the measured state in the next tick\n const id = requestAnimationFrame(() => {\n setHasMeasured(true)\n })\n\n return () => {\n if (id) {\n cancelAnimationFrame(id)\n }\n }\n }, [selectedIndex, isHorizontal, isVertical, descendants])\n\n return {\n position: \"absolute\",\n transitionProperty: \"left, right, top, bottom\",\n transitionDuration: hasMeasured ? \"200ms\" : \"0ms\",\n transitionTimingFunction: \"cubic-bezier(0, 0, 0.2, 1)\",\n ...rect,\n }\n}\n\nfunction makeTabId(id: string, index: number) {\n return `${id}--tab-${index}`\n}\n\nfunction makeTabPanelId(id: string, index: number) {\n return `${id}--tabpanel-${index}`\n}\n","import {\n chakra,\n forwardRef,\n omitThemingProps,\n StylesProvider,\n SystemStyleObject,\n ThemingProps,\n useMultiStyleConfig,\n useStyles,\n HTMLChakraProps,\n} from \"@chakra-ui/system\"\nimport { cx, omit, __DEV__ } from \"@chakra-ui/utils\"\nimport * as React from \"react\"\nimport {\n TabsDescendantsProvider,\n TabsProvider,\n useTab,\n useTabIndicator,\n useTabList,\n UseTabListProps,\n UseTabOptions,\n useTabPanel,\n useTabPanels,\n useTabs,\n UseTabsProps,\n} from \"./use-tabs\"\n\ninterface TabsOptions {\n /**\n * If `true`, tabs will stretch to width of the tablist.\n */\n isFitted?: boolean\n /**\n * The alignment of the tabs\n */\n align?: \"start\" | \"end\" | \"center\"\n}\n\nexport interface TabsProps\n extends UseTabsProps,\n ThemingProps<\"Tabs\">,\n Omit<HTMLChakraProps<\"div\">, \"onChange\">,\n TabsOptions {\n children: React.ReactNode\n}\n\n/**\n * Tabs\n *\n * Provides context and logic for all tabs components.\n */\nexport const Tabs = forwardRef<TabsProps, \"div\">((props, ref) => {\n const styles = useMultiStyleConfig(\"Tabs\", props)\n const { children, className, ...rest } = omitThemingProps(props)\n\n const { htmlProps, descendants, ...ctx } = useTabs(rest)\n const context = React.useMemo(() => ctx, [ctx])\n\n const rootProps = omit(htmlProps as any, [\"isFitted\"])\n\n return (\n <TabsDescendantsProvider value={descendants}>\n <TabsProvider value={context}>\n <StylesProvider value={styles}>\n <chakra.div\n className={cx(\"chakra-tabs\", className)}\n ref={ref}\n {...rootProps}\n __css={styles.root}\n >\n {children}\n </chakra.div>\n </StylesProvider>\n </TabsProvider>\n </TabsDescendantsProvider>\n )\n})\n\nif (__DEV__) {\n Tabs.displayName = \"Tabs\"\n}\n\nexport interface TabProps extends UseTabOptions, HTMLChakraProps<\"button\"> {}\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 */\nexport const Tab = forwardRef<TabProps, \"button\">((props, ref) => {\n const styles = useStyles()\n const tabProps = useTab({ ...props, ref })\n\n const tabStyles: SystemStyleObject = {\n outline: \"0\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n ...styles.tab,\n }\n\n return (\n <chakra.button\n {...tabProps}\n className={cx(\"chakra-tabs__tab\", props.className)}\n __css={tabStyles}\n />\n )\n})\n\nif (__DEV__) {\n Tab.displayName = \"Tab\"\n}\n\nexport interface TabListProps\n extends UseTabListProps,\n Omit<HTMLChakraProps<\"div\">, \"onKeyDown\" | \"ref\"> {}\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 */\nexport const TabList = forwardRef<TabListProps, \"div\">((props, ref) => {\n const tablistProps = useTabList({ ...props, ref })\n\n const styles = useStyles()\n\n const tablistStyles: SystemStyleObject = {\n display: \"flex\",\n ...styles.tablist,\n }\n\n return (\n <chakra.div\n {...tablistProps}\n className={cx(\"chakra-tabs__tablist\", props.className)}\n __css={tablistStyles}\n />\n )\n})\n\nif (__DEV__) {\n TabList.displayName = \"TabList\"\n}\n\nexport interface TabPanelProps extends HTMLChakraProps<\"div\"> {}\n\n/**\n * TabPanel\n * Used to render the content for a specific tab.\n */\nexport const TabPanel = forwardRef<TabPanelProps, \"div\">((props, ref) => {\n const panelProps = useTabPanel({ ...props, ref })\n const styles = useStyles()\n\n return (\n <chakra.div\n outline=\"0\"\n {...panelProps}\n className={cx(\"chakra-tabs__tab-panel\", props.className)}\n __css={styles.tabpanel}\n />\n )\n})\n\nif (__DEV__) {\n TabPanel.displayName = \"TabPanel\"\n}\n\nexport interface TabPanelsProps extends HTMLChakraProps<\"div\"> {}\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 */\nexport const TabPanels = forwardRef<TabPanelsProps, \"div\">((props, ref) => {\n const panelsProps = useTabPanels(props)\n const styles = useStyles()\n\n return (\n <chakra.div\n {...panelsProps}\n width=\"100%\"\n ref={ref}\n className={cx(\"chakra-tabs__tab-panels\", props.className)}\n __css={styles.tabpanels}\n />\n )\n})\n\nif (__DEV__) {\n TabPanels.displayName = \"TabPanels\"\n}\n\nexport interface TabIndicatorProps extends HTMLChakraProps<\"div\"> {}\n\n/**\n * TabIndicator\n *\n * Used to render an active tab indicator that animates between\n * selected tabs.\n */\nexport const TabIndicator = forwardRef<TabIndicatorProps, \"div\">(\n (props, ref) => {\n const indicatorStyle = useTabIndicator()\n const style = {\n ...props.style,\n ...indicatorStyle,\n }\n\n const styles = useStyles()\n\n return (\n <chakra.div\n ref={ref}\n {...props}\n className={cx(\"chakra-tabs__tab-indicator\", props.className)}\n style={style}\n __css={styles.indicator}\n />\n )\n },\n)\n\nif (__DEV__) {\n TabIndicator.displayName = \"TabIndicator\"\n}\n","import {\n chakra,\n forwardRef,\n HTMLChakraProps,\n SystemProps,\n tokenToCSSVar,\n} from \"@chakra-ui/system\"\nimport { cx, Dict, mapResponsive, __DEV__ } from \"@chakra-ui/utils\"\nimport * as React from \"react\"\n\nexport interface WrapProps extends HTMLChakraProps<\"div\"> {\n /**\n * The space between the each child (even if it wraps)\n * @type SystemProps[\"margin\"]\n */\n spacing?: SystemProps[\"margin\"]\n /**\n * The `justify-content` value (for cross-axis alignment)\n * @type SystemProps[\"justifyContent\"]\n */\n justify?: SystemProps[\"justifyContent\"]\n /**\n * The `align-items` value (for main axis alignment)\n * @type SystemProps[\"alignItems\"]\n */\n align?: SystemProps[\"alignItems\"]\n /**\n * The `flex-direction` value\n * @type SystemProps[\"flexDirection\"]\n */\n direction?: SystemProps[\"flexDirection\"]\n /**\n * If `true`, the children will be wrapped in a `WrapItem`\n */\n shouldWrapChildren?: boolean\n}\n\n/**\n * Layout component used to stack elements that differ in length\n * and are liable to wrap.\n *\n * Common use cases:\n * - Buttons that appear together at the end of forms\n * - Lists of tags and chips\n *\n * @see Docs https://chakra-ui.com/wrap\n */\nexport const Wrap = forwardRef<WrapProps, \"div\">((props, ref) => {\n const {\n spacing = \"0.5rem\",\n children,\n justify,\n direction,\n align,\n className,\n shouldWrapChildren,\n ...rest\n } = props\n\n const styles = React.useMemo(\n () => ({\n \"--chakra-wrap-spacing\": (theme: Dict) =>\n mapResponsive(spacing, (value) => tokenToCSSVar(\"space\", value)(theme)),\n \"--wrap-spacing\": \"calc(var(--chakra-wrap-spacing) / 2)\",\n display: \"flex\",\n flexWrap: \"wrap\",\n justifyContent: justify,\n alignItems: align,\n flexDirection: direction,\n listStyleType: \"none\",\n padding: \"0\",\n margin: \"calc(var(--wrap-spacing) * -1)\",\n \"& > *:not(style)\": {\n margin: \"var(--wrap-spacing)\",\n },\n }),\n [spacing, justify, align, direction],\n )\n\n const childrenToRender = shouldWrapChildren\n ? React.Children.map(children, (child, index) => (\n <WrapItem key={index}>{child}</WrapItem>\n ))\n : children\n\n return (\n <chakra.div ref={ref} className={cx(\"chakra-wrap\", className)} {...rest}>\n <chakra.ul className=\"chakra-wrap__list\" __css={styles}>\n {childrenToRender}\n </chakra.ul>\n </chakra.div>\n )\n})\n\nif (__DEV__) {\n Wrap.displayName = \"Wrap\"\n}\n\nexport interface WrapItemProps extends HTMLChakraProps<\"li\"> {}\n\nexport const WrapItem = forwardRef<WrapItemProps, \"li\">((props, ref) => {\n const { className, ...rest } = props\n return (\n <chakra.li\n ref={ref}\n __css={{ display: \"flex\", alignItems: \"flex-start\" }}\n className={cx(\"chakra-wrap__listitem\", className)}\n {...rest}\n />\n )\n})\n\nif (__DEV__) {\n WrapItem.displayName = \"WrapItem\"\n}\n"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(this["webpackJsonpconstruct-hub-webapp"]=this["webpackJsonpconstruct-hub-webapp"]||[]).push([[2],{107:function(e,t,n){"use strict";n.d(t,"b",(function(){return m})),n.d(t,"a",(function(){return p}));var a=n(6),r=n(5),c=n(210),o=n(0),i="prefersWarnOnExternalLinkClick",s=n(30),l=n(52),u=n(208),d=n(229),b=n(159),j=n(232),f=n(51),O=n(1),h=function(e){var t=e.href,n=e.isOpen,a=e.onClick,c=e.onClose,h=e.setShouldWarn,v=Object(o.useState)(!0),m=Object(r.a)(v,2),p=m[0],g=m[1];return Object(O.jsx)(l.a,{closeOnOverlayClick:!1,isOpen:n,onClose:c,children:Object(O.jsx)(l.h,{children:Object(O.jsxs)(l.d,{color:"blue.800",children:[Object(O.jsx)(l.g,{children:"Confirm"}),Object(O.jsxs)(l.b,{children:[Object(O.jsx)(u.a,{fontSize:"lg",mb:2,children:"This link is taking you to an external site"}),Object(O.jsx)(u.a,{bg:"gray.100",borderRadius:"sm",color:"blue.500",fontSize:"sm",mb:4,p:1,children:t}),Object(O.jsx)(d.a,{onChange:function(e){var t=!e.target.checked;g(t)},children:"Do not show this warning again."})]}),Object(O.jsxs)(l.f,{children:[Object(O.jsx)(b.a,{onClick:function(){g(!0),c()},variant:"ghost",children:"Cancel"}),Object(O.jsx)(j.a,{hasArrow:!0,label:t,placement:"top",children:Object(O.jsx)(f.a,{hasIcon:!1,hasWarning:!1,href:t,noFollow:!0,onClick:function(e){if(!p){h(p);try{localStorage.setItem(i,JSON.stringify(p))}catch(t){}}null===a||void 0===a||a(e),c()},children:Object(O.jsx)(b.a,{colorScheme:"blue",ml:4,rightIcon:Object(O.jsx)(s.k,{}),tabIndex:0,variant:"ghost",children:"Proceed"})})})]})]})})})},v=Object(o.createContext)((function(e){return e.onClick})),m=function(){return Object(o.useContext)(v)},p=function(e){var t=e.children,n=Object(o.useState)(null),s=Object(r.a)(n,2),l=s[0],u=s[1],d=Object(c.a)({onClose:function(){u(null)}}),b=d.isOpen,j=d.onOpen,f=d.onClose,m=Object(o.useState)((function(){try{var e,t=null!==(e=localStorage.getItem(i))&&void 0!==e?e:"true";return JSON.parse(t)}catch(n){return!0}})),p=Object(r.a)(m,2),g=p[0],x=p[1],y=Object(o.useCallback)((function(e){var t=e.href,n=e.onClick;if(!g)return n;return function(e){u({href:t,onClick:n}),e.preventDefault(),j()}}),[j,g]);return Object(O.jsxs)(v.Provider,{value:y,children:[t,Object(O.jsx)(h,Object(a.a)({isOpen:b,onClose:f,setShouldWarn:x},l))]})}},108:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var a=n(14),r=n(0),c=n(89),o=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.query,n=e.filters,o=e.sort,i=Object(c.b)();if(!i)throw new Error("This hook can only be called within a descendant of a <SearchProvider />");var s=Object(r.useMemo)((function(){return Object(a.a)(i.search({query:t,filters:n,sort:o}).values())}),[i,t,n,o]);return s}},122:function(e,t,n){"use strict";n.d(t,"d",(function(){return o})),n.d(t,"f",(function(){return d})),n.d(t,"a",(function(){return b})),n.d(t,"b",(function(){return j})),n.d(t,"e",(function(){return f})),n.d(t,"c",(function(){return O}));var a,r,c,o,i=n(4),s=n(6),l=n(160),u=n(1);!function(e){e.DotNet="dotnet",e.TypeScript="typescript",e.Python="python",e.Go="golang",e.Java="java"}(o||(o={}));var d=(a={},Object(i.a)(a,o.TypeScript,o.TypeScript),Object(i.a)(a,o.Python,o.Python),Object(i.a)(a,o.Go,o.Go),Object(i.a)(a,o.Java,o.Java),Object(i.a)(a,o.DotNet,"csharp"),a),b=[o.TypeScript,o.Python,o.Java,o.Go,o.DotNet],j=(r={},Object(i.a)(r,o.TypeScript,"TypeScript"),Object(i.a)(r,o.Python,"Python"),Object(i.a)(r,o.Java,"Java"),Object(i.a)(r,o.Go,"Go"),Object(i.a)(r,o.DotNet,".NET"),r),f=new Set([o.Python,o.TypeScript,o.Java,o.DotNet]),O=(c={},Object(i.a)(c,o.TypeScript,{name:j.typescript,icon:function(e){return Object(u.jsxs)(l.a,Object(s.a)(Object(s.a)({},e),{},{"aria-hidden":"true",transform:"rotate(360)",viewBox:"0 0 256 256",children:[Object(u.jsx)("path",{d:"M0 128v128h256V0H0z",fill:"#007ACC"}),Object(u.jsx)("path",{d:"M56.611 128.85l-.081 10.483h33.32v94.68h23.57v-94.68h33.32v-10.28c0-5.69-.122-10.444-.284-10.566-.122-.162-20.399-.244-44.983-.203l-44.739.122-.122 10.443zM206.567 118.108c6.501 1.626 11.459 4.51 16.01 9.224 2.357 2.52 5.851 7.112 6.136 8.209.08.325-11.053 7.802-17.798 11.987-.244.163-1.22-.894-2.317-2.52-3.291-4.794-6.745-6.867-12.028-7.232-7.76-.529-12.759 3.535-12.718 10.32 0 1.992.284 3.17 1.097 4.796 1.707 3.535 4.876 5.648 14.832 9.955 18.326 7.884 26.168 13.085 31.045 20.48 5.445 8.25 6.664 21.415 2.966 31.208-4.063 10.646-14.14 17.88-28.323 20.277-4.388.772-14.79.65-19.504-.203-10.28-1.829-20.033-6.908-26.047-13.572-2.357-2.601-6.949-9.387-6.664-9.875.122-.162 1.178-.812 2.356-1.503 1.138-.65 5.446-3.13 9.509-5.486l7.355-4.267 1.544 2.276c2.154 3.291 6.867 7.802 9.712 9.305 8.167 4.308 19.383 3.698 24.909-1.26 2.357-2.153 3.332-4.388 3.332-7.68 0-2.966-.366-4.266-1.91-6.5-1.99-2.845-6.054-5.243-17.595-10.24-13.206-5.69-18.895-9.225-24.096-14.833-3.007-3.25-5.852-8.452-7.03-12.8-.975-3.616-1.22-12.678-.447-16.335 2.723-12.76 12.353-21.658 26.25-24.3 4.51-.853 14.994-.528 19.424.57z",fill:"#FFF"})]}))}}),Object(i.a)(c,o.Python,{name:j.python,icon:function(e){return Object(u.jsxs)(l.a,Object(s.a)(Object(s.a)({},e),{},{version:"1.0",viewBox:"0 0 110.421 109.846",children:[Object(u.jsxs)("defs",{children:[Object(u.jsxs)("linearGradient",{id:"a",children:[Object(u.jsx)("stop",{offset:"0",stopColor:"#ffe052"}),Object(u.jsx)("stop",{offset:"1",stopColor:"#ffc331"})]}),Object(u.jsx)("linearGradient",{gradientUnits:"userSpaceOnUse",id:"d",x1:"89.137",x2:"147.777",xlinkHref:"#a",y1:"111.921",y2:"168.101"}),Object(u.jsxs)("linearGradient",{id:"b",children:[Object(u.jsx)("stop",{offset:"0",stopColor:"#387eb8"}),Object(u.jsx)("stop",{offset:"1",stopColor:"#366994"})]}),Object(u.jsx)("linearGradient",{gradientUnits:"userSpaceOnUse",id:"c",x1:"55.549",x2:"110.149",xlinkHref:"#b",y1:"77.07",y2:"131.853"})]}),Object(u.jsxs)("g",{color:"#000",children:[Object(u.jsx)("path",{d:"M99.75 67.469c-28.032 0-26.281 12.156-26.281 12.156l.031 12.594h26.75V96H62.875s-17.938-2.034-17.938 26.25 15.657 27.281 15.657 27.281h9.343v-13.125s-.503-15.656 15.407-15.656h26.531s14.906.241 14.906-14.406V82.125s2.263-14.656-27.031-14.656zM85 75.938a4.808 4.808 0 014.813 4.812A4.808 4.808 0 0185 85.563a4.808 4.808 0 01-4.813-4.813A4.808 4.808 0 0185 75.937z",fill:"url(#c)",overflow:"visible",style:{marker:"none"},transform:"translate(-44.938 -67.469)"}),Object(u.jsx)("path",{d:"M100.546 177.315c28.032 0 26.281-12.156 26.281-12.156l-.03-12.594h-26.75v-3.781h37.374s17.938 2.034 17.938-26.25c0-28.285-15.657-27.282-15.657-27.282h-9.343v13.125s.503 15.657-15.407 15.657h-26.53s-14.907-.241-14.907 14.406v24.219s-2.263 14.656 27.031 14.656zm14.75-8.469a4.808 4.808 0 01-4.812-4.812 4.808 4.808 0 014.812-4.813 4.808 4.808 0 014.813 4.813 4.808 4.808 0 01-4.813 4.812z",fill:"url(#d)",overflow:"visible",style:{marker:"none"},transform:"translate(-44.938 -67.469)"})]})]}))}}),Object(i.a)(c,o.Java,{name:j.java,icon:function(e){return Object(u.jsxs)(l.a,Object(s.a)(Object(s.a)({},e),{},{"aria-hidden":"true",transform:"rotate(360)",viewBox:"0 0 256 346",children:[Object(u.jsx)("path",{d:"M82.554 267.473s-13.198 7.675 9.393 10.272c27.369 3.122 41.356 2.675 71.517-3.034 0 0 7.93 4.972 19.003 9.279-67.611 28.977-153.019-1.679-99.913-16.517M74.292 229.659s-14.803 10.958 7.805 13.296c29.236 3.016 52.324 3.263 92.276-4.43 0 0 5.526 5.602 14.215 8.666-81.747 23.904-172.798 1.885-114.296-17.532",fill:"#5382A1"}),Object(u.jsx)("path",{d:"M143.942 165.515c16.66 19.18-4.377 36.44-4.377 36.44s42.301-21.837 22.874-49.183c-18.144-25.5-32.059-38.172 43.268-81.858 0 0-118.238 29.53-61.765 94.6",fill:"#E76F00"}),Object(u.jsx)("path",{d:"M233.364 295.442s9.767 8.047-10.757 14.273c-39.026 11.823-162.432 15.393-196.714.471-12.323-5.36 10.787-12.8 18.056-14.362 7.581-1.644 11.914-1.337 11.914-1.337-13.705-9.655-88.583 18.957-38.034 27.15 137.853 22.356 251.292-10.066 215.535-26.195M88.9 190.48s-62.771 14.91-22.228 20.323c17.118 2.292 51.243 1.774 83.03-.89 25.978-2.19 52.063-6.85 52.063-6.85s-9.16 3.923-15.787 8.448c-63.744 16.765-186.886 8.966-151.435-8.183 29.981-14.492 54.358-12.848 54.358-12.848M201.506 253.422c64.8-33.672 34.839-66.03 13.927-61.67-5.126 1.066-7.411 1.99-7.411 1.99s1.903-2.98 5.537-4.27c41.37-14.545 73.187 42.897-13.355 65.647 0 .001 1.003-.895 1.302-1.697",fill:"#5382A1"}),Object(u.jsx)("path",{d:"M162.439.371s35.887 35.9-34.037 91.101c-56.071 44.282-12.786 69.53-.023 98.377-32.73-29.53-56.75-55.526-40.635-79.72C111.395 74.612 176.918 57.393 162.439.37",fill:"#E76F00"}),Object(u.jsx)("path",{d:"M95.268 344.665c62.199 3.982 157.712-2.209 159.974-31.64 0 0-4.348 11.158-51.404 20.018-53.088 9.99-118.564 8.824-157.399 2.421.001 0 7.95 6.58 48.83 9.201",fill:"#5382A1"})]}))}}),Object(i.a)(c,o.Go,{name:j.golang,icon:function(e){return Object(u.jsx)(l.a,Object(s.a)(Object(s.a)({},e),{},{"aria-hidden":"true",transform:"rotate(360)",viewBox:"0 0 512 192",children:Object(u.jsx)("path",{d:"M292.533 13.295l1.124.75c13.212 8.725 22.685 20.691 28.917 35.15 1.496 2.243.499 3.49-2.493 4.237l-5.063 1.296c-11.447 2.949-20.53 5.429-31.827 8.378l-6.443 1.678c-2.32.574-2.96.333-5.428-2.477l-.348-.399c-3.519-3.988-6.155-6.652-10.817-9.03l-.899-.443c-15.705-7.727-30.911-5.484-45.12 3.74-16.952 10.968-25.677 27.172-25.428 47.364.25 19.942 13.96 36.395 33.654 39.137 16.951 2.244 31.16-3.739 42.378-16.452 2.244-2.743 4.238-5.734 6.73-9.224h-48.11c-5.235 0-6.481-3.24-4.736-7.478l.864-2.035c3.204-7.454 8.173-18.168 11.4-24.294l.704-1.319c.862-1.494 2.612-3.513 5.977-3.513h80.224c3.603-11.415 9.449-22.201 17.246-32.407 18.198-23.931 40.135-36.396 69.8-41.63 25.427-4.488 49.359-1.995 71.046 12.713 19.694 13.461 31.909 31.66 35.15 55.59 4.237 33.654-5.485 61.075-28.668 84.508-16.453 16.702-36.645 27.172-59.829 31.908-6.73 1.247-13.461 1.496-19.942 2.244-22.685-.499-43.376-6.98-60.826-21.937-12.273-10.61-20.727-23.648-24.928-38.828a104.937 104.937 0 01-10.47 16.89c-17.949 23.683-41.381 38.39-71.046 42.38-24.43 3.24-47.115-1.497-67.058-16.454-18.447-13.96-28.917-32.407-31.66-55.34-3.24-27.173 4.737-51.603 21.19-73.041 17.7-23.184 41.132-37.891 69.8-43.126 22.999-4.16 45.037-1.595 64.936 11.464zM411.12 49.017l-.798.178c-23.183 5.235-38.14 19.942-43.624 43.375-4.488 19.444 4.985 39.138 22.934 47.115 13.71 5.983 27.421 5.235 40.633-1.496 19.694-10.22 30.413-26.175 31.66-47.613-.25-3.24-.25-5.734-.749-8.227-4.436-24.401-26.664-38.324-50.056-33.332zM116.416 94.564c.997 0 1.496.748 1.496 1.745l-.499 5.983c0 .997-.997 1.745-1.745 1.745l-54.344-.249c-.997 0-1.246-.748-.748-1.496l3.49-6.232c.499-.748 1.496-1.496 2.493-1.496h49.857zM121.9 71.63c.997 0 1.496.748 1.247 1.496l-1.995 5.983c-.249.997-1.246 1.495-2.243 1.495l-117.912.25c-.997 0-1.246-.499-.748-1.247l5.235-6.73c.499-.748 1.745-1.247 2.742-1.247H121.9zm12.963-22.934c.997 0 1.246.748.748 1.496l-4.238 6.481c-.499.748-1.745 1.496-2.493 1.496l-90.24-.25c-.998 0-1.247-.498-.749-1.246l5.235-6.73c.499-.748 1.745-1.247 2.742-1.247h88.995z",fill:"#00ACD7"})}))}}),Object(i.a)(c,o.DotNet,{name:j.dotnet,icon:function(e){return Object(u.jsx)(l.a,Object(s.a)(Object(s.a)({},e),{},{"aria-hidden":"true",transform:"rotate(360)",viewBox:"0 0 32 32",children:Object(u.jsx)("path",{d:"M4.224 10.089v11.667h1.365v-8.438a12.58 12.58 0 00-.068-1.599h.052c.099.255.224.5.37.729l6 9.302h1.672V10.089h-1.359v8.203c-.016.573.016 1.146.083 1.714h-.031a13.986 13.986 0 00-.474-.781L5.995 10.09zm12.417 0v11.667h6.203l.005-1.281h-4.813v-4.047h4.214v-1.229h-4.214v-3.875h4.521V10.09zm7.25 0v1.234h3.354v10.432h1.365V11.323h3.391v-1.234zm-23.021 10a.86.86 0 00-.609.276.91.91 0 00-.26.641.901.901 0 001.542.641c.172-.167.271-.401.271-.641s-.099-.474-.271-.641a.876.876 0 00-.641-.276H.871z",fill:"#626262"})}))}}),c)},123:function(e,t,n){"use strict";n.d(t,"a",(function(){return i})),n.d(t,"b",(function(){return l}));var a=n(0),r=n(22),c=n(1),o=Object(a.createContext)({trackPageView:function(){}}),i=function(e){var t=e.children,n=Object(r.h)().pathname,i=Object(a.useRef)(null),s=Object(a.useCallback)((function(e){var t,a,r;i.current!==n&&(null===(t=window)||void 0===t||null===(a=t.AWSMA)||void 0===a||null===(r=a.ready)||void 0===r||r.call(a,(function(){document.dispatchEvent(new CustomEvent(window.AWSMA.TRIGGER_EVENT,{detail:e})),i.current=n})))}),[n]);return Object(c.jsx)(o.Provider,{value:{trackPageView:s},children:t})},s=n(6),l=function(e){var t=Object(a.useContext)(o).trackPageView,n=Object(r.h)().pathname,c=Object(a.useMemo)((function(){return{page:Object(s.a)({pageURL:window.location.href.replace("://localhost:3000","://constructs.local.dev")},e.page),event:{type:"pageview",name:e.event.name,description:e.event.description}}}),[n,e]);return Object(a.useCallback)((function(){return t(c)}),[t,c])}},127:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var a=new Set(["aws-cdk","aws","awscdk","cdk-construct","cdk","cdktf","cdk8s","construct","constructs"].map((function(e){return e.toLocaleLowerCase()})))},128:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var a=n(0),r=function(e,t){var n=t.limit,a=t.offset*n,r=a+n;return e.slice(a,r)},c=n(108),o=function(e){var t=e.cdkMajor,n=e.cdkType,o=e.keywords,i=e.limit,s=e.offset,l=void 0===s?0:s,u=e.query,d=void 0===u?"":u,b=e.language,j=void 0===b?null:b,f=e.languages,O=e.sort,h=e.tags,v=Object(a.useMemo)((function(){return{cdkMajor:t,cdkType:n,keywords:o,language:null!==j&&void 0!==j?j:void 0,languages:f,tags:h}}),[t,n,o,j,f,h]),m=Object(c.a)({filters:v,query:d,sort:O}),p=function(e,t){var n=null!==t&&void 0!==t?t:{},c=n.limit,o=void 0===c?25:c,i=n.offset,s=void 0===i?0:i,l=e?Math.floor(e.length/o):0;return Object(a.useMemo)((function(){return{page:r(e,{limit:o,offset:s>l?l:s}),pageLimit:l}}),[e,o,s,l])}(m,{offset:l,limit:i}),g=p.page,x=p.pageLimit;return Object(a.useMemo)((function(){return{results:m,page:g,pageLimit:x}}),[g,x,m])}},129:function(e,t,n){"use strict";n.d(t,"a",(function(){return m}));var a,r=n(4),c=n(6),o=n(24),i=n(17),s=n(237),l=n(208),u=n(222),d=n(48),b=n(1),j=["name","majorVersion"],f=["name","majorVersion"],O=["name","majorVersion"],h=(Object(i.a)((function(e,t){var n=e.name,a=(e.majorVersion,Object(o.a)(e,j));return n?Object(b.jsx)(s.a,Object(c.a)({alt:"".concat(d.b[n].name," Logo"),h:5,ref:t,src:d.b[n].imgsrc,w:5},a)):null})),Object(i.a)((function(e,t){var n=e.name,a=e.majorVersion,r=Object(o.a)(e,f);return n?Object(b.jsxs)(l.a,Object(c.a)(Object(c.a)({ref:t},r),{},{children:[d.b[n].name,void 0!==a?" v".concat(a):""]})):null}))),v=(a={},Object(r.a)(a,d.c.awscdk,"#CF4A02"),Object(r.a)(a,d.c.cdk8s,"#005797"),Object(r.a)(a,d.c.cdktf,"#5C4EE5"),a),m=Object(i.a)((function(e){var t=e.name,n=e.majorVersion,a=Object(o.a)(e,O);if(!t)return null;var r=v[t];return Object(b.jsx)(u.a,Object(c.a)(Object(c.a)({alignItems:"center",bg:r,borderRadius:"md",color:"white",display:"flex",h:"1.5rem",maxW:"5.5rem",px:1.5,textTransform:"none"},a),{},{children:Object(b.jsx)(h,{majorVersion:n,name:t})}))}))},13:function(e,t,n){"use strict";n.d(t,"a",(function(){return a})),n.d(t,"b",(function(){return r})),n.d(t,"c",(function(){return c}));var a={PACKAGES_PREFIX:"/data",CATALOG_SUFFIX:"/catalog.json",ASSEMBLY_SUFFIX:"/assembly.json",METADATA_SUFFIX:"/metadata.json",CONFIG:"/config.json",STATS:"/stats.json"},r={CDK_TYPE:"cdk",KEYWORDS:"keywords",LANGUAGE:"lang",LANGUAGES:"langs",OFFSET:"offset",SEARCH_QUERY:"q",SORT:"sort",SUBMODULE:"submodule",CDK_MAJOR:"cdkver",TAGS:"tags"},c={CONTRIBUTE:"/contribute",FAQ:"/faq",HOME:"/",PACKAGES:"/packages",SEARCH:"/search",SITE_TERMS:"/terms"}},136:function(e,t,n){"use strict";n.d(t,"a",(function(){return i})),n.d(t,"b",(function(){return l}));var a=n(28),r=n.n(a),c=n(45),o=n(13),i={sections:[{name:"Recently updated",showLastUpdated:10}]},s={featureFlags:{},packageLinks:[],featuredPackages:i},l=function(){var e=Object(c.a)(r.a.mark((function e(){var t;return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!window.configOverride){e.next=2;break}return e.abrupt("return",window.configOverride);case 2:return e.next=4,fetch(o.a.CONFIG);case 4:if((t=e.sent).ok){e.next=9;break}return console.error(t.statusText),console.warn("Failed to fetch application config, using default values"),e.abrupt("return",s);case 9:return e.abrupt("return",t.json().catch((function(e){return console.error(e),console.warn("Invalid config response, using default values"),s})));case 10:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},144:function(e,t,n){"use strict";n.d(t,"a",(function(){return O}));var a=n(30),r=n(210),c=n(204),o=n(212),i=n(208),s=n(213),l=n(58),u=n(74),d=n(94),b=n(51),j=n(1),f="showing-dev-preview-banner",O=function(){var e,t,n=Object(u.b)().data,O=Object(r.a)({defaultIsOpen:JSON.parse(null!==(e=window.sessionStorage.getItem(f))&&void 0!==e?e:"true"),onClose:function(){return window.sessionStorage.setItem(f,"false")}}),h=O.isOpen,v=O.onClose;return(null===n||void 0===n||null===(t=n.featureFlags)||void 0===t?void 0:t.fullSite)?Object(j.jsx)(c.a,{h:"max-content"}):Object(j.jsx)(c.a,{h:"max-content",children:Object(j.jsx)(o.a,{in:h,children:Object(j.jsxs)(d.a,{"aria-label":"Preview Banner",bg:"blue.500",border:"none",boxShadow:"none",color:"white",mt:4,mx:4,p:4,position:"relative",role:"alertdialog",children:[Object(j.jsx)(a.m,{h:5,left:4,position:"absolute",top:4,w:5}),Object(j.jsxs)(i.a,{fontSize:"md",mx:8,textAlign:"center",children:["This application is in Dev Preview. Some features may change. If you find any issues, please report them"," ",Object(j.jsx)(b.a,{color:"inherit",hasWarning:!1,href:"".concat(l.a,"/issues"),textDecoration:"underline",children:"here"})]}),Object(j.jsx)(s.a,{"aria-label":"Dismiss banner",colorScheme:"white",icon:Object(j.jsx)(a.g,{}),onClick:v,position:"absolute",right:4,size:"xs",top:3,variant:"ghost"})]})})})}},146:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var a=n(6),r=n(17),c=n(21),o=n(1),i=Object(r.a)((function(e,t){return Object(o.jsx)(c.a.form,Object(a.a)(Object(a.a)({},e),{},{ref:t}))}));i.displayName="Form"},147:function(e,t,n){"use strict";n.d(t,"a",(function(){return c}));var a=n(5),r=n(0),c=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Object(r.useState)(e),c=Object(a.a)(n,2),o=c[0],i=c[1],s=t.delay,l=void 0===s?250:s,u=t.onChange;return Object(r.useEffect)((function(){var t=setTimeout((function(){i(e),null===u||void 0===u||u(e)}),l);return function(){clearTimeout(t)}}),[e,l,u]),o}},148:function(e,t,n){"use strict";n.d(t,"a",(function(){return l}));var a=n(6),r=n(24),c=n(17),o=n(223),i=n(1),s=["name","onClick"],l=Object(c.a)((function(e,t){var n=e.name,c=e.onClick,l=Object(r.a)(e,s);return Object(i.jsx)(o.a,Object(a.a)(Object(a.a)({_hover:{cursor:"pointer"},alignItems:"center",display:"flex",fontSize:"md",lineHeight:"base",listStyleType:"none",minH:8,onClick:c,onKeyDown:function(e){["Enter"," "].includes(e.key)&&(e.preventDefault(),c())},px:4,ref:t,role:"option",sx:{":hover, :focus":{bg:"gray.100"}},tabIndex:0},l),{},{children:n}))}));l.displayName="SearchItem"},176:function(e,t,n){},183:function(e,t,n){"use strict";n.r(t);var a={};n.r(a),n.d(a,"initialize",(function(){return C})),n.d(a,"access",(function(){return E})),n.d(a,"checkForCookieConsent",(function(){return A})),n.d(a,"customizeCookies",(function(){return M})),n.d(a,"getConsentCookie",(function(){return z})),n.d(a,"hasConsent",(function(){return I}));var r,c,o=n(0),i=n.n(o),s=n(85),l=n.n(s),u=n(34),d=(n(176),n(154)),b=n(22),j=n(144),f=n(5),O=n(214),h=n(215),v=n(204),m=n(216),p=n(208),g=n(159),x=n(24),y=n(28),k=n.n(y),w=n(45),S=function(){new URLSearchParams(window.location.search).get("sb")},C=function(){var e=Object(w.a)(k.a.mark((function e(){return k.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,t){window.addEventListener("load",Object(w.a)(k.a.mark((function a(){var c,o,i;return k.a.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,c={domain:window.location.hostname,language:navigator.language,__storeWriter:S()},a.next=4,n.e(15).then(n.t.bind(null,646,7));case 4:o=a.sent,i=o.AWSCShortbread,r=i(c),e(),a.next=13;break;case 10:a.prev=10,a.t0=a.catch(0),t(a.t0);case 13:case"end":return a.stop()}}),a,null,[[0,10]])}))))})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),T=function(e){return function(){var t;if(!r)throw new Error("shortbread has not been initialized");return(t=r)[e].apply(t,arguments)}},E=T("access"),A=T("checkForCookieConsent"),M=T("customizeCookies"),z=T("getConsentCookie"),I=T("hasConsent"),F=n(1),P=C,D=Object(x.a)(a,["initialize"]),R=Object(o.createContext)({}),L=function(e){var t=e.children,n=Object(o.useState)(!1),a=Object(f.a)(n,2),r=a[0],c=a[1];return Object(o.useEffect)((function(){var e=!1;return P().then((function(){e||(D.checkForCookieConsent(),c(!0))})).catch((function(t){console.error(t),e||c(!1)})),function(){e=!0,c(!1)}}),[]),Object(F.jsx)(R.Provider,{value:r?D:{},children:t})},N=n(51),_=n(49),G=n(13),W={SERVICE_TERMS:{display:"AWS Service Terms",url:"https://aws.amazon.com/service-terms/",testId:"service-terms"},PRIVACY:{display:"Privacy",url:"https://aws.amazon.com/privacy/",testId:"privacy"},SITE_TERMS:{display:"Construct Hub Site Terms",url:G.c.SITE_TERMS,testId:"site-terms",isExternal:!1},LEGAL:{display:"Legal",url:"https://aws.amazon.com/legal/",testId:"legal"}},U=n(14),B=n(63),H=Object(B.a)("footer",["container","links","disclaimer","manageCookies"].concat(Object(U.a)(Object.values(W).map((function(e){return e.testId}))))),V=function(){var e=Object(o.useContext)(R).customizeCookies;return Object(F.jsxs)(O.a,{align:"center",as:"footer",bg:"blue.800",color:"white","data-testid":H.container,direction:"column",justify:"center",py:4,children:[Object(F.jsx)(h.a,{columnGap:6,columns:[1,2,4],"data-testid":H.links,children:Object.entries(W).map((function(e,t){var n=Object(f.a)(e,2),a=n[0],r=n[1],c=r.display,o=r.isExternal,i=void 0===o||o,s=r.testId,l=r.url;return Object(F.jsxs)(O.a,{align:"center",direction:{base:"column",md:"row"},children:[Object(F.jsx)(v.a,{display:{base:"none",md:0!==t?"initial":"none"},h:5,children:Object(F.jsx)(m.a,{borderColor:"white",mr:6,orientation:"vertical"})}),i?Object(F.jsx)(N.a,{color:"currentcolor","data-testid":H[s],hasWarning:!1,href:l,lineHeight:10,mx:"auto",children:c}):Object(F.jsx)(_.a,{color:"currentcolor","data-testid":H[s],lineHeight:10,mx:"auto",to:l,children:c}),Object(F.jsx)(v.a,{display:{base:"none",sm:t<2?"initial":"none",md:"none"},w:"100%",children:Object(F.jsx)(m.a,{borderColor:"white"})})]},a)}))}),Object(F.jsx)(p.a,{"data-testid":H.disclaimer,fontSize:"xs",mt:4,children:"2021 Amazon Web Services, Inc. All rights reserved."}),Object(F.jsx)(g.a,{color:"white","data-testid":H.manageCookies,fontSize:"xs",fontWeight:"normal",mt:4,onClick:e,variant:"link",children:"Manage Cookies"})]})},K=n(6),q=n(58),J=n(230),Q=["children"],Y=function(e){var t=e.children,n=Object(x.a)(e,Q);return Object(F.jsx)(J.a,Object(K.a)(Object(K.a)({colorScheme:"blue.800",strategy:"fixed"},n),{},{children:t}))},X=n(17),Z=["items"],$=function(e){var t=e.display,n=e.isNavLink,a=e.url;return n?Object(F.jsx)(_.a,{color:"blue.500",to:a,w:"100%",children:t}):Object(F.jsx)(N.a,{alignItems:"center",display:"flex",hasWarning:!1,href:a,justifyContent:"space-between",w:"100%",children:t})},ee=Object(X.a)((function(e,t){var n=e.items,a=Object(x.a)(e,Z);return Object(F.jsx)(J.f,Object(K.a)(Object(K.a)({},a),{},{ref:t,children:n.map((function(e,t){return"links"in e?Object(F.jsxs)(o.Fragment,{children:[Object(F.jsx)(J.d,{align:"left",title:e.display,children:e.links.map((function(e,t){return Object(F.jsx)(J.e,{children:Object(F.jsx)($,Object(K.a)({},e))},"".concat(e.display,"-").concat(t))}))}),t!==n.length-1&&Object(F.jsx)(J.c,{})]},"".concat(e.display,"-").concat(t)):Object(F.jsx)(J.e,{children:Object(F.jsx)($,Object(K.a)({},e))},"".concat(e.display,"-").concat(t))}))}))})),te=n(30),ne=["children"],ae=Object(X.a)((function(e,t){var n=e.children,a=Object(x.a)(e,ne);return Object(F.jsx)(J.b,Object(K.a)(Object(K.a)({as:g.a,color:"blue.800",fontWeight:"500",ref:t,rightIcon:Object(F.jsx)(te.c,{h:6,w:6}),size:"md",variant:"link"},a),{},{children:n}))})),re=Object(B.a)("header",["container","title","gettingStartedTrigger","gettingStartedMenu","documentationTrigger","documentationMenu","navOpen","navClose","searchInput","searchIcon","mobileNav"]),ce=function(){return Object(F.jsxs)(Y,{children:[Object(F.jsx)(ae,{"data-testid":re.documentationTrigger,children:"Documentation"}),Object(F.jsx)(ee,{"data-testid":re.documentationMenu,items:q.b})]})},oe=function(){return Object(F.jsxs)(Y,{children:[Object(F.jsx)(ae,{"data-testid":re.gettingStartedTrigger,children:"Getting Started"}),Object(F.jsx)(ee,{"data-testid":re.gettingStartedMenu,items:q.c})]})},ie=n(210),se=n(213),le=n(75),ue=n(235),de=n(52),be=n(238),je=n(95),fe=Object(B.a)("searchModal",["container"]),Oe=function(e){var t=e.isOpen,n=e.onClose,a=Object(je.a)(),r=a.query,c=a.onQueryChange,o=a.onSubmit,i=a.onSearch;return Object(F.jsx)(ue.a,{children:Object(F.jsx)(de.a,{isOpen:t,onClose:n,children:Object(F.jsx)(de.h,{children:Object(F.jsxs)(de.d,{"data-testid":fe.container,children:[Object(F.jsx)(de.c,{}),Object(F.jsx)(de.g,{children:"Search"}),Object(F.jsx)(de.b,{children:Object(F.jsxs)(be.a,{pb:4,spacing:4,children:[Object(F.jsx)(le.a,{onChange:c,onSubmit:o,value:r}),Object(F.jsx)(g.a,{colorScheme:"blue",onClick:function(){return i()},children:"Find Constructs"})]})})]})})})})},he=function(){var e=Object(ie.a)();return Object(F.jsxs)(b.d,{children:[Object(F.jsx)(b.b,{exact:!0,path:[G.c.HOME,G.c.SEARCH]}),Object(F.jsxs)(b.b,{path:"*",children:[Object(F.jsx)(v.a,{"data-testid":re.searchInput,display:{base:"none",lg:"initial"},children:Object(F.jsxs)(le.a,{bg:"gray.50",children:[Object(F.jsx)(le.b,{}),Object(F.jsx)(le.c,{})]})}),Object(F.jsxs)(v.a,{display:{base:"initial",lg:"none"},children:[Object(F.jsx)(se.a,{"aria-label":"Search Icon",borderRadius:"md","data-testid":re.searchIcon,icon:Object(F.jsx)(te.o,{color:"gray.600"}),onClick:e.onOpen,variant:"ghost"}),Object(F.jsx)(Oe,Object(K.a)({},e))]})]})]})},ve=n(240),me=n(239),pe=n(224),ge={color:"blue.500",py:2,w:"full"},xe=function(e){var t=e.display,n=e.isNavLink,a=e.url;return n?Object(F.jsx)(_.a,Object(K.a)(Object(K.a)({to:a},ge),{},{children:t})):Object(F.jsx)(N.a,Object(K.a)(Object(K.a)({alignItems:"center",display:"flex",hasWarning:!1,href:a,justifyContent:"space-between"},ge),{},{children:t}))},ye=function(e){var t=e.title,n=e.items,a=e.testId;return Object(F.jsxs)(me.d,{"data-testid":a,w:"full",children:[Object(F.jsxs)(me.b,{px:0,py:4,children:[Object(F.jsx)(v.a,{flex:"1",textAlign:"left",children:Object(F.jsx)(pe.a,{as:"h3",color:"blue.800",size:"sm",children:t})}),Object(F.jsx)(me.c,{})]}),Object(F.jsx)(me.e,{p:0,w:"full",children:Object(F.jsx)(O.a,{direction:"column",w:"full",children:n.map((function(e,t){return"links"in e?Object(F.jsxs)(o.Fragment,{children:[Object(F.jsx)(pe.a,{as:"h4",borderBottom:"base",pb:2,pt:4,size:"xs",children:e.display}),e.links.map((function(e,t){return Object(o.createElement)(xe,Object(K.a)(Object(K.a)({},e),{},{key:"".concat(e.display,"-").concat(t)}))}))]},"".concat(e.display,"-").concat(t)):Object(o.createElement)(xe,Object(K.a)(Object(K.a)({},e),{},{key:"".concat(e.display,"-").concat(t)}))}))})})]})},ke=function(e){var t=e.sections;return Object(F.jsx)(me.a,{allowMultiple:!0,allowToggle:!0,w:"full",children:t.map((function(e,t){return Object(F.jsx)(ye,Object(K.a)({},e),"section-".concat(t))}))})},we=function(){return Object(F.jsx)(pe.a,{as:"h1",color:"blue.800","data-testid":re.title,size:"lg",children:Object(F.jsxs)(u.b,{to:"/",children:[Object(F.jsx)(v.a,{as:"span",color:"blue.500",children:"Construct"})," ","Hub"]})})},Se=function(e){var t=e.isOpen,n=e.onClose;return Object(F.jsx)(ue.a,{children:Object(F.jsxs)(ve.a,{isOpen:t,onClose:n,placement:"left",size:"xs",children:[Object(F.jsx)(de.h,{}),Object(F.jsxs)(ve.b,{"data-testid":re.mobileNav,children:[Object(F.jsx)(de.c,{}),Object(F.jsx)(de.g,{display:"flex",justifyContent:"start",children:Object(F.jsx)(we,{})}),Object(F.jsx)(de.b,{children:Object(F.jsxs)(be.a,{align:"start",justify:"start",spacing:0,children:[Object(F.jsx)(ke,{sections:[{title:"Getting Started",items:q.c,testId:re.gettingStartedMenu},{title:"Documentation",items:q.b,testId:re.documentationMenu}]}),Object(F.jsx)(_.a,{_hover:{bg:"blackAlpha.50"},borderBottom:"1px solid",borderBottomColor:"gray.200",color:"blue.800",fontSize:"1rem",fontWeight:"bold",h:"3.25rem",lineHeight:"3.25rem",to:G.c.CONTRIBUTE,w:"full",children:"Contribute"})]})})]})]})})},Ce=function(){var e=Object(ie.a)();return Object(F.jsxs)(F.Fragment,{children:[Object(F.jsx)(se.a,{"aria-label":"Navigation Menu",borderRadius:"md","data-testid":re.navOpen,display:{lg:"none"},icon:Object(F.jsx)(te.l,{}),onClick:e.onOpen,variant:"ghost"}),Object(F.jsx)(Se,Object(K.a)({},e))]})},Te=function(e){return Object(F.jsx)(d.b,Object(K.a)({align:"center",justify:"center",rowStart:1},e))},Ee=function(){return Object(F.jsxs)(d.a,{alignItems:"center",as:"header",bg:"white",boxShadow:"base","data-testid":re.container,gap:6,gridTemplateColumns:{base:"1fr max-content 1fr",lg:"max-content minmax(12rem, 31rem) auto"},gridTemplateRows:"1fr",maxW:"100vw",position:"sticky",px:4,py:4,top:0,w:"100%",zIndex:"sticky",children:[Object(F.jsx)(Te,{colStart:{base:2,lg:1},justifySelf:{base:"center",lg:"start"},children:Object(F.jsx)(we,{})}),Object(F.jsx)(Te,{colStart:{base:3,lg:2},justifySelf:{base:"end",lg:"stretch"},children:Object(F.jsx)(he,{})}),Object(F.jsxs)(Te,{colStart:{base:1,lg:3},justifySelf:{base:"start",lg:"end"},children:[Object(F.jsxs)(d.a,{display:{base:"none",lg:"grid"},gap:4,gridTemplateRows:"1fr",placeItems:"center",templateColumns:"1fr 1fr auto",w:"100%",children:[Object(F.jsx)(v.a,{children:Object(F.jsx)(oe,{})}),Object(F.jsx)(v.a,{children:Object(F.jsx)(ce,{})}),Object(F.jsx)(_.a,{color:"blue.800",fontWeight:"500",to:G.c.CONTRIBUTE,children:"Contribute"})]}),Object(F.jsx)(Ce,{})]})]})},Ae=n(76),Me=["component"],ze=function(e){var t=e.component,n=Object(x.a)(e,Me);return Object(F.jsx)(b.b,Object(K.a)(Object(K.a)({},n),{},{children:Object(F.jsx)(o.Suspense,{fallback:Object(F.jsx)(Ae.a,{}),children:Object(F.jsx)(t,{})})}))},Ie=Object(o.lazy)((function(){return Promise.all([n.e(0),n.e(11)]).then(n.bind(null,654))})),Fe=Object(o.lazy)((function(){return Promise.all([n.e(0),n.e(12)]).then(n.bind(null,655))})),Pe=Object(o.lazy)((function(){return Promise.all([n.e(0),n.e(1),n.e(9),n.e(6)]).then(n.bind(null,651))})),De=Object(o.lazy)((function(){return Promise.all([n.e(0),n.e(13)]).then(n.bind(null,306))})),Re=Object(o.lazy)((function(){return Promise.all([n.e(0),n.e(1),n.e(4),n.e(7)]).then(n.bind(null,648))})),Le=Object(o.lazy)((function(){return Promise.all([n.e(0),n.e(1),n.e(10),n.e(8)]).then(n.bind(null,649))})),Ne=Object(o.lazy)((function(){return Promise.all([n.e(0),n.e(14)]).then(n.bind(null,656))})),_e=function(){var e="/"!==Object(b.h)().pathname;return Object(F.jsxs)(d.a,{as:"main",bg:"bgPrimary",gridTemplateColumns:"1fr",gridTemplateRows:"auto auto 1fr auto",h:"100%",maxW:"100%",minH:"100vh",children:[Object(F.jsx)(Ee,{}),e?Object(F.jsx)(j.a,{}):Object(F.jsx)("div",{}),Object(F.jsxs)(b.d,{children:[Object(F.jsx)(ze,{component:Ie,exact:!0,path:G.c.CONTRIBUTE}),Object(F.jsx)(ze,{component:Fe,exact:!0,path:G.c.FAQ}),Object(F.jsx)(ze,{component:Pe,exact:!0,path:G.c.HOME}),Object(F.jsx)(ze,{component:Ne,exact:!0,path:G.c.SITE_TERMS}),Object(F.jsx)(ze,{component:Re,path:G.c.PACKAGES}),Object(F.jsx)(ze,{component:Le,exact:!0,path:G.c.SEARCH}),Object(F.jsx)(ze,{component:De,path:"*"})]}),Object(F.jsx)(V,{})]})},Ge=n(123),We=n(90),Ue=n(74),Be=n(107),He=n(89),Ve=n(91),Ke=n(231),qe=n(227),Je=n(103),Qe=n(102),Ye=n(9),Xe=function(e){var t=e.colorScheme;return{w:"100%",transitionProperty:"box-shadow",transitionDuration:"normal",border:"2px solid",borderRadius:"sm",borderColor:"inherit",color:"white",_checked:{bg:Object(Ye.b)("".concat(t,".500"),"".concat(t,".200"))(e),borderColor:Object(Ye.b)("".concat(t,".500"),"".concat(t,".200"))(e),color:Object(Ye.b)("white","gray.900")(e),_hover:{bg:Object(Ye.b)("".concat(t,".600"),"".concat(t,".300"))(e),borderColor:Object(Ye.b)("".concat(t,".600"),"".concat(t,".300"))(e)},_disabled:{borderColor:Object(Ye.b)("gray.200","transparent")(e),bg:Object(Ye.b)("gray.200","whiteAlpha.300")(e),color:Object(Ye.b)("gray.500","whiteAlpha.500")(e)}},_indeterminate:{bg:Object(Ye.b)("".concat(t,".500"),"".concat(t,".200"))(e),borderColor:Object(Ye.b)("".concat(t,".500"),"".concat(t,".200"))(e),color:Object(Ye.b)("white","gray.900")(e)},_disabled:{bg:Object(Ye.b)("gray.100","whiteAlpha.100")(e),borderColor:Object(Ye.b)("gray.100","transparent")(e)},_focus:{boxShadow:"outline"},_invalid:{borderColor:Object(Ye.b)("red.500","red.300")(e)}}},Ze={userSelect:"none",_disabled:{opacity:.4}},$e={transitionProperty:"transform",transitionDuration:"normal"},et={parts:Qe.a.keys,baseStyle:function(e){return{icon:$e,control:Xe(e),label:Ze}},sizes:{sm:{control:{h:3,w:3},label:{fontSize:"sm"},icon:{fontSize:"0.45rem"}},base:{control:{h:3.5,w:3.5},label:{fontSize:"sm"},icon:{fontSize:"0.5rem"}},md:{control:{w:4,h:4},label:{fontSize:"md"},icon:{fontSize:"0.625rem"}},lg:{control:{w:5,h:5},label:{fontSize:"lg"},icon:{fontSize:"0.625rem"}}},defaultProps:{size:"base",colorScheme:"blue"}},tt=Je.theme.components.Code,nt=Object(K.a)(Object(K.a)({},tt),{},{variants:Object(K.a)(Object(K.a)({},tt.variants),{},{"code-block":Object(K.a)(Object(K.a)({},tt.variants.subtle),{},{display:"block",whiteSpace:"pre"})})}),at={defaultProps:{borderColor:"rgba(0, 124, 253, 0.15)"}},rt=function(e){var t=et.baseStyle(e).control,n=void 0===t?{}:t;return Object(K.a)(Object(K.a)({},n),{},{borderRadius:"full",pos:"relative",_checked:Object(K.a)(Object(K.a)({},n._checked),{},{_before:{content:'""',display:"inline-block",pos:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",w:"50%",h:"50%",borderRadius:"50%",bg:"currentColor"}})})},ct={parts:Qe.b.keys,baseStyle:function(e){return{label:et.baseStyle(e).label,control:rt(e)}},sizes:{sm:{control:{h:3,w:3},label:{fontSize:"sm"}},base:{control:{h:3.5,w:3.5},label:{fontSize:"sm"}},md:{control:{h:4,w:4},label:{fontSize:"md"}},lg:{control:{h:5,w:5},label:{fontSize:"lg"}}},defaultProps:{size:"base",colorScheme:"blue"}},ot=n(4),it=Je.theme.components.Tabs,st=Object(K.a)(Object(K.a)({},it.variants),{},{line:function(e){var t,n,a=e.colorScheme,r=e.orientation,c="vertical"===r?"borderStart":"borderBottom",o="vertical"===r?"marginStart":"marginBottom";return{tablist:(t={},Object(ot.a)(t,c,"none"),Object(ot.a)(t,"borderColor","inherit"),t),tab:(n={},Object(ot.a)(n,c,"4px solid"),Object(ot.a)(n,"borderColor","transparent"),Object(ot.a)(n,o,"0"),Object(ot.a)(n,"_selected",{color:Object(Ye.b)("".concat(a,".500"),"".concat(a,".300"))(e),borderColor:"currentColor",fontWeight:"semibold"}),Object(ot.a)(n,"_active",{bg:Object(Ye.b)("gray.200","whiteAlpha.300")(e)}),Object(ot.a)(n,"_disabled",{opacity:.4,cursor:"not-allowed"}),n)}}}),lt=Object(K.a)(Object(K.a)({},it),{},{variants:st}),ut=function(e,t){return function(n){var a="function"===typeof e?e(n):e;return Object(K.a)(Object(K.a)({},a),{},{container:Object(K.a)(Object(K.a)({},a.container),t)})}},dt=Je.theme.components.Tag,bt=function(e){var t=e.reduce((function(e,t){var n=t.keyword;return(null===n||void 0===n?void 0:n.color)?Object(K.a)(Object(K.a)({},e),{},Object(ot.a)({},n.color,ut(dt.variants.subtle,{background:Object(Ye.c)(n.color,.1),color:n.color}))):e}),{});return Object(K.a)(Object(K.a)({},dt),{},{baseStyle:{container:{fontWeight:"normal"}},variants:Object(K.a)(Object(K.a)({},dt.variants),{},{subtle:ut(dt.variants.subtle,{background:"#F2F2F2",color:"blue.800"})},t)})},jt=function(e){return Object(K.a)(Object(K.a)({},Je.theme.components),{},{Checkbox:et,Code:nt,Divider:at,Radio:ct,Tag:bt(e.Tag),Tabs:lt})},ft={borders:{base:"1px solid rgba(0, 124, 253, 0.15)"},colors:Object(K.a)(Object(K.a)({},Je.theme.colors),{},{blue:{50:"#dcf3ff",100:"#aed9ff",200:"#7dbeff",300:"#4aa4ff",400:"#1a8aff",500:"#0070e6",600:"#0057b4",700:"#003e82",800:"#002551",900:"#000d21"},bgPrimary:"#F8F8F8"}),radii:{card:"0.75rem"},sizes:{container:{"2xl":"120rem"}},shadows:{base:"0px 4px 15px rgba(40, 132, 178, 0.15)"}},Ot=function(e){var t,n={Tag:null!==(t=e.packageTags)&&void 0!==t?t:[]};return Object(qe.a)(Object(K.a)(Object(K.a)({},ft),{},{components:jt(n),config:{initialColorMode:"light",useSystemColorMode:!1}}))},ht=function(e){var t=e.children,n=Object(Ue.b)(),a=n.loading,r=n.data;return a?Object(F.jsx)(Ae.a,{}):Object(F.jsx)(Ke.a,{resetCSS:!0,theme:Ot(r),children:t})};Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));l.a.render(Object(F.jsx)(i.a.StrictMode,{children:Object(F.jsx)(u.a,{children:Object(F.jsx)(L,{children:Object(F.jsx)(Ge.a,{children:Object(F.jsx)(Ue.a,{children:Object(F.jsx)(We.a,{children:Object(F.jsx)(Ve.a,{children:Object(F.jsx)(He.a,{children:Object(F.jsx)(ht,{children:Object(F.jsx)(Be.a,{children:Object(F.jsx)(_e,{})})})})})})})})})})}),document.getElementById("root")),c&&c instanceof Function&&n.e(16).then(n.bind(null,647)).then((function(e){var t=e.getCLS,n=e.getFID,a=e.getFCP,r=e.getLCP,o=e.getTTFB;t(c),n(c),a(c),r(c),o(c)}),(function(){})),"serviceWorker"in navigator&&navigator.serviceWorker.ready.then((function(e){e.unregister()})).catch((function(e){console.error(e.message)}))},48:function(e,t,n){"use strict";n.d(t,"c",(function(){return c})),n.d(t,"a",(function(){return i})),n.d(t,"b",(function(){return s}));var a,r,c,o=n(4);!function(e){e.awscdk="aws-cdk",e.cdktf="cdktf",e.cdk8s="cdk8s"}(c||(c={}));var i=(a={},Object(o.a)(a,c.awscdk,"AWS CDK"),Object(o.a)(a,c.cdktf,"CDKtf"),Object(o.a)(a,c.cdk8s,"CDK8s"),a),s=(r={},Object(o.a)(r,c.awscdk,{name:i[c.awscdk],imgsrc:"/assets/awscdk-icon-v2.png"}),Object(o.a)(r,c.cdk8s,{name:i[c.cdk8s],imgsrc:"/assets/cdk8s-icon-v2.png"}),Object(o.a)(r,c.cdktf,{name:i[c.cdktf],imgsrc:"/assets/cdktf-icon.png"}),r)},49:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var a=n(6),r=n(211),c=n(34),o=n(1),i=function(e){return Object(o.jsx)(r.a,Object(a.a)({as:c.b},e))}},51:function(e,t,n){"use strict";n.d(t,"a",(function(){return d}));var a=n(6),r=n(24),c=n(30),o=n(17),i=n(211),s=n(107),l=n(1),u=["children","hasIcon","hasWarning","href","onClick","noFollow","rightIcon"],d=Object(o.a)((function(e,t){var n=e.children,o=e.hasIcon,d=void 0===o||o,b=e.hasWarning,j=void 0===b||b,f=e.href,O=e.onClick,h=e.noFollow,v=e.rightIcon,m=Object(r.a)(e,u),p=Object(s.b)(),g=(d=d||Boolean(v))?null!==v&&void 0!==v?v:Object(l.jsx)(c.k,{mb:1,ml:0}):null,x="noopener noreferrer";return(j||h)&&(x+=" nofollow"),Object(l.jsxs)(i.a,Object(a.a)(Object(a.a)({color:"blue.500",href:f,isExternal:!0,onClick:j?p({href:f,onClick:O}):O,ref:t,rel:x},m),{},{children:[n," ",d&&g]}))}));d.displayName="ExternalLink"},58:function(e,t,n){"use strict";n.d(t,"a",(function(){return a})),n.d(t,"c",(function(){return r})),n.d(t,"b",(function(){return c}));var a="https://github.com/cdklabs/construct-hub",r=[{display:"FAQ",isNavLink:!0,url:"/faq"},{display:"Construct Hub on GitHub",url:a},{display:"Issues on GitHub",url:"".concat(a,"/issues")},{display:"Community",links:[{display:"Slack",url:"https://join.slack.com/t/cdk-dev/shared_invite/zt-xtpfmrqt-6ormYTA0hLdpMSAtTkM_2A"}]}],c=[{display:"AWS CDK",links:[{display:"Home",url:"https://aws.amazon.com/cdk/"},{display:"Getting Started",url:"https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html"},{display:"Workshop",url:"https://cdkworkshop.com/"},{display:"Best Practices",url:"https://docs.aws.amazon.com/cdk/latest/guide/best-practices.html"}]},{display:"CDK for Terraform",links:[{display:"Getting Started",url:"https://learn.hashicorp.com/tutorials/terraform/cdktf"},{display:"Tutorials",url:"https://learn.hashicorp.com/collections/terraform/cdktf"}]},{display:"CDK for Kubernetes",links:[{display:"Home",url:"https://cdk8s.io"},{display:"Getting Started",url:"https://cdk8s.io/docs/latest/getting-started"},{display:"Documentation",url:"https://cdk8s.io/docs/latest"},{display:"API Reference",url:"https://cdk8s.io/docs/latest/reference/index.html"}]},{display:"Community",links:[{display:"Community Hub",url:"https://cdk.dev"}]}]},59:function(e,t,n){"use strict";var a;n.d(t,"a",(function(){return a})),function(e){e.NameAsc="asc",e.NameDesc="desc",e.PublishDateAsc="oldest",e.PublishDateDesc="newest",e.DownloadsAsc="downloadsAsc",e.DownloadsDesc="downloadsDesc"}(a||(a={}))},63:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var a=function(e,t){return t.reduce((function(t,n){return t[n]="".concat(e,"-").concat(n),t}),{})}},74:function(e,t,n){"use strict";n.d(t,"a",(function(){return f})),n.d(t,"b",(function(){return j}));var a=n(6),r=n(37),c=n(5),o=n(0),i=n(22),s=n(136),l=n(77),u=n(1),d=Object(o.createContext)({loading:!1,data:void 0,error:void 0}),b="construct-hub-config",j=function(){return Object(o.useContext)(d)},f=function(e){var t,n=e.children,j=Object(i.h)().search,f=Object(o.useState)((function(){try{var e=localStorage.getItem(b);return e?JSON.parse(e):void 0}catch(t){console.error(t)}})),O=Object(c.a)(f,2),h=O[0],v=O[1],m=Object(l.a)(s.b,{onSuccess:function(e){v(e);try{localStorage.setItem(b,JSON.stringify(e))}catch(t){console.error(t)}}}),p=Object(c.a)(m,2),g=p[0],x=p[1];Object(o.useEffect)((function(){g()}),[]);var y=null!==h&&void 0!==h?h:{},k=new URLSearchParams(j),w=null!==(t=y.featureFlags)&&void 0!==t?t:{};y.featureFlags=w;var S,C=Object(r.a)(k.keys());try{for(C.s();!(S=C.n()).done;){var T=S.value;if(T.startsWith("ff-"))w[T.slice(3)]=!0}}catch(E){C.e(E)}finally{C.f()}return Object(u.jsx)(d.Provider,{value:Object(a.a)(Object(a.a)({},x),{},{data:y}),children:n})}},75:function(e,t,n){"use strict";n.d(t,"a",(function(){return y})),n.d(t,"b",(function(){return S})),n.d(t,"c",(function(){return L}));var a=n(6),r=n(24),c=n(30),o=n(210),i=n(220),s=n(221),l=n(236),u=n(159),d=n(213),b=n(0),j=n(95),f=n(108),O=n(146),h=n(63),v=Object(h.a)("searchBar",["input","searchIcon","searchButton","overlay","suggestionsList","suggestion"]),m=n(1),p=["children","hasButton","onSubmit","value","onChange"],g=Object(b.createContext)(void 0),x=function(){var e=Object(b.useContext)(g);if(!e)throw new Error("This component must be a child of a <SearchBar />");return e},y=function(e){var t,n=e.children,h=e.hasButton,x=e.onSubmit,y=e.value,k=e.onChange,w=Object(r.a)(e,p),S=Object(o.a)(),C=Object(b.useRef)(null),T=Object(j.a)(),E=Object(f.a)(),A=100*Math.floor((null!==(t=E.length)&&void 0!==t?t:0)/100),M="Search ".concat(A>0?"".concat(A,"+ "):"","construct libraries");return Object(b.useEffect)((function(){var e=function(e){C.current&&e.target&&(C.current.contains(e.target)||S.onClose())},t=function(e){var t,n;"Escape"===e.key&&(null===(t=C.current)||void 0===t||null===(n=t.blur)||void 0===n||n.call(t),S.onClose())};return window.addEventListener("keyup",t),window.addEventListener("click",e),function(){window.removeEventListener("keyup",t),window.removeEventListener("click",e)}}),[]),Object(m.jsx)(g.Provider,{value:{query:null!==y&&void 0!==y?y:T.query,isOpen:S.isOpen},children:Object(m.jsxs)(O.a,{color:"initial",onSubmit:null!==x&&void 0!==x?x:T.onSubmit,pos:"relative",children:[Object(m.jsxs)(i.a,{pos:"relative",zIndex:S.isOpen?3:"initial",children:[h&&Object(m.jsx)(s.a,{children:Object(m.jsx)(c.o,{"data-testid":v.searchIcon})}),Object(m.jsx)(l.a,Object(a.a)({_focus:{boxShadow:"base",borderColor:"inherit"},bg:"white",boxShadow:S.isOpen?"base":"none","data-testid":v.input,onChange:null!==k&&void 0!==k?k:T.onQueryChange,onFocus:S.onOpen,placeholder:M,ref:C,value:null!==y&&void 0!==y?y:T.query},w)),h?Object(m.jsx)(s.b,{display:{base:"none",md:"initial"},w:"9rem",children:Object(m.jsx)(u.a,{borderLeftRadius:"0",colorScheme:"blue","data-testid":v.searchButton,type:"submit",children:"Find Constructs"})}):Object(m.jsx)(s.b,{children:Object(m.jsx)(d.a,{"aria-label":"Run search","data-testid":v.searchIcon,icon:Object(m.jsx)(c.o,{}),type:"submit",variant:"ghost"})})]}),n]})})},k=n(17),w=n(204),S=Object(k.a)((function(e,t){var n=x().isOpen;return Object(m.jsx)(w.a,Object(a.a)({bg:"gray.700","data-testid":v.overlay,display:n?"initial":"none",inset:"0",opacity:"0.5",pos:"fixed",ref:t,zIndex:"1"},e))})),C=n(223),T=n(216),E=n(238),A=n(208),M=n(22),z=n(128),I=n(147),F=n(88),P=n(94),D=n(129),R=n(148),L=Object(k.a)((function(e,t){var n=x(),r=n.query,c=n.isOpen,o=Object(I.a)(r),i=Object(M.g)().push,s=Object(z.a)({limit:5,offset:0,query:o}).page;return!c||s.length<1||!o?null:Object(m.jsx)(P.a,Object(a.a)(Object(a.a)({as:C.c,"data-testid":v.suggestionsList,left:0,ml:0,pos:"absolute",pt:10,px:0,ref:t,right:0,top:0,zIndex:2},e),{},{children:s.map((function(e,t){var n,r,c=null!==(n=null===(r=e.metadata)||void 0===r?void 0:r.constructFramework)&&void 0!==n?n:{};return Object(m.jsxs)(m.Fragment,{children:[t>0&&Object(m.jsx)(T.a,{mx:4,w:"auto"}),Object(m.jsx)(R.a,{"data-testid":v.suggestion,name:Object(m.jsxs)(E.a,{align:"center",direction:"row",spacing:4,children:[Object(m.jsx)(w.a,{w:"5.5rem",children:Object(m.jsx)(D.a,Object(a.a)({w:"min-content"},c))}),Object(m.jsx)(A.a,{children:e.name})]}),onClick:function(){return i(Object(F.a)(e))},py:2,textAlign:"left"},e.id)]})}))}))}))},76:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var a=n(219),r=n(209),c=n(1),o=function(){return Object(c.jsx)(a.a,{children:Object(c.jsx)(r.a,{size:"xl"})})}},77:function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));var a=n(28),r=n.n(a),c=n(45),o=n(5),i=n(0),s=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.initialValue,a=t.onSuccess,s=t.onError,l=Object(i.useState)(!1),u=Object(o.a)(l,2),d=u[0],b=u[1],j=Object(i.useState)(n),f=Object(o.a)(j,2),O=f[0],h=f[1],v=Object(i.useState)(),m=Object(o.a)(v,2),p=m[0],g=m[1],x=Object(i.useRef)(!1);Object(i.useEffect)((function(){return x.current=!0,function(){x.current=!1}}),[]);var y=Object(i.useCallback)(Object(c.a)(r.a.mark((function t(){var c,o=arguments;return r.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(x.current){t.next=2;break}return t.abrupt("return");case 2:return b(!0),g(void 0),t.prev=4,t.next=7,e.apply(void 0,o);case 7:c=t.sent,null===a||void 0===a||a(c),x.current&&(h(c),b(!1)),t.next=17;break;case 12:t.prev=12,t.t0=t.catch(4),console.error(t.t0),null===s||void 0===s||s(t.t0),x.current&&(h(n),g(t.t0),b(!1));case 17:case"end":return t.stop()}}),t,null,[[4,12]])}))),[s,a]);return Object(i.useMemo)((function(){return[y,{data:O,loading:d,error:p}]}),[y,O,d,p])}},88:function(e,t,n){"use strict";n.d(t,"b",(function(){return i})),n.d(t,"c",(function(){return l})),n.d(t,"a",(function(){return u}));var a=n(4),r=n(5),c=n(13),o=new RegExp(/git@github\.com:([a-zA-Z-]+)+\/?([a-zA-Z-]+)*(\.git)?/),i=function(e){try{var t=e,n=e.match(o);if(n){var a=Object(r.a)(n,3),c=a[1],i=a[2];t="https://github.com/".concat(c,"/").concat(i)}return{hostname:new URL(t).hostname,url:t}}catch(s){return}},s=function(e,t){var n=e;if(t){var a=function(e,t){var n=new URLSearchParams(t);return Object.entries(e).filter((function(e){return null!=Object(r.a)(e,2)[1]})).forEach((function(e){var t=Object(r.a)(e,2),a=t[0],c=t[1];n.set(a,"".concat(c))})),n.toString()}(t);a&&(n+="?".concat(a))}return n},l=function(e){var t,n=e.cdkMajor,r=e.cdkType,o=e.keywords,i=e.query,l=e.offset,u=e.languages,d=e.sort,b=e.tags;return s(c.c.SEARCH,(t={},Object(a.a)(t,c.b.SEARCH_QUERY,i),Object(a.a)(t,c.b.CDK_TYPE,r),Object(a.a)(t,c.b.CDK_MAJOR,n),Object(a.a)(t,c.b.KEYWORDS,(null===o||void 0===o?void 0:o.length)?o.join(","):null),Object(a.a)(t,c.b.LANGUAGES,(null===u||void 0===u?void 0:u.length)?u.join(","):null),Object(a.a)(t,c.b.SORT,d),Object(a.a)(t,c.b.OFFSET,null!==l&&void 0!==l?l:0),Object(a.a)(t,c.b.TAGS,(null===b||void 0===b?void 0:b.length)?b.join(","):null),t))},u=function(e){var t,n=e.name,r=e.version,o=e.language,i=e.submodule;return s("".concat(c.c.PACKAGES,"/").concat(n,"/v/").concat(r),(t={},Object(a.a)(t,c.b.SUBMODULE,i),Object(a.a)(t,c.b.LANGUAGE,o),t))}},89:function(e,t,n){"use strict";n.d(t,"b",(function(){return D})),n.d(t,"a",(function(){return R}));var a,r=n(0),c=n(4),o=n(37),i=n(14),s=n(6),l=n(5),u=n(68),d=n(78),b=n(119),j=n.n(b),f=n(48),O=n(59),h=n(127),v=n(122),m=function(e){return function(t,n){return t.name.localeCompare(n.name)*(e?1:-1)}},p=function(e){return function(t,n){var a=new Date(t.metadata.date).getTime(),r=new Date(n.metadata.date).getTime();return a===r?m(!0)(t,n):e?r<a?1:-1:a<r?1:-1}},g=function(e){return function(t,n){return t.downloads!==n.downloads?(t.downloads-n.downloads)*(e?1:-1):m(!e)(t,n)}},x=(a={},Object(c.a)(a,O.a.NameAsc,m(!0)),Object(c.a)(a,O.a.NameDesc,m(!1)),Object(c.a)(a,O.a.PublishDateAsc,p(!0)),Object(c.a)(a,O.a.PublishDateDesc,p(!1)),Object(c.a)(a,O.a.DownloadsAsc,g(!0)),Object(c.a)(a,O.a.DownloadsDesc,g(!1)),a),y=function(e){if(e)return function(t){var n,a;return(null===(n=t.metadata)||void 0===n||null===(a=n.constructFramework)||void 0===a?void 0:a.name)===e}},k=function(e){if("number"===typeof e)return function(t){var n,a;return(null===(n=t.metadata)||void 0===n||null===(a=n.constructFramework)||void 0===a?void 0:a.majorVersion)===e}},w=function(e){if(null===e||void 0===e?void 0:e.length)return function(t){var n,a,r,c,i=new Set,s=Object(o.a)(null!==(n=t.keywords)&&void 0!==n?n:[]);try{for(s.s();!(c=s.n()).done;){var l=c.value;i.add(l.toLocaleLowerCase())}}catch(v){s.e(v)}finally{s.f()}var u,d=Object(o.a)(null!==(a=null===(r=t.metadata)||void 0===r?void 0:r.packageTags)&&void 0!==a?a:[]);try{for(d.s();!(u=d.n()).done;){var b,j=null===(b=u.value.keyword)||void 0===b?void 0:b.label;j&&i.add(j.toLocaleLowerCase())}}catch(v){d.e(v)}finally{d.f()}var f,O=Object(o.a)(e);try{for(O.s();!(f=O.n()).done;){var h=f.value;if(i.has(h.toLocaleLowerCase()))return!0}}catch(v){O.e(v)}finally{O.f()}return!1}},S=function(e){var t,n=(null!==(t=null===e||void 0===e?void 0:e.length)&&void 0!==t?t:0)>0?new Set(e):void 0;if(n&&!n.has(v.d.TypeScript))return function(e){var t;return Object.keys(null!==(t=e.languages)&&void 0!==t?t:{}).some((function(e){return n.has(e)}))}},C=function(e){if(e&&e.length)return function(t){var n,a,r;return null!==(n=null===(a=t.metadata)||void 0===a||null===(r=a.packageTags)||void 0===r?void 0:r.some((function(t){return e.includes(t.id)})))&&void 0!==n&&n}},T=function(e){for(var t,n,a,r=new Set,c=null!==(t=e.keywords)&&void 0!==t?t:[],o=(null!==(n=null===(a=e.metadata)||void 0===a?void 0:a.packageTags)&&void 0!==n?n:[]).filter((function(e){return e.keyword})).map((function(e){return e.keyword.label})),s=0,l=[].concat(Object(i.a)(c),Object(i.a)(o));s<l.length;s++){var u=l[s];h.a.has(u)||r.add(u.toLocaleLowerCase())}return Array.from(r)},E={AUTHOR_EMAIL:{name:"authorEmail",boost:1},AUTHOR_NAME:{name:"authorName",boost:3},DESCRIPTION:{name:"description",boost:2},KEYWORDS:{name:"keywords",boost:2},NAME:{name:"name",boost:5},PACKAGE_NAME:{name:"packageName",boost:5},SCOPE:{name:"scope",boost:5},TAG_NAMES:{name:"tagNames",boost:2}},A=function(){function e(t,n){Object(u.a)(this,e),this.map=void 0,this.index=void 0,this.keywords=void 0,this.constructFrameworks=void 0;var a=t.filter((function(e){var t;return!(null===(t=e.keywords)||void 0===t?void 0:t.includes("construct-hub/hide-from-search"))})).reduce((function(e,t){var a,r,c,o,i,u,d=t.author,b=t.name,j=[b,t.version].join("@"),f=null!==(a=null===(r=n.packages[b])||void 0===r||null===(c=r.downloads)||void 0===c?void 0:c.npm)&&void 0!==a?a:0,O=b.split("/"),h=Object(l.a)(O,2),v=h[0],m=h[1];return m||(m=v),"string"===typeof d?i=d:((null===d||void 0===d?void 0:d.name)&&(i=d.name),(null===d||void 0===d?void 0:d.email)&&(u=d.email)),e.set(j,Object(s.a)(Object(s.a)({},t),{},{authorName:i,authorEmail:u,keywords:T(t),downloads:f,id:j,packageName:m,scope:v,tagNames:(null!==(o=t.metadata.packageTags)&&void 0!==o?o:[]).map((function(e){return e.id}))})),e}),new Map);this.map=this.sort(a,O.a.PublishDateDesc),this.constructFrameworks=this.detectConstructFrameworks(),this.keywords=this.detectKeywords(),this.index=j()((function(){var e=this;for(var t in this.tokenizer.separator=/[\s\-/@]+/,this.ref("id"),E){var n=E[t];this.field(n.name,{boost:n.boost})}Object(i.a)(a.values()).forEach((function(t){var n=Math.log(Math.max(t.downloads,1));e.add(t,{boost:n})}))}))}return Object(d.a)(e,[{key:"search",value:function(e){var t=null!==e&&void 0!==e?e:{},n=t.query,a=t.filters,r=t.sort,c=n?this.query(n):new Map(this.map);return a&&(c=this.filter(c,a)),c=this.dedup(c),r&&(c=this.sort(c,r)),c}},{key:"query",value:function(e){var t=this,n=[];try{var a=j.a.tokenizer(e);a.length>1&&(a=a.filter((function(e){return"cdk"!==e.toString()}))),n=this.index.query((function(e){e.term(a,{})}))}catch(r){console.error(r)}return n.reduce((function(e,n){var a=n.ref,r=t.map.get(a);return r&&e.set(a,r),e}),new Map)}},{key:"findByName",value:function(e){var t,n=Object(i.a)(this.map.values()).filter((function(t){return t.name===e})),a=new Array,r=Object(o.a)(n.values());try{for(r.s();!(t=r.n()).done;){var c=t.value;c.name===e&&a.push(c)}}catch(s){r.e(s)}finally{r.f()}return a}},{key:"filter",value:function(e,t){var n=t.cdkType,a=t.cdkMajor,r=t.keywords,c=t.languages,o=t.tags,i=new Map(e),s=[y(n),k(n?a:void 0),w(r),S(c),C(o)].filter(Boolean);return i.forEach((function(e){var t=!1;s.forEach((function(n){t||n(e)||(t=!0)})),t&&i.delete(e.id)})),i}},{key:"sort",value:function(e,t){return t?new Map(Object(i.a)(e.entries()).sort((function(e,n){var a=Object(l.a)(e,2)[1],r=Object(l.a)(n,2)[1];return x[t](a,r)}))):e}},{key:"dedup",value:function(e){var t,n=new Map,a=Object(o.a)(e);try{for(a.s();!(t=a.n()).done;){var r=Object(l.a)(t.value,2),c=(r[0],r[1]),i=n.get(c.name);(!i||new Date(i.metadata.date)<new Date(c.metadata.date))&&n.set(c.name,c)}}catch(s){a.e(s)}finally{a.f()}return n}},{key:"detectKeywords",value:function(){return Object(i.a)(this.map.values()).reduce((function(e,t){var n,a=Object(o.a)(T(t));try{for(a.s();!(n=a.n()).done;){var r=n.value,c=e.get(r);e.set(r,(null!==c&&void 0!==c?c:0)+1)}}catch(i){a.e(i)}finally{a.f()}return e}),new Map)}},{key:"detectConstructFrameworks",value:function(){var e;return Object(i.a)(this.map.values()).reduce((function(e,t){var n,a,r=t.metadata,c=null===r||void 0===r||null===(n=r.constructFramework)||void 0===n?void 0:n.name,o=null===r||void 0===r||null===(a=r.constructFramework)||void 0===a?void 0:a.majorVersion;if(c){var i=e[c];void 0===o||i.majorVersions.includes(o)||i.majorVersions.push(o),i.pkgCount+=1}return e}),(e={},Object(c.a)(e,f.c.awscdk,{majorVersions:[],pkgCount:0}),Object(c.a)(e,f.c.cdk8s,{majorVersions:[],pkgCount:0}),Object(c.a)(e,f.c.cdktf,{majorVersions:[],pkgCount:0}),e))}}]),e}(),M=n(76),z=n(90),I=n(91),F=n(1),P=Object(r.createContext)(void 0),D=function(){return Object(r.useContext)(P)},R=function(e){var t=e.children,n=Object(z.b)(),a=n.data,c=n.loading,o=Object(I.b)(),i=o.data,s=o.loading,l=Object(r.useMemo)((function(){if(void 0!==(null===a||void 0===a?void 0:a.packages)&&!c&&(void 0!==i&&!s))return new A(a.packages,i)}),[a,c,i,s]);return l?Object(F.jsx)(P.Provider,{value:l,children:t}):Object(F.jsx)(M.a,{})}},90:function(e,t,n){"use strict";n.d(t,"b",(function(){return f})),n.d(t,"a",(function(){return O}));var a=n(5),r=n(0),c=n(28),o=n.n(c),i=n(45),s=n(13),l={packages:[]},u=function(){var e=Object(i.a)(o.a.mark((function e(){var t;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(s.a.CATALOG_SUFFIX);case 2:if((t=e.sent).ok){e.next=7;break}return console.error(t.statusText),console.warn("Failed to fetch package catalog. Falling back to empty package list."),e.abrupt("return",l);case 7:return e.abrupt("return",t.json().catch((function(e){return console.error(e),console.warn("Invalid package catalog response. Falling back to empty package list."),l})));case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),d=n(77),b=n(1),j=Object(r.createContext)({loading:!1,data:void 0,error:void 0}),f=function(){return Object(r.useContext)(j)},O=function(e){var t=e.children,n=Object(d.a)(u),c=Object(a.a)(n,2),o=c[0],i=c[1];return Object(r.useEffect)((function(){o()}),[o]),Object(b.jsx)(j.Provider,{value:i,children:t})}},91:function(e,t,n){"use strict";n.d(t,"b",(function(){return f})),n.d(t,"a",(function(){return O}));var a=n(5),r=n(0),c=n(28),o=n.n(c),i=n(45),s=n(13),l={packages:{},updated:"NOT_FOUND"},u=function(){var e=Object(i.a)(o.a.mark((function e(){var t;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(s.a.STATS);case 2:if((t=e.sent).ok){e.next=7;break}return console.error(t.statusText),console.warn("Could not retrieve package stats. Using empty stats."),e.abrupt("return",l);case 7:return e.abrupt("return",t.json().catch((function(e){return console.error(e),console.warn("Error in package stats response. Using empty stats."),l})));case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),d=n(77),b=n(1),j=Object(r.createContext)({loading:!1,data:void 0,error:void 0}),f=function(){return Object(r.useContext)(j)},O=function(e){var t=e.children,n=Object(d.a)(u),c=Object(a.a)(n,2),o=c[0],i=c[1];return Object(r.useEffect)((function(){o()}),[o]),Object(b.jsx)(j.Provider,{value:i,children:t})}},94:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var a=n(6),r=n(17),c=n(204),o=n(1),i=Object(r.a)((function(e,t){return Object(o.jsx)(c.a,Object(a.a)({bg:"white",border:"base",borderRadius:"card",boxShadow:"base",p:2,ref:t},e))}));i.displayName="Card"},95:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var a=n(5),r=n(0),c=n(22),o=n(88),i=function(){var e,t,n,i,s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},l=Object(r.useState)(null!==(e=s.defaultQuery)&&void 0!==e?e:""),u=Object(a.a)(l,2),d=u[0],b=u[1],j=Object(r.useState)(s.defaultCdkType),f=Object(a.a)(j,2),O=f[0],h=f[1],v=Object(r.useState)(s.defaultCdkMajor),m=Object(a.a)(v,2),p=m[0],g=m[1],x=Object(r.useState)(null!==(t=s.defaultLanguages)&&void 0!==t?t:[]),y=Object(a.a)(x,2),k=y[0],w=y[1],S=Object(r.useState)(null!==(n=s.defaultTags)&&void 0!==n?n:[]),C=Object(a.a)(S,2),T=C[0],E=C[1],A=Object(r.useState)(null!==(i=s.defaultKeywords)&&void 0!==i?i:[]),M=Object(a.a)(A,2),z=M[0],I=M[1],F=Object(r.useState)(s.defaultSort),P=Object(a.a)(F,2),D=P[0],R=P[1],L=Object(c.g)(),N=L.push,_=L.replace,G=function(e){e.preventDefault(),b(e.target.value)},W=Object(r.useCallback)((function(e){((null===e||void 0===e?void 0:e.replace)?_:N)(Object(o.c)({cdkType:O,cdkMajor:p,keywords:z,languages:k,query:d,sort:D,tags:T}))}),[_,N,O,p,z,k,d,D,T]),U=Object(r.useCallback)((function(e){null===e||void 0===e||e.preventDefault(),W()}),[W]);return Object(r.useMemo)((function(){return{cdkMajor:p,cdkType:O,keywords:z,languages:k,onQueryChange:G,onSearch:W,onSubmit:U,query:d,setCdkMajor:g,setCdkType:h,setKeywords:I,setLanguages:w,setTags:E,setQuery:b,setSort:R,sort:D,tags:T}}),[p,O,z,k,W,U,d,D,T])}}},[[183,3,5]]]);
|
|
2
|
+
//# sourceMappingURL=main.8038c15f.chunk.js.map
|