From ed8f9b5931a09ff3e65f5d8471fc74e70582802d Mon Sep 17 00:00:00 2001 From: Chaim Lev-Ari Date: Tue, 28 Jun 2022 10:42:42 +0300 Subject: [PATCH] feat(sidebar): implement new design [EE-3447] (#7118) --- app/assets/css/app.css | 19 + app/assets/css/rdash.css | 42 - app/assets/css/theme.css | 4 - app/assets/images/logo_small_alt.png | Bin 0 -> 2941 bytes app/global.d.ts | 17 + .../components/PageHeader/HeaderTitle.tsx | 45 +- .../portainer/environments/utils/azure.png | Bin 0 -> 5494 bytes .../portainer/environments/utils/azure.svg | 23 + .../portainer/environments/utils/docker.png | Bin 0 -> 1459 bytes .../portainer/environments/utils/docker.svg | 12 + .../environments/utils/get-platform-icon.ts | 20 + .../environments/utils/kubernetes.png | Bin 0 -> 3573 bytes .../environments/utils/kubernetes.svg | 12 + .../portainer/environments/utils/nomad.png | Bin 0 -> 1439 bytes .../portainer/environments/utils/nomad.svg | 3 + .../AzureSidebar/AzureSidebar.test.tsx | 20 +- .../sidebar/AzureSidebar/AzureSidebar.tsx | 12 +- app/react/sidebar/DockerSidebar.tsx | 71 +- app/react/sidebar/EdgeComputeSidebar.tsx | 26 +- .../sidebar/EnvironmentSidebar.module.css | 5 - app/react/sidebar/EnvironmentSidebar.tsx | 116 +- app/react/sidebar/Footer.module.css | 25 - app/react/sidebar/Footer.tsx | 32 +- app/react/sidebar/Header.module.css | 29 - app/react/sidebar/Header.tsx | 39 +- .../KubernetesSidebar/KubernetesSidebar.tsx | 35 +- app/react/sidebar/SettingsSidebar.tsx | 36 +- app/react/sidebar/Sidebar.module.css | 69 +- app/react/sidebar/Sidebar.tsx | 27 +- app/react/sidebar/SidebarItem/Head.tsx | 85 + app/react/sidebar/SidebarItem/Icon.module.css | 17 - app/react/sidebar/SidebarItem/Icon.tsx | 18 - app/react/sidebar/SidebarItem/Link.module.css | 28 - app/react/sidebar/SidebarItem/Link.tsx | 43 - app/react/sidebar/SidebarItem/Menu.module.css | 24 - app/react/sidebar/SidebarItem/Menu.tsx | 64 +- .../SidebarItem/SidebarItem.module.css | 75 - .../SidebarItem/SidebarItem.stories.tsx | 22 +- .../sidebar/SidebarItem/SidebarItem.test.tsx | 34 - app/react/sidebar/SidebarItem/SidebarItem.tsx | 29 +- app/react/sidebar/SidebarItem/Wrapper.tsx | 8 +- app/react/sidebar/SidebarItem/index.ts | 6 - app/react/sidebar/SidebarItem/utils.ts | 28 + app/react/sidebar/SidebarSection.module.css | 34 - app/react/sidebar/SidebarSection.tsx | 22 +- app/react/sidebar/items/DashboardLink.tsx | 21 + app/react/sidebar/items/VolumesLink.tsx | 21 + app/react/sidebar/useSidebarState.tsx | 15 +- package.json | 7 +- tailwind.config.js | 6 + webpack/webpack.common.js | 16 + webpack/webpack.develop.js | 2 +- webpack/webpack.production.js | 4 - yarn.lock | 1415 +++++++++++++++-- 54 files changed, 1927 insertions(+), 856 deletions(-) create mode 100644 app/assets/images/logo_small_alt.png create mode 100644 app/react/portainer/environments/utils/azure.png create mode 100644 app/react/portainer/environments/utils/azure.svg create mode 100644 app/react/portainer/environments/utils/docker.png create mode 100644 app/react/portainer/environments/utils/docker.svg create mode 100644 app/react/portainer/environments/utils/get-platform-icon.ts create mode 100644 app/react/portainer/environments/utils/kubernetes.png create mode 100644 app/react/portainer/environments/utils/kubernetes.svg create mode 100644 app/react/portainer/environments/utils/nomad.png create mode 100644 app/react/portainer/environments/utils/nomad.svg delete mode 100644 app/react/sidebar/EnvironmentSidebar.module.css delete mode 100644 app/react/sidebar/Header.module.css create mode 100644 app/react/sidebar/SidebarItem/Head.tsx delete mode 100644 app/react/sidebar/SidebarItem/Icon.module.css delete mode 100644 app/react/sidebar/SidebarItem/Icon.tsx delete mode 100644 app/react/sidebar/SidebarItem/Link.module.css delete mode 100644 app/react/sidebar/SidebarItem/Link.tsx delete mode 100644 app/react/sidebar/SidebarItem/Menu.module.css delete mode 100644 app/react/sidebar/SidebarItem/SidebarItem.module.css delete mode 100644 app/react/sidebar/SidebarItem/SidebarItem.test.tsx create mode 100644 app/react/sidebar/SidebarItem/utils.ts delete mode 100644 app/react/sidebar/SidebarSection.module.css create mode 100644 app/react/sidebar/items/DashboardLink.tsx create mode 100644 app/react/sidebar/items/VolumesLink.tsx diff --git a/app/assets/css/app.css b/app/assets/css/app.css index d6177c31f..4561299ba 100644 --- a/app/assets/css/app.css +++ b/app/assets/css/app.css @@ -2,8 +2,27 @@ @tailwind components; @tailwind utilities; +@font-face { + font-family: 'Inter'; + src: url('../fonts/Inter-VariableFont.ttf') format('truetype'); + font-weight: 100 900; + font-style: normal; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + select { + font-family: Inter, Arial, Helvetica, sans-serif; + } +} + html { font-size: 16px; + overflow-y: scroll; +} + +body { + background: var(--bg-body-color); + font-family: 'Inter'; + color: var(--text-body-color) !important; } html, diff --git a/app/assets/css/rdash.css b/app/assets/css/rdash.css index 18affc7d4..fd7b8dc15 100644 --- a/app/assets/css/rdash.css +++ b/app/assets/css/rdash.css @@ -4,16 +4,6 @@ width: 100%; height: auto; } -@media only screen and (min-width: 561px) { - #page-wrapper.open { - padding-left: 250px; - } -} -@media only screen and (max-width: 560px) { - #page-wrapper.open { - padding-left: 70px; - } -} .loading { width: 40px; @@ -59,31 +49,6 @@ } } -/* Fonts */ -@font-face { - font-family: 'Inter'; - src: url('../fonts/Inter-VariableFont.ttf') format('truetype'); - font-weight: normal; - font-style: normal; -} -@media screen and (-webkit-min-device-pixel-ratio: 0) { - @font-face { - font-family: 'Inter'; - src: url('../fonts/Inter-VariableFont.ttf') format('truetype'); - } - select { - font-family: Inter, Arial, Helvetica, sans-serif; - } -} -/* Base */ -html { - overflow-y: scroll; -} -body { - background: var(--bg-body-color); - font-family: 'Inter'; - color: var(--text-body-color) !important; -} .row { margin-left: 0 !important; margin-right: 0 !important; @@ -94,14 +59,7 @@ body { .alerts-container .alert:last-child { margin-bottom: 0; } -#page-wrapper { - padding-left: 70px; - height: 100%; -} -#page-wrapper { - transition: all 0.4s ease 0s; -} .green { background: #23ae89 !important; } diff --git a/app/assets/css/theme.css b/app/assets/css/theme.css index 5e70dcd73..39ad33396 100644 --- a/app/assets/css/theme.css +++ b/app/assets/css/theme.css @@ -7,7 +7,6 @@ --grey-2: #181818; --grey-3: #383838; --grey-4: #585858; - --grey-5: #323c48; --grey-6: #333333; --grey-7: #767676; --grey-8: #aaa; @@ -35,7 +34,6 @@ --grey-30: #444; --grey-31: #868686; --grey-32: #65798e; - --grey-34: #314252; --grey-35: #546477; --grey-36: #55637d; --grey-37: #2d3e63; @@ -56,11 +54,9 @@ --grey-53: rgba(255, 255, 255, 0.6); --grey-54: rgb(54, 54, 54); --grey-55: rgba(255, 255, 255, 0.8); - --grey-56: #b2bfdc; --grey-57: #999; --grey-58: #ebf4f8; --grey-59: #e6e6e6; - --grey-60: #cacaca; --grey-61: rgb(231, 231, 231); --blue-1: #219; diff --git a/app/assets/images/logo_small_alt.png b/app/assets/images/logo_small_alt.png new file mode 100644 index 0000000000000000000000000000000000000000..a5bc647714821064c5172bbe93dfff819d58b4b5 GIT binary patch literal 2941 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 literal 0 HcmV?d00001 diff --git a/app/global.d.ts b/app/global.d.ts index 0be9e11aa..e36d93422 100644 --- a/app/global.d.ts +++ b/app/global.d.ts @@ -5,6 +5,13 @@ declare module '*.png' { export default '' as string; } +type SvgrComponent = React.StatelessComponent>; + +declare module '*.svg?c' { + const value: SvgrComponent; + export default value; +} + declare module '*.css'; declare module '@open-amt-cloud-toolkit/ui-toolkit-react/reactjs/src/kvm.bundle'; @@ -25,3 +32,13 @@ interface Window { */ ddExtension?: boolean; } + +declare module 'process' { + global { + namespace NodeJS { + interface ProcessEnv { + PORTAINER_EDITION: 'BE' | 'CE'; + } + } + } +} diff --git a/app/react/components/PageHeader/HeaderTitle.tsx b/app/react/components/PageHeader/HeaderTitle.tsx index 010941058..0fee8be22 100644 --- a/app/react/components/PageHeader/HeaderTitle.tsx +++ b/app/react/components/PageHeader/HeaderTitle.tsx @@ -1,12 +1,16 @@ import { PropsWithChildren } from 'react'; -import { Menu, MenuButton, MenuList, MenuLink } from '@reach/menu-button'; +import { + Menu, + MenuButton, + MenuList, + MenuLink as ReachMenuLink, +} from '@reach/menu-button'; import clsx from 'clsx'; import { User, ChevronDown } from 'react-feather'; +import { useSref } from '@uirouter/react'; import { useUser } from '@/portainer/hooks/useUser'; -import { Link } from '@@/Link'; - import { useHeaderContext } from './HeaderContainer'; import styles from './HeaderTitle.module.css'; @@ -28,19 +32,34 @@ export function HeaderTitle({ title, children }: PropsWithChildren) { {user && {user.Username}} + - - My account - - - Log out - + {!window.ddExtension && ( + + )} + + ); } + +interface MenuLinkProps { + to: string; + label: string; +} + +function MenuLink({ to, label }: MenuLinkProps) { + const anchorProps = useSref(to); + + return ( + + {label} + + ); +} diff --git a/app/react/portainer/environments/utils/azure.png b/app/react/portainer/environments/utils/azure.png new file mode 100644 index 0000000000000000000000000000000000000000..37eecaa55d7fde7033b613b490f6c9309e9b51b9 GIT binary patch literal 5494 zcmV-+6^ZJJP)!In200009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yPRO{<_#bt8BPC??BedB7X-6ezNdgj5NUT|WU2K+99#ATJP9iBw2H z1ro7AB9GZTl?SA(5dsN<;>HO?gd}!MVv5}Eu6Ng6@9f;e_kHKjckX!Y*qOg-?@4Co z&di;A=YGF?e&=`2`R+A9Ypu1`T5GMf)>><=wboi|t+m!#Yd?gBFsJtEr~mjX_2BU5 zq3%Dl@bC%v{I8vc#YaAO=ZfhFsQDHV0V3Y<+*~QG7ylyV4`@Ia{`rfaIuCPba|u%K zm%jcy)`PD=Jpif?fesJg*ooutlfU;HP#r&>*Ew?F?_mwV++nBJYW1N0>c9NliEqH1 zS%5jS-qU|_3J8BUKC*)#2Eb6k!RAf)&fot-UdIpYM_O_h0meV)N1gXTc}MXPLiqia z*EV}FXEt{r0SwMz8p$f2?O0KEcI4&Fe|;^lp&oQEu*zp;-3(9yMnI7dkeLq>SiRe~ zyQ?r~Hh&;tIF$!Bg^K7!@$}~Bs)E7(0CwMg*8phHoySX-6CfEJLVI1-A@e9q_|*}t zxE$*G49uC$6-d1=eSIa4{1@_2MsOksar~k;VJAL9^sWwVUw$)#V*n9*N#-mnz!*^E zUX!W?U=JnH9ofrxTk-3sR$iGe%9}4wqH2w!IN_PpZ(1F420qy?RJ0YHc>J7Wk^-0h3j>@h%9|UIdS7~e1p+SRk!5d6!^K3D1VoNc$(uT`{l5q6+j8RdJZ~oi2?*s-) zJmLowfSjW9-j~Dze-R2DvPa_gD_Da$vAF?>5LZ}g=W#RHR_DJdI0bp?!r)*)J8!>Z z6xT>ly=M_MY0-d{+z1$yI`6)Gmd*vN@ifed%>_ukUwnQ!4$P8{Au3otHc3(o$+0?J zy!qyT79_JssPBwX)KqST^0K}spU9f?ya`dQ3d9eH6?>aRnUI=i6qSK8hdaT8<#FIqSkw|uxyD-poO&pUP3#8mFB=H zJ&+fq+3%Xtgrm7I%5*&ns!)5wzuK)qBpKtv7qlJ$GDro7qG9l~iR z4y>}x9aQ8dgMlUQam2$7bTUz#1|%?zZ&0j=g?%hH?B^e>XAY82Khl$Wi< zs3bBnU|W~oa7vCWm^EcMh@fCFs8&$OYO!GPOXN9cQHd^l-NnJo65E-96k9`Qa(oe5 z<5(nKg(zTz;vhlNA8V*V`qZnsgPEwj+0b2pQ%YqfyH(L;P{g6MwKhU?m(zi1|q0X+S-l+(IvgwR?qE=l-R~v-rm(~Qp?L5ASm^^!f?)0YRPSD zDXbzXPZk+Y8rz~=j~h5M3(A{1NPS9_5lG{XDmos!#5n1*K-%OJi3iXqNMxy=em<|C z<5HKlF1xmRtpY%loc54x;H8Xf5~De*2u0m_0THd&tqz}rDcjURilnht64PLMi{p1@ zFcW6^g`-6hO+m%0RCZ(maj>&T2b-G!R0dqiMAk#%-@sLF1COl!4f-uA-qTci*5;p{ zO%b&#koo6ck4vpF%Bs4@*VlkE#O6u^I(fy_22O5O zI}nn^sZxa??7-r~pL-UVyF|s2flm$bAn_;7Z6RpnMj)VN+>#2+Wo zDo9Z?uNuAOH-e3|?;(MdYc&4w8UhTubTk2~vxxGPukQNgb3eUa6TNTM0&5CVBM6#1 z)ydIF_F1I5>n(wOPrenfnkwZ@4WvwUi1`fE!YT0FR8w<6phZ?JaVx*f0zoOU04fj3 zm#EWOm$lEEIujWHDhV#+b_}}#U(VaFVFR=dBr(R+p6pdiM0wPu8lF6_E+s%#c#<32 zc9;fxa5z26n;J;0>bT~Xc3Y%1mQ_qyNf!uIKs2Zj>_ztG4-^_-yxNsU@wcejNEeD=Qz4-VF8UZl8oyMs`{Hb-IbD}5UqTwxr){E;yN4BAhLR;ohMq8}n zO794`rpL?Tu_nnuy~-x3z>iFa@}>e(g}5eQxJF)9Wu%~ia*1_nbHKSn`7!xO#YkdP zR21u5>*u!oJ`?4|*mM;d0?qbCJhu+mqq34K6NNOHEfw+NLO`nL)ADpKk(oG1Om#`s zx!RkHLm4zJtnvyz^!Rl(sWlW;6~+O3`KW!zaeqMult?tZ`fUDOX-#E1h%P9X&`@K( zgDx2GG?hl+#6h~vkcE;9{6W4i!>_VY^LV)`?kWYu4nc~}Ao-FN zR#P2L-Nz-aLVKhUMyGrMzC28IYOkJ6lt)*UqCnh_*g<&rqWXL(2%uCqO88QGbn%RN zapK-IQIL9HesL)d>{CT9g9rf&_?jw-!sAMH&TFycNsa0QN&>87jz?2nF79TcvfVARhY0%6r_GgO|k-rHR{|tlEh+}-yp(5yoV`K z@}>O6z_Yo8?z;Pf^?Ut>xYA1mF3yl?X;XX_lZP)5TpdS*7BpIBA3EIR!T8vbO>7EQ;o!QKJQH`}r-g>vw^q;g^4fDry4jE%Ek6$!V&jqQX2!{EM_Kq9SCnJ*J6)RCTKr z(80wbzsYeJn@;6w=1CUBa~a75N4h?VbQ1pn7GJra-xA9|>pHK2N<_3O0>5AA5VgSS zrJn*-v-^-r365vI<-fhQ0u!QFrcdXo`f3d$#;S9sQ;O@E-ewGG(chmlQNBKinj z*xA~R?048)kFX#_rYnk{7x2*Pu0Btai7i%MswXpFeC!}CMyiVkvZ7h4f+B*}kqttl zJ(17TChO@^MMVhOKd@18K{97_zDA0W+BV5L=hHk!3VYm z6R@#^RKc+o7SQT3G<5ljuOt98+Y_1hX(0kt-P(dtEL~U2y+FRcHmU~LPLx-YR?C&F zdH~KVOozL$UCWEwaiOR|0jhWMug6b$V+W~DlQc9IrN1(_jVk{L2xmlD>@aL-rB|gR1t1xC8uP23S#c0gM9EnF{Kwz10qI0^W5>~#) zwK`hZ{tk6^ZotPf-BdNrV^+mxL!Hr+=nq}C<-|NEe^>gpCz_I?}@(} zZ(=)Mkf>fw2T+QrdU8n_sL|{ziqGgqu9mQ}4cEo7yL$sZ7EnA<1?&>e(1E=~c?W&) z(}z{bB8Yu{RmwYU|Q-T=Pc%>V`S zre*_A1%>-5Ubc%m?CyRSs{Ne}cp%erq1?xnRo;jBQ&MkHeQgw1)SXv=G%Prz=vX9? z&8J+0G1~Y%DfCwW^s0z52SGq_Dpz_(rkc1_AgUqW*FJ{Mjq;+{r(95TH# zcZ6l-(r)KFCP&X5i^>}rq(pV`*PH^0AOK~OeZ#Xr_)lqvcTc3>LnkDpN>H{#7w-B4 z{^)1cGu7S`s3IIdE`&~r?be4MHk4bb*YO{8F{#8ZR3YJ#TaHl@oAf9U2IINi&B!1P zy0O9_;AD}&S2-wE5$ScUcAhpRy2@-R4T-QQ-j}y~>?4|KfB3|uj|3{`OQP@s1GTfc zJGfitKw6y&qu8n1Zelyj^tEm1D+0vAto;DZuCk=8O-!Ae51UhyM|TMXFw z`~5xe+)rJJ-+Ah8K&6T}>OWEvSmkY9zYZE(5YJ^2aq%35&LbF^)JPTZ`L78Y3q(mm-A*2uF%D!&@B0PxQ6(~6&jPgX~ zMalyz-UGwlV}8O%s+DouVx|c|PmM~LEFN&_@jo4n@y1(@(%>at##iCFVk+4N;-4yPz$m6bA=tm?g91*jw#V4?$=*Ya7{Ujl9>NcD ziLL_Xi?Vw3UIofQ>P(^sqwFCY38dS{s|zuHeA{j_lYgD?K9p-+O9T$&u7qSp48@g- zG|!y(?EW{Oz5=6K0&1aeKqi_|Z4s`t8Ry zU<5-LgLQxFl~ts}vvGKP?pzZ`Qh;n(Xd&@NNE#LSBH0?G*m5tDt3hdUG-UyY-<0?4Gd@m?G)u7Y*6%!a9$IUywboi| st+m!#Ypu1`T5GMf)>><=wI4|Pe~`Ry@a2uR%>V!Z07*qoM6N<$g6?%<+yDRo literal 0 HcmV?d00001 diff --git a/app/react/portainer/environments/utils/azure.svg b/app/react/portainer/environments/utils/azure.svg new file mode 100644 index 000000000..dcd43dbfd --- /dev/null +++ b/app/react/portainer/environments/utils/azure.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/react/portainer/environments/utils/docker.png b/app/react/portainer/environments/utils/docker.png new file mode 100644 index 0000000000000000000000000000000000000000..aca3e26bf02e5b9c45f4315883cd8626e7ce39d5 GIT binary patch literal 1459 zcmV;k1x)&hP)!In200009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yPx9=^O6LdL2!wJfsp!5P8a)QDMyy*ot+#oj~oPhKMG1_635gT{BvJs7NC7}11ptW@0B>L%E=C{EGB1XE06X$+6On9hI4mO^cg=B?_2HC%^ALtSton-`{PGw zN4iBy3u);3=JEJU4bV^BwNZ1e2TZv@W=LE{p=VL$rgshTiGr{yWCM$TZ+M^*%1NL?BK1X%l>d#QIxK;><_awsP^9Q@1EYL* z>uO(no(_?LGvZ0BiGWMx5-k}|AVZXCD7t}&O<%?G@|rJ6{)rG@T0q=jn#ypCAAThuU? z{iH)DQN^2#{RHI)r7nI3LOh{QTs65w5~&Z;9nZI&o`Rz(ZG4Q$&;Zw5^CuLHtw0pF z&vQA@I>`e0>30p2Yp<)_Linn>mqh9d?;i-X!(_(dIVdBMdV_AsC!Ei#Z%L%y6iYD5 za`Zub)BQ1kNJZB_#G`$c7J6&=9MNni7r9)_!3Uh*)_=5!?)WwEHw(QD!xj6|9XJPt-|L~G+?^?9nkqr(Gg0du z1~QA_xMo7!!SwWM|6bN|VYmQ`+fzSdhk;q1(h3|w)6;8s@#ULHw-~R3ll>4v2hNk6 z&s2W1f#x}h!LLC0KqC_T14MuJvIaJ2+@0{0mpTSi`e_M{ z(9KC15dC0m)g^jsLn9K)faph2ICFIpjYv^*a*=38hTXNTZx?7p`ZoijBRCg19z~L7 zk(5vMv5!A$?p%)|iGDHbbsv9h;3%4&-hc<%G7dB^nc{F=v`>pj+*zzYYRX_?0iMu{ zr2H$*OM3hS3w7EPtQ=@G>5y*DL$FZCAPY_|uNiSW#KF5}yL$64k9a{HT0M>dvBqfb z90tH_KZ$cE`y%5()g^p@fiT?k!+m&f)taH91iJ7&57jXf$!E1@SmbI14JeSL!}dA< z1jjv^@?G!i;0t_nk<@5{85||j#l4O|lI}HI@{l8;J7i*P3_l0$)4f`#C}fFJ2FC!y zg*@lyuPIP@8GSHru@4v~X7KU!6C42j>h5HhG%u`+{tgpdr1IkYPy~|L)e+0)+bAAO zQGbr3=k}1qsjx5hE?u7#DuFP`Roe;2C5FQaAD6hP$X7>PMmPBDLh8ggcyTJ+woQ~h zP4b|=1P+&A#HsMp+mdcCQLHQc&gx7Zhvcf&kw;5c_1Qz>w*g5VloaEfrTR;MhGEa; zen4R`3XN7F3R7p;F0u44+> + + + + + + + + + + + diff --git a/app/react/portainer/environments/utils/get-platform-icon.ts b/app/react/portainer/environments/utils/get-platform-icon.ts new file mode 100644 index 000000000..f4c3227b3 --- /dev/null +++ b/app/react/portainer/environments/utils/get-platform-icon.ts @@ -0,0 +1,20 @@ +import { getPlatformType } from '@/portainer/environments/utils'; +import { EnvironmentType, PlatformType } from '@/portainer/environments/types'; + +import Docker from './docker.svg?c'; +import Azure from './azure.svg?c'; +import Kubernetes from './kubernetes.svg?c'; + +const icons: { + [key in PlatformType]: SvgrComponent; +} = { + [PlatformType.Docker]: Docker, + [PlatformType.Kubernetes]: Kubernetes, + [PlatformType.Azure]: Azure, +}; + +export function getPlatformIcon(type: EnvironmentType) { + const platform = getPlatformType(type); + + return icons[platform]; +} diff --git a/app/react/portainer/environments/utils/kubernetes.png b/app/react/portainer/environments/utils/kubernetes.png new file mode 100644 index 0000000000000000000000000000000000000000..25c14f56ec0c21e20dbbc4ea414893ab0c6e3169 GIT binary patch literal 3573 zcmV!In200009a7bBm000XU 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 + + + + + + + + + + + diff --git a/app/react/portainer/environments/utils/nomad.png b/app/react/portainer/environments/utils/nomad.png new file mode 100644 index 0000000000000000000000000000000000000000..dcff7a91843e0e056e138bed6be858e385eb0551 GIT binary patch literal 1439 zcmV;Q1z`G#P)!In200009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yP1Y6^WTQG?6byiH1XR-f(_E0vR?eKtIoWFLW-~hZODLLOBLWqw1>cJ=9Ct1tn1p7y0Fov%r z723j)eAW2k&nC$kmbVet5Xeu`|9|gdbE7X`wXila1TJn*xXI!pDGhDMccD!mh9QuL zq~}jN2*P9Bmv?kg7Z=M2&EL;pId)50C+}!ue+aZw(&VoO!fle%LRln9jICgZhtUlz z!!AkhE~#Twfu;G%9!W*y9bJ^H*N<%pfz?Y&^A5>r!8+{7SJg?Pyc2BoWoUZ>+o60_ z;TBW*lD@Q+V=EQrt8yhxdu{oa6xtf#%S$X?|5|1UEJu>nc}JJ>@>Q{tJ}x1+28F;y zGQ^KZ0~AOxlDOs_T?)=u<|UP~m18T#gg|qWa+MIQg0_Wb^4~6WNs@uAUky#k3Xm5H zZI`{i6m$jdf)a6tg?K1G64dPpiev>B!zk^;yT zWaz4`0`lJ{c?!o%Vt|*#056FFUJ?VmBnEJkL}i2_(o#Zg;3Vlnl@a#39c-#{0v)lM zp$6E0Gn?(Ty}wJHp4W~s>5ma6w7Yx=hp~Gl(Q4U}tLAfM1gibe%36pWDf1sVimj3^ z)CW(SpCK+;^+u4-(X_C9Qp%=&rfq9cW}*wd@QF=KUc(N?mk zgKr-6)oNozjk+oXl`h&~h`*U-fS1GoFNpzO5(B&>26#yf;3g4)Mcdf#d7AzKL4; z@Ij3gK0k>~zDo1XRxqflW3c)sk-g}*4} + + diff --git a/app/react/sidebar/AzureSidebar/AzureSidebar.test.tsx b/app/react/sidebar/AzureSidebar/AzureSidebar.test.tsx index 90f903ba7..4beb383ee 100644 --- a/app/react/sidebar/AzureSidebar/AzureSidebar.test.tsx +++ b/app/react/sidebar/AzureSidebar/AzureSidebar.test.tsx @@ -2,6 +2,8 @@ import { UserContext } from '@/portainer/hooks/useUser'; import { UserViewModel } from '@/portainer/models/user'; import { render, within } from '@/react-tools/test-utils'; +import { TestSidebarProvider } from '../useSidebarState'; + import { AzureSidebar } from './AzureSidebar'; test('dashboard items should render correctly', () => { @@ -11,11 +13,9 @@ test('dashboard items should render correctly', () => { expect(dashboardItem).toHaveTextContent('Dashboard'); const dashboardItemElements = within(dashboardItem); - expect(dashboardItemElements.getByLabelText('itemIcon')).toBeVisible(); - expect(dashboardItemElements.getByLabelText('itemIcon')).toHaveClass( - 'fa-tachometer-alt', - 'fa-fw' - ); + expect( + dashboardItemElements.getByRole('img', { hidden: true }) + ).toBeVisible(); const containerInstancesItem = getByLabelText(/Container Instances/i); expect(containerInstancesItem).toBeVisible(); @@ -23,12 +23,8 @@ test('dashboard items should render correctly', () => { const containerInstancesItemElements = within(containerInstancesItem); expect( - containerInstancesItemElements.getByLabelText('itemIcon') + containerInstancesItemElements.getByRole('img', { hidden: true }) ).toBeVisible(); - expect(containerInstancesItemElements.getByLabelText('itemIcon')).toHaveClass( - 'fa-cubes', - 'fa-fw' - ); }); function renderComponent() { @@ -36,7 +32,9 @@ function renderComponent() { return render( - + + + ); } diff --git a/app/react/sidebar/AzureSidebar/AzureSidebar.tsx b/app/react/sidebar/AzureSidebar/AzureSidebar.tsx index 7c2130a1f..64db4f224 100644 --- a/app/react/sidebar/AzureSidebar/AzureSidebar.tsx +++ b/app/react/sidebar/AzureSidebar/AzureSidebar.tsx @@ -1,5 +1,8 @@ +import { Box } from 'react-feather'; + import { EnvironmentId } from '@/portainer/environments/types'; +import { DashboardLink } from '../items/DashboardLink'; import { SidebarItem } from '../SidebarItem'; interface Props { @@ -9,16 +12,11 @@ interface Props { export function AzureSidebar({ environmentId }: Props) { return ( <> - + diff --git a/app/react/sidebar/DockerSidebar.tsx b/app/react/sidebar/DockerSidebar.tsx index 53581f266..1eba959ea 100644 --- a/app/react/sidebar/DockerSidebar.tsx +++ b/app/react/sidebar/DockerSidebar.tsx @@ -1,3 +1,16 @@ +import { + Box, + Clock, + Layers, + List, + Lock, + Share2, + Shuffle, + Trello, + Clipboard, + Edit, +} from 'react-feather'; + import { type Environment, type EnvironmentId, @@ -11,6 +24,8 @@ import { import { useInfo, useVersion } from '@/docker/services/system.service'; import { SidebarItem } from './SidebarItem'; +import { DashboardLink } from './items/DashboardLink'; +import { VolumesLink } from './items/VolumesLink'; interface Props { environmentId: EnvironmentId; @@ -41,44 +56,37 @@ export function DockerSidebar({ environmentId, environment }: Props) { const setupSubMenuProps = isSwarmManager ? { label: 'Swarm', - iconClass: 'fa-object-group fa-fw', + icon: Trello, to: 'docker.swarm', } : { label: 'Host', - iconClass: 'fa-th fa-fw', + icon: Trello, to: 'docker.host', }; return ( <> + + - - {!offlineMode && ( + > - - - )} + /> + {areStacksVisible && ( )} @@ -87,7 +95,7 @@ export function DockerSidebar({ environmentId, environment }: Props) { )} @@ -95,36 +103,31 @@ export function DockerSidebar({ environmentId, environment }: Props) { - + {apiVersion >= 1.3 && isSwarmManager && ( )} @@ -133,7 +136,7 @@ export function DockerSidebar({ environmentId, environment }: Props) { )} @@ -142,14 +145,14 @@ export function DockerSidebar({ environmentId, environment }: Props) { )} diff --git a/app/react/sidebar/EdgeComputeSidebar.tsx b/app/react/sidebar/EdgeComputeSidebar.tsx index 7b7427533..9f6eeb3c7 100644 --- a/app/react/sidebar/EdgeComputeSidebar.tsx +++ b/app/react/sidebar/EdgeComputeSidebar.tsx @@ -1,29 +1,15 @@ +import { Box, Clock, Grid, Layers } from 'react-feather'; + import { SidebarItem } from './SidebarItem'; import { SidebarSection } from './SidebarSection'; export function EdgeComputeSidebar() { return ( - - - - + + + + ); } diff --git a/app/react/sidebar/EnvironmentSidebar.module.css b/app/react/sidebar/EnvironmentSidebar.module.css deleted file mode 100644 index 079d3471c..000000000 --- a/app/react/sidebar/EnvironmentSidebar.module.css +++ /dev/null @@ -1,5 +0,0 @@ -.title { - color: #fff; - text-align: center; - text-indent: 0; -} diff --git a/app/react/sidebar/EnvironmentSidebar.tsx b/app/react/sidebar/EnvironmentSidebar.tsx index 4f4be31c6..47eb5aa6c 100644 --- a/app/react/sidebar/EnvironmentSidebar.tsx +++ b/app/react/sidebar/EnvironmentSidebar.tsx @@ -1,5 +1,6 @@ -import { useCurrentStateAndParams } from '@uirouter/react'; +import { useCurrentStateAndParams, useRouter } from '@uirouter/react'; import { useEffect, useState } from 'react'; +import { X } from 'react-feather'; import { PlatformType, @@ -9,59 +10,61 @@ import { import { getPlatformType } from '@/portainer/environments/utils'; import { useEnvironment } from '@/portainer/environments/queries/useEnvironment'; +import { getPlatformIcon } from '../portainer/environments/utils/get-platform-icon'; + import { AzureSidebar } from './AzureSidebar'; import { DockerSidebar } from './DockerSidebar'; import { KubernetesSidebar } from './KubernetesSidebar'; import { SidebarSection } from './SidebarSection'; -import styles from './EnvironmentSidebar.module.css'; +import { useSidebarState } from './useSidebarState'; export function EnvironmentSidebar() { - const currentEnvironmentQuery = useCurrentEnvironment(); + const { query: currentEnvironmentQuery, clearEnvironment } = + useCurrentEnvironment(); const environment = currentEnvironmentQuery.data; - if (!environment) { return null; } const platform = getPlatformType(environment.Type); - const sidebar = getSidebar(environment); + const Sidebar = getSidebar(platform); return ( - - - {environment.Name} - - } - label={PlatformType[platform]} - > - {sidebar} - - ); - - function getSidebar(environment: Environment) { - switch (platform) { - case PlatformType.Azure: - return ; - case PlatformType.Docker: - return ( - + ( + - ); - case PlatformType.Kubernetes: - return <KubernetesSidebar environmentId={environment.Id} />; - default: - return null; - } + )} + > + <Sidebar environmentId={environment.Id} environment={environment} /> + </SidebarSection> + </div> + ); + + function getSidebar(platform: PlatformType) { + const sidebar: { + [key in PlatformType]: React.ComponentType<{ + environmentId: EnvironmentId; + environment: Environment; + }>; + } = { + [PlatformType.Azure]: AzureSidebar, + [PlatformType.Docker]: DockerSidebar, + [PlatformType.Kubernetes]: KubernetesSidebar, + }; + + return sidebar[platform]; } } function useCurrentEnvironment() { const { params } = useCurrentStateAndParams(); - + const router = useRouter(); const [environmentId, setEnvironmentId] = useState<EnvironmentId>(); useEffect(() => { @@ -71,5 +74,50 @@ function useCurrentEnvironment() { } }, [params.endpointId]); - return useEnvironment(environmentId); + return { query: useEnvironment(environmentId), clearEnvironment }; + + function clearEnvironment() { + if (params.endpointId) { + router.stateService.go('portainer.home'); + } + + setEnvironmentId(undefined); + } +} + +interface TitleProps { + className: string; + environment: Environment; + onClear(): void; +} + +function Title({ className, environment, onClear }: TitleProps) { + const { isOpen } = useSidebarState(); + const EnvironmentIcon = getPlatformIcon(environment.Type); + + if (!isOpen) { + return ( + <li className="w-full flex justify-center" title={environment.Name}> + <EnvironmentIcon className="text-2xl" /> + </li> + ); + } + + return ( + <li className={className}> + <div className="flex items-center gap-2"> + <span>Environment</span> + <EnvironmentIcon className="text-2xl" /> + <span className="text-white">{environment.Name}</span> + + <button + type="button" + onClick={onClear} + className="flex items-center justify-center be:bg-gray-9 bg-blue-10 rounded border-0 text-sm h-5 w-5 p-1 ml-auto mr-2 text-gray-5 be:text-gray-6 hover:text-white" + > + <X /> + </button> + </div> + </li> + ); } diff --git a/app/react/sidebar/Footer.module.css b/app/react/sidebar/Footer.module.css index a5884bc35..288847c21 100644 --- a/app/react/sidebar/Footer.module.css +++ b/app/react/sidebar/Footer.module.css @@ -1,28 +1,3 @@ :global(#page-wrapper:not(.open)) .root { display: none; } - -.root { - text-align: center; -} - -.logo { - display: inline; - width: 100%; - max-width: 100px; - height: 100%; - max-height: 35px; - margin: 2px 0 2px 20px; -} - -.version { - font-size: 11px; - margin: 11px 20px 0 7px; - color: #fff; -} - -.edition-version { - font-size: 10px; - margin-bottom: 8px; - color: #fff; -} diff --git a/app/react/sidebar/Footer.tsx b/app/react/sidebar/Footer.tsx index 08d451ddb..aaeab9d71 100644 --- a/app/react/sidebar/Footer.tsx +++ b/app/react/sidebar/Footer.tsx @@ -1,7 +1,6 @@ import { useQuery } from 'react-query'; import clsx from 'clsx'; -import smallLogo from '@/assets/images/logo_small.png'; import { getStatus } from '@/portainer/services/api/status.service'; import { UpdateNotification } from './UpdateNotifications'; @@ -17,22 +16,23 @@ export function Footer() { const { Edition, Version } = statusQuery.data; return ( - <div className={styles.root}> + <div className={clsx(styles.root, 'text-center')}> {process.env.PORTAINER_EDITION === 'CE' && <UpdateNotification />} - <div> - <img - src={smallLogo} - className={clsx('img-responsive', styles.logo)} - alt="Portainer" - /> - <span - className={styles.version} - data-cy="portainerSidebar-versionNumber" - > - {Version} - </span> - {process.env.PORTAINER_EDITION !== 'CE' && ( - <div className={styles.editionVersion}>{Edition}</div> + <div className="text-xs space-x-1 text-gray-5 be:text-gray-6"> + <span>©</span> + <span>Portainer {Edition}</span> + + <span data-cy="portainerSidebar-versionNumber">{Version}</span> + + {process.env.PORTAINER_EDITION === 'CE' && ( + <a + href="https://www.portainer.io/install-BE-now" + className="text-blue-6 font-medium" + target="_blank" + rel="noreferrer" + > + Upgrade + </a> )} </div> </div> diff --git a/app/react/sidebar/Header.module.css b/app/react/sidebar/Header.module.css deleted file mode 100644 index 645e4a811..000000000 --- a/app/react/sidebar/Header.module.css +++ /dev/null @@ -1,29 +0,0 @@ -.root { - color: white; -} - -.toggle-button { - border: 0; - margin: 0; - padding: 0; - background: initial; - float: right; - padding-right: 28px; - line-height: 60px; -} - -.root { - height: 60px; - list-style: none; - text-indent: 20px; - font-size: 18px; - background: var(--bg-sidebar-header-color); -} - -.root a { - color: #fff; -} - -.root a:hover { - text-decoration: none; -} diff --git a/app/react/sidebar/Header.tsx b/app/react/sidebar/Header.tsx index 3f520d98f..24f48d1f8 100644 --- a/app/react/sidebar/Header.tsx +++ b/app/react/sidebar/Header.tsx @@ -1,8 +1,9 @@ -import defaultLogo from '@/assets/images/logo.png'; +import { ChevronsLeft, ChevronsRight } from 'react-feather'; + +import defaultLogo from '@/assets/images/logo_small_alt.png'; import { Link } from '@@/Link'; -import styles from './Header.module.css'; import { useSidebarState } from './useSidebarState'; interface Props { @@ -10,28 +11,32 @@ interface Props { } export function Header({ logo }: Props) { - const { toggle } = useSidebarState(); + const { toggle, isOpen } = useSidebarState(); return ( - <div className={styles.root}> - <Link to="portainer.home" data-cy="portainerSidebar-homeImage"> + <div className="flex justify-between items-center"> + <Link + to="portainer.home" + data-cy="portainerSidebar-homeImage" + className="text-2xl text-white no-underline hover:no-underline hover:text-white" + > <img src={logo || defaultLogo} className="img-responsive logo" - alt={!logo ? 'Portainer' : ''} + alt={!logo ? 'portainer.io' : 'Logo'} /> + {isOpen && 'portainer.io'} </Link> - {toggle && ( - <button - type="button" - onClick={() => toggle()} - className={styles.toggleButton} - aria-label="Toggle Sidebar" - title="Toggle Sidebar" - > - <i className="glyphicon glyphicon-transfer" /> - </button> - )} + + <button + type="button" + onClick={() => toggle()} + className="w-6 h-6 flex justify-center items-center text-gray-4 be:text-gray-5 border-0 rounded text-sm be:bg-gray-10 bg-blue-11 hover:text-white be:hover:text-white" + aria-label="Toggle Sidebar" + title="Toggle Sidebar" + > + {isOpen ? <ChevronsLeft /> : <ChevronsRight />} + </button> </div> ); } diff --git a/app/react/sidebar/KubernetesSidebar/KubernetesSidebar.tsx b/app/react/sidebar/KubernetesSidebar/KubernetesSidebar.tsx index f9d3fec3e..1b58ecfb9 100644 --- a/app/react/sidebar/KubernetesSidebar/KubernetesSidebar.tsx +++ b/app/react/sidebar/KubernetesSidebar/KubernetesSidebar.tsx @@ -1,7 +1,12 @@ +import { Box, Edit, Layers, Loader, Lock, Server } from 'react-feather'; + import { EnvironmentId } from '@/portainer/environments/types'; import { Authorized } from '@/portainer/hooks/useUser'; +import { DashboardLink } from '../items/DashboardLink'; import { SidebarItem } from '../SidebarItem'; +import { VolumesLink } from '../items/VolumesLink'; +import { useSidebarState } from '../useSidebarState'; import { KubectlShellButton } from './KubectlShell'; @@ -10,28 +15,25 @@ interface Props { } export function KubernetesSidebar({ environmentId }: Props) { + const { isOpen } = useSidebarState(); + return ( <> - <KubectlShellButton environmentId={environmentId} /> + {isOpen && <KubectlShellButton environmentId={environmentId} />} - <SidebarItem - to="kubernetes.dashboard" - params={{ endpointId: environmentId }} - iconClass="fa-tachometer-alt fa-fw" - label="Dashboard" - /> + <DashboardLink environmentId={environmentId} platformPath="kubernetes" /> <SidebarItem to="kubernetes.templates.custom" params={{ endpointId: environmentId }} - iconClass="fa-rocket fa-fw" + icon={Edit} label="Custom Templates" /> <SidebarItem to="kubernetes.resourcePools" params={{ endpointId: environmentId }} - iconClass="fa-layer-group fa-fw" + icon={Layers} label="Namespaces" /> @@ -39,7 +41,7 @@ export function KubernetesSidebar({ environmentId }: Props) { <SidebarItem to="kubernetes.templates.helm" params={{ endpointId: environmentId }} - iconClass="fa-dharmachakra fa-fw" + icon={Loader} label="Helm" /> </Authorized> @@ -47,28 +49,23 @@ export function KubernetesSidebar({ environmentId }: Props) { <SidebarItem to="kubernetes.applications" params={{ endpointId: environmentId }} - iconClass="fa-laptop-code fa-fw" + icon={Box} label="Applications" /> <SidebarItem to="kubernetes.configurations" params={{ endpointId: environmentId }} - iconClass="fa-file-code fa-fw" + icon={Lock} label="ConfigMaps & Secrets" /> - <SidebarItem - to="kubernetes.volumes" - params={{ endpointId: environmentId }} - iconClass="fa-database fa-fw" - label="Volumes" - /> + <VolumesLink environmentId={environmentId} platformPath="kubernetes" /> <SidebarItem - iconClass="fa-server fa-fw" label="Cluster" to="kubernetes.cluster" + icon={Server} params={{ endpointId: environmentId }} > <Authorized authorizations="K8sClusterSetupRW" adminOnlyCE> diff --git a/app/react/sidebar/SettingsSidebar.tsx b/app/react/sidebar/SettingsSidebar.tsx index 63a04b0de..6e80b83f3 100644 --- a/app/react/sidebar/SettingsSidebar.tsx +++ b/app/react/sidebar/SettingsSidebar.tsx @@ -1,3 +1,12 @@ +import { + Users, + Award, + Settings, + HardDrive, + Radio, + FileText, +} from 'react-feather'; + import { usePublicSettings } from '@/portainer/settings/queries'; import { SidebarItem } from './SidebarItem'; @@ -18,11 +27,7 @@ export function SettingsSidebar({ isAdmin }: Props) { return ( <SidebarSection title="Settings"> {showUsersSection && ( - <SidebarItem - to="portainer.users" - label="Users" - iconClass="fa-users fa-fw" - > + <SidebarItem to="portainer.users" label="Users" icon={Users}> <SidebarItem to="portainer.teams" label="Teams" /> {isAdmin && <SidebarItem to="portainer.roles" label="Roles" />} @@ -33,7 +38,7 @@ export function SettingsSidebar({ isAdmin }: Props) { <SidebarItem label="Environments" to="portainer.endpoints" - iconClass="fa-plug fa-fw" + icon={HardDrive} openOnPaths={['portainer.wizard.endpoints']} > <SidebarItem to="portainer.groups" label="Groups" /> @@ -43,22 +48,26 @@ export function SettingsSidebar({ isAdmin }: Props) { <SidebarItem label="Registries" to="portainer.registries" - iconClass="fa-database fa-fw" + icon={Radio} /> + {process.env.PORTAINER_EDITION !== 'CE' && ( + <SidebarItem + to="portainer.licenses" + label="Licenses" + icon={Award} + /> + )} + <SidebarItem label="Authentication logs" to="portainer.authLogs" - iconClass="fa-history fa-fw" + icon={FileText} > <SidebarItem to="portainer.activityLogs" label="Activity Logs" /> </SidebarItem> - <SidebarItem - to="portainer.settings" - label="Settings" - iconClass="fa-cogs fa-fw" - > + <SidebarItem to="portainer.settings" label="Settings" icon={Settings}> {!window.ddExtension && ( <SidebarItem to="portainer.settings.authentication" @@ -81,6 +90,7 @@ export function SettingsSidebar({ isAdmin }: Props) { } target="_blank" rel="noreferrer" + className="px-3 rounded flex h-full items-center" > Help / About </a> diff --git a/app/react/sidebar/Sidebar.module.css b/app/react/sidebar/Sidebar.module.css index bed86e1ee..c4a31e386 100644 --- a/app/react/sidebar/Sidebar.module.css +++ b/app/react/sidebar/Sidebar.module.css @@ -1,56 +1,43 @@ -:global(#page-wrapper.open) .root { - left: 150px; -} - -.root { - margin-left: -150px; - left: -30px; - width: 250px; - position: fixed; - height: 100%; - z-index: 999; +:global(#page-wrapper) { + padding-left: var(--sidebar-closed-width); transition: all 0.4s ease 0s; - - display: flex; - flex-flow: column; } -.root { - background-color: var(--blue-5); +@media only screen and (min-width: 561px) { + :global(#page-wrapper.open) { + padding-left: var(--sidebar-width); + } } -:global(:root[theme='dark']) .root { - background-color: var(--grey-1); +@media only screen and (max-width: 560px) { + :global(#page-wrapper.open) { + padding-left: var(--sidebar-closed-width); + } } -:global(:root[theme='highcontrast']) .root { - background-color: var(--black-color); -} -:global(:root[data-edition='BE']) .root { - background-color: var(--grey-5); + +:global(#page-wrapper) { + --sidebar-width: 300px; + --sidebar-closed-width: 75px; } -:global(:root[data-edition='BE'][theme='dark']) .root { - background-color: var(--grey-1); + +:global(#page-wrapper.open) .root { + width: var(--sidebar-width); } -:global(:root[data-edition='BE'][theme='highcontrast']) .root { - background-color: var(--black-color); + +.root { + width: var(--sidebar-closed-width); + height: 100%; + + position: fixed; + left: 0; + + z-index: 999; + transition: all 0.4s ease 0s; } -ul.sidebar { +.root ul { top: 0; bottom: 0; padding: 0; margin: 0; list-style: none; - text-indent: 20px; - position: relative; - overflow: hidden; - flex-shrink: 0; -} - -.sidebar-content { - display: flex; - flex-direction: column; - justify-content: space-between; - overflow-y: auto; - overflow-x: hidden; - height: 100%; } diff --git a/app/react/sidebar/Sidebar.tsx b/app/react/sidebar/Sidebar.tsx index 192b1e307..07bb634ae 100644 --- a/app/react/sidebar/Sidebar.tsx +++ b/app/react/sidebar/Sidebar.tsx @@ -1,3 +1,6 @@ +import clsx from 'clsx'; +import { Home } from 'react-feather'; + import { useUser } from '@/portainer/hooks/useUser'; import { useIsTeamLeader } from '@/portainer/users/queries'; import { usePublicSettings } from '@/portainer/settings/queries'; @@ -26,15 +29,19 @@ export function Sidebar() { return ( /* in the future (when we remove r2a) this should wrap the whole app - to change root styles */ <SidebarProvider> - <nav id="sidebar-wrapper" className={styles.root} aria-label="Main"> + <nav + className={clsx( + styles.root, + 'p-5 flex flex-col be:bg-gray-11 bg-blue-10' + )} + aria-label="Main" + > <Header logo={LogoURL} /> - <div className={styles.sidebarContent}> - <ul className={styles.sidebar}> - <SidebarItem - to="portainer.home" - iconClass="fa-home fa-fw" - label="Home" - /> + + {/* negative margin + padding -> scrollbar won't hide the content */} + <div className="mt-6 overflow-y-auto flex-1 -mr-4 pr-4"> + <ul className="space-y-9"> + <SidebarItem to="portainer.home" icon={Home} label="Home" /> <EnvironmentSidebar /> @@ -44,7 +51,9 @@ export function Sidebar() { </ul> </div> - <Footer /> + <div className="mt-auto pt-8"> + <Footer /> + </div> </nav> </SidebarProvider> ); diff --git a/app/react/sidebar/SidebarItem/Head.tsx b/app/react/sidebar/SidebarItem/Head.tsx new file mode 100644 index 000000000..98b58beaa --- /dev/null +++ b/app/react/sidebar/SidebarItem/Head.tsx @@ -0,0 +1,85 @@ +import { + TransitionOptions, + useCurrentStateAndParams, + useSrefActive as useUiRouterSrefActive, +} from '@uirouter/react'; +import clsx from 'clsx'; +import { ComponentProps } from 'react'; + +import { Link } from '@@/Link'; +import { IconProps, Icon } from '@@/Icon'; + +import { useSidebarState } from '../useSidebarState'; + +interface Props extends IconProps, ComponentProps<typeof Link> { + label: string; + ignorePaths?: string[]; +} + +export function Head({ + to, + options, + params = {}, + label, + icon, + ignorePaths = [], +}: Props) { + const { isOpen } = useSidebarState(); + const anchorProps = useSrefActive( + to, + 'bg-blue-8 be:bg-gray-8', + params, + options, + ignorePaths + ); + + return ( + <a + href={anchorProps.href} + onClick={anchorProps.onClick} + title={label} + className={clsx( + anchorProps.className, + 'text-inherit no-underline hover:no-underline hover:text-inherit focus:no-underline focus:text-inherit w-full flex-1 rounded-md', + { 'px-3': isOpen } + )} + > + <div + className={clsx('flex items-center h-8 space-x-4 text-sm', { + 'justify-start w-full': isOpen, + 'justify-center w-8': !isOpen, + })} + > + {!!icon && ( + <Icon icon={icon} feather className={clsx('flex [&>svg]:w-4')} /> + )} + {isOpen && <span>{label}</span>} + </div> + </a> + ); +} + +function useSrefActive( + to: string, + activeClassName: string, + params: Partial<Record<string, string>> = {}, + options: TransitionOptions = {}, + ignorePaths: string[] = [] +) { + const { state } = useCurrentStateAndParams(); + const anchorProps = useUiRouterSrefActive( + to, + params || {}, + activeClassName, + options + ); + + const className = ignorePaths.includes(state.name || '') + ? '' + : anchorProps.className; + + return { + ...anchorProps, + className, + }; +} diff --git a/app/react/sidebar/SidebarItem/Icon.module.css b/app/react/sidebar/SidebarItem/Icon.module.css deleted file mode 100644 index 242fbfe17..000000000 --- a/app/react/sidebar/SidebarItem/Icon.module.css +++ /dev/null @@ -1,17 +0,0 @@ -.menu-icon { - padding-right: 30px; - width: 70px; - line-height: 36px; -} - -@media (max-height: 785px) { - .menu-icon { - line-height: 26px; - } -} - -@media (min-height: 786px) and (max-height: 924px) { - .menu-icon { - line-height: 30px; - } -} diff --git a/app/react/sidebar/SidebarItem/Icon.tsx b/app/react/sidebar/SidebarItem/Icon.tsx deleted file mode 100644 index 649d12704..000000000 --- a/app/react/sidebar/SidebarItem/Icon.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import clsx from 'clsx'; - -import styles from './Icon.module.css'; - -interface Props { - iconClass: string; -} - -export function Icon({ iconClass }: Props) { - return ( - <i - role="img" - className={clsx('fa', iconClass, styles.menuIcon)} - aria-label="itemIcon" - aria-hidden="true" - /> - ); -} diff --git a/app/react/sidebar/SidebarItem/Link.module.css b/app/react/sidebar/SidebarItem/Link.module.css deleted file mode 100644 index f0d7878c1..000000000 --- a/app/react/sidebar/SidebarItem/Link.module.css +++ /dev/null @@ -1,28 +0,0 @@ -a.active { - color: #fff; - border-left-color: var(--border-sidebar-color); -} - -a.active { - background: var(--grey-37); -} - -:global(:root[theme='dark']) a.active { - background-color: var(--grey-3); -} - -:global(:root[theme='highcontrast']) a.active { - background-color: var(--black-color); -} - -:global(:root[data-edition='BE']) a.active { - background-color: var(--grey-5); -} - -:global(:root[data-edition='BE'][theme='dark']) a.active { - background-color: var(--grey-1); -} - -:global(:root[data-edition='BE'][theme='highcontrast']) a.active { - background-color: var(--black-color); -} diff --git a/app/react/sidebar/SidebarItem/Link.tsx b/app/react/sidebar/SidebarItem/Link.tsx deleted file mode 100644 index 9cb8ba7b6..000000000 --- a/app/react/sidebar/SidebarItem/Link.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { UISrefActive } from '@uirouter/react'; -import { Children, ComponentProps, ReactNode } from 'react'; -import _ from 'lodash'; - -import { Link as NavLink } from '@@/Link'; - -import styles from './Link.module.css'; - -interface Props extends ComponentProps<typeof NavLink> { - children: ReactNode; -} - -export function Link({ children, to, options, params, title }: Props) { - const label = title || getLabel(children); - - return ( - <UISrefActive class={styles.active}> - <NavLink - to={to} - params={params} - className={styles.link} - title={label} - options={options} - > - {children} - </NavLink> - </UISrefActive> - ); -} - -function getLabel(children: ReactNode) { - return _.first( - _.compact( - Children.map(children, (child) => { - if (typeof child === 'string') { - return child; - } - - return ''; - }) - ) - ); -} diff --git a/app/react/sidebar/SidebarItem/Menu.module.css b/app/react/sidebar/SidebarItem/Menu.module.css deleted file mode 100644 index 7640daeba..000000000 --- a/app/react/sidebar/SidebarItem/Menu.module.css +++ /dev/null @@ -1,24 +0,0 @@ -.sidebar-menu-head { - position: relative; -} - -.sidebar-menu-head .sidebar-menu-indicator { - background: none; - border: 0; - width: fit-content; - height: fit-content; - color: white; - margin: 0; - padding: 0; - position: absolute; - left: 10px; - top: 25%; -} - -.items { - padding: 0; -} - -.items > * { - text-indent: 35px; -} diff --git a/app/react/sidebar/SidebarItem/Menu.tsx b/app/react/sidebar/SidebarItem/Menu.tsx index d68929de8..99d8ba0e5 100644 --- a/app/react/sidebar/SidebarItem/Menu.tsx +++ b/app/react/sidebar/SidebarItem/Menu.tsx @@ -1,17 +1,16 @@ import { useCurrentStateAndParams } from '@uirouter/react'; -import clsx from 'clsx'; import { Children, PropsWithChildren, - ReactElement, ReactNode, useMemo, useReducer, } from 'react'; +import { ChevronDown, ChevronUp } from 'react-feather'; import { useSidebarState } from '../useSidebarState'; -import styles from './Menu.module.css'; +import { getPaths } from './utils'; interface Props { head: ReactNode; @@ -26,38 +25,32 @@ export function Menu({ const { isOpen: isSidebarOpen } = useSidebarState(); const paths = useMemo( - () => [ - ...getPaths(head, []), - ...getPathsForChildren(children), - ...openOnPaths, - ], - [children, openOnPaths, head] + () => [...getPaths(head, []), ...openOnPaths], + [openOnPaths, head] ); const { isOpen, toggleOpen } = useIsOpen(isSidebarOpen, paths); + const CollapseButtonIcon = isOpen ? ChevronUp : ChevronDown; + return ( - <> - <div className={styles.sidebarMenuHead}> - {Children.count(children) > 0 && ( + <div className="flex-1"> + <div className="flex w-full justify-between items-center relative "> + {head} + {isSidebarOpen && Children.count(children) > 0 && ( <button - className={clsx('small', styles.sidebarMenuIndicator)} + className="bg-transparent border-0 w-6 h-6 flex items-center justify-center absolute right-2 text-gray-5" onClick={handleClickArrow} type="button" + aria-label="Collapse button" > - <i - className={clsx( - 'fas', - isOpen ? 'fa-chevron-down' : 'fa-chevron-right' - )} - /> + <CollapseButtonIcon className="w-4 h-4" /> </button> )} - {head} </div> - {isOpen && <ul className={styles.items}>{children}</ul>} - </> + {isOpen && <ul className="!pl-8">{children}</ul>} + </div> ); function handleClickArrow(e: React.MouseEvent<HTMLButtonElement>) { @@ -100,30 +93,3 @@ function useIsOpen( return isOpenByState; } } - -function isReactElement(element: ReactNode): element is ReactElement { - return ( - !!element && - typeof element === 'object' && - 'type' in element && - 'props' in element - ); -} - -function getPathsForChildren(children: ReactNode): string[] { - return Children.map(children, (child) => getPaths(child, []))?.flat() || []; -} - -function getPaths(element: ReactNode, paths: string[]): string[] { - if (!isReactElement(element)) { - return paths; - } - - if (typeof element.props.to === 'undefined') { - return Children.map(element.props.children, (child) => - getPaths(child, paths) - ); - } - - return [element.props.to, ...paths]; -} diff --git a/app/react/sidebar/SidebarItem/SidebarItem.module.css b/app/react/sidebar/SidebarItem/SidebarItem.module.css deleted file mode 100644 index c8e64244b..000000000 --- a/app/react/sidebar/SidebarItem/SidebarItem.module.css +++ /dev/null @@ -1,75 +0,0 @@ -.sidebar-menu-item { - text-indent: 25px; -} - -.sidebar-menu-item a { - padding-left: 5px; - border-left: 3px solid transparent; - font-size: 14px; - - line-height: 36px; - letter-spacing: -0.03em; - - display: flex; - justify-content: space-between; - - text-decoration: none; - width: 250px; -} - -.sidebar-menu-item a { - color: var(--grey-56); -} -:global(:root[theme='dark']) .sidebar-menu-item a { - color: var(--white-color); -} -:global(:root[theme='highcontrast']) .sidebar-menu-item a { - color: var(--white-color); -} -:global(:root[data-edition='BE']) .sidebar-menu-item a { - color: var(--white-color); -} -:global(:root[data-edition='BE'][theme='dark']) .sidebar-menu-item a { - color: var(--white-color); -} -:global(:root[data-edition='BE'][theme='highcontrast']) .sidebar-menu-item a { - color: var(--white-color); -} - -@media (max-height: 785px) { - .sidebar-menu-item a { - font-size: 12px; - line-height: 26px; - } -} - -@media (min-height: 786px) and (max-height: 924px) { - .sidebar-menu-item a { - font-size: 12px; - line-height: 30px; - } -} - -.sidebar-menu-item a:hover { - color: #fff; - border-left-color: #e99d1a; -} - -.sidebar-menu-item a:hover { - background-color: var(--grey-37); -} -:global(:root[theme='dark']) .sidebar-menu-item a:hover { - background-color: var(--grey-3); -} -:global(:root[theme='highcontrast']) .sidebar-menu-item a:hover { - background-color: var(--black-color); -} -:global(:root[data-edition='BE']) .sidebar-menu-item a:hover { - background-color: var(--grey-34); -} -:global(:root[data-edition='BE'][theme='dark']) .sidebar-menu-item a:hover { - background-color: var(--grey-3); -} -:global(:root[data-edition='BE'][theme='highcontrast']) .sidebar-menu-item a:hover { - background-color: var(--black-color); -} diff --git a/app/react/sidebar/SidebarItem/SidebarItem.stories.tsx b/app/react/sidebar/SidebarItem/SidebarItem.stories.tsx index 94d167e06..835d65a6e 100644 --- a/app/react/sidebar/SidebarItem/SidebarItem.stories.tsx +++ b/app/react/sidebar/SidebarItem/SidebarItem.stories.tsx @@ -1,4 +1,5 @@ import { Meta, Story } from '@storybook/react'; +import { Clock, Icon } from 'react-feather'; import { SidebarItem } from '.'; @@ -9,33 +10,30 @@ const meta: Meta = { export default meta; interface StoryProps { - iconClass?: string; - className: string; + icon?: Icon; label: string; } -function Template({ iconClass, className, label: linkName }: StoryProps) { +function Template({ icon, label }: StoryProps) { return ( <ul className="sidebar"> - <SidebarItem.Wrapper className={className}> - <SidebarItem.Link to="example.path" params={{ endpointId: 1 }}> - {linkName} - {iconClass && <SidebarItem.Icon iconClass={iconClass} />} - </SidebarItem.Link> - </SidebarItem.Wrapper> + <SidebarItem + to="example.path" + params={{ endpointId: 1 }} + icon={icon} + label={label} + /> </ul> ); } export const Primary: Story<StoryProps> = Template.bind({}); Primary.args = { - iconClass: 'fa-tachometer-alt fa-fw', - className: 'exampleItemClass', + icon: Clock, label: 'Item with icon', }; export const WithoutIcon: Story<StoryProps> = Template.bind({}); WithoutIcon.args = { - className: 'exampleItemClass', label: 'Item without icon', }; diff --git a/app/react/sidebar/SidebarItem/SidebarItem.test.tsx b/app/react/sidebar/SidebarItem/SidebarItem.test.tsx deleted file mode 100644 index a022420d2..000000000 --- a/app/react/sidebar/SidebarItem/SidebarItem.test.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { render } from '@/react-tools/test-utils'; - -import { SidebarItem } from '.'; - -test('should be visible & have expected class', () => { - const { getByRole, getByText } = renderComponent('Test', 'testClass'); - const listItem = getByRole('listitem'); - expect(listItem).toBeVisible(); - expect(listItem).toHaveClass('testClass'); - expect(getByText('Test')).toBeVisible(); -}); - -test('icon should with correct icon if iconClass is provided', () => { - const { getByLabelText } = renderComponent('', '', 'testIconClass'); - const sidebarIcon = getByLabelText('itemIcon'); - expect(sidebarIcon).toBeVisible(); - expect(sidebarIcon).toHaveClass('testIconClass'); -}); - -test('icon should not be rendered if iconClass is not provided', () => { - const { queryByRole } = renderComponent(); - expect(queryByRole('img')).not.toBeInTheDocument(); -}); - -function renderComponent(label = '', className = '', iconClass = '') { - return render( - <SidebarItem.Wrapper className={className}> - <SidebarItem.Link to="" params={{ endpointId: 1 }}> - {label} - </SidebarItem.Link> - <SidebarItem.Icon iconClass={iconClass} /> - </SidebarItem.Wrapper> - ); -} diff --git a/app/react/sidebar/SidebarItem/SidebarItem.tsx b/app/react/sidebar/SidebarItem/SidebarItem.tsx index 46deb03d7..3ea03690d 100644 --- a/app/react/sidebar/SidebarItem/SidebarItem.tsx +++ b/app/react/sidebar/SidebarItem/SidebarItem.tsx @@ -1,38 +1,43 @@ import { ReactNode } from 'react'; +import { Icon } from 'react-feather'; import { Wrapper } from './Wrapper'; -import { Link } from './Link'; import { Menu } from './Menu'; -import { Icon } from './Icon'; +import { Head } from './Head'; +import { getPathsForChildren } from './utils'; -type Props = { - iconClass?: string; +interface Props { + icon?: Icon; to: string; params?: object; label: string; children?: ReactNode; openOnPaths?: string[]; -}; +} export function SidebarItem({ children, - iconClass, + icon, to, params, label, - openOnPaths, + openOnPaths = [], }: Props) { + const childrenPath = getPathsForChildren(children); const head = ( - <Link to={to} params={params}> - {label} - {iconClass && <Icon iconClass={iconClass} />} - </Link> + <Head + icon={icon} + to={to} + params={params} + label={label} + ignorePaths={childrenPath} + /> ); return ( <Wrapper label={label}> {children ? ( - <Menu head={head} openOnPaths={openOnPaths}> + <Menu head={head} openOnPaths={[...openOnPaths, ...childrenPath]}> {children} </Menu> ) : ( diff --git a/app/react/sidebar/SidebarItem/Wrapper.tsx b/app/react/sidebar/SidebarItem/Wrapper.tsx index 2a7047827..56c2c59fa 100644 --- a/app/react/sidebar/SidebarItem/Wrapper.tsx +++ b/app/react/sidebar/SidebarItem/Wrapper.tsx @@ -1,8 +1,6 @@ import { PropsWithChildren, AriaAttributes } from 'react'; import clsx from 'clsx'; -import styles from './SidebarItem.module.css'; - interface Props { className?: string; label?: string; @@ -16,7 +14,11 @@ export function Wrapper({ }: PropsWithChildren<Props> & AriaAttributes) { return ( <li - className={clsx(styles.sidebarMenuItem, className)} + className={clsx( + 'flex', + className, + 'text-gray-3 min-h-8 [&>a]:text-inherit [&>a]:hover:text-inherit [&>a]:hover:no-underline' + )} title={label} aria-label={label} // eslint-disable-next-line react/jsx-props-no-spreading diff --git a/app/react/sidebar/SidebarItem/index.ts b/app/react/sidebar/SidebarItem/index.ts index 4cdebc497..9e5da2bbd 100644 --- a/app/react/sidebar/SidebarItem/index.ts +++ b/app/react/sidebar/SidebarItem/index.ts @@ -1,12 +1,8 @@ import { SidebarItem as MainComponent } from './SidebarItem'; -import { Icon } from './Icon'; -import { Link } from './Link'; import { Menu } from './Menu'; import { Wrapper } from './Wrapper'; interface SubComponents { - Icon: typeof Icon; - Link: typeof Link; Menu: typeof Menu; Wrapper: typeof Wrapper; } @@ -14,7 +10,5 @@ interface SubComponents { export const SidebarItem: typeof MainComponent & SubComponents = MainComponent as typeof MainComponent & SubComponents; -SidebarItem.Link = Link; -SidebarItem.Icon = Icon; SidebarItem.Menu = Menu; SidebarItem.Wrapper = Wrapper; diff --git a/app/react/sidebar/SidebarItem/utils.ts b/app/react/sidebar/SidebarItem/utils.ts new file mode 100644 index 000000000..f90e0a909 --- /dev/null +++ b/app/react/sidebar/SidebarItem/utils.ts @@ -0,0 +1,28 @@ +import { ReactNode, ReactElement, Children } from 'react'; + +function isReactElement(element: ReactNode): element is ReactElement { + return ( + !!element && + typeof element === 'object' && + 'type' in element && + 'props' in element + ); +} + +export function getPathsForChildren(children: ReactNode): string[] { + return Children.map(children, (child) => getPaths(child, []))?.flat() || []; +} + +export function getPaths(element: ReactNode, paths: string[]): string[] { + if (!isReactElement(element)) { + return paths; + } + + if (typeof element.props.to === 'undefined') { + return Children.map(element.props.children, (child) => + getPaths(child, paths) + ); + } + + return [element.props.to, ...paths]; +} diff --git a/app/react/sidebar/SidebarSection.module.css b/app/react/sidebar/SidebarSection.module.css deleted file mode 100644 index 6a52aa3e8..000000000 --- a/app/react/sidebar/SidebarSection.module.css +++ /dev/null @@ -1,34 +0,0 @@ -.sidebar-title { - color: var(--text-sidebar-title-color); - font-size: 12px; - height: 35px; - line-height: 40px; - text-transform: uppercase; - transition: all 0.6s ease 0s; -} - -#page-wrapper:not(.open) .sidebar-title { - display: none; - height: 0px; - text-indent: -100px; -} - -.sidebar-title { - height: auto; -} - -.sidebar-title { - line-height: 36px; -} - -@media (max-height: 785px) { - .sidebar-title { - line-height: 26px; - } -} - -@media (min-height: 786px) and (max-height: 924px) { - .sidebar-title { - line-height: 30px; - } -} diff --git a/app/react/sidebar/SidebarSection.tsx b/app/react/sidebar/SidebarSection.tsx index fb5b637d3..77750588f 100644 --- a/app/react/sidebar/SidebarSection.tsx +++ b/app/react/sidebar/SidebarSection.tsx @@ -1,26 +1,30 @@ import { PropsWithChildren, ReactNode } from 'react'; -import styles from './SidebarSection.module.css'; +import { useSidebarState } from './useSidebarState'; interface Props { - title: ReactNode; - label?: string; + title: string; + renderTitle?: (className: string) => ReactNode; } export function SidebarSection({ title, - label, + renderTitle, children, }: PropsWithChildren<Props>) { - const labelText = typeof title === 'string' ? title : label; + const { isOpen } = useSidebarState(); + const titleClassName = + 'ml-3 text-sm text-gray-3 be:text-gray-6 transition-all duration-500 ease-in-out'; return ( - <> - <li className={styles.sidebarTitle}>{title}</li> + <div> + {renderTitle + ? renderTitle(titleClassName) + : isOpen && <li className={titleClassName}>{title}</li>} - <nav aria-label={labelText}> + <nav aria-label={title} className="mt-4"> <ul>{children}</ul> </nav> - </> + </div> ); } diff --git a/app/react/sidebar/items/DashboardLink.tsx b/app/react/sidebar/items/DashboardLink.tsx new file mode 100644 index 000000000..9ed05be9e --- /dev/null +++ b/app/react/sidebar/items/DashboardLink.tsx @@ -0,0 +1,21 @@ +import { Layout } from 'react-feather'; + +import { EnvironmentId } from '@/portainer/environments/types'; + +import { SidebarItem } from '../SidebarItem'; + +interface Props { + environmentId: EnvironmentId; + platformPath: string; +} + +export function DashboardLink({ environmentId, platformPath }: Props) { + return ( + <SidebarItem + to={`${platformPath}.dashboard`} + params={{ endpointId: environmentId }} + icon={Layout} + label="Dashboard" + /> + ); +} diff --git a/app/react/sidebar/items/VolumesLink.tsx b/app/react/sidebar/items/VolumesLink.tsx new file mode 100644 index 000000000..7d59d9499 --- /dev/null +++ b/app/react/sidebar/items/VolumesLink.tsx @@ -0,0 +1,21 @@ +import { Database } from 'react-feather'; + +import { EnvironmentId } from '@/portainer/environments/types'; + +import { SidebarItem } from '../SidebarItem'; + +interface Props { + environmentId: EnvironmentId; + platformPath: string; +} + +export function VolumesLink({ environmentId, platformPath }: Props) { + return ( + <SidebarItem + to={`${platformPath}.volumes`} + params={{ endpointId: environmentId }} + icon={Database} + label="Volumes" + /> + ); +} diff --git a/app/react/sidebar/useSidebarState.tsx b/app/react/sidebar/useSidebarState.tsx index b5316abb9..7502aa7ef 100644 --- a/app/react/sidebar/useSidebarState.tsx +++ b/app/react/sidebar/useSidebarState.tsx @@ -1,11 +1,13 @@ import { createContext, + PropsWithChildren, useCallback, useContext, useEffect, useMemo, useRef, useState, + useReducer, } from 'react'; import angular, { IScope } from 'angular'; import _ from 'lodash'; @@ -21,7 +23,7 @@ interface State { toggle(): void; } -const Context = createContext<State | null>(null); +export const Context = createContext<State | null>(null); export function useSidebarState() { const context = useContext(Context); @@ -39,6 +41,17 @@ export function SidebarProvider({ children }: { children: React.ReactNode }) { return <Context.Provider value={state}> {children} </Context.Provider>; } +export function TestSidebarProvider({ children }: PropsWithChildren<unknown>) { + const [isOpen, toggle] = useReducer((state) => !state, true); + + const state = useMemo( + () => ({ isOpen, toggle: () => toggle() }), + [isOpen, toggle] + ); + + return <Context.Provider value={state}> {children} </Context.Provider>; +} + /* @ngInject */ export function AngularSidebarService($rootScope: IScope) { const state = { diff --git a/package.json b/package.json index 35b931577..46736fd67 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,6 @@ "spinkit": "^2.0.1", "splitargs": "github:deviantony/splitargs#semver:~0.2.0", "strip-ansi": "^6.0.0", - "tailwindcss": "^3.0.23", "toastr": "^2.1.4", "ui-select": "^0.19.8", "uuid": "^3.3.2", @@ -160,6 +159,7 @@ "@storybook/builder-webpack5": "^6.4.9", "@storybook/manager-webpack5": "^6.4.9", "@storybook/react": "^6.4.9", + "@svgr/webpack": "^6.2.1", "@testing-library/jest-dom": "^5.16.1", "@testing-library/react": "^12.1.2", "@testing-library/user-event": "^13.5.0", @@ -181,7 +181,7 @@ "@typescript-eslint/eslint-plugin": "^5.7.0", "@typescript-eslint/parser": "^5.7.0", "auto-ngtemplate-loader": "^2.0.1", - "autoprefixer": "^10.4.2", + "autoprefixer": "^10.4.7", "babel-jest": "^27.4.2", "babel-loader": "^8.2.3", "babel-plugin-i18next-extract": "^0.8.3", @@ -229,7 +229,7 @@ "msw-storybook-addon": "^1.5.0", "ngtemplate-loader": "^2.1.0", "plop": "^2.6.0", - "postcss": "^8.4.6", + "postcss": "^8.4.14", "postcss-loader": "^6.2.1", "prettier": "^2.5.1", "react-test-renderer": "^17.0.2", @@ -238,6 +238,7 @@ "storybook-css-modules-preset": "^1.1.1", "style-loader": "^3.3.1", "swagger2openapi": "^7.0.8", + "tailwindcss": "^3.1.4", "tsconfig-paths-webpack-plugin": "^3.5.2", "typescript": "^4.5.2", "webpack": "^5.65.0", diff --git a/tailwind.config.js b/tailwind.config.js index 8b190f25c..c6d745352 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -1,4 +1,5 @@ const plugin = require('tailwindcss/plugin'); +const defaultTheme = require('tailwindcss/defaultTheme'); const colors = require('./app/assets/css/colors.json'); /** @type {import('tailwindcss').Config} */ @@ -18,6 +19,11 @@ module.exports = { 'legacy-blue-2': 'var(--blue-2)', 'legacy-blue-9': 'var(--blue-9)', }, + extend: { + fontFamily: { + sans: ['Inter', ...defaultTheme.fontFamily.sans], + }, + }, }, plugins: [ diff --git a/webpack/webpack.common.js b/webpack/webpack.common.js index b4181031e..743d28f56 100644 --- a/webpack/webpack.common.js +++ b/webpack/webpack.common.js @@ -14,6 +14,7 @@ const CopyPlugin = require('copy-webpack-plugin'); const pkg = require('../package.json'); const projectRoot = path.resolve(__dirname, '..'); +/** @type {import('webpack').Configuration} */ module.exports = { entry: { main: './app', @@ -63,6 +64,21 @@ module.exports = { test: /.xml$/, type: 'asset/resource', }, + { + test: /\.(gif|png|jpe?g)$/i, + type: 'asset/resource', + }, + { + test: /\.svg$/i, + type: 'asset', + resourceQuery: { not: [/c/] }, // exclude react component if *.svg?url + }, + { + test: /\.svg$/i, + issuer: /\.tsx?$/, + resourceQuery: /c/, // *.svg?c + use: [{ loader: '@svgr/webpack', options: { icon: true } }], + }, { test: /\.css$/, use: [ diff --git a/webpack/webpack.develop.js b/webpack/webpack.develop.js index ded1af894..fd8514819 100644 --- a/webpack/webpack.develop.js +++ b/webpack/webpack.develop.js @@ -7,7 +7,7 @@ module.exports = merge(commonConfig, { module: { rules: [ { - test: /\.(woff|woff2|eot|ttf|svg|ico|png|jpg|gif)$/, + test: /\.(woff|woff2|eot|ttf|ico)$/, type: 'asset/resource', }, ], diff --git a/webpack/webpack.production.js b/webpack/webpack.production.js index 8516800fd..e2832ae63 100644 --- a/webpack/webpack.production.js +++ b/webpack/webpack.production.js @@ -10,10 +10,6 @@ module.exports = merge(commonConfig, { test: /\.(woff|woff2|eot|ttf|ico)$/, type: 'asset/inline', }, - { - test: /\.(gif|png|jpe?g|svg)$/i, - type: 'asset/resource', - }, ], }, }); diff --git a/yarn.lock b/yarn.lock index 01a0eeb26..6a7345a13 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,6 +9,14 @@ dependencies: "@jridgewell/trace-mapping" "^0.3.0" +"@ampproject/remapping@^2.1.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== + dependencies: + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" + "@apidevtools/json-schema-ref-parser@^9.0.6": version "9.0.9" resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz#d720f9256e3609621280584f2b47ae165359268b" @@ -81,7 +89,7 @@ dependencies: tslib "^2.3.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.3", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.14.5", "@babel/code-frame@^7.15.8", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== @@ -93,6 +101,11 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.0.tgz#86850b8597ea6962089770952075dcaabb8dba34" integrity sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng== +"@babel/compat-data@^7.16.0", "@babel/compat-data@^7.17.10": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.5.tgz#acac0c839e317038c73137fbb6ef71a1d6238471" + integrity sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg== + "@babel/core@7.12.9": version "7.12.9" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8" @@ -115,7 +128,92 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.1.0", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0": +"@babel/core@^7.1.0": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.10.3.tgz" + integrity sha512-5YqWxYE3pyhIi84L84YcwjeEgS+fa7ZjK6IBVGTjDVfm64njkR2lfDhVR5OudLk8x2GK59YoSyVv+L/03k1q9w== + dependencies: + "@babel/code-frame" "^7.10.3" + "@babel/generator" "^7.10.3" + "@babel/helper-module-transforms" "^7.10.1" + "@babel/helpers" "^7.10.1" + "@babel/parser" "^7.10.3" + "@babel/template" "^7.10.3" + "@babel/traverse" "^7.10.3" + "@babel/types" "^7.10.3" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.12.10", "@babel/core@^7.12.3": + version "7.15.8" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.15.8.tgz" + integrity sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og== + dependencies: + "@babel/code-frame" "^7.15.8" + "@babel/generator" "^7.15.8" + "@babel/helper-compilation-targets" "^7.15.4" + "@babel/helper-module-transforms" "^7.15.8" + "@babel/helpers" "^7.15.4" + "@babel/parser" "^7.15.8" + "@babel/template" "^7.15.4" + "@babel/traverse" "^7.15.4" + "@babel/types" "^7.15.6" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + source-map "^0.5.0" + +"@babel/core@^7.15.5": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.5.tgz#c597fa680e58d571c28dda9827669c78cdd7f000" + integrity sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.18.2" + "@babel/helper-compilation-targets" "^7.18.2" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helpers" "^7.18.2" + "@babel/parser" "^7.18.5" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.18.5" + "@babel/types" "^7.18.4" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" + +"@babel/core@^7.16.0", "@babel/core@^7.7.2", "@babel/core@^7.7.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.5.tgz#924aa9e1ae56e1e55f7184c8bf073a50d8677f5c" + integrity sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ== + dependencies: + "@babel/code-frame" "^7.16.0" + "@babel/generator" "^7.16.5" + "@babel/helper-compilation-targets" "^7.16.3" + "@babel/helper-module-transforms" "^7.16.5" + "@babel/helpers" "^7.16.5" + "@babel/parser" "^7.16.5" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.5" + "@babel/types" "^7.16.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + source-map "^0.5.0" + +"@babel/core@^7.8.0": version "7.17.2" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.2.tgz#2c77fc430e95139d816d39b113b31bf40fb22337" integrity sha512-R3VH5G42VSDolRHyUO4V2cfag8WHcZyxdq5Z/m8Xyb92lW/Erm/6kM+XtRFGf3Mulre3mveni2NHfEUws8wSvw== @@ -136,6 +234,15 @@ json5 "^2.1.2" semver "^6.3.0" +"@babel/generator@^7.10.3", "@babel/generator@^7.15.4", "@babel/generator@^7.15.8", "@babel/generator@^7.16.5", "@babel/generator@^7.16.8", "@babel/generator@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d" + integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw== + dependencies: + "@babel/types" "^7.18.2" + "@jridgewell/gen-mapping" "^0.3.0" + jsesc "^2.5.1" + "@babel/generator@^7.12.11", "@babel/generator@^7.12.5", "@babel/generator@^7.17.0", "@babel/generator@^7.7.2": version "7.17.0" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.0.tgz#7bd890ba706cd86d3e2f727322346ffdbf98f65e" @@ -145,7 +252,14 @@ jsesc "^2.5.1" source-map "^0.5.0" -"@babel/helper-annotate-as-pure@^7.16.0", "@babel/helper-annotate-as-pure@^7.16.7": +"@babel/helper-annotate-as-pure@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz#9a1f0ebcda53d9a2d00108c4ceace6a5d5f1f08d" + integrity sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-annotate-as-pure@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== @@ -160,16 +274,26 @@ "@babel/helper-explode-assignable-expression" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b" - integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA== +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.15.4", "@babel/helper-compilation-targets@^7.16.3": + version "7.16.3" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz#5b480cd13f68363df6ec4dc8ac8e2da11363cbf0" + integrity sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA== dependencies: - "@babel/compat-data" "^7.16.4" - "@babel/helper-validator-option" "^7.16.7" + "@babel/compat-data" "^7.16.0" + "@babel/helper-validator-option" "^7.14.5" browserslist "^4.17.5" semver "^6.3.0" +"@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10", "@babel/helper-compilation-targets@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz#67a85a10cbd5fc7f1457fec2e7f45441dc6c754b" + integrity sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ== + dependencies: + "@babel/compat-data" "^7.17.10" + "@babel/helper-validator-option" "^7.16.7" + browserslist "^4.20.2" + semver "^6.3.0" + "@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.1": version "7.17.1" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.1.tgz#9699f14a88833a7e055ce57dcd3ffdcd25186b21" @@ -183,10 +307,23 @@ "@babel/helper-replace-supers" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" -"@babel/helper-create-regexp-features-plugin@^7.16.7": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" - integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA== +"@babel/helper-create-class-features-plugin@^7.16.5", "@babel/helper-create-class-features-plugin@^7.17.12", "@babel/helper-create-class-features-plugin@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz#fac430912606331cb075ea8d82f9a4c145a4da19" + integrity sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-member-expression-to-functions" "^7.17.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + +"@babel/helper-create-regexp-features-plugin@^7.16.0", "@babel/helper-create-regexp-features-plugin@^7.16.7", "@babel/helper-create-regexp-features-plugin@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz#bb37ca467f9694bbe55b884ae7a5cc1e0084e4fd" + integrity sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" regexpu-core "^5.0.1" @@ -219,6 +356,13 @@ resolve "^1.14.2" semver "^6.1.2" +"@babel/helper-environment-visitor@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.5.tgz#f6a7f38b3c6d8b07c88faea083c46c09ef5451b8" + integrity sha512-ODQyc5AnxmZWm/R2W7fzhamOk1ey8gSguo5SGvF0zcB3uUzRpTRmM/jmLSm9bDMyPlvbyJ+PwPEK0BWIoZ9wjg== + dependencies: + "@babel/types" "^7.16.0" + "@babel/helper-environment-visitor@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" @@ -226,6 +370,11 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-environment-visitor@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd" + integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ== + "@babel/helper-explode-assignable-expression@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" @@ -233,6 +382,15 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-function-name@^7.10.3", "@babel/helper-function-name@^7.15.4", "@babel/helper-function-name@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz#b7dd0797d00bbfee4f07e9c4ea5b0e30c8bb1481" + integrity sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog== + dependencies: + "@babel/helper-get-function-arity" "^7.16.0" + "@babel/template" "^7.16.0" + "@babel/types" "^7.16.0" + "@babel/helper-function-name@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" @@ -242,14 +400,22 @@ "@babel/template" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/helper-get-function-arity@^7.16.7": +"@babel/helper-function-name@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" + integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== + dependencies: + "@babel/template" "^7.16.7" + "@babel/types" "^7.17.0" + +"@babel/helper-get-function-arity@^7.16.0", "@babel/helper-get-function-arity@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== dependencies: "@babel/types" "^7.16.7" -"@babel/helper-hoist-variables@^7.16.7": +"@babel/helper-hoist-variables@^7.15.4", "@babel/helper-hoist-variables@^7.16.0", "@babel/helper-hoist-variables@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== @@ -263,14 +429,42 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.16.7": +"@babel/helper-member-expression-to-functions@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" + integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== + dependencies: + "@babel/types" "^7.17.0" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz#90538e60b672ecf1b448f5f4f5433d37e79a3ec3" + integrity sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-module-imports@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== dependencies: "@babel/types" "^7.16.7" -"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.16.7": +"@babel/helper-module-transforms@^7.10.1", "@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.15.8", "@babel/helper-module-transforms@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.5.tgz#530ebf6ea87b500f60840578515adda2af470a29" + integrity sha512-CkvMxgV4ZyyioElFwcuWnDCcNIeyqTkCm9BxXZi73RR1ozqlpboqsbGUNvRTflgZtFbbJ1v5Emvm+lkjMYY/LQ== + dependencies: + "@babel/helper-environment-visitor" "^7.16.5" + "@babel/helper-module-imports" "^7.16.0" + "@babel/helper-simple-access" "^7.16.0" + "@babel/helper-split-export-declaration" "^7.16.0" + "@babel/helper-validator-identifier" "^7.15.7" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.5" + "@babel/types" "^7.16.0" + +"@babel/helper-module-transforms@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41" integrity sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng== @@ -284,7 +478,21 @@ "@babel/traverse" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/helper-optimise-call-expression@^7.16.7": +"@babel/helper-module-transforms@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz#baf05dec7a5875fb9235bd34ca18bad4e21221cd" + integrity sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.18.0" + "@babel/types" "^7.18.0" + +"@babel/helper-optimise-call-expression@^7.16.0", "@babel/helper-optimise-call-expression@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== @@ -296,11 +504,16 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== +"@babel/helper-plugin-utils@^7.16.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz#86c2347da5acbf5583ba0a10aed4c9bf9da9cf96" + integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA== + "@babel/helper-remap-async-to-generator@^7.16.8": version "7.16.8" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" @@ -310,16 +523,23 @@ "@babel/helper-wrap-function" "^7.16.8" "@babel/types" "^7.16.8" -"@babel/helper-replace-supers@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1" - integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw== +"@babel/helper-replace-supers@^7.16.5", "@babel/helper-replace-supers@^7.16.7", "@babel/helper-replace-supers@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz#41fdfcc9abaf900e18ba6e5931816d9062a7b2e0" + integrity sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q== dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-environment-visitor" "^7.18.2" + "@babel/helper-member-expression-to-functions" "^7.17.7" "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/traverse" "^7.16.7" - "@babel/types" "^7.16.7" + "@babel/traverse" "^7.18.2" + "@babel/types" "^7.18.2" + +"@babel/helper-simple-access@^7.16.0", "@babel/helper-simple-access@^7.17.7", "@babel/helper-simple-access@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz#4dc473c2169ac3a1c9f4a51cfcd091d1c36fcff9" + integrity sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ== + dependencies: + "@babel/types" "^7.18.2" "@babel/helper-simple-access@^7.16.7": version "7.16.7" @@ -335,19 +555,19 @@ dependencies: "@babel/types" "^7.16.0" -"@babel/helper-split-export-declaration@^7.16.7": +"@babel/helper-split-export-declaration@^7.10.1", "@babel/helper-split-export-declaration@^7.15.4", "@babel/helper-split-export-declaration@^7.16.0", "@babel/helper-split-export-declaration@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== dependencies: "@babel/types" "^7.16.7" -"@babel/helper-validator-identifier@^7.16.7", "@babel/helper-validator-identifier@^7.9.5": +"@babel/helper-validator-identifier@^7.15.7", "@babel/helper-validator-identifier@^7.16.7", "@babel/helper-validator-identifier@^7.9.5": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== -"@babel/helper-validator-option@^7.16.7": +"@babel/helper-validator-option@^7.14.5", "@babel/helper-validator-option@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== @@ -362,7 +582,16 @@ "@babel/traverse" "^7.16.8" "@babel/types" "^7.16.8" -"@babel/helpers@^7.12.5", "@babel/helpers@^7.17.2": +"@babel/helpers@^7.10.1", "@babel/helpers@^7.12.5", "@babel/helpers@^7.15.4", "@babel/helpers@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.5.tgz#29a052d4b827846dd76ece16f565b9634c554ebd" + integrity sha512-TLgi6Lh71vvMZGEkFuIxzaPsyeYCHQ5jJOOX1f0xXn0uciFuE8cEk0wyBquMcCxBXZ5BJhE2aUB7pnWTD150Tw== + dependencies: + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.5" + "@babel/types" "^7.16.0" + +"@babel/helpers@^7.17.2": version "7.17.2" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.2.tgz#23f0a0746c8e287773ccd27c14be428891f63417" integrity sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ== @@ -371,6 +600,15 @@ "@babel/traverse" "^7.17.0" "@babel/types" "^7.17.0" +"@babel/helpers@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.2.tgz#970d74f0deadc3f5a938bfa250738eb4ac889384" + integrity sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg== + dependencies: + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.18.2" + "@babel/types" "^7.18.2" + "@babel/highlight@^7.16.7": version "7.16.10" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" @@ -380,11 +618,21 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.0": +"@babel/parser@^7.1.0", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.17.0": version "7.17.0" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.0.tgz#f0ac33eddbe214e4105363bb17c3341c5ffcc43c" integrity sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw== +"@babel/parser@^7.10.3", "@babel/parser@^7.14.5", "@babel/parser@^7.15.4", "@babel/parser@^7.15.8", "@babel/parser@^7.16.10", "@babel/parser@^7.16.5", "@babel/parser@^7.18.5": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.5.tgz#337062363436a893a2d22faa60be5bb37091c83c" + integrity sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw== + +"@babel/parser@^7.16.7": + version "7.16.10" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.10.tgz#aba1b1cb9696a24a19f59c41af9cf17d1c716a88" + integrity sha512-Sm/S9Or6nN8uiFsQU1yodyDW3MWXQhFeqzMPM+t8MJjM+pLsnFVxFZzkpXKvUXh+Gz9cbMoYYs484+Jw/NTEFQ== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" @@ -392,6 +640,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz#1dca338caaefca368639c9ffb095afbd4d420b1e" + integrity sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9" @@ -401,6 +656,15 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-proposal-optional-chaining" "^7.16.7" +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz#0d498ec8f0374b1e2eb54b9cb2c4c78714c77753" + integrity sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.17.12" + "@babel/plugin-proposal-async-generator-functions@^7.16.8": version "7.16.8" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz#3bdd1ebbe620804ea9416706cd67d60787504bc8" @@ -410,7 +674,24 @@ "@babel/helper-remap-async-to-generator" "^7.16.8" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.16.7": +"@babel/plugin-proposal-async-generator-functions@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz#094a417e31ce7e692d84bab06c8e2a607cbeef03" + integrity sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-remap-async-to-generator" "^7.16.8" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.12.1": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.5.tgz#3269f44b89122110f6339806e05d43d84106468a" + integrity sha512-pJD3HjgRv83s5dv1sTnDbZOaTjghKEz8KUn1Kbh2eAIRhGuyQ1XSeI4xVXU3UlIEVA3DAyIdxqT1eRn7Wcn55A== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-proposal-class-properties@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== @@ -418,6 +699,14 @@ "@babel/helper-create-class-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" +"@babel/plugin-proposal-class-properties@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz#84f65c0cc247d46f40a6da99aadd6438315d80a4" + integrity sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-proposal-class-static-block@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz#712357570b612106ef5426d13dc433ce0f200c2a" @@ -427,6 +716,15 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-class-static-block" "^7.14.5" +"@babel/plugin-proposal-class-static-block@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz#7d02253156e3c3793bdb9f2faac3a1c05f0ba710" + integrity sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-proposal-decorators@^7.12.12": version "7.17.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.2.tgz#c36372ddfe0360cac1ee331a238310bddca11493" @@ -462,6 +760,14 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" +"@babel/plugin-proposal-export-namespace-from@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz#b22864ccd662db9606edb2287ea5fd1709f05378" + integrity sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-proposal-json-strings@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8" @@ -470,6 +776,14 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-json-strings" "^7.8.3" +"@babel/plugin-proposal-json-strings@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz#f4642951792437233216d8c1af370bb0fbff4664" + integrity sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-proposal-logical-assignment-operators@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea" @@ -478,7 +792,23 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7": +"@babel/plugin-proposal-logical-assignment-operators@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz#c64a1bcb2b0a6d0ed2ff674fd120f90ee4b88a23" + integrity sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.5.tgz#652555bfeeeee2d2104058c6225dc6f75e2d0f07" + integrity sha512-YwMsTp/oOviSBhrjwi0vzCUycseCYwoXnLiXIL3YNjHSMBHicGTz7GjVU/IGgz4DtOEXBdCNG72pvCX22ehfqg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99" integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ== @@ -486,6 +816,14 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" +"@babel/plugin-proposal-nullish-coalescing-operator@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz#1e93079bbc2cbc756f6db6a1925157c4a92b94be" + integrity sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-numeric-separator@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" @@ -514,6 +852,17 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.16.7" +"@babel/plugin-proposal-object-rest-spread@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz#79f2390c892ba2a68ec112eb0d895cfbd11155e8" + integrity sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw== + dependencies: + "@babel/compat-data" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.17.12" + "@babel/plugin-proposal-optional-catch-binding@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" @@ -522,7 +871,16 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.12.7", "@babel/plugin-proposal-optional-chaining@^7.16.7": +"@babel/plugin-proposal-optional-chaining@^7.12.7": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.5.tgz#a5fa61056194d5059366c0009cb9a9e66ed75c1f" + integrity sha512-kzdHgnaXRonttiTfKYnSVafbWngPPr2qKw9BWYBESl91W54e+9R5pP70LtWxV56g0f05f/SQrwHYkfvbwcdQ/A== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a" integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA== @@ -531,7 +889,24 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.12.1", "@babel/plugin-proposal-private-methods@^7.16.11": +"@babel/plugin-proposal-optional-chaining@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz#f96949e9bacace3a9066323a5cf90cfb9de67174" + integrity sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.12.1": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.5.tgz#2086f7d78c1b0c712d49b5c3fbc2d1ca21a7ee12" + integrity sha512-+yFMO4BGT3sgzXo+lrq7orX5mAZt57DwUK6seqII6AcJnJOIhBJ8pzKH47/ql/d426uQ7YhN8DpUFirQzqYSUA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-proposal-private-methods@^7.16.11": version "7.16.11" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz#e8df108288555ff259f4527dbe84813aac3a1c50" integrity sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw== @@ -539,6 +914,14 @@ "@babel/helper-create-class-features-plugin" "^7.16.10" "@babel/helper-plugin-utils" "^7.16.7" +"@babel/plugin-proposal-private-methods@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz#c2ca3a80beb7539289938da005ad525a038a819c" + integrity sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-proposal-private-property-in-object@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce" @@ -549,7 +932,17 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": +"@babel/plugin-proposal-private-property-in-object@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz#b02efb7f106d544667d91ae97405a9fd8c93952d" + integrity sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-proposal-unicode-property-regex@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2" integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg== @@ -557,6 +950,22 @@ "@babel/helper-create-regexp-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" +"@babel/plugin-proposal-unicode-property-regex@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz#3dbd7a67bd7f94c8238b394da112d86aaf32ad4d" + integrity sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.5.tgz#35fe753afa7c572f322bd068ff3377bde0f37080" + integrity sha512-s5sKtlKQyFSatt781HQwv1hoM5BQ9qRH30r+dK56OLDsHmV74mzwJNX7R1yMuE7VZKG5O6q/gmOGSAO6ikTudg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -620,6 +1029,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" +"@babel/plugin-syntax-import-assertions@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz#58096a92b11b2e4e54b24c6a0cc0e5e607abcedd" + integrity sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" @@ -641,12 +1057,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-jsx@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665" - integrity sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q== +"@babel/plugin-syntax-jsx@^7.16.5", "@babel/plugin-syntax-jsx@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz#834035b45061983a491f60096f61a2e7c5674a47" + integrity sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" @@ -711,13 +1127,34 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-arrow-functions@^7.12.1", "@babel/plugin-transform-arrow-functions@^7.16.7": +"@babel/plugin-syntax-typescript@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz#b54fc3be6de734a56b87508f99d6428b5b605a7b" + integrity sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-arrow-functions@^7.12.1": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.5.tgz#04c18944dd55397b521d9d7511e791acea7acf2d" + integrity sha512-8bTHiiZyMOyfZFULjsCnYOWG059FVMes0iljEHSfARhNgFfpsqE92OrCffv3veSw9rwMkYcFe9bj0ZoXU2IGtQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-arrow-functions@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154" integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ== dependencies: "@babel/helper-plugin-utils" "^7.16.7" +"@babel/plugin-transform-arrow-functions@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz#dddd783b473b1b1537ef46423e3944ff24898c45" + integrity sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-transform-async-to-generator@^7.16.8": version "7.16.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808" @@ -727,6 +1164,15 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-remap-async-to-generator" "^7.16.8" +"@babel/plugin-transform-async-to-generator@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz#dbe5511e6b01eee1496c944e35cdfe3f58050832" + integrity sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-remap-async-to-generator" "^7.16.8" + "@babel/plugin-transform-block-scoped-functions@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" @@ -734,14 +1180,42 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-block-scoping@^7.12.12", "@babel/plugin-transform-block-scoping@^7.16.7": +"@babel/plugin-transform-block-scoping@^7.12.12": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.5.tgz#b91f254fe53e210eabe4dd0c40f71c0ed253c5e7" + integrity sha512-JxjSPNZSiOtmxjX7PBRBeRJTUKTyJ607YUYeT0QJCNdsedOe+/rXITjP08eG8xUpsLfPirgzdCFN+h0w6RI+pQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-block-scoping@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87" integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ== dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-classes@^7.12.1", "@babel/plugin-transform-classes@^7.16.7": +"@babel/plugin-transform-block-scoping@^7.17.12": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz#7988627b3e9186a13e4d7735dc9c34a056613fb9" + integrity sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-classes@^7.12.1": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.5.tgz#6acf2ec7adb50fb2f3194dcd2909dbd056dcf216" + integrity sha512-DzJ1vYf/7TaCYy57J3SJ9rV+JEuvmlnvvyvYKFbk5u46oQbBvuB9/0w+YsVsxkOv8zVWKpDmUoj4T5ILHoXevA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-environment-visitor" "^7.16.5" + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-optimise-call-expression" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-replace-supers" "^7.16.5" + "@babel/helper-split-export-declaration" "^7.16.0" + globals "^11.1.0" + +"@babel/plugin-transform-classes@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00" integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ== @@ -755,6 +1229,20 @@ "@babel/helper-split-export-declaration" "^7.16.7" globals "^11.1.0" +"@babel/plugin-transform-classes@^7.17.12": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz#51310b812a090b846c784e47087fa6457baef814" + integrity sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.18.2" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-replace-supers" "^7.18.2" + "@babel/helper-split-export-declaration" "^7.16.7" + globals "^11.1.0" + "@babel/plugin-transform-computed-properties@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470" @@ -762,14 +1250,35 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.16.7": +"@babel/plugin-transform-computed-properties@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz#bca616a83679698f3258e892ed422546e531387f" + integrity sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-destructuring@^7.12.1": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.5.tgz#89ebc87499ac4a81b897af53bb5d3eed261bd568" + integrity sha512-GuRVAsjq+c9YPK6NeTkRLWyQskDC099XkBSVO+6QzbnOnH2d/4mBVXYStaPrZD3dFRfg00I6BFJ9Atsjfs8mlg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-destructuring@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz#ca9588ae2d63978a4c29d3f33282d8603f618e23" integrity sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A== dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": +"@babel/plugin-transform-destructuring@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz#dc4f92587e291b4daa78aa20cc2d7a63aa11e858" + integrity sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-dotall-regex@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== @@ -777,6 +1286,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" +"@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.5.tgz#b40739c00b6686820653536d6d143e311de67936" + integrity sha512-iQiEMt8Q4/5aRGHpGVK2Zc7a6mx7qEAO7qehgSug3SDImnuMzgmm/wtJALXaz25zUj1PmnNHtShjFgk4PDx4nw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-transform-duplicate-keys@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9" @@ -784,6 +1301,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" +"@babel/plugin-transform-duplicate-keys@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz#a09aa709a3310013f8e48e0e23bc7ace0f21477c" + integrity sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-transform-exponentiation-operator@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" @@ -807,6 +1331,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" +"@babel/plugin-transform-for-of@^7.18.1": + version "7.18.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz#ed14b657e162b72afbbb2b4cdad277bf2bb32036" + integrity sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-transform-function-name@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" @@ -823,6 +1354,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" +"@babel/plugin-transform-literals@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz#97131fbc6bbb261487105b4b3edbf9ebf9c830ae" + integrity sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-transform-member-expression-literals@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" @@ -839,6 +1377,15 @@ "@babel/helper-plugin-utils" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-amd@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz#7ef1002e67e36da3155edc8bf1ac9398064c02ed" + integrity sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA== + dependencies: + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-commonjs@^7.16.8": version "7.16.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz#cdee19aae887b16b9d331009aa9a219af7c86afe" @@ -849,6 +1396,16 @@ "@babel/helper-simple-access" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-commonjs@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz#1aa8efa2e2a6e818b6a7f2235fceaf09bdb31e9e" + integrity sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ== + dependencies: + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-simple-access" "^7.18.2" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-systemjs@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz#887cefaef88e684d29558c2b13ee0563e287c2d7" @@ -860,6 +1417,17 @@ "@babel/helper-validator-identifier" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-systemjs@^7.18.0": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.5.tgz#87f11c44fbfd3657be000d4897e192d9cb535996" + integrity sha512-SEewrhPpcqMF1V7DhnEbhVJLrC+nnYfe1E0piZMZXBpxi9WvZqWGwpsk7JYP7wPWeqaBh4gyKlBhHJu3uz5g4Q== + dependencies: + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-validator-identifier" "^7.16.7" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-umd@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618" @@ -868,6 +1436,14 @@ "@babel/helper-module-transforms" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" +"@babel/plugin-transform-modules-umd@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz#56aac64a2c2a1922341129a4597d1fd5c3ff020f" + integrity sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA== + dependencies: + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-transform-named-capturing-groups-regex@^7.16.8": version "7.16.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz#7f860e0e40d844a02c9dcf9d84965e7dfd666252" @@ -875,6 +1451,14 @@ dependencies: "@babel/helper-create-regexp-features-plugin" "^7.16.7" +"@babel/plugin-transform-named-capturing-groups-regex@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz#9c4a5a5966e0434d515f2675c227fd8cc8606931" + integrity sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-transform-new-target@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244" @@ -882,6 +1466,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" +"@babel/plugin-transform-new-target@^7.17.12": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.5.tgz#8c228c4a07501dd12c95c5f23d1622131cc23931" + integrity sha512-TuRL5uGW4KXU6OsRj+mLp9BM7pO8e7SGNTEokQRRxHFkXYMFiy2jlKSZPFtI/mKORDzciH+hneskcSOp0gU8hg== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-transform-object-super@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" @@ -890,13 +1481,27 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-replace-supers" "^7.16.7" -"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.16.7": +"@babel/plugin-transform-parameters@^7.12.1": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.5.tgz#4fc74b18a89638bd90aeec44a11793ecbe031dde" + integrity sha512-B3O6AL5oPop1jAVg8CV+haeUte9oFuY85zu0jwnRNZZi3tVAbJriu5tag/oaO2kGaQM/7q7aGPBlTI5/sr9enA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-parameters@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f" integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw== dependencies: "@babel/helper-plugin-utils" "^7.16.7" +"@babel/plugin-transform-parameters@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz#eb467cd9586ff5ff115a9880d6fdbd4a846b7766" + integrity sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-transform-property-literals@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" @@ -904,6 +1509,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" +"@babel/plugin-transform-react-constant-elements@^7.14.5": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.17.12.tgz#cc580857696b6dd9e5e3d079e673d060a0657f37" + integrity sha512-maEkX2xs2STuv2Px8QuqxqjhV2LsFobT1elCgyU5704fcyTu9DyD/bJXxD/mrRiVyhpHweOQ00OJ5FKhHq9oEw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-transform-react-display-name@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz#7b6d40d232f4c0f550ea348593db3b21e2404340" @@ -918,24 +1530,35 @@ dependencies: "@babel/plugin-transform-react-jsx" "^7.16.7" -"@babel/plugin-transform-react-jsx@^7.12.12", "@babel/plugin-transform-react-jsx@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.7.tgz#86a6a220552afd0e4e1f0388a68a372be7add0d4" - integrity sha512-8D16ye66fxiE8m890w0BpPpngG9o9OVBBy0gH2E+2AR7qMR2ZpTYJEqLxAsoroenMId0p/wMW+Blc0meDgu0Ag== +"@babel/plugin-transform-react-jsx@^7.12.12": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.5.tgz#5298aedc5f81e02b1cb702e597e8d6a346675765" + integrity sha512-+arLIz1d7kmwX0fKxTxbnoeG85ONSnLpvdODa4P3pc1sS7CV1hfmtYWufkW/oYsPnkDrEeQFxhUWcFnrXW7jQQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-module-imports" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-jsx" "^7.16.5" + "@babel/types" "^7.16.0" + +"@babel/plugin-transform-react-jsx@^7.16.7", "@babel/plugin-transform-react-jsx@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.12.tgz#2aa20022709cd6a3f40b45d60603d5f269586dba" + integrity sha512-Lcaw8bxd1DKht3thfD4A12dqo1X16he1Lm8rIv8sTwjAYNInRS1qHa9aJoqvzpscItXvftKDCfaEQzwoVyXpEQ== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-jsx" "^7.16.7" - "@babel/types" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-jsx" "^7.17.12" + "@babel/types" "^7.17.12" "@babel/plugin-transform-react-pure-annotations@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz#232bfd2f12eb551d6d7d01d13fe3f86b45eb9c67" - integrity sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA== + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.0.tgz#ef82c8e310913f3522462c9ac967d395092f1954" + integrity sha512-6+0IK6ouvqDn9bmEG7mEyF/pwlJXVj5lwydybpyyH3D0A7Hftk+NCTdYjnLNZksn261xaOV5ksmp20pQEmc2RQ== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-regenerator@^7.16.7": version "7.16.7" @@ -944,6 +1567,14 @@ dependencies: regenerator-transform "^0.14.2" +"@babel/plugin-transform-regenerator@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz#44274d655eb3f1af3f3a574ba819d3f48caf99d5" + integrity sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + regenerator-transform "^0.15.0" + "@babel/plugin-transform-reserved-words@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586" @@ -951,14 +1582,36 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-shorthand-properties@^7.12.1", "@babel/plugin-transform-shorthand-properties@^7.16.7": +"@babel/plugin-transform-reserved-words@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz#7dbd349f3cdffba751e817cf40ca1386732f652f" + integrity sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-shorthand-properties@^7.12.1": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.5.tgz#ccb60b1a23b799f5b9a14d97c5bc81025ffd96d7" + integrity sha512-ZbuWVcY+MAXJuuW7qDoCwoxDUNClfZxoo7/4swVbOW1s/qYLOMHlm9YRWMsxMFuLs44eXsv4op1vAaBaBaDMVg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-shorthand-properties@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-spread@^7.12.1", "@babel/plugin-transform-spread@^7.16.7": +"@babel/plugin-transform-spread@^7.12.1": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.5.tgz#912b06cff482c233025d3e69cf56d3e8fa166c29" + integrity sha512-5d6l/cnG7Lw4tGHEoga4xSkYp1euP7LAtrah1h1PgJ3JY7yNsjybsxQAnVK4JbtReZ/8z6ASVmd3QhYYKLaKZw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + +"@babel/plugin-transform-spread@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44" integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg== @@ -966,6 +1619,14 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" +"@babel/plugin-transform-spread@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz#c112cad3064299f03ea32afed1d659223935d1f5" + integrity sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-transform-sticky-regex@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" @@ -973,13 +1634,27 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-template-literals@^7.12.1", "@babel/plugin-transform-template-literals@^7.16.7": +"@babel/plugin-transform-template-literals@^7.12.1": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.5.tgz#343651385fd9923f5aa2275ca352c5d9183e1773" + integrity sha512-gnyKy9RyFhkovex4BjKWL3BVYzUDG6zC0gba7VMLbQoDuqMfJ1SDXs8k/XK41Mmt1Hyp4qNAvGFb9hKzdCqBRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-template-literals@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab" integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA== dependencies: "@babel/helper-plugin-utils" "^7.16.7" +"@babel/plugin-transform-template-literals@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz#31ed6915721864847c48b656281d0098ea1add28" + integrity sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-transform-typeof-symbol@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e" @@ -987,6 +1662,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" +"@babel/plugin-transform-typeof-symbol@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz#0f12f57ac35e98b35b4ed34829948d42bd0e6889" + integrity sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-transform-typescript@^7.16.7": version "7.16.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz#591ce9b6b83504903fa9dd3652c357c2ba7a1ee0" @@ -996,6 +1678,15 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-typescript" "^7.16.7" +"@babel/plugin-transform-typescript@^7.17.12": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.4.tgz#587eaf6a39edb8c06215e550dc939faeadd750bf" + integrity sha512-l4vHuSLUajptpHNEOUDEGsnpl9pfRLsN1XUoDQDD/YBuXTM+v37SHGS+c6n4jdcZy96QtuUuSvZYMLSSsjH8Mw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-typescript" "^7.17.12" + "@babel/plugin-transform-unicode-escapes@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" @@ -1091,6 +1782,87 @@ core-js-compat "^3.20.2" semver "^6.3.0" +"@babel/preset-env@^7.15.6": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.2.tgz#f47d3000a098617926e674c945d95a28cb90977a" + integrity sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q== + dependencies: + "@babel/compat-data" "^7.17.10" + "@babel/helper-compilation-targets" "^7.18.2" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.17.12" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.17.12" + "@babel/plugin-proposal-async-generator-functions" "^7.17.12" + "@babel/plugin-proposal-class-properties" "^7.17.12" + "@babel/plugin-proposal-class-static-block" "^7.18.0" + "@babel/plugin-proposal-dynamic-import" "^7.16.7" + "@babel/plugin-proposal-export-namespace-from" "^7.17.12" + "@babel/plugin-proposal-json-strings" "^7.17.12" + "@babel/plugin-proposal-logical-assignment-operators" "^7.17.12" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.17.12" + "@babel/plugin-proposal-numeric-separator" "^7.16.7" + "@babel/plugin-proposal-object-rest-spread" "^7.18.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.17.12" + "@babel/plugin-proposal-private-methods" "^7.17.12" + "@babel/plugin-proposal-private-property-in-object" "^7.17.12" + "@babel/plugin-proposal-unicode-property-regex" "^7.17.12" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.17.12" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.17.12" + "@babel/plugin-transform-async-to-generator" "^7.17.12" + "@babel/plugin-transform-block-scoped-functions" "^7.16.7" + "@babel/plugin-transform-block-scoping" "^7.17.12" + "@babel/plugin-transform-classes" "^7.17.12" + "@babel/plugin-transform-computed-properties" "^7.17.12" + "@babel/plugin-transform-destructuring" "^7.18.0" + "@babel/plugin-transform-dotall-regex" "^7.16.7" + "@babel/plugin-transform-duplicate-keys" "^7.17.12" + "@babel/plugin-transform-exponentiation-operator" "^7.16.7" + "@babel/plugin-transform-for-of" "^7.18.1" + "@babel/plugin-transform-function-name" "^7.16.7" + "@babel/plugin-transform-literals" "^7.17.12" + "@babel/plugin-transform-member-expression-literals" "^7.16.7" + "@babel/plugin-transform-modules-amd" "^7.18.0" + "@babel/plugin-transform-modules-commonjs" "^7.18.2" + "@babel/plugin-transform-modules-systemjs" "^7.18.0" + "@babel/plugin-transform-modules-umd" "^7.18.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.12" + "@babel/plugin-transform-new-target" "^7.17.12" + "@babel/plugin-transform-object-super" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.17.12" + "@babel/plugin-transform-property-literals" "^7.16.7" + "@babel/plugin-transform-regenerator" "^7.18.0" + "@babel/plugin-transform-reserved-words" "^7.17.12" + "@babel/plugin-transform-shorthand-properties" "^7.16.7" + "@babel/plugin-transform-spread" "^7.17.12" + "@babel/plugin-transform-sticky-regex" "^7.16.7" + "@babel/plugin-transform-template-literals" "^7.18.2" + "@babel/plugin-transform-typeof-symbol" "^7.17.12" + "@babel/plugin-transform-unicode-escapes" "^7.16.7" + "@babel/plugin-transform-unicode-regex" "^7.16.7" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.18.2" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.5.0" + babel-plugin-polyfill-regenerator "^0.3.0" + core-js-compat "^3.22.1" + semver "^6.3.0" + "@babel/preset-flow@^7.12.1": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.16.7.tgz#7fd831323ab25eeba6e4b77a589f680e30581cbd" @@ -1123,6 +1895,18 @@ "@babel/plugin-transform-react-jsx-development" "^7.16.7" "@babel/plugin-transform-react-pure-annotations" "^7.16.7" +"@babel/preset-react@^7.14.5": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.17.12.tgz#62adbd2d1870c0de3893095757ed5b00b492ab3d" + integrity sha512-h5U+rwreXtZaRBEQhW1hOJLMq8XNJBQ/9oymXiCXTuT/0uOwpbT0gUt+sXeOqoXBgNuUKI7TaObVwoEyWkpFgA== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-transform-react-display-name" "^7.16.7" + "@babel/plugin-transform-react-jsx" "^7.17.12" + "@babel/plugin-transform-react-jsx-development" "^7.16.7" + "@babel/plugin-transform-react-pure-annotations" "^7.16.7" + "@babel/preset-typescript@^7.12.7", "@babel/preset-typescript@^7.16.0": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz#ab114d68bb2020afc069cd51b37ff98a046a70b9" @@ -1132,6 +1916,15 @@ "@babel/helper-validator-option" "^7.16.7" "@babel/plugin-transform-typescript" "^7.16.7" +"@babel/preset-typescript@^7.15.0": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.17.12.tgz#40269e0a0084d56fc5731b6c40febe1c9a4a3e8c" + integrity sha512-S1ViF8W2QwAKUGJXxP9NAfNaqGDdEBJKpYkxHf5Yy2C4NPPzXGeR3Lhk7G8xJaaLcFTRfNjVbtbVtm8Gb0mqvg== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-transform-typescript" "^7.17.12" + "@babel/register@^7.12.1": version "7.17.0" resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.17.0.tgz#8051e0b7cb71385be4909324f072599723a1f084" @@ -1165,7 +1958,7 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.12.7", "@babel/template@^7.16.7", "@babel/template@^7.3.3": +"@babel/template@^7.10.3", "@babel/template@^7.12.7", "@babel/template@^7.15.4", "@babel/template@^7.16.0", "@babel/template@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== @@ -1174,7 +1967,62 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.1.6", "@babel/traverse@^7.12.11", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.0", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.2": +"@babel/template@^7.3.3": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz" + integrity sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/parser" "^7.14.5" + "@babel/types" "^7.14.5" + +"@babel/traverse@^7.1.6", "@babel/traverse@^7.12.11", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.15.4", "@babel/traverse@^7.7.2": + version "7.15.4" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz" + integrity sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/generator" "^7.15.4" + "@babel/helper-function-name" "^7.15.4" + "@babel/helper-hoist-variables" "^7.15.4" + "@babel/helper-split-export-declaration" "^7.15.4" + "@babel/parser" "^7.15.4" + "@babel/types" "^7.15.4" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/traverse@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.3.tgz#0b01731794aa7b77b214bcd96661f18281155d7e" + integrity sha512-qO6623eBFhuPm0TmmrUFMT1FulCmsSeJuVGhiLodk2raUDFhhTECLd9E9jC4LBIWziqt4wgF6KuXE4d+Jz9yug== + dependencies: + "@babel/code-frame" "^7.10.3" + "@babel/generator" "^7.10.3" + "@babel/helper-function-name" "^7.10.3" + "@babel/helper-split-export-declaration" "^7.10.1" + "@babel/parser" "^7.10.3" + "@babel/types" "^7.10.3" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/traverse@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.5.tgz#d7d400a8229c714a59b87624fc67b0f1fbd4b2b3" + integrity sha512-FOCODAzqUMROikDYLYxl4nmwiLlu85rNqBML/A5hKRVXG2LV8d0iMqgPzdYTcIpjZEBB7D6UDU9vxRZiriASdQ== + dependencies: + "@babel/code-frame" "^7.16.0" + "@babel/generator" "^7.16.5" + "@babel/helper-environment-visitor" "^7.16.5" + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-hoist-variables" "^7.16.0" + "@babel/helper-split-export-declaration" "^7.16.0" + "@babel/parser" "^7.16.5" + "@babel/types" "^7.16.0" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/traverse@^7.16.7", "@babel/traverse@^7.17.0": version "7.17.0" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.0.tgz#3143e5066796408ccc880a33ecd3184f3e75cd30" integrity sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg== @@ -1190,6 +2038,38 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.18.5": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.5.tgz#94a8195ad9642801837988ab77f36e992d9a20cd" + integrity sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.18.2" + "@babel/helper-environment-visitor" "^7.18.2" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.18.5" + "@babel/types" "^7.18.4" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/traverse@^7.4.5": + version "7.16.10" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.10.tgz#448f940defbe95b5a8029975b051f75993e8239f" + integrity sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.16.8" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.16.10" + "@babel/types" "^7.16.8" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@7.9.6": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.6.tgz#2c5502b427251e9de1bd2dff95add646d95cc9f7" @@ -1199,7 +2079,7 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.12.11", "@babel/types@^7.12.7", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.12.11", "@babel/types@^7.12.7", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.17.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== @@ -1207,6 +2087,14 @@ "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" +"@babel/types@^7.10.3", "@babel/types@^7.14.5", "@babel/types@^7.15.4", "@babel/types@^7.15.6", "@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.18.4": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354" + integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + "@base2/pretty-print-object@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz#371ba8be66d556812dc7fb169ebc3c08378f69d4" @@ -1683,15 +2571,37 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" + integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + "@jridgewell/resolve-uri@^3.0.3": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.4.tgz#b876e3feefb9c8d3aa84014da28b5e52a0640d72" - integrity sha512-cz8HFjOFfUBtvN+NXYSFMHYRdxZMaEl0XypVrhzxBgadKIXhIkRd8aMeHhmF56Sl7SuS8OnUpQ73/k9LE4VnLg== + version "3.0.7" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" + integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== + +"@jridgewell/set-array@^1.0.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" + integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== "@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.10" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.10.tgz#baf57b4e2a690d4f38560171f91783656b7f8186" - integrity sha512-Ht8wIW5v165atIX1p+JvKR5ONzUyF4Ac8DZIQ5kZs9zrb6M8SJNXpx1zn04rn65VjBMygRoMXcyYwNK0fT7bEg== + version "1.4.13" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" + integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== "@jridgewell/trace-mapping@^0.3.0": version "0.3.4" @@ -1701,6 +2611,14 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" + integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jsdevtools/ono@^7.1.3": version "7.1.3" resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" @@ -2989,6 +3907,110 @@ resolve-from "^5.0.0" store2 "^2.12.0" +"@svgr/babel-plugin-add-jsx-attribute@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.0.0.tgz#bd6d1ff32a31b82b601e73672a789cc41e84fe18" + integrity sha512-MdPdhdWLtQsjd29Wa4pABdhWbaRMACdM1h31BY+c6FghTZqNGT7pEYdBoaGeKtdTOBC/XNFQaKVj+r/Ei2ryWA== + +"@svgr/babel-plugin-remove-jsx-attribute@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.0.0.tgz#58654908beebfa069681a83332544b17e5237e89" + integrity sha512-aVdtfx9jlaaxc3unA6l+M9YRnKIZjOhQPthLKqmTXC8UVkBLDRGwPKo+r8n3VZN8B34+yVajzPTZ+ptTSuZZCw== + +"@svgr/babel-plugin-remove-jsx-empty-expression@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.0.0.tgz#d06dd6e8a8f603f92f9979bb9990a1f85a4f57ba" + integrity sha512-Ccj42ApsePD451AZJJf1QzTD1B/BOU392URJTeXFxSK709i0KUsGtbwyiqsKu7vsYxpTM0IA5clAKDyf9RCZyA== + +"@svgr/babel-plugin-replace-jsx-attribute-value@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.0.0.tgz#0b85837577b02c31c09c758a12932820f5245cee" + integrity sha512-88V26WGyt1Sfd1emBYmBJRWMmgarrExpKNVmI9vVozha4kqs6FzQJ/Kp5+EYli1apgX44518/0+t9+NU36lThQ== + +"@svgr/babel-plugin-svg-dynamic-title@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.0.0.tgz#28236ec26f7ab9d486a487d36ae52d58ba15676f" + integrity sha512-F7YXNLfGze+xv0KMQxrl2vkNbI9kzT9oDK55/kUuymh1ACyXkMV+VZWX1zEhSTfEKh7VkHVZGmVtHg8eTZ6PRg== + +"@svgr/babel-plugin-svg-em-dimensions@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.0.0.tgz#40267c5dea1b43c4f83a0eb6169e08b43d8bafce" + integrity sha512-+rghFXxdIqJNLQK08kwPBD3Z22/0b2tEZ9lKiL/yTfuyj1wW8HUXu4bo/XkogATIYuXSghVQOOCwURXzHGKyZA== + +"@svgr/babel-plugin-transform-react-native-svg@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.0.0.tgz#eb688d0a5f539e34d268d8a516e81f5d7fede7c9" + integrity sha512-VaphyHZ+xIKv5v0K0HCzyfAaLhPGJXSk2HkpYfXIOKb7DjLBv0soHDxNv6X0vr2titsxE7klb++u7iOf7TSrFQ== + +"@svgr/babel-plugin-transform-svg-component@^6.2.0": + version "6.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.2.0.tgz#7ba61d9fc1fb42b0ba1a04e4630019fa7e993c4f" + integrity sha512-bhYIpsORb++wpsp91fymbFkf09Z/YEKR0DnFjxvN+8JHeCUD2unnh18jIMKnDJTWtvpTaGYPXELVe4OOzFI0xg== + +"@svgr/babel-preset@^6.2.0": + version "6.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-6.2.0.tgz#1d3ad8c7664253a4be8e4a0f0e6872f30d8af627" + integrity sha512-4WQNY0J71JIaL03DRn0vLiz87JXx0b9dYm2aA8XHlQJQoixMl4r/soYHm8dsaJZ3jWtkCiOYy48dp9izvXhDkQ== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^6.0.0" + "@svgr/babel-plugin-remove-jsx-attribute" "^6.0.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "^6.0.0" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^6.0.0" + "@svgr/babel-plugin-svg-dynamic-title" "^6.0.0" + "@svgr/babel-plugin-svg-em-dimensions" "^6.0.0" + "@svgr/babel-plugin-transform-react-native-svg" "^6.0.0" + "@svgr/babel-plugin-transform-svg-component" "^6.2.0" + +"@svgr/core@^6.2.1": + version "6.2.1" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-6.2.1.tgz#195de807a9f27f9e0e0d678e01084b05c54fdf61" + integrity sha512-NWufjGI2WUyrg46mKuySfviEJ6IxHUOm/8a3Ph38VCWSp+83HBraCQrpEM3F3dB6LBs5x8OElS8h3C0oOJaJAA== + dependencies: + "@svgr/plugin-jsx" "^6.2.1" + camelcase "^6.2.0" + cosmiconfig "^7.0.1" + +"@svgr/hast-util-to-babel-ast@^6.2.1": + version "6.2.1" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.2.1.tgz#ae065567b74cbe745afae617053adf9a764bea25" + integrity sha512-pt7MMkQFDlWJVy9ULJ1h+hZBDGFfSCwlBNW1HkLnVi7jUhyEXUaGYWi1x6bM2IXuAR9l265khBT4Av4lPmaNLQ== + dependencies: + "@babel/types" "^7.15.6" + entities "^3.0.1" + +"@svgr/plugin-jsx@^6.2.1": + version "6.2.1" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-6.2.1.tgz#5668f1d2aa18c2f1bb7a1fc9f682d3f9aed263bd" + integrity sha512-u+MpjTsLaKo6r3pHeeSVsh9hmGRag2L7VzApWIaS8imNguqoUwDq/u6U/NDmYs/KAsrmtBjOEaAAPbwNGXXp1g== + dependencies: + "@babel/core" "^7.15.5" + "@svgr/babel-preset" "^6.2.0" + "@svgr/hast-util-to-babel-ast" "^6.2.1" + svg-parser "^2.0.2" + +"@svgr/plugin-svgo@^6.2.0": + version "6.2.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-6.2.0.tgz#4cbe6a33ccccdcae4e3b63ded64cc1cbe1faf48c" + integrity sha512-oDdMQONKOJEbuKwuy4Np6VdV6qoaLLvoY86hjvQEgU82Vx1MSWRyYms6Sl0f+NtqxLI/rDVufATbP/ev996k3Q== + dependencies: + cosmiconfig "^7.0.1" + deepmerge "^4.2.2" + svgo "^2.5.0" + +"@svgr/webpack@^6.2.1": + version "6.2.1" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-6.2.1.tgz#ef5d51c1b6be4e7537fb9f76b3f2b2e22b63c58d" + integrity sha512-h09ngMNd13hnePwgXa+Y5CgOjzlCvfWLHg+MBnydEedAnuLRzUHUJmGS3o2OsrhxTOOqEsPOFt5v/f6C5Qulcw== + dependencies: + "@babel/core" "^7.15.5" + "@babel/plugin-transform-react-constant-elements" "^7.14.5" + "@babel/preset-env" "^7.15.6" + "@babel/preset-react" "^7.14.5" + "@babel/preset-typescript" "^7.15.0" + "@svgr/core" "^6.2.1" + "@svgr/plugin-jsx" "^6.2.1" + "@svgr/plugin-svgo" "^6.2.0" + "@testing-library/dom@^8.0.0": version "8.11.3" resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.11.3.tgz#38fd63cbfe14557021e88982d931e33fb7c1a808" @@ -4096,7 +5118,7 @@ acorn-jsx@^5.3.1: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-node@^1.6.1: +acorn-node@^1.8.2: version "1.8.2" resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== @@ -4473,10 +5495,10 @@ are-we-there-yet@^2.0.0: delegates "^1.0.0" readable-stream "^3.6.0" -arg@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.1.tgz#eb0c9a8f77786cad2af8ff2b862899842d7b6adb" - integrity sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA== +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== argparse@^1.0.7: version "1.0.10" @@ -4703,14 +5725,14 @@ auto-ngtemplate-loader@^2.0.1: ngtemplate-loader "~2.0.1" var-validator "0.0.3" -autoprefixer@^10.4.2: - version "10.4.2" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.2.tgz#25e1df09a31a9fba5c40b578936b90d35c9d4d3b" - integrity sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ== +autoprefixer@^10.4.7: + version "10.4.7" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.7.tgz#1db8d195f41a52ca5069b7593be167618edbbedf" + integrity sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA== dependencies: - browserslist "^4.19.1" - caniuse-lite "^1.0.30001297" - fraction.js "^4.1.2" + browserslist "^4.20.3" + caniuse-lite "^1.0.30001335" + fraction.js "^4.2.0" normalize-range "^0.1.2" picocolors "^1.0.0" postcss-value-parser "^4.2.0" @@ -5307,6 +6329,16 @@ browserslist@^4.16.6: escalade "^3.1.1" node-releases "^1.1.71" +browserslist@^4.17.3, browserslist@^4.20.2, browserslist@^4.20.3, browserslist@^4.20.4: + version "4.21.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.0.tgz#7ab19572361a140ecd1e023e2c1ed95edda0cefe" + integrity sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA== + dependencies: + caniuse-lite "^1.0.30001358" + electron-to-chromium "^1.4.164" + node-releases "^2.0.5" + update-browserslist-db "^1.0.0" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -5551,10 +6583,10 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001181, can resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001308.tgz" integrity sha512-cUXbmSTlfG54vdGeA7guriSSAmzyxMWoHNN/DzQWbaLkDlcxrTu0Ox+dA4f8J8/SDXes00oC6iTx+watQYoVfA== -caniuse-lite@^1.0.30001297: - version "1.0.30001309" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001309.tgz#e0ee78b9bec0704f67304b00ff3c5c0c768a9f62" - integrity sha512-Pl8vfigmBXXq+/yUz1jUwULeq9xhMJznzdc/xwl4WclDAuebcTHVefpz8lE/bMI+UN7TOkSSe7B7RnZd6+dzjA== +caniuse-lite@^1.0.30001335, caniuse-lite@^1.0.30001358: + version "1.0.30001358" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001358.tgz#473d35dabf5e448b463095cab7924e96ccfb8c00" + integrity sha512-hvp8PSRymk85R20bsDra7ZTCpSVGN/PAz9pSAjPSjKC+rNmnUk5vCRgJwiTT/O4feQ/yu/drvZYpKxxhbFuChw== capture-exit@^2.0.0: version "2.0.0" @@ -5617,7 +6649,7 @@ chalk@^4.0.0, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.1.2, chalk@~4.1.0: +chalk@~4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -6264,7 +7296,7 @@ copy-webpack-plugin@^10.2.0: schema-utils "^4.0.0" serialize-javascript "^6.0.0" -core-js-compat@^3.20.2, core-js-compat@^3.21.0, core-js-compat@^3.8.1: +core-js-compat@^3.20.2: version "3.21.0" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.21.0.tgz#bcc86aa5a589cee358e7a7fa0a4979d5a76c3885" integrity sha512-OSXseNPSK2OPJa6GdtkMz/XxeXx8/CJvfhQWTqd6neuUraujcL4jVsjkLQz1OWnax8xVQJnRPe0V2jqNWORA+A== @@ -6272,11 +7304,37 @@ core-js-compat@^3.20.2, core-js-compat@^3.21.0, core-js-compat@^3.8.1: browserslist "^4.19.1" semver "7.0.0" -core-js-pure@^3.20.2, core-js-pure@^3.8.1, core-js-pure@^3.8.2: +core-js-compat@^3.21.0, core-js-compat@^3.22.1: + version "3.23.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.23.2.tgz#5cbf8a9c8812d665392845b85ae91b5bcc7b615c" + integrity sha512-lrgZvxFwbQp9v7E8mX0rJ+JX7Bvh4eGULZXA1IAyjlsnWvCdw6TF8Tg6xtaSUSJMrSrMaLdpmk+V54LM1dvfOA== + dependencies: + browserslist "^4.20.4" + semver "7.0.0" + +core-js-compat@^3.8.1: + version "3.18.3" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.18.3.tgz" + integrity sha512-4zP6/y0a2RTHN5bRGT7PTq9lVt3WzvffTNjqnTKsXhkAYNDTkdCLOIfAdOLcQ/7TDdyRj3c+NeHe1NmF1eDScw== + dependencies: + browserslist "^4.17.3" + semver "7.0.0" + +core-js-pure@^3.20.2: version "3.21.0" resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.21.0.tgz#819adc8dfb808205ce25b51d50591becd615db7e" integrity sha512-VaJUunCZLnxuDbo1rNOzwbet9E1K9joiXS5+DQMPtgxd24wfsZbJZMMfQLGYMlCUvSxLfsRUUhoOR2x28mFfeg== +core-js-pure@^3.8.1: + version "3.20.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.20.0.tgz#7253feccf8bb05b72c153ddccdbe391ddbffbe03" + integrity sha512-qsrbIwWSEEYOM7z616jAVgwhuDDtPLwZSpUsU3vyUkHYqKTf/uwOJBZg2V7lMurYWkpVlaVOxBrfX0Q3ppvjfg== + +core-js-pure@^3.8.2: + version "3.18.3" + resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.18.3.tgz" + integrity sha512-qfskyO/KjtbYn09bn1IPkuhHl5PlJ6IzJ9s9sraJ1EqcuGyLGKzhSM1cY0zgyL9hx42eulQLZ6WaeK5ycJCkqw== + core-js@^3.0.4, core-js@^3.19.3, core-js@^3.6.5, core-js@^3.8.2: version "3.21.0" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.21.0.tgz#f479dbfc3dffb035a0827602dd056839a774aa71" @@ -6925,14 +7983,14 @@ detect-port@^1.3.0: address "^1.0.1" debug "^2.6.0" -detective@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b" - integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg== +detective@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.1.tgz#6af01eeda11015acb0e73f933242b70f24f91034" + integrity sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw== dependencies: - acorn-node "^1.6.1" + acorn-node "^1.8.2" defined "^1.0.0" - minimist "^1.1.1" + minimist "^1.2.6" didyoumean@^1.2.2: version "1.2.2" @@ -7175,6 +8233,11 @@ electron-to-chromium@^1.3.723: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.761.tgz#6a1748bab8ed94984391ec8be8a7e7ec1fe3d843" integrity sha512-7a/wV/plM/b95XjTdA2Q4zAxxExTDKkNQpTiaU/nVT8tGCQVtX9NsnTjhALBFICpOB58hU6xg5fFC3CT2Bybpg== +electron-to-chromium@^1.4.164: + version "1.4.165" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.165.tgz#a1ae079a4412b0c2d3bf6908e8db54511fb0bbac" + integrity sha512-DKQW1lqUSAYQvn9dnpK7mWaDpWbNOXQLXhfCi7Iwx0BKxdZOxkKcCyKw1l3ihWWW5iWSxKKbhEUoNRoHvl/hbA== + electron-to-chromium@^1.4.17: version "1.4.19" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.19.tgz#b02bfdc6a5f1c683849a462cd54258288c087433" @@ -7277,6 +8340,11 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== +entities@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" + integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== + envinfo@^7.7.3: version "7.8.1" resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" @@ -8534,10 +9602,10 @@ forwarded@0.2.0: resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== -fraction.js@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.1.2.tgz#13e420a92422b6cf244dff8690ed89401029fbe8" - integrity sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA== +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== fragment-cache@^0.2.1: version "0.2.1" @@ -9713,13 +10781,6 @@ immutable@^4.0.0: resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23" integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw== -import-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-3.0.0.tgz#20845547718015126ea9b3676b7592fb8bd4cf92" - integrity sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg== - dependencies: - import-from "^3.0.0" - import-fresh@^3.0.0, import-fresh@^3.1.0: version "3.2.1" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" @@ -9736,13 +10797,6 @@ import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" -import-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" - integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== - dependencies: - resolve-from "^5.0.0" - import-local@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" @@ -11087,6 +12141,11 @@ json5@^2.1.2, json5@^2.1.3: dependencies: minimist "^1.2.5" +json5@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + jsonfile@^2.1.0: version "2.4.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" @@ -11264,6 +12323,11 @@ lilconfig@^2.0.3: resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.3.tgz#68f3005e921dafbd2a2afb48379986aa6d2579fd" integrity sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg== +lilconfig@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.5.tgz#19e57fd06ccc3848fd1891655b5a447092225b25" + integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg== + lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" @@ -11845,7 +12909,7 @@ minimalistic-crypto-utils@^1.0.1: dependencies: brace-expansion "^1.1.7" -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -12068,6 +13132,11 @@ nanoid@^3.2.0: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c" integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA== +nanoid@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -12262,6 +13331,11 @@ node-releases@^2.0.1: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== +node-releases@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" + integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== + nopt@~3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" @@ -12415,10 +13489,10 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-hash@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5" - integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== object-inspect@^1.11.0, object-inspect@^1.9.0: version "1.11.0" @@ -13263,6 +14337,15 @@ postcss-flexbugs-fixes@^4.2.1: dependencies: postcss "^7.0.26" +postcss-import@^14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.1.0.tgz#a7333ffe32f0b8795303ee9e40215dac922781f0" + integrity sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + postcss-js@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.0.tgz#31db79889531b80dc7bc9b0ad283e418dce0ac00" @@ -13270,13 +14353,12 @@ postcss-js@^4.0.0: dependencies: camelcase-css "^2.0.1" -postcss-load-config@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.0.tgz#d39c47091c4aec37f50272373a6a648ef5e97829" - integrity sha512-ipM8Ds01ZUophjDTQYSVP70slFSYg3T0/zyfII5vzhN6V57YSxMgG5syXuwi5VtS8wSf3iL30v0uBdoIVx4Q0g== +postcss-load-config@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" + integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== dependencies: - import-cwd "^3.0.0" - lilconfig "^2.0.3" + lilconfig "^2.0.5" yaml "^1.10.2" postcss-loader@^4.2.0: @@ -13470,6 +14552,14 @@ postcss-reduce-transforms@^5.0.3: dependencies: postcss-value-parser "^4.2.0" +postcss-selector-parser@^6.0.10: + version "6.0.10" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" + integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + postcss-selector-parser@^6.0.2: version "6.0.7" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.7.tgz#48404830a635113a71fd79397de8209ed05a66fc" @@ -13509,16 +14599,16 @@ postcss-unique-selectors@^5.0.3: dependencies: postcss-selector-parser "^6.0.5" +postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== -postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - postcss@^7.0.26, postcss@^7.0.32, postcss@^7.0.35, postcss@^7.0.36: version "7.0.39" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" @@ -13536,7 +14626,16 @@ postcss@^8.3.11: picocolors "^1.0.0" source-map-js "^1.0.1" -postcss@^8.4.5, postcss@^8.4.6: +postcss@^8.4.14: + version "8.4.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" + integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +postcss@^8.4.5: version "8.4.6" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.6.tgz#c5ff3c3c457a23864f32cb45ac9b741498a09ae1" integrity sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA== @@ -14188,6 +15287,13 @@ react@^17.0.2: loose-envify "^1.1.0" object-assign "^4.1.1" +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + read-pkg-up@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" @@ -14324,6 +15430,13 @@ regenerator-transform@^0.14.2: dependencies: "@babel/runtime" "^7.8.4" +regenerator-transform@^0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" + integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== + dependencies: + "@babel/runtime" "^7.8.4" + regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -15806,7 +16919,12 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -svgo@^2.7.0: +svg-parser@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + +svgo@^2.5.0, svgo@^2.7.0: version "2.8.0" resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== @@ -15881,29 +16999,30 @@ table@^3.7.8: slice-ansi "0.0.4" string-width "^2.0.0" -tailwindcss@^3.0.23: - version "3.0.23" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.0.23.tgz#c620521d53a289650872a66adfcb4129d2200d10" - integrity sha512-+OZOV9ubyQ6oI2BXEhzw4HrqvgcARY38xv3zKcjnWtMIZstEsXdI9xftd1iB7+RbOnj2HOEzkA0OyB5BaSxPQA== +tailwindcss@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.1.4.tgz#64b09059805505902139fa805d97046080bd90b9" + integrity sha512-NrxbFV4tYsga/hpWbRyUfIaBrNMXDxx5BsHgBS4v5tlyjf+sDsgBg5m9OxjrXIqAS/uR9kicxLKP+bEHI7BSeQ== dependencies: - arg "^5.0.1" - chalk "^4.1.2" + arg "^5.0.2" chokidar "^3.5.3" color-name "^1.1.4" - cosmiconfig "^7.0.1" - detective "^5.2.0" + detective "^5.2.1" didyoumean "^1.2.2" dlv "^1.1.3" fast-glob "^3.2.11" glob-parent "^6.0.2" is-glob "^4.0.3" + lilconfig "^2.0.5" normalize-path "^3.0.0" - object-hash "^2.2.0" - postcss "^8.4.6" + object-hash "^3.0.0" + picocolors "^1.0.0" + postcss "^8.4.14" + postcss-import "^14.1.0" postcss-js "^4.0.0" - postcss-load-config "^3.1.0" + postcss-load-config "^3.1.4" postcss-nested "5.0.6" - postcss-selector-parser "^6.0.9" + postcss-selector-parser "^6.0.10" postcss-value-parser "^4.2.0" quick-lru "^5.1.1" resolve "^1.22.0" @@ -16573,6 +17692,14 @@ upath@^1.1.1: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== +update-browserslist-db@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.3.tgz#6c47cb996f34afb363e924748e2f6e4d983c6fc1" + integrity sha512-ufSazemeh9Gty0qiWtoRpJ9F5Q5W3xdIPm1UZQqYQv/q0Nyb9EMHUB2lu+O9x1re9WsorpMAUu4Y6Lxcs5n+XQ== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + upper-case-first@^1.1.0, upper-case-first@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-1.1.2.tgz#5d79bedcff14419518fd2edb0a0507c9b6859115"