From f92e43e216c87740f61b502a3eab81c26918f7af Mon Sep 17 00:00:00 2001 From: vishnuraghavb Date: Sat, 5 Jun 2021 23:37:19 +0530 Subject: [PATCH 1/7] added android shortcuts --- .../Android/src/main/AndroidManifest.xml | 5 +++-- .../{ic_launcher.xml => app_icon.xml} | 2 +- .../src/main/res/drawable-anydpi-v26/sc_add.xml | 5 +++++ .../main/res/drawable-anydpi-v26/sc_grocery.xml | 5 +++++ .../main/res/drawable-anydpi-v26/sc_planner.xml | 5 +++++ .../main/res/drawable-anydpi-v26/sc_timer.xml | 5 +++++ .../{ic_launcher.webp => app_icon.webp} | Bin ...launcher_foreground.webp => app_icon_fg.webp} | Bin .../{ic_stat_notify.webp => notify_icon.webp} | Bin ...tify_silhouette.webp => notify_icon_sil.webp} | Bin .../src/main/res/drawable-hdpi/sc_add.webp | Bin 0 -> 1208 bytes .../src/main/res/drawable-hdpi/sc_add_fg.webp | Bin 0 -> 780 bytes .../src/main/res/drawable-hdpi/sc_grocery.webp | Bin 0 -> 1410 bytes .../main/res/drawable-hdpi/sc_grocery_fg.webp | Bin 0 -> 932 bytes .../src/main/res/drawable-hdpi/sc_planner.webp | Bin 0 -> 1380 bytes .../main/res/drawable-hdpi/sc_planner_fg.webp | Bin 0 -> 940 bytes .../src/main/res/drawable-hdpi/sc_timer.webp | Bin 0 -> 1568 bytes .../src/main/res/drawable-hdpi/sc_timer_fg.webp | Bin 0 -> 1314 bytes .../{ic_launcher.webp => app_icon.webp} | Bin ...launcher_foreground.webp => app_icon_fg.webp} | Bin .../{ic_stat_notify.webp => notify_icon.webp} | Bin ...tify_silhouette.webp => notify_icon_sil.webp} | Bin .../src/main/res/drawable-mdpi/sc_add.webp | Bin 0 -> 1034 bytes .../src/main/res/drawable-mdpi/sc_add_fg.webp | Bin 0 -> 758 bytes .../src/main/res/drawable-mdpi/sc_grocery.webp | Bin 0 -> 1138 bytes .../main/res/drawable-mdpi/sc_grocery_fg.webp | Bin 0 -> 906 bytes .../src/main/res/drawable-mdpi/sc_planner.webp | Bin 0 -> 1130 bytes .../main/res/drawable-mdpi/sc_planner_fg.webp | Bin 0 -> 870 bytes .../src/main/res/drawable-mdpi/sc_timer.webp | Bin 0 -> 1272 bytes .../src/main/res/drawable-mdpi/sc_timer_fg.webp | Bin 0 -> 1108 bytes .../{ic_launcher.webp => app_icon.webp} | Bin ...launcher_foreground.webp => app_icon_fg.webp} | Bin .../{ic_stat_notify.webp => notify_icon.webp} | Bin ...tify_silhouette.webp => notify_icon_sil.webp} | Bin .../src/main/res/drawable-xhdpi/sc_add.webp | Bin 0 -> 1412 bytes .../src/main/res/drawable-xhdpi/sc_add_fg.webp | Bin 0 -> 846 bytes .../src/main/res/drawable-xhdpi/sc_grocery.webp | Bin 0 -> 1584 bytes .../main/res/drawable-xhdpi/sc_grocery_fg.webp | Bin 0 -> 1052 bytes .../src/main/res/drawable-xhdpi/sc_planner.webp | Bin 0 -> 1518 bytes .../main/res/drawable-xhdpi/sc_planner_fg.webp | Bin 0 -> 1018 bytes .../src/main/res/drawable-xhdpi/sc_timer.webp | Bin 0 -> 1908 bytes .../src/main/res/drawable-xhdpi/sc_timer_fg.webp | Bin 0 -> 1580 bytes .../{ic_launcher.webp => app_icon.webp} | Bin ...launcher_foreground.webp => app_icon_fg.webp} | Bin .../{ic_stat_notify.webp => notify_icon.webp} | Bin ...tify_silhouette.webp => notify_icon_sil.webp} | Bin .../src/main/res/drawable-xxhdpi/sc_add.webp | Bin 0 -> 1752 bytes .../src/main/res/drawable-xxhdpi/sc_add_fg.webp | Bin 0 -> 912 bytes .../src/main/res/drawable-xxhdpi/sc_grocery.webp | Bin 0 -> 2024 bytes .../main/res/drawable-xxhdpi/sc_grocery_fg.webp | Bin 0 -> 1188 bytes .../src/main/res/drawable-xxhdpi/sc_planner.webp | Bin 0 -> 2004 bytes .../main/res/drawable-xxhdpi/sc_planner_fg.webp | Bin 0 -> 1090 bytes .../src/main/res/drawable-xxhdpi/sc_timer.webp | Bin 0 -> 2472 bytes .../main/res/drawable-xxhdpi/sc_timer_fg.webp | Bin 0 -> 2068 bytes .../{ic_launcher.webp => app_icon.webp} | Bin ...launcher_foreground.webp => app_icon_fg.webp} | Bin .../{ic_stat_notify.webp => notify_icon.webp} | Bin ...tify_silhouette.webp => notify_icon_sil.webp} | Bin .../src/main/res/drawable-xxxhdpi/sc_add.webp | Bin 0 -> 2088 bytes .../src/main/res/drawable-xxxhdpi/sc_add_fg.webp | Bin 0 -> 1006 bytes .../main/res/drawable-xxxhdpi/sc_grocery.webp | Bin 0 -> 2362 bytes .../main/res/drawable-xxxhdpi/sc_grocery_fg.webp | Bin 0 -> 1418 bytes .../main/res/drawable-xxxhdpi/sc_planner.webp | Bin 0 -> 2314 bytes .../main/res/drawable-xxxhdpi/sc_planner_fg.webp | Bin 0 -> 1338 bytes .../src/main/res/drawable-xxxhdpi/sc_timer.webp | Bin 0 -> 3390 bytes .../main/res/drawable-xxxhdpi/sc_timer_fg.webp | Bin 0 -> 2570 bytes 66 files changed, 24 insertions(+), 3 deletions(-) rename app/resources/Android/src/main/res/drawable-anydpi-v26/{ic_launcher.xml => app_icon.xml} (72%) create mode 100644 app/resources/Android/src/main/res/drawable-anydpi-v26/sc_add.xml create mode 100644 app/resources/Android/src/main/res/drawable-anydpi-v26/sc_grocery.xml create mode 100644 app/resources/Android/src/main/res/drawable-anydpi-v26/sc_planner.xml create mode 100644 app/resources/Android/src/main/res/drawable-anydpi-v26/sc_timer.xml rename app/resources/Android/src/main/res/drawable-hdpi/{ic_launcher.webp => app_icon.webp} (100%) rename app/resources/Android/src/main/res/drawable-hdpi/{ic_launcher_foreground.webp => app_icon_fg.webp} (100%) rename app/resources/Android/src/main/res/drawable-hdpi/{ic_stat_notify.webp => notify_icon.webp} (100%) rename app/resources/Android/src/main/res/drawable-hdpi/{ic_stat_notify_silhouette.webp => notify_icon_sil.webp} (100%) create mode 100644 app/resources/Android/src/main/res/drawable-hdpi/sc_add.webp create mode 100644 app/resources/Android/src/main/res/drawable-hdpi/sc_add_fg.webp create mode 100644 app/resources/Android/src/main/res/drawable-hdpi/sc_grocery.webp create mode 100644 app/resources/Android/src/main/res/drawable-hdpi/sc_grocery_fg.webp create mode 100644 app/resources/Android/src/main/res/drawable-hdpi/sc_planner.webp create mode 100644 app/resources/Android/src/main/res/drawable-hdpi/sc_planner_fg.webp create mode 100644 app/resources/Android/src/main/res/drawable-hdpi/sc_timer.webp create mode 100644 app/resources/Android/src/main/res/drawable-hdpi/sc_timer_fg.webp rename app/resources/Android/src/main/res/drawable-mdpi/{ic_launcher.webp => app_icon.webp} (100%) rename app/resources/Android/src/main/res/drawable-mdpi/{ic_launcher_foreground.webp => app_icon_fg.webp} (100%) rename app/resources/Android/src/main/res/drawable-mdpi/{ic_stat_notify.webp => notify_icon.webp} (100%) rename app/resources/Android/src/main/res/drawable-mdpi/{ic_stat_notify_silhouette.webp => notify_icon_sil.webp} (100%) create mode 100644 app/resources/Android/src/main/res/drawable-mdpi/sc_add.webp create mode 100644 app/resources/Android/src/main/res/drawable-mdpi/sc_add_fg.webp create mode 100644 app/resources/Android/src/main/res/drawable-mdpi/sc_grocery.webp create mode 100644 app/resources/Android/src/main/res/drawable-mdpi/sc_grocery_fg.webp create mode 100644 app/resources/Android/src/main/res/drawable-mdpi/sc_planner.webp create mode 100644 app/resources/Android/src/main/res/drawable-mdpi/sc_planner_fg.webp create mode 100644 app/resources/Android/src/main/res/drawable-mdpi/sc_timer.webp create mode 100644 app/resources/Android/src/main/res/drawable-mdpi/sc_timer_fg.webp rename app/resources/Android/src/main/res/drawable-xhdpi/{ic_launcher.webp => app_icon.webp} (100%) rename app/resources/Android/src/main/res/drawable-xhdpi/{ic_launcher_foreground.webp => app_icon_fg.webp} (100%) rename app/resources/Android/src/main/res/drawable-xhdpi/{ic_stat_notify.webp => notify_icon.webp} (100%) rename app/resources/Android/src/main/res/drawable-xhdpi/{ic_stat_notify_silhouette.webp => notify_icon_sil.webp} (100%) create mode 100644 app/resources/Android/src/main/res/drawable-xhdpi/sc_add.webp create mode 100644 app/resources/Android/src/main/res/drawable-xhdpi/sc_add_fg.webp create mode 100644 app/resources/Android/src/main/res/drawable-xhdpi/sc_grocery.webp create mode 100644 app/resources/Android/src/main/res/drawable-xhdpi/sc_grocery_fg.webp create mode 100644 app/resources/Android/src/main/res/drawable-xhdpi/sc_planner.webp create mode 100644 app/resources/Android/src/main/res/drawable-xhdpi/sc_planner_fg.webp create mode 100644 app/resources/Android/src/main/res/drawable-xhdpi/sc_timer.webp create mode 100644 app/resources/Android/src/main/res/drawable-xhdpi/sc_timer_fg.webp rename app/resources/Android/src/main/res/drawable-xxhdpi/{ic_launcher.webp => app_icon.webp} (100%) rename app/resources/Android/src/main/res/drawable-xxhdpi/{ic_launcher_foreground.webp => app_icon_fg.webp} (100%) rename app/resources/Android/src/main/res/drawable-xxhdpi/{ic_stat_notify.webp => notify_icon.webp} (100%) rename app/resources/Android/src/main/res/drawable-xxhdpi/{ic_stat_notify_silhouette.webp => notify_icon_sil.webp} (100%) create mode 100644 app/resources/Android/src/main/res/drawable-xxhdpi/sc_add.webp create mode 100644 app/resources/Android/src/main/res/drawable-xxhdpi/sc_add_fg.webp create mode 100644 app/resources/Android/src/main/res/drawable-xxhdpi/sc_grocery.webp create mode 100644 app/resources/Android/src/main/res/drawable-xxhdpi/sc_grocery_fg.webp create mode 100644 app/resources/Android/src/main/res/drawable-xxhdpi/sc_planner.webp create mode 100644 app/resources/Android/src/main/res/drawable-xxhdpi/sc_planner_fg.webp create mode 100644 app/resources/Android/src/main/res/drawable-xxhdpi/sc_timer.webp create mode 100644 app/resources/Android/src/main/res/drawable-xxhdpi/sc_timer_fg.webp rename app/resources/Android/src/main/res/drawable-xxxhdpi/{ic_launcher.webp => app_icon.webp} (100%) rename app/resources/Android/src/main/res/drawable-xxxhdpi/{ic_launcher_foreground.webp => app_icon_fg.webp} (100%) rename app/resources/Android/src/main/res/drawable-xxxhdpi/{ic_stat_notify.webp => notify_icon.webp} (100%) rename app/resources/Android/src/main/res/drawable-xxxhdpi/{ic_stat_notify_silhouette.webp => notify_icon_sil.webp} (100%) create mode 100644 app/resources/Android/src/main/res/drawable-xxxhdpi/sc_add.webp create mode 100644 app/resources/Android/src/main/res/drawable-xxxhdpi/sc_add_fg.webp create mode 100644 app/resources/Android/src/main/res/drawable-xxxhdpi/sc_grocery.webp create mode 100644 app/resources/Android/src/main/res/drawable-xxxhdpi/sc_grocery_fg.webp create mode 100644 app/resources/Android/src/main/res/drawable-xxxhdpi/sc_planner.webp create mode 100644 app/resources/Android/src/main/res/drawable-xxxhdpi/sc_planner_fg.webp create mode 100644 app/resources/Android/src/main/res/drawable-xxxhdpi/sc_timer.webp create mode 100644 app/resources/Android/src/main/res/drawable-xxxhdpi/sc_timer_fg.webp diff --git a/app/resources/Android/src/main/AndroidManifest.xml b/app/resources/Android/src/main/AndroidManifest.xml index f5e4faba..14e84039 100644 --- a/app/resources/Android/src/main/AndroidManifest.xml +++ b/app/resources/Android/src/main/AndroidManifest.xml @@ -11,13 +11,14 @@ - - + + + diff --git a/app/resources/Android/src/main/res/drawable-anydpi-v26/ic_launcher.xml b/app/resources/Android/src/main/res/drawable-anydpi-v26/app_icon.xml similarity index 72% rename from app/resources/Android/src/main/res/drawable-anydpi-v26/ic_launcher.xml rename to app/resources/Android/src/main/res/drawable-anydpi-v26/app_icon.xml index 3b5cf969..04c8ed4c 100644 --- a/app/resources/Android/src/main/res/drawable-anydpi-v26/ic_launcher.xml +++ b/app/resources/Android/src/main/res/drawable-anydpi-v26/app_icon.xml @@ -1,5 +1,5 @@ - + diff --git a/app/resources/Android/src/main/res/drawable-anydpi-v26/sc_add.xml b/app/resources/Android/src/main/res/drawable-anydpi-v26/sc_add.xml new file mode 100644 index 00000000..1407d627 --- /dev/null +++ b/app/resources/Android/src/main/res/drawable-anydpi-v26/sc_add.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/resources/Android/src/main/res/drawable-anydpi-v26/sc_grocery.xml b/app/resources/Android/src/main/res/drawable-anydpi-v26/sc_grocery.xml new file mode 100644 index 00000000..d7d2a1e5 --- /dev/null +++ b/app/resources/Android/src/main/res/drawable-anydpi-v26/sc_grocery.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/resources/Android/src/main/res/drawable-anydpi-v26/sc_planner.xml b/app/resources/Android/src/main/res/drawable-anydpi-v26/sc_planner.xml new file mode 100644 index 00000000..b16e4142 --- /dev/null +++ b/app/resources/Android/src/main/res/drawable-anydpi-v26/sc_planner.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/resources/Android/src/main/res/drawable-anydpi-v26/sc_timer.xml b/app/resources/Android/src/main/res/drawable-anydpi-v26/sc_timer.xml new file mode 100644 index 00000000..655ede74 --- /dev/null +++ b/app/resources/Android/src/main/res/drawable-anydpi-v26/sc_timer.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/resources/Android/src/main/res/drawable-hdpi/ic_launcher.webp b/app/resources/Android/src/main/res/drawable-hdpi/app_icon.webp similarity index 100% rename from app/resources/Android/src/main/res/drawable-hdpi/ic_launcher.webp rename to app/resources/Android/src/main/res/drawable-hdpi/app_icon.webp diff --git a/app/resources/Android/src/main/res/drawable-hdpi/ic_launcher_foreground.webp b/app/resources/Android/src/main/res/drawable-hdpi/app_icon_fg.webp similarity index 100% rename from app/resources/Android/src/main/res/drawable-hdpi/ic_launcher_foreground.webp rename to app/resources/Android/src/main/res/drawable-hdpi/app_icon_fg.webp diff --git a/app/resources/Android/src/main/res/drawable-hdpi/ic_stat_notify.webp b/app/resources/Android/src/main/res/drawable-hdpi/notify_icon.webp similarity index 100% rename from app/resources/Android/src/main/res/drawable-hdpi/ic_stat_notify.webp rename to app/resources/Android/src/main/res/drawable-hdpi/notify_icon.webp diff --git a/app/resources/Android/src/main/res/drawable-hdpi/ic_stat_notify_silhouette.webp b/app/resources/Android/src/main/res/drawable-hdpi/notify_icon_sil.webp similarity index 100% rename from app/resources/Android/src/main/res/drawable-hdpi/ic_stat_notify_silhouette.webp rename to app/resources/Android/src/main/res/drawable-hdpi/notify_icon_sil.webp diff --git a/app/resources/Android/src/main/res/drawable-hdpi/sc_add.webp b/app/resources/Android/src/main/res/drawable-hdpi/sc_add.webp new file mode 100644 index 0000000000000000000000000000000000000000..3c96616723d2d668556a469528d5c4fd242bc8b3 GIT binary patch literal 1208 zcmZ{ie@s(X6vt0neoTY`gJm#5YiThsU|m6e3dAxfO;Af)D9AP`r9W^j)b@2N(!h{K zlA@#_j!3dhkSH2!3uKgy#+5DG90^f2MqOZJNSL4_8XeV+(zpBI5Bx*Vd-vYY{ho8~ zyZ5}y=N1%LeE>xHY+flZy(|C#n5c0!Uv6F=Pe?{nAPbcemDUHjRJE9f&tX%`%8ye0 zm%tBvAQTu7CYET`hXe&eBKqa#ngJ5w`7M!H>*X=8RCiWOwGsf*YbYW|qSj!D3lSH6 zim3_iLL4qph^r9~AWqPr4I-W<^r|ghCRo139)dMOejYko2x6-I1+IF5B?^rS#SlfI ztCTvlhfO0+5-6=L5ulNVS`=u3kIKddDsUkm@*ox7gACNCLL#sr3C-XY`NY~$a2V=P zt_1aJs0R(yfE*NnK>|{BXmu$XWk{EzM+x;r{ZSsW?Ye4Z$*fI@6vzhfoyYN~3;_Rg z02?M8U+=~7jXnU%9Dt*CJHPHCK>8ZeP1_p%D}dn70Y-k<)~dPzY^?whf2hS8@#c3Z zs3*&008g#}1eF7X-2n)w*s2-w5q`Mj1Q0f$Uo{DEp$8xq#Rq?YZd*|*x?AsZ9HAk{ zz8_H0xi?mvbJQ=UlA2O?R(YpJRJ$^NiNYT4&9>amQpRvQv`dQ(G6m&i%MK>V&q0nL z#Z>yuJ*NDlr&Rhy0h3%w@sMKv3W9WUtm6pY#O87F?LX z{-o{y@?a;OYowQyBqNgqCQ3GNPPmDtojkLg>yy?Q&TW^b-#lG^YAvq&T1xAp+gs~8 zc|cj($qtxY3S+a{WX&I5{?50$;@m>`qwLR2D?fho{sR&96LUtw1gCPD*EgKy5YEOL z4>y~+U38n@Po?Fj?nRa*=X+L@new5+!Tna7@m|hUxKGdBi0F{3XL;n_qUX5_2PejN z2>b_+?|nm*;nZ7q^X%RfOAkLyKWZ=;bdzs&He?p=DfEsOP_BMtGG9M*M@SyR<}GpN z1zXq1<0HdIYHs(7eEV07k0R@XEWP$-XW9I%kCW>D{+gr5U1(Or$>bH(==4-8bD*ZaG>Nhmk)p=vda9 zaqB;yr>%3$m%{R0!$)UTNr|&GQ6_WsS%&8Lzl*^ot*iRN?v&T($4;~jVs$OM?F}_; iV+KiRqg^q7tAfRN=j^y*WUMB6SJ2z%``03`kp2g!T7p3U literal 0 HcmV?d00001 diff --git a/app/resources/Android/src/main/res/drawable-hdpi/sc_add_fg.webp b/app/resources/Android/src/main/res/drawable-hdpi/sc_add_fg.webp new file mode 100644 index 0000000000000000000000000000000000000000..fef38e891250097fa050d2aba14768705da53a83 GIT binary patch literal 780 zcmZ{iUr19?9LK-=Q`(x%Sb?F%D2;)xso7i)g={!mSgpI6Gb7lp`xD*G%iS!*CN2>mj~H zTqn^6iC-|?U*NBdLk0fFSn_aoI$JrhA+(77i~WvYOK^#_}EYLZ$Pd+%b3U=Xh{Sg&K)Z>&w0+PIS%HAcs4H>GgD_rPBmEX ze>|-pyZ!3@qc61=o6`f`n4Xx@K6T9Ad8ir^H*Pw<>Vw%?dM3&Jn2csq=Q4j%_z!v- Bu!jHu literal 0 HcmV?d00001 diff --git a/app/resources/Android/src/main/res/drawable-hdpi/sc_grocery.webp b/app/resources/Android/src/main/res/drawable-hdpi/sc_grocery.webp new file mode 100644 index 0000000000000000000000000000000000000000..e1f015d0f1f7175cb2003740613d687e8f8de5a1 GIT binary patch literal 1410 zcmZ{iX;f236vuBM5ZRNm+LNQmVhw~%cDH(hB*Y_15d=Ztgpfx934{=!h_R@l)ha23 zy;zqj1q%fP!CFvKQiDQKj)Yx-+SlH+&7_2I(@$$ zKtv!dWKW1+q#*#fqs~}*nE?SIVLE6EI$?aaARUiff)ueRltHtN+#6*}cm(=@2NF1f zIg6bx4Bkx-(?)-|y&MFb)^pcIyVi$eKB^ieaMIZTxD_a33tK1>BMw5mBTFpQaxr2H zHkXxvxCSv*gf@t{U#rKz<0o29e8&q~7KMcdptBJX+a|up@$WI4D-xg>ZBZNq{0y{* zrKUZJF()N_HyZ6wCqp`fqO#Gz7MKtS0pJ53;E${ixWIaFMKkzFzIJUg?1WU5%SKiR z*&qTQBmx)2Kt*Z>TAhPN4Cx&7@F81Uf0T#Xa$VCg&-F_Z&X@+EcTc1F#}R-~1h813 z(afLKXcm72&>aI%q%7yBo&oUt59tNVn!{-TGbuo;a#@Qn1GxMRfX%RwC1NdoM;BQg z3^l%u=qC zJ5cs2P2B1x<4o-y-%lG2lASz2a`(v-$naaDHt34Eza$c)>?=*ensCmw@Lv7)b3pfAhGvIc+I;vc;77O1` zjtm)n>O{E3jbk~l@>5C<@woOL2RHY~qqbA`;k(W^iw>XtJM#8e&fLsZ3%Bu=R@TMq z+o(ewhN4+&8?OZG%zj!HvXEV<^tPanP*>-@Ae6pz7i^f^%d5y= z+2_vY+Te++$XT&fpF7n${%n?)+3+B#sq~JuB$iUzOOXs%7h@bF^8E(fcX(nw=?HXs zPi*XJ=jYk`P0i@6kl6r!YAiy=88#iVgfa>)cWR_GI!j?v5Bp2zCSk{0!Gj`w_0)5U9o#V=M4@}u+hTlvQcB?4!Y&eE7lQktrsxBVJp zo;v%Cy85uzle+F)G~ g`)$O$6U)&xFjF@8V0iA)v}t>#S(?D>jT-^}2XN)%rvLx| literal 0 HcmV?d00001 diff --git a/app/resources/Android/src/main/res/drawable-hdpi/sc_grocery_fg.webp b/app/resources/Android/src/main/res/drawable-hdpi/sc_grocery_fg.webp new file mode 100644 index 0000000000000000000000000000000000000000..5e3af964d91b1b01b65c2512c6c2d195c9cc1fd6 GIT binary patch literal 932 zcmZ{idq`7J9LK+Vl;$+e#1bTCK8VsDYV(olbfqmeTe`B@1NFK&!|Ax2qz$n^FbHzl zFkg^XlK4k2sGx_I31MUznk8msFO1%0WtiQ5cmAP&&SdfMkBtZ%#HbMaz)*yyP8Nv{bm9)Yv@qBK7q@svo85+$f1&e&-!3ZltNiC-A zdYTQS>**;#DPMnzqc&Yviy649y(xQFW|Ows%B*4 z?Kt%q(Awx%^#FDCKnVGJ?xNeK3J?IRn&r#9*2=4cy0><52_GwK9J)p4FUEGNO+%^T zu^8Jy?>2Wg*7{{dyKk1bx5qkW98VMlzKCH1l}8&zR~GcWZEy0v*TMar{8cle3@Gt# zE%~h($?{XxNv?W6+59kK#6|Y1!L@Jr$Qln7SGLFC8`P8-`g*X}h{C?ihA;q@k!EwWW-O6){Q(Y$=FGoA>Z<3C`lUMI|o%i;6IrrDr G;DdiPDf`R- literal 0 HcmV?d00001 diff --git a/app/resources/Android/src/main/res/drawable-hdpi/sc_planner.webp b/app/resources/Android/src/main/res/drawable-hdpi/sc_planner.webp new file mode 100644 index 0000000000000000000000000000000000000000..5ef4f9c1cffa247afacf2f22fda829608d1f9cae GIT binary patch literal 1380 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 literal 0 HcmV?d00001 diff --git a/app/resources/Android/src/main/res/drawable-hdpi/sc_timer_fg.webp b/app/resources/Android/src/main/res/drawable-hdpi/sc_timer_fg.webp new file mode 100644 index 0000000000000000000000000000000000000000..4d34a7ac2740af2bfadae11f0da45550877e36cb GIT binary patch literal 1314 zcmZ{iX;f236vr>SWodwbU|0`}N)3eFSVfRDKn&0n5ClU{L&ySzEx{7ysBDS|$kwV@ zJO;56wkl9WPzn}WYm10&DCGbN&?4ZWXrZVyKstdB_(A8rx$~R+=yi?VQWeJ!7DqB#*er5_k4RHYC!1S~fC4Yg~ zh{Jqx~!x_p=h*0-5dlE0{-9&)<6L=kiZjMU=OmM;0UhZgl6!LeC68a5DdvEmx*i& z90NYY0SCB{26&_%MXR&W$VNH~Jv=z3tUt;_ZL_Wdwwvp^q@wE!pdnQ#7VQDF$^lkO z6bgBjLa}-cKy4JDJ83gNSp+~_LVC%jW_J|;lM8UWXH$#02+)=XU^<+_;4{|0qlT<1 zn+>o~1E3cPfE@tPKC)3W)k3ows%Q-j~{jx3#=op-ly zoW>tar%`=PuV!J|H8>r`82xh0Zf-8o(P<0ko|T=&@|v2ONu9BaQ66ET#RY@gVN&Pu zkCEl2b{<{xgZNJ*noiBDnpAho`fz(XIosaER^;+|6|2eI^1=jt&f`~nEB=ocx8|PO zNQGkDL&@nM_*VqDU9HYsA?=)7mFDqyMoDH_{(nAkj)iA@qPM4Hb`5+MOR?o<xl#g`pP3hJR-(!R6zLX{;ly>%i3xxHG(6TaTPpZ@_yN<3OK2%}#rQex^Uk4usN*S2 zIJp&1h})6X->w=lLWU*)Q*>_5(kq$ll=o%T{{gv?_h%f=(kZM_r zDNz-p=A-}Jel$bCd!G99YyCUszp87x&cXtM(G;I_TuX7wXcph+S2da!C z`PpZI#otLU9?@iHfbn~QvO6PM+A*MfA27Mqq%~`YzT-qzsMiBuE&yXSfV2^CNgb{k z`FKA{UjXXu^s62LCr$!B6hD4F-L?d~fUeoRDp$#|YDtN#zUhOesKBFpf${gG8-+dM zTfHsqS0{#+70Tv3-ZryyS?OSh^G|8_9oL`;hork&*u?nQg|o)l(Wj70MtManus6DS z**B&hk(I>7KS_-58<0dvs=w}>t1LSzwpy+Bwl?l#o~_-g8Yp@j?o?jr?p=HEbpD>t z1@V`r>z@azHHOO*L(YE;34Z$WMRdTkG;zvBQ%}0s^TCR5MseG_v+TOp54#KpYHx*E z-rHkSg3I4D&5(wd-dnyZWOhrvykyGVx--Yq0{Bc5XYD{PY7JAOS zeYAM4sOa}r&!wC9cX+z&V5dsA`_{->>I0QlKcBYVm;t6|Yw69*g!`v=)$fBN@LiED zB5#H&NVC%8e%P#j*WOLqhF96U3mC^I5f@g&J#OM=J2>}n=SGWoS?x8;b=_KNeob9h z=bM|%l9t>kNn*tkoxLtMX-{+O0@<03LoviB|x9S7q|EnUwDfQ6a HN)`S9-p?yP literal 0 HcmV?d00001 diff --git a/app/resources/Android/src/main/res/drawable-mdpi/sc_add_fg.webp b/app/resources/Android/src/main/res/drawable-mdpi/sc_add_fg.webp new file mode 100644 index 0000000000000000000000000000000000000000..17d50d70a9635aa87c91ee366230bd73697e017b GIT binary patch literal 758 zcmZ{iO=uHA6vzKb(?;5qM&hApgjG^6wpuIJc=3>>sS8!obgik1m~8W*&BwBvR$5U+ z#8e4dQBh05RSyOcQT#fU2E~I?q2Nbp5y6Avp?)-01vRX1l0$lEXLsKG=KtQCoq0Q6 z!R`KP1a`H!Je?k=uM$8b^`62j@VrMPFJKg-QcN|GD;7^G-c}dq>)OqkKcWIAEJYn` zeo2+Lceq6sy>R>W76#^d)xg$TIA&3`synDkfME$mY?WjsNxY4??NCx?e1UkG6!CWx zXNc<++92_3rU#1rnQ^$t{}?Nxm#4E?iMjAR4$NaIqQoeM6~z&Y_R<~-jh)02jPLBA zaW!>2RCv(}7dQxL0gq;Ez!tL2Xh0Lz(F}{^v$gHmfdu7BWM%Y2!2yI3K@#<(_R{J> z8bhQ9>4~DB)t~aHmFlX7HZ~O`gT)1uzt{C2b%6OikRQ_Zzt?mMp=G0aWfO){K12j~kPK zc$j|GOW?{du!iDm_R?)@W0zokPjdWq%swfctkVL h4rnj-zezvfIuoDnj~|=s8$5M)<)CHy%$Qzf!hfQotx^C0 literal 0 HcmV?d00001 diff --git a/app/resources/Android/src/main/res/drawable-mdpi/sc_grocery.webp b/app/resources/Android/src/main/res/drawable-mdpi/sc_grocery.webp new file mode 100644 index 0000000000000000000000000000000000000000..4318670e9a250caf735d29b1dfc0ef51843038b2 GIT binary patch literal 1138 zcmWIYbaTsMVPFV%bqWXzu!!JdU|=u+Vtp|3baoC1VFGd)m_l-rbBkGkQn`60MM3UP z3K5Y}3hYlA*cezC1Q}ErgcFmC3w(p!LO`mqgKyUu7(p_ZbwOrfSA$cOJ0-O^nSp_k z1E|6-xuB>7$o2rTeacG;KSM|7TSO2KLDe41Xv5 z|Nnd8|Nnm%F)%RSVPH6rhtQwDfPul{D^Pp_LQG{o0|S2x1H-n%2(hH;3=G@b85ksP z79ApN~?lFPM4d&3by(3tU0&KF1rcO(=;|V=6U|#e(gGy>T7$vi(LN8 z?&w|Oang{-|LnepPyb7*9j!_?_d%3S$Jq-zlfNl!q#{7pVj}$ ztrUrpuaquejZ*5RY0?1KrywhUL~N*>hjy?=k^*SsHjCd~hWe;;Jf zetbeFOXEzF=*4=2!x8^0%o5*ACVMeWK5~HX((FFnmibp?8$?4&7`FKdO+WI?YCC)M z^Pp1qr-8f{~_y1VUd-uZcmB`iJ?D9kR4fu*b^uPL z3M5&QxNLU-QPfM;Ua?Rpk+W$Dw!BnTW^g1^S-DX!O%rglb8@*Zb8v%79SUM>~V*}RCk+D%-ziB-k=GV)=H5?)qXNqbmp%t<)va)pfM zQ0gHtK#DX7z=as85F!@Qh^H|Ye8k`Yt*}izlRE^NsGwLCjXG38k2BDs7)J0&t)%Q~ znl+@W=_y4OQ-6x1wozAu=1|O<#Nr45ry09_DFSe516ECT``^2E`|3TwVHy}M--xg1 z1mbL@n>MuYJAh|BF!W+WE4&U2Hvqdo>6Ciq+IQ&YfUVI0i(SBu9KdH1a6i3XGqN#u z-2VW`tLaxw05@&|k>u~0N4G7*g#{ce84dEPOww7$%!79O;Q2p4E=uz=71qA*uES4< z`oveqpQlGoy2aFU+hrr10)AbbF^bJIxlK;x&$x|UsuC)_!GQfZJjPtWo=a){I=(E44iozqsJ;b+$~il& b8Naf3wIqJACDaUZ0{r{4UM&e$`h)QwGz{tC literal 0 HcmV?d00001 diff --git a/app/resources/Android/src/main/res/drawable-mdpi/sc_planner.webp b/app/resources/Android/src/main/res/drawable-mdpi/sc_planner.webp new file mode 100644 index 0000000000000000000000000000000000000000..816f2371c3883a76cb5c561b01fb8d2bae9e266a GIT binary patch literal 1130 zcmWIYbaP8$VPFV%bqWXzu!!JdU|=u+Vtp|3baoC1VFGd)m_l-rbBkGkQn`60MM3UP z3K5Y}3hYlA*cezC1Q}ErgcFmC3w(p!LO`mqgKyUu7(p_ZbwOrfSA$cOJ0-O^nSp_k z1E|6-xuB>7$o2rTeacG;KSM|7TSO2KLDe41Xv5 z|Nnd8|Nnm%F)%RSVPH6rhtQwDfPul{D^Pp_LQG{o0|S2x1H-n%2(hH;3=G@b85ksP z79PxYzHw*(4R$b7`{o zZ5RK!#r~)D!(s7s%C z+YxlBYm%7;cxz18|&z9R}=J z!)<4euc`1kttPzv`Np?9*BAyn`yWaST0TG0|5A_N#7|3ngKXVC@yOOF)oghx6wPQi zqqFh6)z2EW8(beeH(oyMJd^p%MbQOOk2-i;zW(KHdH-8#;X3YGn~Am??o=*1XI?4z zpY{CZi66eSOxK_EdtZT-QgB1B`!3cQO5vR!ug)@*+IxHDu}qO^7B6Qk^5QZyo%4C( zm!9C>%$0w3N*V`v#@p`y88o@|;t~z+Qn~Kw)rrdMFH0V1N@Fx| zUKeb{uGHY|AQ;2wWW(NZ%sipexu|Vo@?-Y);}K^J!~A}&K0NWm2BF}^*^ex3LM9&G zf40*1{EBtTv*t}%9n2Y9C|k0lblaJwDXZ2#F7Fk4AnVK0zZ8;nHayMr>jc{JKDQ zoh38FnT0}FRG>kDhF=QOtRxG}5)}klL}6d1uIJ7V^Mjsy&pE&Ie_rl6&pis6RC?YA z$WIqDXPMN3KmZ4*SGZr9M8YV&X$fzoo;8?#$z(8EI7Nn7SfDBt`p>}+zSxEsgsNGy zDJxg1T6)~)gq&zw>rp|b@O3w3L_WDT=roPm7!qC^|?)wBn9<4+Q#G3Mpc z97R0>W+;#WF@%sI9TKGAAdb+Of_Nk%fmYZcp3fbDY*bP#OQQ+3;7|@7%3whpsnwKS zL$j824Ly3)^7W@UYM#29wTBYjl2?!z*fiyG{fz3 z2T~VFZ}Mo-oq*sP&_C?aO4@*d24KfGlbTbzze6_%-dZj2rw7=o0z$`tz@pWfk&U;b zdje2ipkFlt*xCUR`3ug`ZOfb?>;8(NUBSsGjCzoOb16WSe}=qN^h`DFA z2gN><*rps^`q*j4vZwE5c|_m9;g8dT(2NB~)~Pmq&tP(ZywEA$9IKW$Iy;yYYXI~5 rZQYA~t;H=1H-~qhk>*)Dn;(yIJ9UHg6E;=iljqHg+U~ncPs8yaPeb0| literal 0 HcmV?d00001 diff --git a/app/resources/Android/src/main/res/drawable-mdpi/sc_timer.webp b/app/resources/Android/src/main/res/drawable-mdpi/sc_timer.webp new file mode 100644 index 0000000000000000000000000000000000000000..ac5889e7f4b07a093c9ddc66ab708a41f4166dad GIT binary patch literal 1272 zcmZ{iYfw{16vq!wc_tCi01cM3p(p~8M==5eV;CM05Qqo}mKrW3PzZ#Cr_z~fsk91& zhi$B=JcO=K^`p%mDD2bAR?47>0bDNAN1V2yTARPbN23@yKI)9 z-@n=bk-p5(h)_n90RS98jlTJ^e0)N~HPI9_!&5N6NE^BMsTo4HKhrwuM6~seKS39? zVJFytDF+h?f{*!y*L4*Nl=%ENNOd!la9Dq0|J41l; zCB$Y}A}1bkJz{$y+92WwxE{B~N}PFHtio9s&h|lPBO$ity~c5`F_tLgqZqs>G=54Z z+QX*dCoxJ$J$?+0@1aHk5wO7@m|zVo@C6@m11C6ydN*(YXK+L_cuPLMHU*AC8p_2` zFMwPSLK5&G5i-CYshMc?1T=Dyo`9Yd$i?fA@{n!URm631-jp(y%YMh$@06o5Q+J3p-ofbkOPCEFUU5`dTw@N?I;7AFB{DF85kB;W`+o8Qqw zy(X6nuv79KK9)%cm;LFBUrOuIRDDWJh|>6&@}d3Sss}S!LD90s@4stke*iVw~bg zR4m%9sc0>d(Nr0$tcNRV^|YzHOQSXhmz9*HO8ez5{ptz^HaSYYWq!Dy6IE&BDF`;!KhPZl(jmXCm#Oo%DCh z3oT~89BFb1{vof;V%RpO+x1Y=Rb>IiRPvIv!HlH5_#(rDC0QDO-hHZoh*@Id3s%t! zs%0|Sqh)pYRRe?KF`~Nnq^?QcbxUx5G~^CJHU)o;Dpm#tRusn#P7d{_%guP_U;RN< z^2KuutOzqC({ry6kuNcxl5G7WvWtte9xxugb1yxo*)n}KZ8oo?v4OcKEKuPPvg?lB xe8>0|UWL?EXLNA(dG(|__2%CZ5A`!;^X&xv{l?O38ynZ8#$Vs3t2}lA{13qTql*9l literal 0 HcmV?d00001 diff --git a/app/resources/Android/src/main/res/drawable-mdpi/sc_timer_fg.webp b/app/resources/Android/src/main/res/drawable-mdpi/sc_timer_fg.webp new file mode 100644 index 0000000000000000000000000000000000000000..95e87029f9f33c04f0a324fe838168507bafad0e GIT binary patch literal 1108 zcmZ{iZA?>F7{~v;EvpnJC9*|rN4i?OEwL&TrKH;+t!-gJN1V*~`+ICQd1oEu`6qQy7XoeLlEgPwcObAIRl zJkPo3Jm(e{==Fs>V24gqw7p1W768~tdd0$9pw$+cC^7|Q^4Pt89&vdq19Y)LBQfvX zCE-uu1@MrHwOC=Z`+ZwW^d>g?*)0|ZhxLpq*tMP=^ISE_;q==9&N345w%tbu2`9WHm8B(Ql#(unAH^_00|^SCgBF{SfgEBtLxD`JCo?=JpIuvwZP-h4 z?Zo;}4I1yG9Bu@#j;K{+btf5JM0b+MgKD<^B#*SEy82zp%ms;)tN{{!kH=@%0{kPu zd_z3`xIG@9?*O>h0H$&&e{UP0x=-|mB~8`}qZI?cCCDm-n0zamuf_w*FvaY@+5OL|Q^*Q2u)ax;UahY|z5JfR_4NqFTz+CO zsr}vG#0~-KNN)J?%PleqZJ*Wc*|cS3@MK+JTtB+z`j5tDZvSoWPc0iv;a>*tW{~Yz zzKr$Va!hniyHezH%hOvg-Z6eE5!KG+HYvX{PYm~IDU{r=+3xuw9shdoM%4lT8BQBL zc?>ufY;S%&Q#lm-Xic`ruw}+Pe)`7ASB&D+(bT`|+qi;A(elp^WK<31DCrq>cmJ!| ajjuIUCMW71Y5$B2THUvLbTzYb3jYJN2t^72 literal 0 HcmV?d00001 diff --git a/app/resources/Android/src/main/res/drawable-xhdpi/ic_launcher.webp b/app/resources/Android/src/main/res/drawable-xhdpi/app_icon.webp similarity index 100% rename from app/resources/Android/src/main/res/drawable-xhdpi/ic_launcher.webp rename to app/resources/Android/src/main/res/drawable-xhdpi/app_icon.webp diff --git a/app/resources/Android/src/main/res/drawable-xhdpi/ic_launcher_foreground.webp b/app/resources/Android/src/main/res/drawable-xhdpi/app_icon_fg.webp similarity index 100% rename from app/resources/Android/src/main/res/drawable-xhdpi/ic_launcher_foreground.webp rename to app/resources/Android/src/main/res/drawable-xhdpi/app_icon_fg.webp diff --git a/app/resources/Android/src/main/res/drawable-xhdpi/ic_stat_notify.webp b/app/resources/Android/src/main/res/drawable-xhdpi/notify_icon.webp similarity index 100% rename from app/resources/Android/src/main/res/drawable-xhdpi/ic_stat_notify.webp rename to app/resources/Android/src/main/res/drawable-xhdpi/notify_icon.webp diff --git a/app/resources/Android/src/main/res/drawable-xhdpi/ic_stat_notify_silhouette.webp b/app/resources/Android/src/main/res/drawable-xhdpi/notify_icon_sil.webp similarity index 100% rename from app/resources/Android/src/main/res/drawable-xhdpi/ic_stat_notify_silhouette.webp rename to app/resources/Android/src/main/res/drawable-xhdpi/notify_icon_sil.webp diff --git a/app/resources/Android/src/main/res/drawable-xhdpi/sc_add.webp b/app/resources/Android/src/main/res/drawable-xhdpi/sc_add.webp new file mode 100644 index 0000000000000000000000000000000000000000..1a377beaa92895f93d24f079c14c4cc26db09a8f GIT binary patch literal 1412 zcmZ{idoacf6Ori*6ZAAjhNdVjz7c|Y&>d7k(8zR&v$pi!wA zY5>6$kA3_1Ifmc?z!vq0<(KB^xsQ%RQ^3*LOb%}ia&Zz;xB=cCq>#`slEyfw!x|s} z8FZtVyd>X1Djkdda(nv>R4`AEHMZ85W4@|tMYDKJ02NIX;mS)HeeU0>B$QfCMz4fG0SB9XKKD0M=j++t3WYl8>#u8TLXV%4H&( z1c!kOhaeW>AO)q5-1fY`*AZcIK7)1c}IRM1xNm1OW zi;IZ?cwG*#E)+ob2>|}UO3jcD^FwJL06iUDRTsed5&&})uM>{`wmmAyZxbQaUmx7w zz!{V#4?L`&)Ld*doSYE(o6!Q=oyw1@h0l?b`l+W)IyyTtbdG)kb#3Sei%2zi#J7P+ z+zGxeD&Hr*3fM%dhNI1aRwQngPXI8D)R3;@8{WiGrJ6()s4CAjDY&-vN?&j^fui?U zvO!PD^#eV{u9@*+hW=gzg3B=G&SKMQdc911(LwvW_ae{ZBqu;u-!Jm0DB++_)8i06j(CNM067?PR|qf0CoQ`Jji z;#8M_u-%1yLhqsAH-B+U-8=P7ffGNfj|@iB^JXH3CC7)jspl<5yQiAN+IQJsU#z0w zZeE@jPieas(<(Gd197j+#GUxoh8qSIm5y}hr~PD7TJPT>x_ML)zC*9mRPA_fPO#h9 zx$$IM=i#Bbxi`(^MZcdLekv^{84cHYja?j1Hp$mAca_}QbHSTZ=4@0)cdX6Mxwuxg zUYIr4c{kf<3*o+_F{7ic|6a7|4a-jE>G@+Ry5>ZYa`Xyxs-J4zC9zmXB*nL@-FoDp^l`l6@TTS}X?4NejI*L~ zV@uV2xz;})3_dn%w^Z-w)o=N@&F0Q~hN9UhbK9%$yMxMVaXa*<`J(uxDxMRKW!td3 z^)aPY*0?}W+<7B+4K7mr{x9Q%-&6?Wgd;;U*0ma;p(k(2 z$!R4wpsZYI_TC8WLt zNlB4kdTXx$l}-9JZ4LETfND}0AV7EIL0_xH}P@evKF_K=Pu$z#%ic1 zzDu0R(guk?@w#!HXL+`)^FN+homNF>lMqWS8`!vk87ph27``YnyRDh_5H$WIVv|E( zN#kB>$#6l7QYayX1|?9T0Ecjd`T}Gj7uht!7Ww?z$tXu7-Ot?J4Y(d6_z)2EUr!*9qg&{`oBG!KH*({@w}fCIbL%j VeIVt{!tc?*DZeMMx@P5K{{sqq*unq+ literal 0 HcmV?d00001 diff --git a/app/resources/Android/src/main/res/drawable-xhdpi/sc_grocery.webp b/app/resources/Android/src/main/res/drawable-xhdpi/sc_grocery.webp new file mode 100644 index 0000000000000000000000000000000000000000..69a634228855feef3a195f2e3b86d2c80819c457 GIT binary patch literal 1584 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 literal 0 HcmV?d00001 diff --git a/app/resources/Android/src/main/res/drawable-xhdpi/sc_planner_fg.webp b/app/resources/Android/src/main/res/drawable-xhdpi/sc_planner_fg.webp new file mode 100644 index 0000000000000000000000000000000000000000..b712b04d57ee37b0e7518f52f30af9a549a5d3a5 GIT binary patch literal 1018 zcmZ{iYcP~i7{~v+F4fX~3q`4@NiMl2mCBoyLOW}d+bFxNby;?HvC;I!B$Ga*6s4J@ z>vlnE6f$TGQ!|;-RNEvf4KqGy6ti^O-kz5a`oKBwIp=r&&-0x3oaY=#s7N$w1{?|w z5=V*sqXhsqQ+qf0g))p-%BLy#(hRvuYfdIrX0}EW666>i6YDr<5SB2KxYG=?#B*!gBLZ0zE2mzKJZO-L6ey7mS5k9m z^<)|qq$g9&KpvNWilZ`}SFOU^Yf|D_2LTozS$51Bm{SUvN?7)H70a5g0cO2GTjq3p z)>XjYNP5Y%=2QtRJOMmzpVnmMz>^}t_Psh$lQ{VwdO6@L6u{_hV15j+v>On_P34Si zoE_KcF-ecnRdoTEDuDImzc8L&TbPaqc)V-#UF5r0ye{g2+2>(zoBN`_y-RLnroaIncPVY>lTOt+J=WxW&fW(qQ-ga^4S7 zuEMsPkr^J3StSJK_PqRgWJSR(%ZvS+8!c3QUctr5zY*6z4C_dD?%sWMv_hbd+4dmn z_vKU7sqHWH#=~hD;VUCV_ifUi=l_{#jsEL0z98=B{*IP{oD%)8?|IJqe4ghy-*cYx^`-3D6R89c z=tB9qhk5K9JC}kwViOJ)~BJ7Eo)>{m8$`ne&lXO3j zd-%}gCs7NF^52h)Mo8C#81MxTa0NV2z#Yh73q-I(tSy*<6__J4_?LY7+IsLGIELgh z5zB)F;KLE%KsdyLDWVFH)x(gHjp$*>6A20O`XhNr`&8E$wzbs<38m%=p!i%Sdut4! zbQ)l_Kqg!MUM5?;0I=>UKzG!q{9}~>BnhGye9{R21<=R@XukbP3oQj`$p+AQ%wzBw zAHK5=u?lQ9z(Os6`auA#`v4mbf2VLxvBwxva+Zm;S5sz? zN!Wl)3_H`pRavX&B+p1q*>EK_F&=B1scM*Mi8n>mJj*rb5VtXG&uag5qf^_KHB1ae zC4?<16q*yWfW>8cX`eE3q%%%B9{@@q8kLJSCPOW zKkuRvdghH+g{wk|2}R@=J#4hJZZ*$ z9x=C-gL%@-eKOdd6883Li@n|F6PJzNYq%5NSM)If%?ZzqFXFW93+j>6IA&-s!W#_GjPaP}1F$vN+hd%qI z7xkI4_^XoiwC#Hh5^vW_#F&tu)9~x+8X3!7r(1THan}?=N}}fG0zw|Q;dtYMnJY)8 z{(p$j|Lp4*sJy1H%91)Z@y6q)^B>R{W%})}lqxEoQFK+!D zxLIv9>nX!DoJy=D?Hr1y>X%vRy~bDiv8cOp-e{Oef3KUbW@vLq%A}Z_t-^@4A0qq4j&`eAC}}2GTM*#CZ?|yl{Ggpr zKyOp{MoH}u(*$dIK1_FF6qUwZ>D^h5I;DB9x+=aQMqN8AcqBn+G~jJG+h=W0bPw%N zPcuLDeYdxrP|I7azg>6P)J9+A!>(C>+pK(-Gpj`q6r>HZeXs|iGg4ALZ=8y9raQK z$F+XCrg_s^b3G!SU}4;UrMC6;b~=q3h%*gxnY;e}3-J|I&)Ks|_bNr$uJ)Hs%?*Z^ z`)S0CwIKJE?rHz2_IsTQ5j7O4WFcxRJx;ncHJB2BqkqRSN$yHMD$C2|XWI*wZ@C92 z8PIWBBNC-l%Z-;Zmf9;CEwEiqS?rDa{mqvTCnb}Kk&aViE5Sikk2 zmt;+4zH90c9dk;WUu*HRFnI1T_-yq3;bp$nm{=`9QGWs_h^NOn^v@^H{Lp#LJXt-R z?vxXqt63=4HIB;8?`N&<=q;&M6R6H_b{UWE{0X}d-MQC7+R7Rx%sf6j6|7MF(8VJ= zR>ik>!-eR{*h2Am!naaU6Yf{a1Mz}8mmDt~XWgGhOJinvvOu46;y62xip<9Jo3m#w UI+8DYH2alqsy2=fl6e%tU*ERRM*si- literal 0 HcmV?d00001 diff --git a/app/resources/Android/src/main/res/drawable-xhdpi/sc_timer_fg.webp b/app/resources/Android/src/main/res/drawable-xhdpi/sc_timer_fg.webp new file mode 100644 index 0000000000000000000000000000000000000000..dd1d2049d662b19dd53811651f69f6b3902523c6 GIT binary patch literal 1580 zcmZ{jdpwj`7{?!%(vpyBZ7$8awZ%lWVry#GOpR-DzeH+``<)p?EbWA}A%oDalqf|S zyGngxT_*QjDvJr3)T|`ZXj~e4_l*9~A9ddMobx@u=XuV1&U4OdYept(t^{y8K(uzW zHgc8*0DV;ZmR>Uw$=Y5V4ME&KkQzjjM5dr%dbq6#5$Ei37$?Ppl^_WUpaqH)DlPP& z9ob&w{pB*#3t}S66TE1yFZ+B|mGShVQ31qOA&-63&~Q3pQ^b~0^iUCJAznxIrFbGP zL982&7Kpe1e8?pLBLULSEo+(u0CJ}Q?y#3Nj~sxiWB?^jC?%Y-^c@M*ihFwl z@UH>Lx&SD414z4m${DhW>~IBLCi@fUs5$`hE&ymFe>pdF+bpjmyIxTO_y=gh4es+ zBDw7hzp0Ih*`D3)`ki-AJs1#A)fl7q>RI#R*7;vn7~(&xuMbUFU}I5>z-UMHrSMlgLO9?rtcp=crEl z^77-fpHhk|>*sS*^;}#vEvuty^DUJL@{vOUGfhSc6)f9FT!MlF>wND1%80(dgQiSb z?ptrBXmjneFRmQTQ+nOIGlL-6V9t&Hfl0xOMa%2ldf!Q^XKp2`mFv)CJMAjm?zQcF zP7+q|s2O(i#K*^0==?KUF?I5`bCb)$YkmJI=YIO};_nOjgIvM}e%jQJMUKH6%g8U< zbY`oV%%p|37zS_Ekz==*IY}SdoEbdshTO8AWRJr7SdYx3oV_w;ab$nqAx5I_!XZK0 zAE#n)S%H2Ul2O47Rk-a*_rR+Bb8O;OD5ng_+SLbcY=5*bGaT}Lo{@3UpkGpbXwN-nKJH67u-Meejb=cyLT4{J^lc3*od^CCJY~c9l9z(oZ zTq|ehnsxA|prHckssi8joR6Ca57!nbg3G&D*3SVZnq@)I2gW>v+VEU z|c1PEgHdq}x9s1(eu}Pib>`rb;wGxvM zCg%9p<(9>X(PIzm!ZLK*pR<#yT_e5NCTU)4RdU9Pnl*68=k8g@PvjA1CLg}jxXWrz zKRv4&d_$w$_^F4f*?o!B!Iowp8*W_LZlgd(ccbzBs`bw*D?;R}m41I@ZjfwV>f0py u_*?Y^uC(ej?+lJ>kfuj==C9p$;Nk~b@v70rwSH5F1%hGG-?Ye?0Qeuwd2mPo literal 0 HcmV?d00001 diff --git a/app/resources/Android/src/main/res/drawable-xxhdpi/ic_launcher.webp b/app/resources/Android/src/main/res/drawable-xxhdpi/app_icon.webp similarity index 100% rename from app/resources/Android/src/main/res/drawable-xxhdpi/ic_launcher.webp rename to app/resources/Android/src/main/res/drawable-xxhdpi/app_icon.webp diff --git a/app/resources/Android/src/main/res/drawable-xxhdpi/ic_launcher_foreground.webp b/app/resources/Android/src/main/res/drawable-xxhdpi/app_icon_fg.webp similarity index 100% rename from app/resources/Android/src/main/res/drawable-xxhdpi/ic_launcher_foreground.webp rename to app/resources/Android/src/main/res/drawable-xxhdpi/app_icon_fg.webp diff --git a/app/resources/Android/src/main/res/drawable-xxhdpi/ic_stat_notify.webp b/app/resources/Android/src/main/res/drawable-xxhdpi/notify_icon.webp similarity index 100% rename from app/resources/Android/src/main/res/drawable-xxhdpi/ic_stat_notify.webp rename to app/resources/Android/src/main/res/drawable-xxhdpi/notify_icon.webp diff --git a/app/resources/Android/src/main/res/drawable-xxhdpi/ic_stat_notify_silhouette.webp b/app/resources/Android/src/main/res/drawable-xxhdpi/notify_icon_sil.webp similarity index 100% rename from app/resources/Android/src/main/res/drawable-xxhdpi/ic_stat_notify_silhouette.webp rename to app/resources/Android/src/main/res/drawable-xxhdpi/notify_icon_sil.webp diff --git a/app/resources/Android/src/main/res/drawable-xxhdpi/sc_add.webp b/app/resources/Android/src/main/res/drawable-xxhdpi/sc_add.webp new file mode 100644 index 0000000000000000000000000000000000000000..be7c550ab878e7e4f2565c79e6b79d3650120cf1 GIT binary patch literal 1752 zcmZ{idpwj`7{?#?graE2r%^65(ISv2p$7KVGfFLVQ{$dhao5BOA9S8V$L?-)C zD3g6W2cR?v&=5PDzx^x#@io$q%xbs-fcboY+QwNeJO`le005?+6UGhu{2e7^6`4$c zSET@28vz!!1I!KiQZwX}`{9rK0Q4kuRrdh$P67~6{QOY#w^0I>0j#qcOtc-E%#PvA z9UGHpDpTjqKwhS!=e}W^oOdWR4rGP4J@i z_h72o1GVhkjDa`S6(@?W9gtE)IR`&^a7=uUJ_#iwty-SI1E^yh{Ng}$euB)n< z)Q>B@troJ5TJmw_$f6y>7|R1v<{-HcpIFFqk2tL&^jn}~j#=%0a>&rt#=5y`B|>5!}(k7okz>HvMsk?KhzR(->tayz3qLA z+$6Cr_lFl*aee2xDo-~OgnNnwnBHQQ;V)@q}lUCn@tl8-YhE1uM_v$b?0H7_D}2ejh9s1ZPQHd+9BCI zFwK5{p;#}O5MkH+xIsM{k2S09ZQZ*lIu(nlv~SzHBDxEkTV-E*yGBj8#Zhpda&go~ zIJu>V(fc56QJpwhDgB?~TU9kyR%d=y%IK)R7S3LuE+vpmWFww_avq zxhZtF(r8WT=o%2U7dx%rLKNgsL>dPYca0t^acB~X!%{x2mrm_IRS-ANb=WPX`Ob{M zhmw3^x?CjIRTKw+N!#|8>j^;uE}PD)8k{?FQieoPBOwvg%YQBHB;kH zguf?Sgp{QbDlrA)B)jAiBnixlDN$3XU@9GgMVI`j!XBsqP4CdDFoZ$2wfP; z(#8ZTSxR^}QD^qZ<9E+{gfWj;#SzEFft=A8dg8v7k8N{#K5JE8J6f40#TRrLn<~0Y z916vD>^z)lsk1Z_C)_EB?yGo-wyT#Z^5%&t-`MKVl4&FJMXaf!F8~qL8HxBR7)GUbp(R|@M%H9;Ba_K&<S zIE<$RiMvHTe}TtDHZ1V0$hl0i*Q6?2d%J5ytsD|lqjZHmPQU`;BgEF6vB!yQcGxe z9nE^ub@UifCf1+gs4dmiqK}T6mn1%kz?wlpn3Mq?*8pdgAk5SXg0l{A9ROaLm*R`> z0r69$S1oD5cEIlp(EMge%fA6UKL>2?6g#7*T=(eT$N&q?YTIC-T&-J%mofhmPO|4s`y>~8ixkde-hO4c% z_K0W7sm6+;0h4>ntS)c+@sLXMaC@92KzJui*k-pbPBy2Z|3zop>0iVC+=d#%75A)6 z+qVOQMMt_O&-!-O?=Aj5`raP5Yjo_bZDQ!CS3%a$&yj}~wZ(Gk=77AeQXX1*Y3oWRj^B1fr}h7p&&^B)?@yU~S!-v?2N!bC@9gQ`G+ud;QP!~bglOaL-o7v1 Nfs4uiKZ?!i@ejxe1@!;` literal 0 HcmV?d00001 diff --git a/app/resources/Android/src/main/res/drawable-xxhdpi/sc_grocery.webp b/app/resources/Android/src/main/res/drawable-xxhdpi/sc_grocery.webp new file mode 100644 index 0000000000000000000000000000000000000000..118157c7046e7ad85e6d4ec78594b83b8d3d2683 GIT binary patch literal 2024 zcmZ{ic|6qH8^;fW8Qb6`UD=JXbi=hyWT^%-8M2HagKC(CjA4u=6kWHtR7|$guPi?b zQQ4QuUa01BD?3+Z%_SjQH{^b&{^j&zycurdS_=v699My z0NYn~b~gXNv$I_Q0PGI{T7$pmhvWlbwg%}}zH8__0HiJeQ1|$|=64N%`dSQUJr@AWYA9QAoVkC^# zmXM!*Xg`#V@TFjE5VGU=Ptxtl((MTqGVSN3cVo?->xjVA!$ZAV_AH-h9fkSap0q=Z z+sY&GGMW?ElzvoIw%yZUS@kq-`O`qT`jd1e2a)>d7cFG`@QMB{O~5gu!6U=$%_OuUpN?oV56} zIO&Ts_{+Q6joAC3DTL-1V|eCC!An_<*ij26LCG|$b|J^|(4JBIF-Bi{;A<;~2fuse z5N&HBW_5%Ek1|Oy!K}f4Ej zV)u>{ZU?3l*jS!M<%)b(0Y=omZxMeg1}BnslvJvy(e8fP^;zmw@qz53SH}aT15LB4 zWV(h4noS)tG_n-okp;>&=x0LXK`oH#dWYNDs;8KrzBt%=Q{~6)U>H;UN49ZEf5{W~ zpB3()6x&F*+$%{)s6tuh3h|Yqat~!}t%PI82NvM!A(PQAUGoCyb=bqtGiOrwHaCmG zn}k|&cD+yTYT^8L&Z>&ShS!%;Df+R$g>DD5%@UkGpc7&~GgGUrC55$ptd)1YUs2ld zr&Q!P7{O*@kZ(;5uA{kYh;>;Zq4V=*PmC%0Qy-ff&!#8#T{}5r_^$1i-lJN?IwMy* z^Uq$({jF~m7_L%1u$H{yq1n8+jqxbEyB@@bkgeAm)cFk&Wu!fcDQmjWLwv$E^ha>Ugm3xMnWsQ zA{k4u95Sh?k9#_IPZfJZtPZh|`{uaE#+FG<0)-sl-@Jv(V?^L~aCwPWMI+@Ea?dP3 zo*+N>Y5C;4teX(&sXOFH6OVVS=)h9chr-nj#_}Bc7bCpS7Uj$Rv4mcjg=$yvgglJGI=o*d#x&D9M$( z5ZX7n)Vla?ugt1*%cfEz%7dZz>y5aXWQ23djwF(aScys;OR${jpU$XQr87U~`d>?} zHl80IFSZoaptq#59T`K%Wu=C1XIMJIEzatX7}MT3H9VAk?{rSiA&;^D!$(8+uI%v+ zE-LoW^DR%!@um#r+^AKD%#%`jRc{VAXj?`m9XokWcKk*&);vZut|%9d%590>6qp^I zvE*2tz^esMXpE+a&}fdzg);I*sCyT0a|CN$q)Z9vr+HK!6Cfxn#HvzyF{OsXiGuDO`>M*~`QjPgWZH7iALe*qpt znEoWrns5w(42Lp0rm7?9oamCzB`c zRpMUR?VGWC!IMmD@UC7|(`A(&M{Nf1-n!~|+|Y5QmYy1vI9SaqN+R;SHXLbWx^_^R hIwA66nMK_ilIyHTLl(Y_Jlk;E8y`_=^JPE+{0&T41(W~) literal 0 HcmV?d00001 diff --git a/app/resources/Android/src/main/res/drawable-xxhdpi/sc_grocery_fg.webp b/app/resources/Android/src/main/res/drawable-xxhdpi/sc_grocery_fg.webp new file mode 100644 index 0000000000000000000000000000000000000000..81dbd75724c621b49dffd5879317420b4543a44c GIT binary patch literal 1188 zcmWIYbaR`-!oU#j>J$(bU=hK^z`$St#LkQ$qZHVmGO#hQFbFcJG6*Lo7Z>;jyM=&MV+Y@^F))H;F6)BK!mb9VD0fO~aWVq~ zBL`50U2;KD36SjpWc!qt6oA-MfNYWEjKmZmdj*iKQv`G%kbMOto&;gP0I|~{>^~rO zQAm(8&~E}jwn91*I|+%MoKchuR09eWmE4?Cpc}vd3jb#z18`Z8dUHw{V01K%ayF#)6DOG-^?!( za$*{rhuV(?J$5r2CD}Ay%ctDf{_FmN7}vz0AASzH|MgMee|ZJouP<({=KS&G-c!M) zPum#|i`>aO_24`&pLyDYiBHqi+j8$e*toAO>cO%H2h}QqIA+dupPu0L;l-Tx?9VDJ zXW07F!|ir343A6lI~E3c@dcTU|O`U;oPT z$`|Igy{58f1Up&T&a0fAa7A+86PCi+z3X>8XJ?I9FtT41?|8odO!$TRudlhvmc0Jf zSHk*Ro+U|e<8MC~9q}@jo%!w)Vm74xJC$>P`|qhY&$UjfQ4QpuQgd}GPs+3N5=+!4 z%(PFQuxa6`g>Cci^1WWTc4N8qnhK#ke?Q&-bf0Tpic6)=DZ$R4f}I(CuG&gA_8Bg- zjV4{|Q}~>$U-ZOHseaM7XYDxx8w*(bne41DE%~XL_C!YX%rg$YWn71PxP3QFzA+=a zO~cOp`Qr2yF+Jygwl0%M>+g*%4zaOPzWi+G1s(30y{lRDP0r6axnh@|$>nXey(@EK wGuBzg%8*n^2sTWai-Aq}lTEmcEX zjL?eC&;_+GNvlIURL2m@beYm>YiYet+CMsf%-rX>=YH?+oO7Rh&wV@zj*jCn0DK+n zi9SS}pELl#2Qpw+3+7z*iB=!pi&!umsbQ2SEX_|T&!pCl2uJpdB(dwZ|7 z0DzSO@PW0rw{vN4??XKRVsil8jro!vTL%Dc6Vh2Z6MMFaY*k}S^zdrydJ^<1uKi3TM3H{*m3;?85=&B|FsHg-$8;VDK1O08T z9ufc?DY>hOG#{utht>Oa7lYUf9o8U!ROQl^hK(Z)o6-kqXp3SGwBa##+N>GeWb>75 zl1wnhHQUHY2QP_QaC(pID?s+;aOC>3kpHpAv}5;c{meA$E*iiP*ymIXl?xr%?EzZlycZ5?=_BO!$6Cz_ghW`! zW7b42mOxLzR^i#KF-^^%d)Nb+7h{^e2gxDNWt*JX=R&a3(p_9-cEi=ks7GAdEVor@ z_U-s@T-cV2%+^=rTWC4u`{`1}SUq+~`*r(VY&9TlXuR6!mKfd=* zPaEmM!1bMX0XMbtDbl+wDpm4ulS^CqQIApj^=>Mt zwXq9s7vM0t&P?w}jbT+~)VN8?4}Qzng38asJ*k;g_yXseosrwE66cT-YSl~01IA*R z-)>WM)rQ2M75#DSxUA&z+RURGu3qn0Eoaq@%@b$K$n*QNu_O1oeSaDy3yh|n z$*#_&_a#+2ed-_n4&MwKvxXACjFvz(JvsW_jCFwAHj{KYpoWAe;PNY2 zdFJW>ZnX7)$ZIaXvP)loAf_$(wNaO9KwE6@_|_AG9473HMq|3A!G8&fO)|@xdDiNE zj9+$E4OpmN-*UxMJzH?onlo}sU5gySYPdOFVpu_kU!o|H(xaXbWO$NDpHs?AR$9u{ z%9q*zq5O%!VYSh_%ZhgFQ^Z`GZm9+8B0TzbjlAsxI-+JfJ@Ty+0)sAp)l+^ z=j+^Qouxanv-5mMQV{Njl!6k179i1Rf0C4u!=LsJGPprgc;tiF?5VFoc<>ZGc?o_t z@ANvK3{@p*DzC_IIGV`1E_@$y@nVB$!NRhC%enFE;|;soeUnrEmn)i9MvnN}JhLA4 zhj~4<4Cab+W;{@dTm6AyW_UW9(dpi+zHRI9Mmu$N2iNElT5b4FgnHq5Vl62!{>(0O zi6_c*!Na!UH%eSNypQ_fz8hGH4;p;0OlG2&NE}aU+)94_*Nm6;ep76(i!%5uHHvb9Ye?_>o*kVG)}I_-m>~`W&L;pQJt7tdqsBiz0RD~rltW8TsX2D zlE6^B-Sp;(gtMw@aP>lgd7wu-&mB3fT!|yD-`{jkZw#`%wXeA!+va7H`q#+Ohe&%F zo=JkP-(_y)Uty<vmgtfVQKe~0)?pc^w zWOe&l)9R@fD>}^y`zCLsNU^K4%4TibU#7Su^^KXbYf$HZ_=f+;%G$P*!=-)yb}%m$ PEyG4JVIL=pM8N+6W@`k5 literal 0 HcmV?d00001 diff --git a/app/resources/Android/src/main/res/drawable-xxhdpi/sc_planner_fg.webp b/app/resources/Android/src/main/res/drawable-xxhdpi/sc_planner_fg.webp new file mode 100644 index 0000000000000000000000000000000000000000..21bb98fa82f004f8a903c254578813ff498905e8 GIT binary patch literal 1090 zcmZ{ie@s(X6vw}

I&T;)u9Gc!EEo@h1j?xDjnbu?fstI#zzT?NM4vq~+zc3@Q^f z7MQpNMYC?i2nuQuQW@CUGl(+LB8UCU7y>sv9e$P4g z-FxoSs#U6_AmH;9g(g#zsGkL3HJMT(zG|gXqm$AUQeBb3VhbXd#cJoZsR~A)mCelj z12P2ReJsLU)?nk(GgLY;`t5DR2Z`vpw?bU&?J@6EXXhJj20#)*5y=LQw-aw7PAj!@ zA|E3Dz+h(ciBA$Q=V^n)_eDK#iv1!NO!2tLyiTj6vxN~e1#fWP8*DK17K#yzvd~gg zLVK8O;z{I2>t`7>#*jtA1}##d00T8rphN=JU>)@dSb;dKq#53kFRmSlPf<*{2I@ID zz@rcaFvE`Jq?XX?MjB0|8|f*6L##jLQJb!-&9pXdQj*9OK=4CB7+M6(JO~8#3&Pk@ zK?ocJW;_7et<(9%jX>fs>HDX(g$+Qc6KLz4*796{yBdh-<5-@Z{LT#Or6v>b*9l-w z7BKfVFe_)OX5wr}HgnztDuKy&qI(MTkcR@=9d%b+mxm?E! z)0X<(SAW#D)pUnDyDFQu*dHG1h?6Nc7vHE0BqwMH<-8W^tud3(7lU=^(4>bqUvZI<(!|O9W!!3&1q|?pWfvWF3 z#}59Md?EbziEnlJtyeRh<$<3+F5OY_bl=S*c~uQ1&4PGnOP73b=PmBNm-4{{UT$S+ z>(FCI#$czrKcjuqp@ELqS(`iLV{xY5{K@OSO=FT=MtFS#4iI$7HPD?RGE7L5M@ DmDXGW literal 0 HcmV?d00001 diff --git a/app/resources/Android/src/main/res/drawable-xxhdpi/sc_timer.webp b/app/resources/Android/src/main/res/drawable-xxhdpi/sc_timer.webp new file mode 100644 index 0000000000000000000000000000000000000000..21239054243ca2df9e634ce46bea97a4e491b67d GIT binary patch literal 2472 zcmZ{ic_36<9LJ9(jSwPH%o_|svP@}sp4~8>MoHP~S%zWk%uo_VmP9j1S+hjR`p6(c zN*N?eHDsy8pe$i9r7Z7G{n7j5y>rjUF!}rd*qIq0J9P|gzXJfE z0S)Spjx{kkX3Gt20k^F$-jBo!nf(08!8Yc`2zv)d#P&(R2Y7)fPyk}Ccv9fe6Bt{L z_kTC`0N~t+@8#+a@jZwS z1Va~u_%%m&`^g_U?D><|IUHiphF-_V|wtoLK0F@6u$_00T7v^$9D8+_}# zpBQGqTwUHt8E3!@p2UmbVnhzcToZxEREazZLir2w8GocV%nHlD`)zRvRAy85$i|4d zBBYOuD~=nVMIt*bcCmWeH7QBq6y$_O$E1z~cEEDLEVY($BT0VZ>u7n90>8tcq)!BT z(5&5F6+7U#2iqRBb|yCn$={%-e#V&6D@nhOl=4xa%WdVFMiTpqRdZVK4de-Y-7 zR8E!KL#-}t{K%Ec3$&2LpkaEq-#d-p-fW*EP@zyxpAOKLFO$0;+H8ns(zBk+L_Evxi0X&-|ACVw-7RGgbZvuu^BrH|G4idrxlP|uK4 zJFE8Anr)yLjRFc&tQtuj?vhPeba6^i=xB49H>@)%+=1%D%H?{|z2YCAsiGZnkX)G1 ziN5d_?%FD=5l4|FlJRk!+wx7T_y=3ZxjSk59_j_VZhPkY6rRCmB4+vPn+AobvWA5k z%pI)=%Ip=?wx<(@lZt6VI_nM|&SPonk`qOL-r#?Hw`r`@QocLHF^tUJ6{|VOqZ>#= zquTLjCgo2_lGfw9_EL^}-aIE=GN+Zje78%MV&Zz0VuCEMtuZxwVeX>5#f^!;&0h>iJwa1%Jls7TPO4;K?`j;XO+^Of@6k{IxOx z*~G(mO1erEBVA=yoR*oc$epu^r;qTGq{+8@4qahJN$Y2YXU61_3T7`=KHNJ^(?OKt z9Mujt`k2I(C$q!Hb(G5~qe>yV6-Mq-`s!=aQudyIN8Zq#KN)kPd&uDV>!FkgSeTte znWw~zTB3mSMl?g0Hw9kg@0*8VQD}YiDSK2dW%^xS0^luZa*)N*1tD)(`mC>V^;(ec^lNit|-BnM(nMcx8YD*$0pR!TYtMgfx#Wr2qybX>s z_o2*(5^kZIzq-|-YU|Kri9B8=nl+M!8n*M7eHT^Po$2=LIX(<{A5J=!)? zC|*#FeKfaLlC3v}S8B`YWg`yb7EXsB7OWip0Sp`kzW@LL literal 0 HcmV?d00001 diff --git a/app/resources/Android/src/main/res/drawable-xxhdpi/sc_timer_fg.webp b/app/resources/Android/src/main/res/drawable-xxhdpi/sc_timer_fg.webp new file mode 100644 index 0000000000000000000000000000000000000000..cc7b14c56f76bbf62042de495e35fa462f51e1e2 GIT binary patch literal 2068 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 literal 0 HcmV?d00001 diff --git a/app/resources/Android/src/main/res/drawable-xxxhdpi/sc_add_fg.webp b/app/resources/Android/src/main/res/drawable-xxxhdpi/sc_add_fg.webp new file mode 100644 index 0000000000000000000000000000000000000000..d431d91333de1df7263ecbe3ccd85502e4b13410 GIT binary patch literal 1006 zcmZ{iYcP~i7{~uBS&3PfG@2n>;e%nfmZWA%c3JI&%-RYuwbt%3EZgo@E;DT-Fh9PntB6=ePt3!oWh2duu){GbVge;>9S1*d6bx+keI~hT3`oTxWE@~ zN|jL`6E9V;-gCFHesEYzZy>wZ+&=TFi__Fb6~M74k4-AQ!9=`;IQoD|&vFIv5>>h~ zjrcNgfPoSu?ql`TY5vTzcACdoHYns0I-4^wUptFaXR#{Xpd%l)C_cKZeU!sgV^89! z&fXqR^GfQTFhY(fh{1;pk&qw+Yp|Zi5ClR50j)4kJiE6iVv$3!DjN03g8>=PA{{0K zkh+g{SJSK^T}@9G^4R)Q9JQIc8Z|+pDT(7K1{Mx7%uio{TMkT=G0eYOhMA}X7Q6%Q zXV1jv)BvHsNH3ewe9i&9BB15rjFwsn+%5q;-sqJE<8JO zbj`@d+Hw9hpeUeU)df^l1AgSsOQzcvoyh@&4G%J%*KXFoeSE5qVSEz$NE2-#I@K>H?s9&SgxSTDx5sd47IiS z@44|!_WstOZ@&EZvvnTs5p|G!}AO0=!~#(@s8d z2`f*qq@R^tHS~4YC#@H2U9Wj|2E|xTd^sAuv_eodkyqTbzqspf@WYmx{Kg9}CO>&J z1&)W_W8{Y9VS+sZ{XetTo=mAeQEe}EMXzAWTV^UAeu>uFL!kk+{ kRxgo#<@01sc&WU~oF;9piAjtImKLeQ=P$>1=7WiY|5_0?`Tzg` literal 0 HcmV?d00001 diff --git a/app/resources/Android/src/main/res/drawable-xxxhdpi/sc_grocery.webp b/app/resources/Android/src/main/res/drawable-xxxhdpi/sc_grocery.webp new file mode 100644 index 0000000000000000000000000000000000000000..3c944bdaee5301fa4f022f0e86cd3de0e0964d0d GIT binary patch literal 2362 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 Hp9uc~pEm#k literal 0 HcmV?d00001 diff --git a/app/resources/Android/src/main/res/drawable-xxxhdpi/sc_planner.webp b/app/resources/Android/src/main/res/drawable-xxxhdpi/sc_planner.webp new file mode 100644 index 0000000000000000000000000000000000000000..0c98f90a1505339fd8c8fe0c8fc72bbe44eeca70 GIT binary patch literal 2314 zcmZ{idmxnA8^;eKqDAtH9~y*G?qbxs&KM23U&giFm@z{xGvk`eEVV8Xa$6~(X(Ys? zS|if1qew0_xl9a6@*|Rjl!^JhQ-8F7?4I{M&-tA1^E~H0=Q*#ty`7z~1OVPBge%6? z%x4DxzyRv)-(Gtp($!NKngU_ZaBM{MHpmqb858Ax458}d>!-SX28e-eKo)2Mxj<|* z$;rdcQxN^n?b8Sl5_kr61#A6t%)hFVxZr3k07BwWge8^~6$3FEV#oLxl7NdL-i-|j z#6esGu}&1UL5PP0deC>C6ENXBe-&_)r#liln+(LNguijn-xwPb6#>NvilPw_9t-W^ zTN9i_Dmc>10~*z#t_-4qJ2(aqKo!^n6hHz~Ua12fC%Mc zAxi=YAPR&60tf*yKnGG|q1A(-5fACX&=U?41oemVp!TD#(RgE{Z<3G{0szsMeEy0i z0NaZI*v#kic~m}s^BMpm;{bF-{>Ud@1;A_#((`|48kGP@rvbp|{GkP11fV$+0EJOf zU{v6@?}$KF7>@_w;|&0I`T`*L41gW}-)jc>1b#r{0N|MfT~$8-mo5XK1;tATK!2O# zIWYkA+dK4Smfjc?;=JB&X5W8<+Uoi6(ne}!>0W^b%Gpj&*|?La!YHVEe1!Af&|Joe z>uPfGflwtvTuv>mQMFIF0~V+rUemCbDbDkL=G1_H3v%wr+cG`GKxFO~N!61lZkK{b_zONL%Z-wcb~=J zpcjSMo#u5$chyZawJgh?xL79RSlO6UNbjLYPv@BwozPSa#8H|D z%e?iB^5XLYqCZI8vQ=vC4)4SW<*Zc@_OQV z`z!qlQqoG*RZLm_$;a0U&FxkXy&!8+y6Rsn<6UL*g;EMGD@ug!N@!%AL)RLN?mhTI z$4z8F*3Ql`r?lDfsd!I7s`$>F;vvcWDQddO2V><-dBY<(>g+|lVw?Z1_8N}Z`)N7D zayf7l{a4az=a)-M(n402pLesIohwq~d6_FWliNktmnBMNbJ7l1y?PM$TakAv43;dW zMqubmewb-yc2JVlwf^vUW!JY;D|K3v1gp#srAS^s>xTLRd7}6za*v7#?E)LM#tLAY zyC^D2QjtQfi3?x2E|bbs!^)TQ{@#iw$J8?V?vm&hpXXJx7#wiRcpH|vHM$dhY+tm+IdX5xmKvjU)V}ak~xi; ziNWwnIzq0$ru1IN{KQFv$#?6rs`-gE!;4(;rVNVGjS+=zdsq{m;!hi?BilreYCEV)dq~pN6n=mS1**U!kV9@jHCJFpEqZn+O1|AT8xlJ#C+?9(-jHE ze!l(2MEjc-^aQM*6RDp&SXZ>rn)R?T0N!)e>*!=G(jl}rexk&^clB5Jjg$%D%>}#1 zzc#NVHANmwckcPRAXbah;kP;+jJ@XrKYra7zEBeS=gg@Iv)sDz2JXf3&#}D348)+` z0_H&REF*)~F%xH7)*$#AIuE#^gQ*1FlemSx9?)1THuxvY@}^9R}W zk)o)Hn)j)6rPd_mhp_Q(7d8io73XQ}L1$|P%YnpxmSaGPxQSa3JmsNVW*y75=KJLZ_E`NuEG@KC^4FN_jA8FYG2(g9~SD>gZMLVpx~k0Eqt PcttoTH%_*@UK9F1(H_Qi literal 0 HcmV?d00001 diff --git a/app/resources/Android/src/main/res/drawable-xxxhdpi/sc_planner_fg.webp b/app/resources/Android/src/main/res/drawable-xxxhdpi/sc_planner_fg.webp new file mode 100644 index 0000000000000000000000000000000000000000..14ef2e2fbac42b3589ca9a49ab78c1ab42678330 GIT binary patch literal 1338 zcmZ{idoWyA9LIm&@1PNF+AUj_rel$ABBfH##3LSI$hyxG@XAAiR zmm#)baTAjf*CVE4=zxeH5_-}GKO>m4!LJF%BIv&8Zf1zdoHsb>4Q6pM9`YfQLgA%l zp);&E;wHu^>5)g!Y=b%p1V9IW@BuOe!a?wbeefx`p>ZEL0u7wd3f>Y=>`j7D$Uw0y zH1Z(_Fh~Usa6t%Eq-LSrQ_##tdJ1~dAcx35ibHKPuLAZS+Pb7+>;s@PhT|$b0KIbn zt0g$TQiJ2GmjSd!0VL_0@fp;yasK(s_X9B7pal{6s8q{X1G{ z)MT>(7U}>@VgR=H0~p3`>AQ#R}^Zxj0-INmq(_BcZ7yVqT>IV-8p6 zuC%X?uVvuP_z3>Ld7II`g*d&hFyGQC(!CRdL9-lk71KA7tUl)bxiw+?JQ1*UYED%3VA`< zc|qkeW7qMaoh=Q)f&{UPw*puBmFqBX$oIBqzjMEBrf1-Fe8u0-tLcGfgj24%2A43d zwM#xl;u4@T%VT)%R;#@l#-H!9A{E*{TKVL|1@Xrd#c>n;FZJo_6Xhl*8RQvN?A~S4 z;o<2>T94FwQrf=5mUPAGTEcveY)%^MjCn6$@`AFee@<5o+9VBlHgx;k`)-%L_E5U# z^b>pbAB;004EHgSYWa3iA-7RqUlwa%_0gK>GBxR4M=jxR=Cz_Ea_4*jJ=x+u)8R+W zwSIxbRnzi#cZg*8(7;JaR^zfMS23x-Uqtg(!~`d-)k(E4Qu;oZ|GK(#xKHa0-?KLxb{JQcX5Rhsg=>pexb-v9%~yr&w0g@Pc5~B+v}>^~ z>;|@?F>`6~>!a7iXq_8`b?yU+}0=Ikob7o3Qg3JMpMY zPLmo%I)<{`c6PVUT6)L(VdhaY*iwn&R($=*%tMP6vS`EJNJ*DPt8CJ(H?nK~_7&wT hQTDX$Vji>B_)bW<$Hhl$@hyp0w=S&pI>Y0&;6D_w@S^|# literal 0 HcmV?d00001 diff --git a/app/resources/Android/src/main/res/drawable-xxxhdpi/sc_timer.webp b/app/resources/Android/src/main/res/drawable-xxxhdpi/sc_timer.webp new file mode 100644 index 0000000000000000000000000000000000000000..43399182bea21ffe909c90f82eecaee5fd56212c GIT binary patch literal 3390 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 literal 0 HcmV?d00001 From 525d0740f8a1b865489f29ff3d5878d7fbe50202 Mon Sep 17 00:00:00 2001 From: vishnuraghavb Date: Sat, 5 Jun 2021 23:38:36 +0530 Subject: [PATCH 2/7] added foreground service for timer --- app/ForegroundService.js | 10 +- app/main.ts | 196 +++++++++++++++------- app/store.ts | 343 +++++++++++++++++++++++---------------- 3 files changed, 341 insertions(+), 208 deletions(-) diff --git a/app/ForegroundService.js b/app/ForegroundService.js index 3f2ac675..5a9e4b64 100644 --- a/app/ForegroundService.js +++ b/app/ForegroundService.js @@ -1,15 +1,14 @@ import { TimerNotif } from './shared/utils' const superProto = android.app.Service.prototype + android.app.Service.extend('com.tns.ForegroundService', { onStartCommand: function(intent, flags, startId) { - console.log('onStartCommand') superProto.onStartCommand.call(this, intent, flags, startId) return android.app.Service.START_STICKY }, onCreate: function() { - console.log('onCreate') superProto.onCreate.call(this) - this.startForeground(777, this.getNotification()) + this.startForeground(6, this.getNotification()) }, onBind: function(intent) { return superProto.onBind.call(this, intent) @@ -18,17 +17,16 @@ android.app.Service.extend('com.tns.ForegroundService', { return superProto.onUnbind.call(this, intent) }, onDestroy: function() { - console.log('onDestroy') this.stopForeground(true) }, getNotification: function() { return TimerNotif.getNotification( { - bID: 'bringToFront', + bID: 'info', cID: 'cti', cName: 'Cooking Timer info', description: `0 ongoing, 0 paused`, - nID: 777, + nID: 6, priority: -2, sound: null, title: 'EnRecipes is running', diff --git a/app/main.ts b/app/main.ts index 633e14e6..a5fe7681 100644 --- a/app/main.ts +++ b/app/main.ts @@ -1,15 +1,98 @@ +import { + Application, + AndroidApplication, + ApplicationSettings, + Utils, + Device, + Color, + Frame, +} from '@nativescript/core' import { localize, androidLaunchEventLocalizationHandler, } from '@nativescript/localize' -import { Application, AndroidApplication, Utils } from '@nativescript/core' +import Vue from 'nativescript-vue' +import EnRecipes from './components/EnRecipes.vue' +import EditRecipe from './components/EditRecipe.vue' +import MealPlanner from './components/MealPlanner.vue' +import CookingTimer from './components/CookingTimer.vue' +import GroceryList from './components/GroceryList.vue' +import store from './store' +import * as utils from '~/shared/utils' -const keepScreenOn = () => { +export const EventBus = new Vue() + +let renderView: any = EnRecipes + +import CollectionView from '@nativescript-community/ui-collectionview/vue' +Vue.use(CollectionView) +import { StackLayout, GridLayout, DockLayout } from '@nativescript-rtl/ui' +Vue.registerElement('RStackLayout', () => StackLayout) +Vue.registerElement('RGridLayout', () => GridLayout) +Vue.registerElement('RDockLayout', () => DockLayout) + +import { myMixin } from './shared/mixins' +Vue.mixin(myMixin) + +const initFrame = () => { + const vm = store + + //MAIN INIT + vm.commit('setTheme', ApplicationSettings.getString('appTheme', 'sysDef')) + if (!vm.state.recipes.length) vm.commit('initRecipes') + vm.commit('initMealPlans') + vm.commit('initListItems') + vm.commit('initTimerPresets') + if (!Object.keys(vm.state.timerSound).length) { + let hasTimerSound = ApplicationSettings.getString('timerSound', null) + vm.commit( + 'setTimerSound', + hasTimerSound ? JSON.parse(hasTimerSound) : utils.getTones().defaultTone + ) + } + + // INIT FRAME + const View = android.view.View as any + const window = Application.android.startActivity.getWindow() + const decorView = window.getDecorView() + let sdkv = parseInt(Device.sdkVersion) + function setColors(color) { + window.setStatusBarColor(new Color(color).android) + sdkv >= 27 && window.setNavigationBarColor(new Color(color).android) + } + switch (vm.state.appTheme) { + case 'Light': + setColors('#f1f3f5') + break + case 'Dark': + setColors('#212529') + break + default: + setColors('#000000') + break + } + if (sdkv >= 27) + decorView.setSystemUiVisibility( + vm.state.appTheme == 'Light' + ? View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | + View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR + : View.SYSTEM_UI_FLAG_DARK_STATUS_BAR | + View.SYSTEM_UI_FLAG_DARK_NAVIGATION_BAR + ) + else + decorView.setSystemUiVisibility( + vm.state.appTheme == 'Light' + ? View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR + : View.SYSTEM_UI_FLAG_DARK_STATUS_BAR + ) + Frame.topmost().className = store.state.appTheme +} +const showOverLockscreen = () => { let ctx = Utils.ad.getApplicationContext() const pm = ctx.getSystemService(android.content.Context.POWER_SERVICE) let isScreenOff = !pm.isInteractive() if (isScreenOff) { - console.log('keepScreenOn') + console.log('showOverLockscreen') const window = Application.android.startActivity.getWindow() const windowMgr = android.view.WindowManager const flags = @@ -17,42 +100,63 @@ const keepScreenOn = () => { windowMgr.LayoutParams.FLAG_TURN_SCREEN_ON | windowMgr.LayoutParams.FLAG_KEEP_SCREEN_ON window.addFlags(flags) - function clearFlags(args) { - args.cancel = true - window.clearFlags(flags) - Application.android.off( - AndroidApplication.activityBackPressedEvent, - clearFlags - ) - } - Application.android.on( - AndroidApplication.activityBackPressedEvent, - clearFlags - ) } } -Application.on(Application.resumeEvent, keepScreenOn) +const intentListener = ({ intent, android }: any) => { + console.log(intent, android) + let action = ((intent || android).getStringExtra('action') || + (android && android.getAction())) as string + + if (action) { + console.log(action) + switch (action) { + case 'new_recipe': + renderView = EditRecipe + break + case 'planner': + renderView = MealPlanner + break + case 'timer': + renderView = CookingTimer + Vue.navigateTo(CookingTimer as any, { + animated: false, + }) + break + case 'grocery': + renderView = GroceryList + break + } + } +} + +Application.on(Application.resumeEvent, (args) => { + console.log('App Resume') + showOverLockscreen() +}) Application.on(Application.launchEvent, (args) => { - console.log('launching') + console.log('App Launch') + console.log('RTL', store.state.RTL) + store.commit('setRTL') if (args.android) { androidLaunchEventLocalizationHandler() intentListener(args) } + Application.android.on( + AndroidApplication.activityNewIntentEvent, + intentListener + ) + Frame.on(Frame.loadedEvent, initFrame) }) -import Vue from 'nativescript-vue' -import EnRecipes from './components/EnRecipes.vue' -import CookingTimer from './components/CookingTimer.vue' -import store from './store' - -export const EventBus = new Vue() - -import CollectionView from '@nativescript-community/ui-collectionview/vue' -Vue.use(CollectionView) - -import { lvMixin } from './shared/mixins' -Vue.mixin(lvMixin) +Application.on(Application.exitEvent, () => { + console.log('App Exit') + renderView = EnRecipes + Application.android.off( + AndroidApplication.activityNewIntentEvent, + intentListener + ) +}) Vue.config.silent = false @@ -60,37 +164,5 @@ Vue.filter('L', localize) new Vue({ store, - render: (h) => h(EnRecipes), + render: (h) => h('Frame', [h(renderView)]), }).$start() - -const intentListener = ({ intent, android }: any) => { - let ct = 'CookingTimer' - let action = (intent || android).getStringExtra('action') - console.log('calling: ', action) - if (action == 'open_timer' && store.state.currentComponent != ct) { - let openTimer = setInterval(() => { - let comp = store.state.currentComponent - if (comp == ct) clearInterval(openTimer) - else { - if (comp == 'CTSettings') Vue.navigateBack() - else { - Vue.navigateTo(CookingTimer) - store.commit('setComponent', 'CookingTimer') - } - } - }, 250) - } -} -Application.on(Application.launchEvent, () => { - Application.android.on( - AndroidApplication.activityNewIntentEvent, - intentListener - ) -}) -Application.on(Application.exitEvent, () => { - store.commit('setComponent', 'EnRecipes') - Application.android.off( - AndroidApplication.activityNewIntentEvent, - intentListener - ) -}) diff --git a/app/store.ts b/app/store.ts index f27a76bc..182aeaed 100644 --- a/app/store.ts +++ b/app/store.ts @@ -5,11 +5,17 @@ import { openOrCreate } from '@akylas/nativescript-sqlite' import { getFileAccess, File, - ApplicationSettings, Application, knownFolders, path, } from '@nativescript/core' +import { + getNumber, + setNumber, + getString, + setString, +} from '@nativescript/core/application-settings' +import * as utils from '~/shared/utils' // OPEN DATABASE FILE const db = openOrCreate( @@ -31,6 +37,11 @@ db.execute( 'CREATE TABLE IF NOT EXISTS mealPlans (date INT, type TEXT, title TEXT)' ) +// CREATE timerPresets TABLE +db.execute( + 'CREATE TABLE IF NOT EXISTS timerPresets (id INT PRIMARY KEY, label TEXT, time TEXT)' +) + const defaultCuisines = [ 'American', 'Brazilian', @@ -136,21 +147,22 @@ const defaultUnits = [ 'medium', 'large', ] + const listItems = { cuisines: { - sort: true, + sort: 1, defaultItems: defaultCuisines, }, categories: { - sort: true, + sort: 1, defaultItems: defaultCategories, }, yieldUnits: { - sort: false, + sort: 0, defaultItems: defaultYieldUnits, }, units: { - sort: false, + sort: 0, defaultItems: defaultUnits, }, } @@ -227,10 +239,15 @@ export default new Vuex.Store({ trans: '\ue93c', delay: '\ue93d', ring: '\ue93e', + print: '\ue93f', }, currentComponent: 'EnRecipes', - sortType: 'Oldest first', + sortType: 'random', language: [ + { + locale: 'ar', + title: 'العربية', + }, { locale: 'da', title: 'Dansk', @@ -239,10 +256,18 @@ export default new Vuex.Store({ locale: 'de', title: 'Deutsch', }, + { + locale: 'en-IN', + title: 'English (IN)', + }, { locale: 'en-GB', title: 'English (UK)', }, + { + locale: 'en-US', + title: 'English (US)', + }, { locale: 'es', title: 'Español', @@ -267,10 +292,6 @@ export default new Vuex.Store({ locale: 'hi', title: 'हिंदी', }, - { - locale: 'ml', - title: 'മലയാളം', - }, { locale: 'id', title: 'Indonesia', @@ -279,6 +300,14 @@ export default new Vuex.Store({ locale: 'it', title: 'Italiano', }, + { + locale: 'ja', + title: '日本語', + }, + { + locale: 'ml', + title: 'മലയാളം', + }, { locale: 'nb-NO', title: 'Norsk bokmål', @@ -287,10 +316,10 @@ export default new Vuex.Store({ locale: 'nl', title: 'Nederlands', }, - // { - // locale: 'pt', - // title: 'Português', - // }, + { + locale: 'pt', + title: 'Português', + }, { locale: 'pt-BR', title: 'Português (BR)', @@ -308,97 +337,114 @@ export default new Vuex.Store({ title: 'తెలుగు', }, ], - shakeEnabled: ApplicationSettings.getBoolean('shakeEnabled', true), + shakeEnabled: getNumber('shakeEnabled', 1), importSummary: { found: 0, imported: 0, updated: 0, }, - layout: ApplicationSettings.getString('layout', 'detailed'), + layout: getString('layout', 'detailed'), selectedCuisine: null, selectedCategory: null, selectedTag: null, appTheme: 'sysDef', - mondayFirst: ApplicationSettings.getBoolean('mondayFirst', false), - timerDelay: ApplicationSettings.getString('timerDelay', '1 minute'), + mondayFirst: getNumber('mondayFirst', 0), + timerDelay: getString('timerDelay', '1 minute'), timerSound: {}, - timerVibrate: ApplicationSettings.getBoolean('timerVibrate', false), - timerPresets: [ - { - id: 534534563, - label: 'Soft Eggs', - recipeID: null, - time: '00:06:00', - timerInterval: null, - isPaused: false, - preset: 1, - }, - { - id: 564646, - label: 'Medium Eggs', - recipeID: null, - time: '00:08:00', - timerInterval: null, - isPaused: false, - preset: 1, - }, - { - id: 43276767, - label: 'Hard Eggs', - recipeID: null, - time: '00:10:00', - timerInterval: null, - isPaused: false, - preset: 1, - }, - ], + timerVibrate: getNumber('timerVibrate', 0), + timerPresets: [], activeTimers: [], - timerIntervals: [], + FGService: 0, + RTL: 0, }, mutations: { - addTimerPreset(state, timer) { - state.timerPresets.push(timer) + setRTL(state) { + state.RTL = utils.RTL() as any | 0 }, - removeTimerPreset(state, index) { - state.timerPresets.splice(index, 1) + setFGService(state, val) { + state.FGService = val + }, + addTimerPreset(state, timer) { + let i = state.timerPresets.findIndex((e) => e.id == timer.id) + if (state.timerPresets.some((e) => e.id == timer.id)) { + state.timerPresets.splice(i, 1, timer) + } else state.timerPresets.push(timer) + db.execute( + `REPLACE INTO timerPresets (id, label, time) VALUES (?, ?, ?)`, + [timer.id, timer.label, timer.time] + ) + }, + deleteTimerPreset(state, i) { + let id = state.timerPresets[i] + state.timerPresets.splice(i, 1) + db.execute(`DELETE FROM timerPresets WHERE id = ${id}`) + }, + initTimerPresets(state) { + if (!state.timerPresets.length) + db.select(`SELECT * FROM timerPresets`).then((res) => { + res.forEach((t) => { + t.recipeID = 0 + t.timerInt = 0 + t.isPaused = 0 + t.preset = 1 + t.done = 0 + state.timerPresets.push(t) + }) + }) + }, + importTimerPresets(state, timers) { + let newPresets = timers.filter( + (e) => !state.timerPresets.some((f) => f.id === e.id) + ) + newPresets.forEach((t) => { + db.execute( + `INSERT INTO timerPresets (id, label, time) VALUES (?, ?, ?)`, + [t.id, t.label, t.time] + ) + state.timerPresets.push(t) + }) }, clearTimerInterval(state) { state.activeTimers.forEach((e) => { - clearInterval(e.timerInterval) - e.timerInterval = null + clearInterval(e.timerInt) + e.timerInt = 0 }) }, - addActiveTimer(state, { timer, index }) { - state.activeTimers.splice(index, 0, timer) + addActiveTimer(state, { timer, i }) { + state.activeTimers.splice(i, 0, timer) + }, + sortActiveTimers(state) { + let a = state.activeTimers.reduce((acc, e) => { + ;(acc[e.recipeID] = acc[e.recipeID] || []).push(e) + return acc + }, {}) + state.activeTimers = [...(Object).values(a).flat(2)] }, updateActiveTimer(state, timer) { - let index = state.activeTimers.findIndex((e) => e.id == timer.id) - state.activeTimers.splice(index, 1, timer) + let i = state.activeTimers.findIndex((e) => e.id == timer.id) + state.activeTimers.splice(i, 1, timer) }, - removeActiveTimer(state, index) { - state.activeTimers.splice(index, 1) + removeActiveTimer(state, i) { + state.activeTimers.splice(i, 1) }, setTimerDelay(state, delay) { state.timerDelay = delay - ApplicationSettings.setString('timerDelay', delay) + setString('timerDelay', delay) }, setTimerSound(state, sound) { - state.timerSound = { - title: sound.title, - uri: sound.uri, - } - ApplicationSettings.setString('timerSound', JSON.stringify(sound)) + state.timerSound = sound + setString('timerSound', JSON.stringify(sound)) }, - setTimerVibrate(state, bool) { - state.timerVibrate = bool - ApplicationSettings.setBoolean('timerVibrate', bool) + setTimerVibrate(state, n) { + state.timerVibrate = n + setNumber('timerVibrate', n) }, clearImportSummary(state) { for (const key in state.importSummary) state.importSummary[key] = 0 }, - setFirstDay(state, bool) { - state.mondayFirst = bool - ApplicationSettings.setBoolean('mondayFirst', bool) + setFirstDay(state, n) { + state.mondayFirst = n | 0 + setNumber('mondayFirst', n | 0) }, setTheme(state, theme) { switch (theme) { @@ -414,7 +460,7 @@ export default new Vuex.Store({ state.appTheme = theme break } - ApplicationSettings.setString('appTheme', theme) + setString('appTheme', theme) }, clearFilter(state) { state.selectedCuisine = state.selectedCategory = state.selectedTag = null @@ -436,8 +482,8 @@ export default new Vuex.Store({ state.recipes.push(e) }) }) - state.shakeEnabled = ApplicationSettings.getBoolean('shakeEnabled', true) - state.sortType = ApplicationSettings.getString('sortType', 'Oldest first') + state.shakeEnabled = getNumber('shakeEnabled', 1) + state.sortType = getString('sortType', 'random') }, importRecipesFromJSON(state, recipes) { let localRecipesIDs, partition @@ -463,6 +509,12 @@ export default new Vuex.Store({ r.yieldQuantity = r.yield.quantity r.yieldUnit = r.yield.unit delete r.yield + function getTime(d) { + return new Date(d).getTime() + } + r.lastTried = getTime(r.lastTried) + r.lastModified = getTime(r.lastModified) + r.created = getTime(r.created) return r }) } @@ -492,9 +544,9 @@ export default new Vuex.Store({ JSON.stringify(r.notes), r.favorite ? 1 : 0, r.tried ? 1 : 0, - r.lastTried ? new Date(r.lastTried).getTime() : null, - r.lastModified ? new Date(r.lastModified).getTime() : null, - r.created ? new Date(r.created).getTime() : null, + r.lastTried, + r.lastModified, + r.created, ] ) }) @@ -533,9 +585,9 @@ export default new Vuex.Store({ JSON.stringify(r.notes), r.favorite ? 1 : 0, r.tried ? 1 : 0, - r.lastTried ? new Date(r.lastTried).getTime() : null, - r.lastModified ? new Date(r.lastModified).getTime() : null, - r.created ? new Date(r.created).getTime() : null, + r.lastTried, + r.lastModified, + r.created, ] ) } @@ -649,9 +701,9 @@ export default new Vuex.Store({ function exist({ id }, index: number) { if (id === recipe.id) { i = index - return true + return 1 } - return false + return 0 } state.recipes.some(exist) ? Object.assign(state.recipes[i], recipe) @@ -659,9 +711,9 @@ export default new Vuex.Store({ }, deleteRecipes(state, ids) { ids.forEach((id: string) => { - let index = state.recipes.findIndex((e) => e.id === id) - getFileAccess().deleteFile(state.recipes[index].image) - state.recipes.splice(index, 1) + let i = state.recipes.findIndex((e) => e.id === id) + getFileAccess().deleteFile(state.recipes[i].image) + state.recipes.splice(i, 1) db.execute(`DELETE FROM recipes WHERE id = '${id}'`) state.recipes.forEach((e, i) => { if (e.combinations.includes(id)) { @@ -774,11 +826,11 @@ export default new Vuex.Store({ type = 'snacks' break } - return f.title === e.title && f.date === date && f.type === type + return f.title == e.title && f.date == date && f.type == type }) } else { return !state.mealPlans.some( - (f) => f.title === e.title && f.date === e.date && f.type === e.type + (f) => f.title == e.title && f.date == e.date && f.type == e.type ) } }) @@ -835,47 +887,48 @@ export default new Vuex.Store({ ) }) }, - addMealPlan(state, { date, type, title }) { + addMealPlan(state, { date, type, title, index, inDB }) { let mealPlan = { date, type, title, } - state.mealPlans.push(mealPlan) - const cols = Object.keys(mealPlan).join(', ') - const placeholder = Object.keys(mealPlan) - .fill('?') - .join(', ') - db.execute( - `INSERT INTO mealPlans (${cols}) VALUES (${placeholder})`, - Object.values(mealPlan) - ) - }, - deleteMealPlan(state, { date, type, title }) { - let index = state.mealPlans.findIndex( - (e) => e.title === title && e.type === type && e.date === date - ) - state.mealPlans.splice(index, 1) - state.mealPlans = [...state.mealPlans] - db.execute( - `DELETE FROM mealPlans WHERE date = ${date} AND type = '${type}' AND title = '${title}'` - ) - }, - toggleState(state, { id, key, setDate }) { - let index = state.recipes.findIndex((e) => e.id == id) - state.recipes[index][key] = state.recipes[index][key] ? 0 : 1 - db.execute( - `UPDATE recipes SET ${key} = ${state.recipes[index][key]} WHERE id = '${id}'` - ) - if (setDate) { - state.recipes[index].lastTried = new Date().getTime() + if (inDB) { + const cols = Object.keys(mealPlan).join(', ') + const placeholder = Object.keys(mealPlan) + .fill('?') + .join(', ') db.execute( - `UPDATE recipes SET lastTried = ${state.recipes[index].lastTried} WHERE id = '${id}'` + `INSERT INTO mealPlans (${cols}) VALUES (${placeholder})`, + Object.values(mealPlan) ) + if (index === null) state.mealPlans.push(mealPlan) + } else { + state.mealPlans.splice(index, 0, mealPlan) } }, - setComponent(state, comp) { - state.currentComponent = comp + deleteMealPlan(state, { date, type, title, index, inDB }) { + if (inDB) { + db.execute( + `DELETE FROM mealPlans WHERE date = ${date} AND type = '${type}' AND title = '${title}'` + ) + } else { + state.mealPlans.splice(index, 1) + state.mealPlans = [...state.mealPlans] + } + }, + toggleState(state, { id, key, setDate }) { + let i = state.recipes.findIndex((e) => e.id == id) + state.recipes[i][key] = state.recipes[i][key] ? 0 : 1 + db.execute( + `UPDATE recipes SET ${key} = ${state.recipes[i][key]} WHERE id = '${id}'` + ) + if (setDate) { + state.recipes[i].lastTried = new Date().getTime() + db.execute( + `UPDATE recipes SET lastTried = ${state.recipes[i].lastTried} WHERE id = '${id}'` + ) + } }, unSyncCombinations(state, { id, combinations }) { state.recipes.forEach((e, i) => { @@ -890,19 +943,17 @@ export default new Vuex.Store({ }) }, setShake(state, shake) { - state.shakeEnabled = shake - ApplicationSettings.setBoolean('shakeEnabled', shake) + state.shakeEnabled = shake | 0 + setNumber('shakeEnabled', shake | 0) }, setRating(state, { id, rating }) { - let index = state.recipes.findIndex((e) => e.id == id) - state.recipes[index].rating = rating + let i = state.recipes.findIndex((e) => e.id == id) + state.recipes[i].rating = rating db.execute(`UPDATE recipes SET rating = ${rating} WHERE id = '${id}'`) }, toggleCart(state, { id }) { - let index = state.recipes.indexOf( - state.recipes.filter((e) => e.id === id)[0] - ) - state.recipes[index].inBag = !state.recipes[index].inBag + let i = state.recipes.indexOf(state.recipes.filter((e) => e.id === id)[0]) + state.recipes[i].inBag = !state.recipes[i].inBag }, unlinkBrokenImages(state) { state.recipes.forEach((r, i) => { @@ -924,11 +975,26 @@ export default new Vuex.Store({ }, }, actions: { + setRTL({ commit }) { + commit('setRTL') + }, + sortActiveTimers({ commit }) { + commit('sortActiveTimers') + }, + setFGService({ commit }, val) { + commit('setFGService', val) + }, addTimerPreset({ commit }, timer) { commit('addTimerPreset', timer) }, - removeTimerPreset({ commit }, timer) { - commit('removeTimerPreset', timer) + deleteTimerPreset({ commit }, timer) { + commit('deleteTimerPreset', timer) + }, + initTimerPresets({ commit }) { + commit('initTimerPresets') + }, + importTimerPresets({ commit }, timers) { + commit('importTimerPresets', timers) }, clearTimerInterval({ commit }) { commit('clearTimerInterval') @@ -939,8 +1005,8 @@ export default new Vuex.Store({ updateActiveTimer({ commit }, timer) { commit('updateActiveTimer', timer) }, - removeActiveTimer({ commit }, index) { - commit('removeActiveTimer', index) + removeActiveTimer({ commit }, i) { + commit('removeActiveTimer', i) }, setTimerDelay({ commit }, delay) { commit('setTimerDelay', delay) @@ -948,14 +1014,14 @@ export default new Vuex.Store({ setTimerSound({ commit }, sound) { commit('setTimerSound', sound) }, - setTimerVibrate({ commit }, bool) { - commit('setTimerVibrate', bool) + setTimerVibrate({ commit }, n) { + commit('setTimerVibrate', n) }, clearImportSummary({ commit }) { commit('clearImportSummary') }, - setFirstDay({ commit }, bool) { - commit('setFirstDay', bool) + setFirstDay({ commit }, n) { + commit('setFirstDay', n) }, setTheme({ commit }, theme) { commit('setTheme', theme) @@ -1017,9 +1083,6 @@ export default new Vuex.Store({ toggleStateAction({ commit }, toggledRecipe) { commit('toggleState', toggledRecipe) }, - setComponent({ commit }, comp) { - commit('setComponent', comp) - }, unSyncCombinationsAction({ commit }, combinations) { commit('unSyncCombinations', combinations) }, From bfb04b894f0af73bd508a2f03cd7474904ad50b2 Mon Sep 17 00:00:00 2001 From: vishnuraghavb Date: Sat, 5 Jun 2021 23:38:52 +0530 Subject: [PATCH 3/7] updated packages --- package-lock.json | 1233 ++++++++++++++++++++------------------------- package.json | 11 +- 2 files changed, 555 insertions(+), 689 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9a322c11..0727a621 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,8 @@ "dependencies": { "@akylas/nativescript-sqlite": "^3.3.12", "@nativescript-community/ui-collectionview": "^4.0.29", - "@nativescript/core": "^8.0.5", + "@nativescript-rtl/ui": "^0.1.8", + "@nativescript/core": "^8.0.7", "@nativescript/local-notifications": "^5.0.3", "@nativescript/localize": "^5.0.4", "@triniwiz/nativescript-accelerometer": "^4.0.3", @@ -23,12 +24,12 @@ "devDependencies": { "@nativescript/android": "8.0.0", "@nativescript/types": "^8.0.1", - "@nativescript/webpack": "beta", - "@types/node": "^15.3.0", + "@nativescript/webpack": "^5.0.0-beta.12", + "@types/node": "^15.9.0", "nativescript-vue-template-compiler": "~2.9.0", - "sass": "^1.32.13", + "sass": "^1.34.1", "typescript": "^4.2.4", - "vue": "^2.6.12" + "vue": "^2.6.13" } }, "node_modules/@akylas/nativescript-sqlite": { @@ -53,26 +54,26 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz", - "integrity": "sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q==", + "version": "7.14.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.4.tgz", + "integrity": "sha512-i2wXrWQNkH6JplJQGn3Rd2I4Pij8GdHkXwHMxm+zV5YG/Jci+bCNrWZEWC4o+umiDkRrRs4dVzH3X4GP7vyjQQ==", "dev": true }, "node_modules/@babel/core": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.15.tgz", - "integrity": "sha512-6GXmNYeNjS2Uz+uls5jalOemgIhnTMeaXo+yBUA72kC2uX/8VW6XyhVIo2L8/q0goKQA3EVKx0KOQpVKSeWadQ==", + "version": "7.14.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.3.tgz", + "integrity": "sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.15", + "@babel/generator": "^7.14.3", + "@babel/helper-compilation-targets": "^7.13.16", + "@babel/helper-module-transforms": "^7.14.2", + "@babel/helpers": "^7.14.0", + "@babel/parser": "^7.14.3", "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.15", - "@babel/types": "^7.13.14", + "@babel/traverse": "^7.14.2", + "@babel/types": "^7.14.2", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -118,14 +119,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.13.16", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz", - "integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==", + "version": "7.14.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.4.tgz", + "integrity": "sha512-JgdzOYZ/qGaKTVkn5qEDV/SXAh8KcyUVkCoSWGN8T3bwrgd6m+/dJa2kVGi6RJYJgEYPBdZ84BZp9dUjNWkBaA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.15", + "@babel/compat-data": "^7.14.4", "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "browserslist": "^4.16.6", "semver": "^6.3.0" }, "peerDependencies": { @@ -196,15 +197,15 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.14.3", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.3.tgz", - "integrity": "sha512-Rlh8qEWZSTfdz+tgNV/N4gz1a0TMNwCUcENhMjHTHKp3LseYH5Jha0NSlyTQWMnjbYcwFt+bqAMqSLHVXkQ6UA==", + "version": "7.14.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.4.tgz", + "integrity": "sha512-zZ7uHCWlxfEAAOVDYQpEf/uyi1dmeC7fX4nCf2iz9drnCwi1zvwXL3HwWWNXUQEJ1k23yVn3VbddiI9iJEXaTQ==", "dev": true, "dependencies": { "@babel/helper-member-expression-to-functions": "^7.13.12", "@babel/helper-optimise-call-expression": "^7.12.13", "@babel/traverse": "^7.14.2", - "@babel/types": "^7.14.2" + "@babel/types": "^7.14.4" } }, "node_modules/@babel/helper-simple-access": { @@ -322,9 +323,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.14.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.3.tgz", - "integrity": "sha512-7MpZDIfI7sUC5zWo2+foJ50CSI5lcqDehZ0lVgIhSi4bFEk94fLAKlF3Q0nzSQQ+ca0lm+O6G9ztKVBeu8PMRQ==", + "version": "7.14.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.4.tgz", + "integrity": "sha512-ArliyUsWDUqEGfWcmzpGUzNfLxTdTp6WU4IuP6QFSp9gGfWS6boxFCkJSJ/L4+RG8z/FnIU3WxCk6hPL9SSWeA==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -361,9 +362,9 @@ } }, "node_modules/@babel/types": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.2.tgz", - "integrity": "sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw==", + "version": "7.14.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.4.tgz", + "integrity": "sha512-lCj4aIs0xUefJFQnwwQv2Bxg7Omd6bgquZ6LGC+gGMh6/s5qDVfjuCMlDmYQ15SLsWHd9n+X3E75lKIhl5Lkiw==", "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.14.0", @@ -384,6 +385,19 @@ "resolved": "https://registry.npmjs.org/@nativescript-community/ui-collectionview/-/ui-collectionview-4.0.31.tgz", "integrity": "sha512-kWtupfe+zr2Vj5hLfie/xxlFYLtLbBS6WrDBUD9z1cJYIZRf9KQxwl8z4wJ2dtQ51dlt1r8CJZgpgRbMTk5xQA==" }, + "node_modules/@nativescript-rtl/ui": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@nativescript-rtl/ui/-/ui-0.1.8.tgz", + "integrity": "sha512-GUmRHuwI0vJ1IKUH1ilm2SmPo8iv6o5PhA4LxmNnysODuiJywnnNfE9yFpoecBsDOMRVT6M/dlV26+3DfO4Rbw==", + "dependencies": { + "@types/node": "^14.6.4" + } + }, + "node_modules/@nativescript-rtl/ui/node_modules/@types/node": { + "version": "14.17.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.2.tgz", + "integrity": "sha512-sld7b/xmFum66AAKuz/rp/CUO8+98fMpyQ3SBfzzBNGMd/1iHBTAg9oyAvcYlAj46bpc74r91jSw2iFdnx29nw==" + }, "node_modules/@nativescript/android": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@nativescript/android/-/android-8.0.0.tgz", @@ -391,9 +405,9 @@ "dev": true }, "node_modules/@nativescript/core": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@nativescript/core/-/core-8.0.6.tgz", - "integrity": "sha512-w9fmuzUrKUblHbkmApMNWExgFZewZCnwf8A2ymcdLsftvljXrDhztbIgQD4aDis61OaqE1N42UToYPpUkaw5pw==", + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/@nativescript/core/-/core-8.0.7.tgz", + "integrity": "sha512-2OLwPa5Y+9aKLyo0zWl0YSjWS0f+EFG8SdZe+uuU2mzEhCb8q9djdICjHynuXZkmrtQsx/lKjLhbtnoYQsMRvA==", "hasInstallScript": true, "dependencies": { "@nativescript/hook": "~2.0.0", @@ -459,46 +473,46 @@ "dev": true }, "node_modules/@nativescript/webpack": { - "version": "5.0.0-beta.10", - "resolved": "https://registry.npmjs.org/@nativescript/webpack/-/webpack-5.0.0-beta.10.tgz", - "integrity": "sha512-j/NlhVCZi/8N5IQQbPjSRWPc3a7zSW8NTc0LsxbidsBPqeTiX1wUq5ajmNv/ctmbiNRsjmB9wTDwDxowormr2Q==", + "version": "5.0.0-dev.0", + "resolved": "https://registry.npmjs.org/@nativescript/webpack/-/webpack-5.0.0-dev.0.tgz", + "integrity": "sha512-pJhuzm+sqMBrr+MHAm6qQclvHo6evK8IsqBpZ8s2e5O/Bk0HbtPdKJdiNQuw2TRHWpWJ1Rkp3Nc8lnZsoxK7VQ==", "dev": true, "dependencies": { - "@babel/core": "7.13.15", - "@pmmmwh/react-refresh-webpack-plugin": "0.4.3", - "acorn": "^8.1.1", + "@babel/core": "^7.0.0", + "@pmmmwh/react-refresh-webpack-plugin": "^0.4.0", + "acorn": "^8.0.0", "acorn-stage3": "^4.0.0", - "babel-loader": "8.2.2", - "chalk": "4.1.0", - "cli-highlight": "2.1.11", - "commander": "7.2.0", - "copy-webpack-plugin": "8.1.1", - "css": "3.0.0", - "css-loader": "5.2.1", - "dotenv-webpack": "7.0.2", - "fork-ts-checker-webpack-plugin": "6.2.1", - "loader-utils": "2.0.0", - "lodash.get": "4.4.2", - "micromatch": "4.0.4", - "postcss": "8.2.10", - "postcss-import": "14.0.1", - "postcss-loader": "5.2.0", - "raw-loader": "4.0.2", - "react-refresh": "0.10.0", - "sass": "1.32.8", - "sass-loader": "11.0.1", - "sax": "1.2.4", - "source-map": "0.7.3", - "terser-webpack-plugin": "5.1.1", - "ts-dedent": "2.1.1", - "ts-loader": "8.1.0", - "vue-loader": "15.9.6", - "webpack": "5.31.2", - "webpack-bundle-analyzer": "4.4.0", - "webpack-chain": "6.5.1", - "webpack-cli": "4.6.0", - "webpack-merge": "5.7.3", - "webpack-virtual-modules": "0.4.2" + "babel-loader": "^8.0.0", + "chalk": "^4.0.0", + "cli-highlight": "^2.0.0", + "commander": "^7.0.0", + "copy-webpack-plugin": "^9.0.0", + "css": "^3.0.0", + "css-loader": "^5.0.0", + "dotenv-webpack": "^7.0.0", + "fork-ts-checker-webpack-plugin": "^6.0.0", + "loader-utils": "^2.0.0", + "lodash.get": "^4.0.0", + "micromatch": "^4.0.0", + "postcss": "^8.0.0", + "postcss-import": "^14.0.0", + "postcss-loader": "^5.0.0", + "raw-loader": "^4.0.0", + "react-refresh": "^0.10.0", + "sass": "^1.0.0", + "sass-loader": "^12.0.0", + "sax": "^1.0.0", + "source-map": "^0.7.0", + "terser-webpack-plugin": "^5.0.0", + "ts-dedent": "^2.0.0", + "ts-loader": "^9.0.0", + "vue-loader": "^15.0.0", + "webpack": "^5.0.0", + "webpack-bundle-analyzer": "^4.0.0", + "webpack-chain": "^6.0.0", + "webpack-cli": "^4.0.0", + "webpack-merge": "^5.0.0", + "webpack-virtual-modules": "^0.4.0" }, "bin": { "nativescript-webpack": "dist/bin/index.js" @@ -512,28 +526,13 @@ } } }, - "node_modules/@nativescript/webpack/node_modules/sass": { - "version": "1.32.8", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.8.tgz", - "integrity": "sha512-Sl6mIeGpzjIUZqvKnKETfMf0iDAswD9TNlv13A7aAF3XZlRPMq4VvJWBC2N2DXbp94MQVdNSFG6LfF/iOXrPHQ==", - "dev": true, - "dependencies": { - "chokidar": ">=2.0.0 <4.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=8.9.0" - } - }, "node_modules/@nodelib/fs.scandir": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", - "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "dependencies": { - "@nodelib/fs.stat": "2.0.4", + "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" }, "engines": { @@ -541,21 +540,21 @@ } }, "node_modules/@nodelib/fs.stat": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", - "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz", + "integrity": "sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA==", "dev": true, "dependencies": { - "@nodelib/fs.scandir": "2.1.4", + "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" }, "engines": { @@ -621,9 +620,9 @@ "integrity": "sha512-LKwlNaIWJPEbFKsPwA5vndqrKBUqE9dK9wdi/LsHs0Nl6pfMI7fPkBPoGW7UvVSMqy4s4d35Q0FDbKXR1t796A==" }, "node_modules/@types/eslint": { - "version": "7.2.11", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.11.tgz", - "integrity": "sha512-WYhv//5K8kQtsSc9F1Kn2vHzhYor6KpwPbARH7hwYe3C3ETD0EVx/3P5qQybUoaBEuUa9f/02JjBiXFWalYUmw==", + "version": "7.2.13", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.13.tgz", + "integrity": "sha512-LKmQCWAlnVHvvXq4oasNUMTJJb2GwSyTY8+1C7OH5ILR8mPLaljv1jxL1bXW3xB3jFbQxTKxJAvI8PyjB09aBg==", "dev": true, "dependencies": { "@types/estree": "*", @@ -641,9 +640,9 @@ } }, "node_modules/@types/estree": { - "version": "0.0.46", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz", - "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==", + "version": "0.0.47", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.47.tgz", + "integrity": "sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg==", "dev": true }, "node_modules/@types/json-schema": { @@ -653,9 +652,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "15.6.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-15.6.1.tgz", - "integrity": "sha512-7EIraBEyRHEe7CH+Fm1XvgqU6uwZN8Q7jppJGcqjROMT29qhAuuOxYB1uEY5UMYQKEmA5D+5tBnhdaPXSsLONA==", + "version": "15.12.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.1.tgz", + "integrity": "sha512-zyxJM8I1c9q5sRMtVF+zdd13Jt6RU4r4qfhTd7lQubyThvLfx6yYekWSQjGCGV2Tkecgxnlpl/DNlb6Hg+dmEw==", "dev": true }, "node_modules/@types/parse-json": { @@ -979,9 +978,9 @@ "dev": true }, "node_modules/acorn": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.2.4.tgz", - "integrity": "sha512-Ibt84YwBDDA890eDiDCEqcbwvHlBvzzDkU2cGBBDDI1QWT12jTiXIOn2CIw5KK4i6N5Z2HUxwYjzriDyqaqqZg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.3.0.tgz", + "integrity": "sha512-tqPKHZ5CaBJw0Xmy0ZZvLs1qTV+BNFSyvn77ASXkpBNfIRk8ev26fKrD9iLGwGA9zedPao52GSHzq8lyZG0NUw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -1098,15 +1097,6 @@ "ajv": "^6.9.1" } }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-html": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", @@ -1375,22 +1365,10 @@ "node": ">=6" } }, - "node_modules/camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/caniuse-lite": { - "version": "1.0.30001230", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001230.tgz", - "integrity": "sha512-5yBd5nWCBS+jWKTcHOzXwo5xzcj4ePE/yjtkZyUV1BTUmrBaA9MRGC+e7mxnqXSA90CmCA8L3eKLaSUkt099IQ==", + "version": "1.0.30001234", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001234.tgz", + "integrity": "sha512-a3gjUVKkmwLdNysa1xkUAwN2VfJUJyVW47rsi3aCbkRCtbHAfo+rOsCqVw29G6coQ8gzAPb5XBXwiGHwme3isA==", "dev": true, "funding": { "type": "opencollective", @@ -1398,9 +1376,9 @@ } }, "node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -1434,6 +1412,18 @@ "fsevents": "~2.3.1" } }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", @@ -1555,13 +1545,13 @@ } }, "node_modules/copy-webpack-plugin": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-8.1.1.tgz", - "integrity": "sha512-rYM2uzRxrLRpcyPqGceRBDpxxUV8vcDqIKxAUKfcnFpcrPxT5+XvhTxv7XLjo5AvEJFPdAE3zCogG2JVahqgSQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.0.0.tgz", + "integrity": "sha512-k8UB2jLIb1Jip2nZbCz83T/XfhfjX6mB1yLJNYKrpYi7FQimfOoFv/0//iT6HV1K8FwUB5yUbCcnpLebJXJTug==", "dev": true, "dependencies": { "fast-glob": "^3.2.5", - "glob-parent": "^5.1.1", + "glob-parent": "^6.0.0", "globby": "^11.0.3", "normalize-path": "^3.0.0", "p-limit": "^3.1.0", @@ -1569,7 +1559,7 @@ "serialize-javascript": "^5.0.1" }, "engines": { - "node": ">= 10.13.0" + "node": ">= 12.13.0" }, "funding": { "type": "opencollective", @@ -1597,12 +1587,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, "node_modules/cosmiconfig": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", @@ -1650,23 +1634,21 @@ } }, "node_modules/css-loader": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.1.tgz", - "integrity": "sha512-YCyRzlt/jgG1xanXZDG/DHqAueOtXFHeusP9TS478oP1J++JSKOyEgGW1GHVoCj/rkS+GWOlBwqQJBr9yajQ9w==", + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.6.tgz", + "integrity": "sha512-0wyN5vXMQZu6BvjbrPdUJvkCzGEO24HC7IS7nW4llc6BBFC+zwR9CKtYGv63Puzsg10L/o12inMY5/2ByzfD6w==", "dev": true, "dependencies": { - "camelcase": "^6.2.0", - "cssesc": "^3.0.0", "icss-utils": "^5.1.0", "loader-utils": "^2.0.0", - "postcss": "^8.2.8", + "postcss": "^8.2.15", "postcss-modules-extract-imports": "^3.0.0", "postcss-modules-local-by-default": "^4.0.0", "postcss-modules-scope": "^3.0.0", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.1.0", "schema-utils": "^3.0.0", - "semver": "^7.3.4" + "semver": "^7.3.5" }, "engines": { "node": ">= 10.13.0" @@ -1847,21 +1829,21 @@ } }, "node_modules/dotenv-defaults": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-2.0.1.tgz", - "integrity": "sha512-ugFCyBF7ILuwpmznduHPQZBMucHHJ8T4OBManTEVjemxCm2+nqifSuW2lD2SNKdiKSH1E324kZSdJ8M04b4I/A==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz", + "integrity": "sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg==", "dev": true, "dependencies": { "dotenv": "^8.2.0" } }, "node_modules/dotenv-webpack": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-7.0.2.tgz", - "integrity": "sha512-RY+/5uM/XY4bGtih9f9ic8hlrUDxVcZZBPWlnX/aHhaKxcVVX9SH/5VH7CSmvVo9GL6PKvQOA0X1bc552rnatQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-7.0.3.tgz", + "integrity": "sha512-O0O9pOEwrk+n1zzR3T2uuXRlw64QxHSPeNN1GaiNBloQFNaCUL9V8jxSVz4jlXXFP/CIqK8YecWf8BAvsSgMjw==", "dev": true, "dependencies": { - "dotenv-defaults": "^2.0.1" + "dotenv-defaults": "^2.0.2" }, "engines": { "node": ">=10" @@ -1877,9 +1859,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.3.739", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.739.tgz", - "integrity": "sha512-+LPJVRsN7hGZ9EIUUiWCpO7l4E3qBYHNadazlucBfsXBbccDFNKUBAgzE68FnkWGJPwD/AfKhSzL+G+Iqb8A4A==", + "version": "1.3.748", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.748.tgz", + "integrity": "sha512-fmIKfYALVeEybk/L2ucdgt7jN3JsbGtg3K9pmF/MRWgkeADBI1VSAa5IzdG2gZwTxsnsrFtdMpOTSM5mrBRKVQ==", "dev": true }, "node_modules/emoji-regex": { @@ -1898,29 +1880,25 @@ } }, "node_modules/enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz", + "integrity": "sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=10.13.0" } }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "node_modules/enhanced-resolve/node_modules/tapable": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", + "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, "engines": { - "node": ">=8.6" + "node": ">=6" } }, "node_modules/envinfo": { @@ -1935,18 +1913,6 @@ "node": ">=4" } }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -2042,9 +2008,9 @@ } }, "node_modules/execa": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", - "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "dependencies": { "cross-spawn": "^7.0.3", @@ -2087,6 +2053,18 @@ "node": ">=8" } }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -2151,9 +2129,9 @@ } }, "node_modules/fork-ts-checker-webpack-plugin": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.2.1.tgz", - "integrity": "sha512-Pyhn2kav/Y2g6I7aInABgcph/B78jjdXc4kGHzaAUBL4UVthknxM6aMH47JwpnuTJmdOuf6p5vMbIahsBHuWGg==", + "version": "6.2.10", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.2.10.tgz", + "integrity": "sha512-HveFCHWSH2WlYU1tU3PkrupvW8lNFMTfH3Jk0TfC2mtktE9ibHGcifhCsCFvj+kqlDfNIlwmNLiNqR9jnSA7OQ==", "dev": true, "dependencies": { "@babel/code-frame": "^7.8.3", @@ -2163,6 +2141,7 @@ "cosmiconfig": "^6.0.0", "deepmerge": "^4.2.2", "fs-extra": "^9.0.0", + "glob": "^7.1.6", "memfs": "^3.1.2", "minimatch": "^3.0.4", "schema-utils": "2.7.0", @@ -2321,15 +2300,15 @@ } }, "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.0.tgz", + "integrity": "sha512-Hdd4287VEJcZXUwv1l8a+vXC1GjOQqXe+VS30w/ypihpcnu9M1n3xeYeJu5CBpeEQj2nAab2xxz28GuA3vp4Ww==", "dev": true, "dependencies": { "is-glob": "^4.0.1" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" } }, "node_modules/glob-to-regexp": { @@ -2425,9 +2404,9 @@ } }, "node_modules/highlight.js": { - "version": "10.7.2", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.2.tgz", - "integrity": "sha512-oFLl873u4usRM9K63j4ME9u3etNF0PLiJhSQ8rdfuL51Wn3zkD6drf9ZW0dOzjnZI22YYG24z30JcmfCZjMgYg==", + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", "dev": true, "engines": { "node": "*" @@ -2614,12 +2593,6 @@ "node": ">=8" } }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -2642,19 +2615,34 @@ "dev": true }, "node_modules/jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "version": "27.0.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.2.tgz", + "integrity": "sha512-EoBdilOTTyOgmHXtw/cPc+ZrCA0KJMrkXzkrPGNwLmnvvlN1nj7MPrxpT7m+otSv2e1TLaVffzDnE/LB14zJMg==", "dev": true, "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" + "supports-color": "^8.0.0" }, "engines": { "node": ">= 10.13.0" } }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -2836,19 +2824,6 @@ "node": ">= 4.0.0" } }, - "node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, "node_modules/merge-source-map": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", @@ -2908,21 +2883,21 @@ } }, "node_modules/mime-db": { - "version": "1.47.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", - "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", + "version": "1.48.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", + "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", "dev": true, "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.30", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", - "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", + "version": "2.1.31", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", + "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", "dev": true, "dependencies": { - "mime-db": "1.47.0" + "mime-db": "1.48.0" }, "engines": { "node": ">= 0.6" @@ -3295,14 +3270,14 @@ } }, "node_modules/postcss": { - "version": "8.2.10", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.10.tgz", - "integrity": "sha512-b/h7CPV7QEdrqIxtAf2j31U5ef05uBDuvoXv6L51Q4rcS1jdlXAVKJv+atCFdUXYl9dyTHGyoMzIepwowRJjFw==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.0.tgz", + "integrity": "sha512-+ogXpdAjWGa+fdYY5BQ96V/6tAo+TdSSIMP5huJBIygdWwKtVoB5JWZ7yUd4xZ8r+8Kvvx4nyg/PQ071H4UtcQ==", "dev": true, "dependencies": { "colorette": "^1.2.2", - "nanoid": "^3.1.22", - "source-map": "^0.6.1" + "nanoid": "^3.1.23", + "source-map-js": "^0.6.2" }, "engines": { "node": "^10 || ^12 || >=14" @@ -3313,9 +3288,9 @@ } }, "node_modules/postcss-import": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.1.tgz", - "integrity": "sha512-Xn2+z++vWObbEPhiiKO1a78JiyhqipyrXHBb3AHpv0ks7Cdg+GxQQJ24ODNMTanldf7197gSP3axppO9yaG0lA==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.2.tgz", + "integrity": "sha512-BJ2pVK4KhUyMcqjuKs9RijV5tatNzNa73e/32aBVE/ejYPe37iH+6vAu9WvqUkB5OAYgLHzbSvzHnorybJCm9g==", "dev": true, "dependencies": { "postcss-value-parser": "^4.0.0", @@ -3330,9 +3305,9 @@ } }, "node_modules/postcss-loader": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-5.2.0.tgz", - "integrity": "sha512-uSuCkENFeUaOYsKrXm0eNNgVIxc71z8RcckLMbVw473rGojFnrUeqEz6zBgXsH2q1EIzXnO/4pEz9RhALjlITA==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-5.3.0.tgz", + "integrity": "sha512-/+Z1RAmssdiSLgIZwnJHwBMnlABPgF7giYzTN2NOfr9D21IJZ4mQC1R2miwp80zno9M4zMD/umGI8cR+2EL5zw==", "dev": true, "dependencies": { "cosmiconfig": "^7.0.0", @@ -3478,15 +3453,6 @@ "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, - "node_modules/postcss/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/prettier": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", @@ -3500,18 +3466,6 @@ "node": ">=4" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, "node_modules/pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -3621,21 +3575,6 @@ "pify": "^2.3.0" } }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, "node_modules/readdirp": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", @@ -3766,9 +3705,9 @@ "dev": true }, "node_modules/sass": { - "version": "1.34.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.34.0.tgz", - "integrity": "sha512-rHEN0BscqjUYuomUEaqq3BMgsXqQfkcMVR7UhscsAVub0/spUrZGBMxQXFS2kfiDsPLZw5yuU9iJEFNC2x38Qw==", + "version": "1.34.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.34.1.tgz", + "integrity": "sha512-scLA7EIZM+MmYlej6sdVr0HRbZX5caX5ofDT9asWnUJj21oqgsC+1LuNfm0eg+vM0fCTZHhwImTiCU0sx9h9CQ==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0" @@ -3781,16 +3720,16 @@ } }, "node_modules/sass-loader": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-11.0.1.tgz", - "integrity": "sha512-Vp1LcP4slTsTNLEiDkTcm8zGN/XYYrZz2BZybQbliWA8eXveqA/AxsEjllQTpJbg2MzCsx/qNO48sHdZtOaxTw==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.0.0.tgz", + "integrity": "sha512-LJQMyDdNdhcvoO2gJFw7KpTaioVFDeRJOuatRDUNgCIqyu4s4kgDsNofdGzAZB1zFOgo/p3fy+aR/uGXamcJBg==", "dev": true, "dependencies": { "klona": "^2.0.4", "neo-async": "^2.6.2" }, "engines": { - "node": ">= 10.13.0" + "node": ">= 12.13.0" }, "funding": { "type": "opencollective", @@ -3798,7 +3737,7 @@ }, "peerDependencies": { "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0", "sass": "^1.3.0", "webpack": "^5.0.0" }, @@ -3951,6 +3890,15 @@ "node": ">= 8" } }, + "node_modules/source-map-js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-resolve": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", @@ -3997,15 +3945,6 @@ "node": ">= 0.10.0" } }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/string-width": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", @@ -4080,17 +4019,17 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz", - "integrity": "sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.3.tgz", + "integrity": "sha512-cxGbMqr6+A2hrIB5ehFIF+F/iST5ZOxvOmy9zih9ySbP1C2oEWQSOUS+2SNBTjzx5xLKO4xnod9eywdfq1Nb9A==", "dev": true, "dependencies": { - "jest-worker": "^26.6.2", + "jest-worker": "^27.0.2", "p-limit": "^3.1.0", "schema-utils": "^3.0.0", "serialize-javascript": "^5.0.1", "source-map": "^0.6.1", - "terser": "^5.5.1" + "terser": "^5.7.0" }, "engines": { "node": ">= 10.13.0" @@ -4197,23 +4136,22 @@ } }, "node_modules/ts-loader": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.1.0.tgz", - "integrity": "sha512-YiQipGGAFj2zBfqLhp28yUvPP9jUGqHxRzrGYuc82Z2wM27YIHbElXiaZDc93c3x0mz4zvBmS6q/DgExpdj37A==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.2.tgz", + "integrity": "sha512-hNIhGTQHtNKjOzR2ZtQ2OSVbXPykOae+zostf1IlHCf61Mt41GMJurKNqrYUbzHgpmj6UWRu8eBfb7q0XliV0g==", "dev": true, "dependencies": { "chalk": "^4.1.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^2.0.0", + "enhanced-resolve": "^5.0.0", "micromatch": "^4.0.0", "semver": "^7.3.4" }, "engines": { - "node": ">=10.0.0" + "node": ">=12.0.0" }, "peerDependencies": { "typescript": "*", - "webpack": "*" + "webpack": "^5.0.0" } }, "node_modules/ts-loader/node_modules/lru-cache": { @@ -4280,9 +4218,9 @@ "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" }, "node_modules/typescript": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", - "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.2.tgz", + "integrity": "sha512-zZ4hShnmnoVnAHpVHWpTcxdv7dWP60S2FsydQLV8V5PbS3FifjWFFRiHSWpDJahly88PRyV5teTSLoq4eG7mKw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -4323,9 +4261,9 @@ "dev": true }, "node_modules/vue": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.12.tgz", - "integrity": "sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg==", + "version": "2.6.13", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.13.tgz", + "integrity": "sha512-O+pAdJkce1ooYS1XyoQtpBQr9An+Oys3w39rkqxukVO3ZD1ilYJkWBGoRuadiQEm2LLJnCL2utV4TMSf52ubjw==", "dev": true }, "node_modules/vue-hot-reload-api": { @@ -4335,9 +4273,9 @@ "dev": true }, "node_modules/vue-loader": { - "version": "15.9.6", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.6.tgz", - "integrity": "sha512-j0cqiLzwbeImIC6nVIby2o/ABAWhlppyL/m5oJ67R5MloP0hj/DtFgb0Zmq3J9CG7AJ+AXIvHVnJAPBvrLyuDg==", + "version": "15.9.7", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.7.tgz", + "integrity": "sha512-qzlsbLV1HKEMf19IqCJqdNvFJRCI58WNbS6XbPqK13MrLz65es75w392MSQ5TsARAfIjUw+ATm3vlCXUJSOH9Q==", "dev": true, "dependencies": { "@vue/component-compiler-utils": "^3.1.0", @@ -4449,22 +4387,22 @@ } }, "node_modules/webpack": { - "version": "5.31.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.31.2.tgz", - "integrity": "sha512-0bCQe4ybo7T5Z0SC5axnIAH+1WuIdV4FwLYkaAlLtvfBhIx8bPS48WHTfiRZS1VM+pSiYt7e/rgLs3gLrH82lQ==", + "version": "5.38.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.38.1.tgz", + "integrity": "sha512-OqRmYD1OJbHZph6RUMD93GcCZy4Z4wC0ele4FXyYF0J6AxO1vOSuIlU1hkS/lDlR9CDYBz64MZRmdbdnFFoT2g==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.46", + "@types/estree": "^0.0.47", "@webassemblyjs/ast": "1.11.0", "@webassemblyjs/wasm-edit": "1.11.0", "@webassemblyjs/wasm-parser": "1.11.0", - "acorn": "^8.0.4", + "acorn": "^8.2.1", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.7.0", + "enhanced-resolve": "^5.8.0", "es-module-lexer": "^0.4.0", - "eslint-scope": "^5.1.1", + "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.4", @@ -4475,8 +4413,8 @@ "schema-utils": "^3.0.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.1.1", - "watchpack": "^2.0.0", - "webpack-sources": "^2.1.1" + "watchpack": "^2.2.0", + "webpack-sources": "^2.3.0" }, "bin": { "webpack": "bin/webpack.js" @@ -4495,9 +4433,9 @@ } }, "node_modules/webpack-bundle-analyzer": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.4.0.tgz", - "integrity": "sha512-9DhNa+aXpqdHk8LkLPTBU/dMfl84Y+WE2+KnfI6rSpNRNVKa0VGLjPd2pjFubDeqnWmulFggxmWBxhfJXZnR0g==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.4.2.tgz", + "integrity": "sha512-PIagMYhlEzFfhMYOzs5gFT55DkUdkyrJi/SxJp8EF3YMWhS+T9vvs2EoTetpk5qb6VsCq02eXTlRDOydRhDFAQ==", "dev": true, "dependencies": { "acorn": "^8.0.4", @@ -4549,18 +4487,17 @@ } }, "node_modules/webpack-cli": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.6.0.tgz", - "integrity": "sha512-9YV+qTcGMjQFiY7Nb1kmnupvb1x40lfpj8pwdO/bom+sQiP4OBMKjHq29YQrlDWDPZO9r/qWaRRywKaRDKqBTA==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.7.0.tgz", + "integrity": "sha512-7bKr9182/sGfjFm+xdZSwgQuFjgEcy0iCTIBxRUeteJ2Kr8/Wz0qNJX+jw60LU36jApt4nmMkep6+W5AKhok6g==", "dev": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.0.2", - "@webpack-cli/info": "^1.2.3", - "@webpack-cli/serve": "^1.3.1", + "@webpack-cli/configtest": "^1.0.3", + "@webpack-cli/info": "^1.2.4", + "@webpack-cli/serve": "^1.4.0", "colorette": "^1.2.1", "commander": "^7.0.0", - "enquirer": "^2.3.6", "execa": "^5.0.0", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", @@ -4607,9 +4544,9 @@ } }, "node_modules/webpack-sources": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", - "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.0.tgz", + "integrity": "sha512-WyOdtwSvOML1kbgtXbTDnEW0jkJ7hZr/bDByIwszhWd/4XX1A3XMkrbFMsuH4+/MfLlZCUzlAdg4r7jaGKEIgQ==", "dev": true, "dependencies": { "source-list-map": "^2.0.1", @@ -4629,24 +4566,11 @@ } }, "node_modules/webpack-virtual-modules": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.2.tgz", - "integrity": "sha512-OUsT1VZhArN8nY7g6mMlw91HWnXcNXsIQjsQ83WteF4ViZ6YXqF2sWKOTDIZ0H+PPiApQdszLdZIrD7NNlU0Yw==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.3.tgz", + "integrity": "sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw==", "dev": true }, - "node_modules/webpack/node_modules/enhanced-resolve": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz", - "integrity": "sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/webpack/node_modules/schema-utils": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", @@ -4845,26 +4769,26 @@ } }, "@babel/compat-data": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz", - "integrity": "sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q==", + "version": "7.14.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.4.tgz", + "integrity": "sha512-i2wXrWQNkH6JplJQGn3Rd2I4Pij8GdHkXwHMxm+zV5YG/Jci+bCNrWZEWC4o+umiDkRrRs4dVzH3X4GP7vyjQQ==", "dev": true }, "@babel/core": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.15.tgz", - "integrity": "sha512-6GXmNYeNjS2Uz+uls5jalOemgIhnTMeaXo+yBUA72kC2uX/8VW6XyhVIo2L8/q0goKQA3EVKx0KOQpVKSeWadQ==", + "version": "7.14.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.3.tgz", + "integrity": "sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.15", + "@babel/generator": "^7.14.3", + "@babel/helper-compilation-targets": "^7.13.16", + "@babel/helper-module-transforms": "^7.14.2", + "@babel/helpers": "^7.14.0", + "@babel/parser": "^7.14.3", "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.15", - "@babel/types": "^7.13.14", + "@babel/traverse": "^7.14.2", + "@babel/types": "^7.14.2", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -4901,14 +4825,14 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.13.16", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz", - "integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==", + "version": "7.14.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.4.tgz", + "integrity": "sha512-JgdzOYZ/qGaKTVkn5qEDV/SXAh8KcyUVkCoSWGN8T3bwrgd6m+/dJa2kVGi6RJYJgEYPBdZ84BZp9dUjNWkBaA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.15", + "@babel/compat-data": "^7.14.4", "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "browserslist": "^4.16.6", "semver": "^6.3.0" } }, @@ -4976,15 +4900,15 @@ } }, "@babel/helper-replace-supers": { - "version": "7.14.3", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.3.tgz", - "integrity": "sha512-Rlh8qEWZSTfdz+tgNV/N4gz1a0TMNwCUcENhMjHTHKp3LseYH5Jha0NSlyTQWMnjbYcwFt+bqAMqSLHVXkQ6UA==", + "version": "7.14.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.4.tgz", + "integrity": "sha512-zZ7uHCWlxfEAAOVDYQpEf/uyi1dmeC7fX4nCf2iz9drnCwi1zvwXL3HwWWNXUQEJ1k23yVn3VbddiI9iJEXaTQ==", "dev": true, "requires": { "@babel/helper-member-expression-to-functions": "^7.13.12", "@babel/helper-optimise-call-expression": "^7.12.13", "@babel/traverse": "^7.14.2", - "@babel/types": "^7.14.2" + "@babel/types": "^7.14.4" } }, "@babel/helper-simple-access": { @@ -5092,9 +5016,9 @@ } }, "@babel/parser": { - "version": "7.14.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.3.tgz", - "integrity": "sha512-7MpZDIfI7sUC5zWo2+foJ50CSI5lcqDehZ0lVgIhSi4bFEk94fLAKlF3Q0nzSQQ+ca0lm+O6G9ztKVBeu8PMRQ==", + "version": "7.14.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.4.tgz", + "integrity": "sha512-ArliyUsWDUqEGfWcmzpGUzNfLxTdTp6WU4IuP6QFSp9gGfWS6boxFCkJSJ/L4+RG8z/FnIU3WxCk6hPL9SSWeA==", "dev": true }, "@babel/template": { @@ -5125,9 +5049,9 @@ } }, "@babel/types": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.2.tgz", - "integrity": "sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw==", + "version": "7.14.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.4.tgz", + "integrity": "sha512-lCj4aIs0xUefJFQnwwQv2Bxg7Omd6bgquZ6LGC+gGMh6/s5qDVfjuCMlDmYQ15SLsWHd9n+X3E75lKIhl5Lkiw==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.14.0", @@ -5145,6 +5069,21 @@ "resolved": "https://registry.npmjs.org/@nativescript-community/ui-collectionview/-/ui-collectionview-4.0.31.tgz", "integrity": "sha512-kWtupfe+zr2Vj5hLfie/xxlFYLtLbBS6WrDBUD9z1cJYIZRf9KQxwl8z4wJ2dtQ51dlt1r8CJZgpgRbMTk5xQA==" }, + "@nativescript-rtl/ui": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@nativescript-rtl/ui/-/ui-0.1.8.tgz", + "integrity": "sha512-GUmRHuwI0vJ1IKUH1ilm2SmPo8iv6o5PhA4LxmNnysODuiJywnnNfE9yFpoecBsDOMRVT6M/dlV26+3DfO4Rbw==", + "requires": { + "@types/node": "^14.6.4" + }, + "dependencies": { + "@types/node": { + "version": "14.17.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.2.tgz", + "integrity": "sha512-sld7b/xmFum66AAKuz/rp/CUO8+98fMpyQ3SBfzzBNGMd/1iHBTAg9oyAvcYlAj46bpc74r91jSw2iFdnx29nw==" + } + } + }, "@nativescript/android": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@nativescript/android/-/android-8.0.0.tgz", @@ -5152,9 +5091,9 @@ "dev": true }, "@nativescript/core": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@nativescript/core/-/core-8.0.6.tgz", - "integrity": "sha512-w9fmuzUrKUblHbkmApMNWExgFZewZCnwf8A2ymcdLsftvljXrDhztbIgQD4aDis61OaqE1N42UToYPpUkaw5pw==", + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/@nativescript/core/-/core-8.0.7.tgz", + "integrity": "sha512-2OLwPa5Y+9aKLyo0zWl0YSjWS0f+EFG8SdZe+uuU2mzEhCb8q9djdICjHynuXZkmrtQsx/lKjLhbtnoYQsMRvA==", "requires": { "@nativescript/hook": "~2.0.0", "css-tree": "^1.1.2", @@ -5218,82 +5157,71 @@ "dev": true }, "@nativescript/webpack": { - "version": "5.0.0-beta.10", - "resolved": "https://registry.npmjs.org/@nativescript/webpack/-/webpack-5.0.0-beta.10.tgz", - "integrity": "sha512-j/NlhVCZi/8N5IQQbPjSRWPc3a7zSW8NTc0LsxbidsBPqeTiX1wUq5ajmNv/ctmbiNRsjmB9wTDwDxowormr2Q==", + "version": "5.0.0-dev.0", + "resolved": "https://registry.npmjs.org/@nativescript/webpack/-/webpack-5.0.0-dev.0.tgz", + "integrity": "sha512-pJhuzm+sqMBrr+MHAm6qQclvHo6evK8IsqBpZ8s2e5O/Bk0HbtPdKJdiNQuw2TRHWpWJ1Rkp3Nc8lnZsoxK7VQ==", "dev": true, "requires": { - "@babel/core": "7.13.15", - "@pmmmwh/react-refresh-webpack-plugin": "0.4.3", - "acorn": "^8.1.1", + "@babel/core": "^7.0.0", + "@pmmmwh/react-refresh-webpack-plugin": "^0.4.0", + "acorn": "^8.0.0", "acorn-stage3": "^4.0.0", - "babel-loader": "8.2.2", - "chalk": "4.1.0", - "cli-highlight": "2.1.11", - "commander": "7.2.0", - "copy-webpack-plugin": "8.1.1", - "css": "3.0.0", - "css-loader": "5.2.1", - "dotenv-webpack": "7.0.2", - "fork-ts-checker-webpack-plugin": "6.2.1", - "loader-utils": "2.0.0", - "lodash.get": "4.4.2", - "micromatch": "4.0.4", - "postcss": "8.2.10", - "postcss-import": "14.0.1", - "postcss-loader": "5.2.0", - "raw-loader": "4.0.2", - "react-refresh": "0.10.0", - "sass": "1.32.8", - "sass-loader": "11.0.1", - "sax": "1.2.4", - "source-map": "0.7.3", - "terser-webpack-plugin": "5.1.1", - "ts-dedent": "2.1.1", - "ts-loader": "8.1.0", - "vue-loader": "15.9.6", - "webpack": "5.31.2", - "webpack-bundle-analyzer": "4.4.0", - "webpack-chain": "6.5.1", - "webpack-cli": "4.6.0", - "webpack-merge": "5.7.3", - "webpack-virtual-modules": "0.4.2" - }, - "dependencies": { - "sass": { - "version": "1.32.8", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.8.tgz", - "integrity": "sha512-Sl6mIeGpzjIUZqvKnKETfMf0iDAswD9TNlv13A7aAF3XZlRPMq4VvJWBC2N2DXbp94MQVdNSFG6LfF/iOXrPHQ==", - "dev": true, - "requires": { - "chokidar": ">=2.0.0 <4.0.0" - } - } + "babel-loader": "^8.0.0", + "chalk": "^4.0.0", + "cli-highlight": "^2.0.0", + "commander": "^7.0.0", + "copy-webpack-plugin": "^9.0.0", + "css": "^3.0.0", + "css-loader": "^5.0.0", + "dotenv-webpack": "^7.0.0", + "fork-ts-checker-webpack-plugin": "^6.0.0", + "loader-utils": "^2.0.0", + "lodash.get": "^4.0.0", + "micromatch": "^4.0.0", + "postcss": "^8.0.0", + "postcss-import": "^14.0.0", + "postcss-loader": "^5.0.0", + "raw-loader": "^4.0.0", + "react-refresh": "^0.10.0", + "sass": "^1.0.0", + "sass-loader": "^12.0.0", + "sax": "^1.0.0", + "source-map": "^0.7.0", + "terser-webpack-plugin": "^5.0.0", + "ts-dedent": "^2.0.0", + "ts-loader": "^9.0.0", + "vue-loader": "^15.0.0", + "webpack": "^5.0.0", + "webpack-bundle-analyzer": "^4.0.0", + "webpack-chain": "^6.0.0", + "webpack-cli": "^4.0.0", + "webpack-merge": "^5.0.0", + "webpack-virtual-modules": "^0.4.0" } }, "@nodelib/fs.scandir": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", - "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "requires": { - "@nodelib/fs.stat": "2.0.4", + "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "@nodelib/fs.stat": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true }, "@nodelib/fs.walk": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", - "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz", + "integrity": "sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA==", "dev": true, "requires": { - "@nodelib/fs.scandir": "2.1.4", + "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, @@ -5323,9 +5251,9 @@ "integrity": "sha512-LKwlNaIWJPEbFKsPwA5vndqrKBUqE9dK9wdi/LsHs0Nl6pfMI7fPkBPoGW7UvVSMqy4s4d35Q0FDbKXR1t796A==" }, "@types/eslint": { - "version": "7.2.11", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.11.tgz", - "integrity": "sha512-WYhv//5K8kQtsSc9F1Kn2vHzhYor6KpwPbARH7hwYe3C3ETD0EVx/3P5qQybUoaBEuUa9f/02JjBiXFWalYUmw==", + "version": "7.2.13", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.13.tgz", + "integrity": "sha512-LKmQCWAlnVHvvXq4oasNUMTJJb2GwSyTY8+1C7OH5ILR8mPLaljv1jxL1bXW3xB3jFbQxTKxJAvI8PyjB09aBg==", "dev": true, "requires": { "@types/estree": "*", @@ -5343,9 +5271,9 @@ } }, "@types/estree": { - "version": "0.0.46", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz", - "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==", + "version": "0.0.47", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.47.tgz", + "integrity": "sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg==", "dev": true }, "@types/json-schema": { @@ -5355,9 +5283,9 @@ "dev": true }, "@types/node": { - "version": "15.6.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-15.6.1.tgz", - "integrity": "sha512-7EIraBEyRHEe7CH+Fm1XvgqU6uwZN8Q7jppJGcqjROMT29qhAuuOxYB1uEY5UMYQKEmA5D+5tBnhdaPXSsLONA==", + "version": "15.12.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.1.tgz", + "integrity": "sha512-zyxJM8I1c9q5sRMtVF+zdd13Jt6RU4r4qfhTd7lQubyThvLfx6yYekWSQjGCGV2Tkecgxnlpl/DNlb6Hg+dmEw==", "dev": true }, "@types/parse-json": { @@ -5643,9 +5571,9 @@ "dev": true }, "acorn": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.2.4.tgz", - "integrity": "sha512-Ibt84YwBDDA890eDiDCEqcbwvHlBvzzDkU2cGBBDDI1QWT12jTiXIOn2CIw5KK4i6N5Z2HUxwYjzriDyqaqqZg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.3.0.tgz", + "integrity": "sha512-tqPKHZ5CaBJw0Xmy0ZZvLs1qTV+BNFSyvn77ASXkpBNfIRk8ev26fKrD9iLGwGA9zedPao52GSHzq8lyZG0NUw==", "dev": true }, "acorn-class-fields": { @@ -5716,12 +5644,6 @@ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, "ansi-html": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", @@ -5907,22 +5829,16 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, - "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", - "dev": true - }, "caniuse-lite": { - "version": "1.0.30001230", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001230.tgz", - "integrity": "sha512-5yBd5nWCBS+jWKTcHOzXwo5xzcj4ePE/yjtkZyUV1BTUmrBaA9MRGC+e7mxnqXSA90CmCA8L3eKLaSUkt099IQ==", + "version": "1.0.30001234", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001234.tgz", + "integrity": "sha512-a3gjUVKkmwLdNysa1xkUAwN2VfJUJyVW47rsi3aCbkRCtbHAfo+rOsCqVw29G6coQ8gzAPb5XBXwiGHwme3isA==", "dev": true }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -5943,6 +5859,17 @@ "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.5.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } } }, "chrome-trace-event": { @@ -6044,13 +5971,13 @@ } }, "copy-webpack-plugin": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-8.1.1.tgz", - "integrity": "sha512-rYM2uzRxrLRpcyPqGceRBDpxxUV8vcDqIKxAUKfcnFpcrPxT5+XvhTxv7XLjo5AvEJFPdAE3zCogG2JVahqgSQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.0.0.tgz", + "integrity": "sha512-k8UB2jLIb1Jip2nZbCz83T/XfhfjX6mB1yLJNYKrpYi7FQimfOoFv/0//iT6HV1K8FwUB5yUbCcnpLebJXJTug==", "dev": true, "requires": { "fast-glob": "^3.2.5", - "glob-parent": "^5.1.1", + "glob-parent": "^6.0.0", "globby": "^11.0.3", "normalize-path": "^3.0.0", "p-limit": "^3.1.0", @@ -6071,12 +5998,6 @@ } } }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, "cosmiconfig": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", @@ -6126,23 +6047,21 @@ } }, "css-loader": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.1.tgz", - "integrity": "sha512-YCyRzlt/jgG1xanXZDG/DHqAueOtXFHeusP9TS478oP1J++JSKOyEgGW1GHVoCj/rkS+GWOlBwqQJBr9yajQ9w==", + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.6.tgz", + "integrity": "sha512-0wyN5vXMQZu6BvjbrPdUJvkCzGEO24HC7IS7nW4llc6BBFC+zwR9CKtYGv63Puzsg10L/o12inMY5/2ByzfD6w==", "dev": true, "requires": { - "camelcase": "^6.2.0", - "cssesc": "^3.0.0", "icss-utils": "^5.1.0", "loader-utils": "^2.0.0", - "postcss": "^8.2.8", + "postcss": "^8.2.15", "postcss-modules-extract-imports": "^3.0.0", "postcss-modules-local-by-default": "^4.0.0", "postcss-modules-scope": "^3.0.0", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.1.0", "schema-utils": "^3.0.0", - "semver": "^7.3.4" + "semver": "^7.3.5" }, "dependencies": { "lru-cache": { @@ -6257,21 +6176,21 @@ "dev": true }, "dotenv-defaults": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-2.0.1.tgz", - "integrity": "sha512-ugFCyBF7ILuwpmznduHPQZBMucHHJ8T4OBManTEVjemxCm2+nqifSuW2lD2SNKdiKSH1E324kZSdJ8M04b4I/A==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz", + "integrity": "sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg==", "dev": true, "requires": { "dotenv": "^8.2.0" } }, "dotenv-webpack": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-7.0.2.tgz", - "integrity": "sha512-RY+/5uM/XY4bGtih9f9ic8hlrUDxVcZZBPWlnX/aHhaKxcVVX9SH/5VH7CSmvVo9GL6PKvQOA0X1bc552rnatQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-7.0.3.tgz", + "integrity": "sha512-O0O9pOEwrk+n1zzR3T2uuXRlw64QxHSPeNN1GaiNBloQFNaCUL9V8jxSVz4jlXXFP/CIqK8YecWf8BAvsSgMjw==", "dev": true, "requires": { - "dotenv-defaults": "^2.0.1" + "dotenv-defaults": "^2.0.2" } }, "duplexer": { @@ -6281,9 +6200,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.739", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.739.tgz", - "integrity": "sha512-+LPJVRsN7hGZ9EIUUiWCpO7l4E3qBYHNadazlucBfsXBbccDFNKUBAgzE68FnkWGJPwD/AfKhSzL+G+Iqb8A4A==", + "version": "1.3.748", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.748.tgz", + "integrity": "sha512-fmIKfYALVeEybk/L2ucdgt7jN3JsbGtg3K9pmF/MRWgkeADBI1VSAa5IzdG2gZwTxsnsrFtdMpOTSM5mrBRKVQ==", "dev": true }, "emoji-regex": { @@ -6299,23 +6218,21 @@ "dev": true }, "enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz", + "integrity": "sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - } - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "dependencies": { + "tapable": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", + "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", + "dev": true + } } }, "envinfo": { @@ -6324,15 +6241,6 @@ "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", "dev": true }, - "errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "requires": { - "prr": "~1.0.1" - } - }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -6409,9 +6317,9 @@ "dev": true }, "execa": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", - "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "requires": { "cross-spawn": "^7.0.3", @@ -6443,6 +6351,17 @@ "merge2": "^1.3.0", "micromatch": "^4.0.2", "picomatch": "^2.2.1" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } } }, "fast-json-stable-stringify": { @@ -6497,9 +6416,9 @@ } }, "fork-ts-checker-webpack-plugin": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.2.1.tgz", - "integrity": "sha512-Pyhn2kav/Y2g6I7aInABgcph/B78jjdXc4kGHzaAUBL4UVthknxM6aMH47JwpnuTJmdOuf6p5vMbIahsBHuWGg==", + "version": "6.2.10", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.2.10.tgz", + "integrity": "sha512-HveFCHWSH2WlYU1tU3PkrupvW8lNFMTfH3Jk0TfC2mtktE9ibHGcifhCsCFvj+kqlDfNIlwmNLiNqR9jnSA7OQ==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", @@ -6509,6 +6428,7 @@ "cosmiconfig": "^6.0.0", "deepmerge": "^4.2.2", "fs-extra": "^9.0.0", + "glob": "^7.1.6", "memfs": "^3.1.2", "minimatch": "^3.0.4", "schema-utils": "2.7.0", @@ -6621,9 +6541,9 @@ } }, "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.0.tgz", + "integrity": "sha512-Hdd4287VEJcZXUwv1l8a+vXC1GjOQqXe+VS30w/ypihpcnu9M1n3xeYeJu5CBpeEQj2nAab2xxz28GuA3vp4Ww==", "dev": true, "requires": { "is-glob": "^4.0.1" @@ -6698,9 +6618,9 @@ "dev": true }, "highlight.js": { - "version": "10.7.2", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.2.tgz", - "integrity": "sha512-oFLl873u4usRM9K63j4ME9u3etNF0PLiJhSQ8rdfuL51Wn3zkD6drf9ZW0dOzjnZI22YYG24z30JcmfCZjMgYg==", + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", "dev": true }, "html-entities": { @@ -6833,12 +6753,6 @@ "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -6858,14 +6772,25 @@ "dev": true }, "jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "version": "27.0.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.2.tgz", + "integrity": "sha512-EoBdilOTTyOgmHXtw/cPc+ZrCA0KJMrkXzkrPGNwLmnvvlN1nj7MPrxpT7m+otSv2e1TLaVffzDnE/LB14zJMg==", "dev": true, "requires": { "@types/node": "*", "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "js-tokens": { @@ -7011,16 +6936,6 @@ "fs-monkey": "1.0.3" } }, - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, "merge-source-map": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", @@ -7067,18 +6982,18 @@ "dev": true }, "mime-db": { - "version": "1.47.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", - "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", + "version": "1.48.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", + "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", "dev": true }, "mime-types": { - "version": "2.1.30", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", - "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", + "version": "2.1.31", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", + "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", "dev": true, "requires": { - "mime-db": "1.47.0" + "mime-db": "1.48.0" } }, "mimic-fn": { @@ -7362,28 +7277,20 @@ } }, "postcss": { - "version": "8.2.10", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.10.tgz", - "integrity": "sha512-b/h7CPV7QEdrqIxtAf2j31U5ef05uBDuvoXv6L51Q4rcS1jdlXAVKJv+atCFdUXYl9dyTHGyoMzIepwowRJjFw==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.0.tgz", + "integrity": "sha512-+ogXpdAjWGa+fdYY5BQ96V/6tAo+TdSSIMP5huJBIygdWwKtVoB5JWZ7yUd4xZ8r+8Kvvx4nyg/PQ071H4UtcQ==", "dev": true, "requires": { "colorette": "^1.2.2", - "nanoid": "^3.1.22", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "nanoid": "^3.1.23", + "source-map-js": "^0.6.2" } }, "postcss-import": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.1.tgz", - "integrity": "sha512-Xn2+z++vWObbEPhiiKO1a78JiyhqipyrXHBb3AHpv0ks7Cdg+GxQQJ24ODNMTanldf7197gSP3axppO9yaG0lA==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.2.tgz", + "integrity": "sha512-BJ2pVK4KhUyMcqjuKs9RijV5tatNzNa73e/32aBVE/ejYPe37iH+6vAu9WvqUkB5OAYgLHzbSvzHnorybJCm9g==", "dev": true, "requires": { "postcss-value-parser": "^4.0.0", @@ -7392,9 +7299,9 @@ } }, "postcss-loader": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-5.2.0.tgz", - "integrity": "sha512-uSuCkENFeUaOYsKrXm0eNNgVIxc71z8RcckLMbVw473rGojFnrUeqEz6zBgXsH2q1EIzXnO/4pEz9RhALjlITA==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-5.3.0.tgz", + "integrity": "sha512-/+Z1RAmssdiSLgIZwnJHwBMnlABPgF7giYzTN2NOfr9D21IJZ4mQC1R2miwp80zno9M4zMD/umGI8cR+2EL5zw==", "dev": true, "requires": { "cosmiconfig": "^7.0.0", @@ -7499,18 +7406,6 @@ "dev": true, "optional": true }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -7582,21 +7477,6 @@ "pify": "^2.3.0" } }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, "readdirp": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", @@ -7692,18 +7572,18 @@ "dev": true }, "sass": { - "version": "1.34.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.34.0.tgz", - "integrity": "sha512-rHEN0BscqjUYuomUEaqq3BMgsXqQfkcMVR7UhscsAVub0/spUrZGBMxQXFS2kfiDsPLZw5yuU9iJEFNC2x38Qw==", + "version": "1.34.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.34.1.tgz", + "integrity": "sha512-scLA7EIZM+MmYlej6sdVr0HRbZX5caX5ofDT9asWnUJj21oqgsC+1LuNfm0eg+vM0fCTZHhwImTiCU0sx9h9CQ==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0" } }, "sass-loader": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-11.0.1.tgz", - "integrity": "sha512-Vp1LcP4slTsTNLEiDkTcm8zGN/XYYrZz2BZybQbliWA8eXveqA/AxsEjllQTpJbg2MzCsx/qNO48sHdZtOaxTw==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.0.0.tgz", + "integrity": "sha512-LJQMyDdNdhcvoO2gJFw7KpTaioVFDeRJOuatRDUNgCIqyu4s4kgDsNofdGzAZB1zFOgo/p3fy+aR/uGXamcJBg==", "dev": true, "requires": { "klona": "^2.0.4", @@ -7816,6 +7696,12 @@ "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true }, + "source-map-js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", + "dev": true + }, "source-map-resolve": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", @@ -7858,15 +7744,6 @@ "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", "integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ=" }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, "string-width": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", @@ -7928,17 +7805,17 @@ } }, "terser-webpack-plugin": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz", - "integrity": "sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.3.tgz", + "integrity": "sha512-cxGbMqr6+A2hrIB5ehFIF+F/iST5ZOxvOmy9zih9ySbP1C2oEWQSOUS+2SNBTjzx5xLKO4xnod9eywdfq1Nb9A==", "dev": true, "requires": { - "jest-worker": "^26.6.2", + "jest-worker": "^27.0.2", "p-limit": "^3.1.0", "schema-utils": "^3.0.0", "serialize-javascript": "^5.0.1", "source-map": "^0.6.1", - "terser": "^5.5.1" + "terser": "^5.7.0" }, "dependencies": { "schema-utils": { @@ -8006,14 +7883,13 @@ "dev": true }, "ts-loader": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.1.0.tgz", - "integrity": "sha512-YiQipGGAFj2zBfqLhp28yUvPP9jUGqHxRzrGYuc82Z2wM27YIHbElXiaZDc93c3x0mz4zvBmS6q/DgExpdj37A==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.2.tgz", + "integrity": "sha512-hNIhGTQHtNKjOzR2ZtQ2OSVbXPykOae+zostf1IlHCf61Mt41GMJurKNqrYUbzHgpmj6UWRu8eBfb7q0XliV0g==", "dev": true, "requires": { "chalk": "^4.1.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^2.0.0", + "enhanced-resolve": "^5.0.0", "micromatch": "^4.0.0", "semver": "^7.3.4" }, @@ -8063,9 +7939,9 @@ "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" }, "typescript": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", - "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.2.tgz", + "integrity": "sha512-zZ4hShnmnoVnAHpVHWpTcxdv7dWP60S2FsydQLV8V5PbS3FifjWFFRiHSWpDJahly88PRyV5teTSLoq4eG7mKw==", "dev": true }, "universalify": { @@ -8096,9 +7972,9 @@ "dev": true }, "vue": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.12.tgz", - "integrity": "sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg==", + "version": "2.6.13", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.13.tgz", + "integrity": "sha512-O+pAdJkce1ooYS1XyoQtpBQr9An+Oys3w39rkqxukVO3ZD1ilYJkWBGoRuadiQEm2LLJnCL2utV4TMSf52ubjw==", "dev": true }, "vue-hot-reload-api": { @@ -8108,9 +7984,9 @@ "dev": true }, "vue-loader": { - "version": "15.9.6", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.6.tgz", - "integrity": "sha512-j0cqiLzwbeImIC6nVIby2o/ABAWhlppyL/m5oJ67R5MloP0hj/DtFgb0Zmq3J9CG7AJ+AXIvHVnJAPBvrLyuDg==", + "version": "15.9.7", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.7.tgz", + "integrity": "sha512-qzlsbLV1HKEMf19IqCJqdNvFJRCI58WNbS6XbPqK13MrLz65es75w392MSQ5TsARAfIjUw+ATm3vlCXUJSOH9Q==", "dev": true, "requires": { "@vue/component-compiler-utils": "^3.1.0", @@ -8196,22 +8072,22 @@ } }, "webpack": { - "version": "5.31.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.31.2.tgz", - "integrity": "sha512-0bCQe4ybo7T5Z0SC5axnIAH+1WuIdV4FwLYkaAlLtvfBhIx8bPS48WHTfiRZS1VM+pSiYt7e/rgLs3gLrH82lQ==", + "version": "5.38.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.38.1.tgz", + "integrity": "sha512-OqRmYD1OJbHZph6RUMD93GcCZy4Z4wC0ele4FXyYF0J6AxO1vOSuIlU1hkS/lDlR9CDYBz64MZRmdbdnFFoT2g==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.46", + "@types/estree": "^0.0.47", "@webassemblyjs/ast": "1.11.0", "@webassemblyjs/wasm-edit": "1.11.0", "@webassemblyjs/wasm-parser": "1.11.0", - "acorn": "^8.0.4", + "acorn": "^8.2.1", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.7.0", + "enhanced-resolve": "^5.8.0", "es-module-lexer": "^0.4.0", - "eslint-scope": "^5.1.1", + "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.4", @@ -8222,20 +8098,10 @@ "schema-utils": "^3.0.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.1.1", - "watchpack": "^2.0.0", - "webpack-sources": "^2.1.1" + "watchpack": "^2.2.0", + "webpack-sources": "^2.3.0" }, "dependencies": { - "enhanced-resolve": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz", - "integrity": "sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, "schema-utils": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", @@ -8256,9 +8122,9 @@ } }, "webpack-bundle-analyzer": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.4.0.tgz", - "integrity": "sha512-9DhNa+aXpqdHk8LkLPTBU/dMfl84Y+WE2+KnfI6rSpNRNVKa0VGLjPd2pjFubDeqnWmulFggxmWBxhfJXZnR0g==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.4.2.tgz", + "integrity": "sha512-PIagMYhlEzFfhMYOzs5gFT55DkUdkyrJi/SxJp8EF3YMWhS+T9vvs2EoTetpk5qb6VsCq02eXTlRDOydRhDFAQ==", "dev": true, "requires": { "acorn": "^8.0.4", @@ -8299,18 +8165,17 @@ } }, "webpack-cli": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.6.0.tgz", - "integrity": "sha512-9YV+qTcGMjQFiY7Nb1kmnupvb1x40lfpj8pwdO/bom+sQiP4OBMKjHq29YQrlDWDPZO9r/qWaRRywKaRDKqBTA==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.7.0.tgz", + "integrity": "sha512-7bKr9182/sGfjFm+xdZSwgQuFjgEcy0iCTIBxRUeteJ2Kr8/Wz0qNJX+jw60LU36jApt4nmMkep6+W5AKhok6g==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.0.2", - "@webpack-cli/info": "^1.2.3", - "@webpack-cli/serve": "^1.3.1", + "@webpack-cli/configtest": "^1.0.3", + "@webpack-cli/info": "^1.2.4", + "@webpack-cli/serve": "^1.4.0", "colorette": "^1.2.1", "commander": "^7.0.0", - "enquirer": "^2.3.6", "execa": "^5.0.0", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", @@ -8331,9 +8196,9 @@ } }, "webpack-sources": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", - "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.0.tgz", + "integrity": "sha512-WyOdtwSvOML1kbgtXbTDnEW0jkJ7hZr/bDByIwszhWd/4XX1A3XMkrbFMsuH4+/MfLlZCUzlAdg4r7jaGKEIgQ==", "dev": true, "requires": { "source-list-map": "^2.0.1", @@ -8349,9 +8214,9 @@ } }, "webpack-virtual-modules": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.2.tgz", - "integrity": "sha512-OUsT1VZhArN8nY7g6mMlw91HWnXcNXsIQjsQ83WteF4ViZ6YXqF2sWKOTDIZ0H+PPiApQdszLdZIrD7NNlU0Yw==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.3.tgz", + "integrity": "sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw==", "dev": true }, "which": { diff --git a/package.json b/package.json index c5fe4d58..1c93c7f3 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,8 @@ "dependencies": { "@akylas/nativescript-sqlite": "^3.3.12", "@nativescript-community/ui-collectionview": "^4.0.29", - "@nativescript/core": "^8.0.5", + "@nativescript-rtl/ui": "^0.1.8", + "@nativescript/core": "^8.0.7", "@nativescript/local-notifications": "^5.0.3", "@nativescript/localize": "^5.0.4", "@triniwiz/nativescript-accelerometer": "^4.0.3", @@ -32,11 +33,11 @@ "devDependencies": { "@nativescript/android": "8.0.0", "@nativescript/types": "^8.0.1", - "@nativescript/webpack": "beta", - "@types/node": "^15.3.0", + "@nativescript/webpack": "^5.0.0-beta.12", + "@types/node": "^15.9.0", "nativescript-vue-template-compiler": "~2.9.0", - "sass": "^1.32.13", + "sass": "^1.34.1", "typescript": "^4.2.4", - "vue": "^2.6.12" + "vue": "^2.6.13" } } From f1cf7c8956e45e091239113075a671f27af48963 Mon Sep 17 00:00:00 2001 From: vishnuraghavb Date: Sat, 5 Jun 2021 23:39:42 +0530 Subject: [PATCH 4/7] added and update utils --- app/shared/utils.ts | 114 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 96 insertions(+), 18 deletions(-) diff --git a/app/shared/utils.ts b/app/shared/utils.ts index ee37e93a..aefcca58 100644 --- a/app/shared/utils.ts +++ b/app/shared/utils.ts @@ -6,11 +6,18 @@ import { Color, path, knownFolders, - TimerInfo, } from '@nativescript/core' +import { localize } from '@nativescript/localize' + let timerOne declare const global, android, androidx, com, java, Array: any +const PowerManager = android.os.PowerManager +const pm = Utils.android + .getApplicationContext() + .getSystemService(android.content.Context.POWER_SERVICE) +const wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, 'Timers') + export const restartApp = () => { const ctx = Utils.ad.getApplicationContext() let mStartActivity = new android.content.Intent( @@ -60,14 +67,14 @@ export const vibrate = (duration) => { if (vibratorService.hasVibrator()) vibratorService.vibrate(duration) } export const timer = (dur, callback) => { - clearInterval(timerOne) callback(true) + clearInterval(timerOne) timerOne = setInterval(() => { dur-- callback(true) if (dur == 0) { - callback(false) clearInterval(timerOne) + callback(false) } }, 1000) } @@ -285,12 +292,12 @@ export const shareText = (text, subject) => { intent.putExtra(android.content.Intent.EXTRA_TEXT, text) share(intent, subject) } -export const shareImage = (image, subject) => { +export const shareImage = (image, subject, title) => { let ctx = Application.android.context const intent = getSendIntent('image/jpeg') const baos = new java.io.ByteArrayOutputStream() image.android.compress(android.graphics.Bitmap.CompressFormat.JPEG, 100, baos) - const tmpFile = new java.io.File(ctx.getExternalCacheDir(), 'EnRecipes.jpg') + const tmpFile = new java.io.File(ctx.getCacheDir(), `${title}.jpg`) const fos = new java.io.FileOutputStream(tmpFile) fos.write(baos.toByteArray()) fos.flush() @@ -304,6 +311,14 @@ export const shareImage = (image, subject) => { share(intent, subject) } +export const keepScreenOn = (bool) => { + let ctx = + Application.android.foregroundActivity || Application.android.startActivity + let window = ctx.getWindow() + let flag = android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON + bool ? window.addFlags(flag) : window.clearFlags(flag) +} + // TIMER NOTIFICATION export class TimerNotif { static getIcon(ctx, icon) { @@ -322,26 +337,25 @@ export class TimerNotif { // nID ? NotifySrv.cancel(nID) : NotifySrv.cancelAll() NotifySrv.cancel(nID) } - static getNotification( { + multi, actions, bID, cID, cName, description, - nID, priority, sound, title, vibrate, }: { + multi?: boolean actions?: boolean bID: string cID: string cName: string description: string - nID: number priority: number sound: string title: string @@ -361,7 +375,6 @@ export class TimerNotif { if (sdkv >= 26) { const importance = priority > 0 ? NotifyMgr.IMPORTANCE_HIGH : NotifyMgr.IMPORTANCE_MIN - console.log(priority, importance) const AudioAttributes = android.media.AudioAttributes const audioAttributes = new AudioAttributes.Builder() .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) @@ -386,7 +399,7 @@ export class TimerNotif { const PendingIntent = android.app.PendingIntent const mainInt = new Intent(ctx, com.tns.NativeScriptActivity.class) - mainInt.putExtra('action', 'open_timer') + mainInt.putExtra('action', 'timer') const mainPInt = PendingIntent.getActivity( ctx, 1, @@ -395,10 +408,15 @@ export class TimerNotif { ) // Action intent - let actionInt1, actionInt2, actionPInt1, actionPInt2 + let actionInt1, + actionInt2, + actionInt3, + actionPInt1, + actionPInt2, + actionPInt3 if (actions) { actionInt1 = new Intent(bID) - actionInt1.putExtra('action', 'stop') + actionInt1.putExtra('action', 'delay') actionPInt1 = PendingIntent.getBroadcast( ctx, 2, @@ -406,18 +424,26 @@ export class TimerNotif { PendingIntent.FLAG_UPDATE_CURRENT ) actionInt2 = new Intent(bID) - actionInt2.putExtra('action', 'delay') + actionInt2.putExtra('action', 'dismiss') actionPInt2 = PendingIntent.getBroadcast( ctx, 3, actionInt2, PendingIntent.FLAG_UPDATE_CURRENT ) + actionInt3 = new Intent(bID) + actionInt3.putExtra('action', 'dismissAll') + actionPInt3 = PendingIntent.getBroadcast( + ctx, + 4, + actionInt3, + PendingIntent.FLAG_UPDATE_CURRENT + ) } // CREATE NOTIFICATION - let icon = TimerNotif.getIcon(ctx, 'ic_stat_notify_silhouette') + let icon = this.getIcon(ctx, 'notify_icon_sil') let builder = new NotificationCompat.Builder(ctx, cID) .setColor(new Color('#ff5200').android) .setContentIntent(mainPInt) @@ -434,10 +460,12 @@ export class TimerNotif { if (description) builder.setContentText(description) if (vibrate) builder.setVibrate([500, 1000]) if (actions) { - builder.setDeleteIntent(actionPInt2) builder.setFullScreenIntent(mainPInt, true) - builder.addAction(null, 'Stop', actionPInt1) - builder.addAction(null, 'Delay', actionPInt2) + if (multi) builder.addAction(null, localize('dismissAll'), actionPInt3) + else { + builder.addAction(null, localize('delay'), actionPInt1) + builder.addAction(null, localize('dismiss'), actionPInt2) + } } let notification = builder.build() notification.flags = @@ -450,7 +478,45 @@ export class TimerNotif { const NotifySrv = ctx.getSystemService( android.content.Context.NOTIFICATION_SERVICE ) - NotifySrv.notify(data.nID, TimerNotif.getNotification(data, ctx)) + NotifySrv.notify(data.nID, this.getNotification(data, ctx)) + } +} +export class Printer { + static PrintPackage = global.androidx.print + static isSupported() { + return this.PrintPackage.PrintHelper.systemSupportsPrint() + } + static print(view) { + return new Promise((resolve, reject) => { + try { + let img: any + img = android.graphics.Bitmap.createBitmap( + view.getMeasuredWidth(), + view.getMeasuredHeight(), + android.graphics.Bitmap.Config.ARGB_8888 + ) + view.android.draw(new android.graphics.Canvas(img)) + this.printImage(img).then(resolve, reject) + } catch (e) { + reject(e) + } + }) + } + static printImage(img) { + return new Promise((resolve, reject) => { + try { + let callback = (success) => resolve(success) + let printHelper = new this.PrintPackage.PrintHelper( + Application.android.foregroundActivity + ) + printHelper.setScaleMode(this.PrintPackage.PrintHelper.SCALE_MODE_FIT) + let jobName = 'MyPrintJob' + printHelper.printBitmap(jobName, img) + callback(true) + } catch (e) { + reject(e) + } + }) } } @@ -489,3 +555,15 @@ export const getTones = () => { return { tones, defaultTone: defaultToneUri ? defaultTone : tones[0] } } + +//DETECT RTL LANGUAGE +export const RTL = (): boolean => { + const ctx = Utils.android.getApplicationContext() + const config = ctx.getResources().getConfiguration() + return config.getLayoutDirection() == android.view.View.LAYOUT_DIRECTION_RTL +} + +//WAKE LOCK +export const wakeLock = (bool) => { + bool ? !wl.isHeld() && wl.acquire() : wl.isHeld() && wl.release() +} From a315243af9c4f99dde212e99e780ef44fc6ab5ba Mon Sep 17 00:00:00 2001 From: vishnuraghavb Date: Sat, 5 Jun 2021 23:40:03 +0530 Subject: [PATCH 5/7] styles cleaned up --- app/app.scss | 186 +++++++++++++++++++++++++-------------------------- 1 file changed, 93 insertions(+), 93 deletions(-) diff --git a/app/app.scss b/app/app.scss index 885ddbb7..ae66c777 100644 --- a/app/app.scss +++ b/app/app.scss @@ -37,7 +37,7 @@ Page { @extend .tb; @extend .tw; font-size: 25; - padding: 16; + padding: 16 16 24; } .Light { color: $gray9; @@ -156,6 +156,7 @@ TextField.combField, #searchBar { border-color: transparent; } + // ----------------------------- // Elements TextField, @@ -181,28 +182,15 @@ TextView { width: 100%; } progress { - margin: 16; + color: $orange; + width: 100%; + height: 2; background-color: $gray5; } Switch { background-color: $orange; off-background-color: $gray5; } -// ----------------------------- -// Side Drawer -.segment { - border-radius: 12; - margin: 0 4 0 0; - padding: 0 12; - .value { - padding-left: 8; - vertical-alignment: center; - } - &.select { - color: $orange; - @extend .hl; - } -} button { background-color: transparent; z-index: 0; @@ -214,14 +202,13 @@ button { @extend .fade; } &.ico { - padding: 0; - margin: 0; width: 48; height: 48; + padding: 0; + margin: 0; } &.text { @extend .tb; - horizontal-alignment: left; color: $orange; } &.big { @@ -235,12 +222,6 @@ button { &.min { width: 40; height: 40; - } - &.x { - width: 32; - height: 32; - min-width: 0; - margin: 0 0 0 4; vertical-alignment: center; } &.rate { @@ -249,8 +230,31 @@ button { height: 32; } } +ActivityIndicator { + width: 24; + height: 24; + margin: 12; + color: $orange; +} + // ----------------------------- -// HOME +// Home +.segment { + border-radius: 12; + margin: 0 4 0 0; + padding: 0 12; + .value { + padding: 0 0 0 8; + vertical-alignment: center; + &.rtl { + padding: 0 8 0 0; + } + } + &.select { + color: $orange; + @extend .hl; + } +} .emptyState { padding: 16 16 8; label { @@ -261,13 +265,18 @@ button { font-size: 17; } } + // ----------------------------- -// Recipe Items +// Recipe Item .recipeItem { padding: 8 16; .recipeInfo { vertical-alignment: center; padding: 0 0 4 8; + &.rtl { + transform: none; + padding: 0 8 4 0; + } } .title { padding: 0 0 4; @@ -275,6 +284,9 @@ button { .attr { font-size: 10; padding: 0 6 1 2; + &.rtl { + padding: 0 2 1 6; + } } } .simple .recipeInfo { @@ -283,7 +295,6 @@ button { .minimal .title { padding: 0; } - .grid { padding: 8; .recipeInfo { @@ -311,39 +322,34 @@ button { .imgHolder { border-radius: 12; } -// ----------------------------- -// COOKING TIMER -.singleTimer { - padding: 8 16; +// ----------------------------- +// CookingTimer +.timer { + padding: 8 16 0; .info { - margin: 8; - } - .recipeTitle { - horizontal-alignment: left; - // font-size: 12; + margin: 8 8 8 16; + &.r { + margin: 8 16 8 8; + } } progress { - color: $orange; - width: 100%; - height: 4; margin: 8 0 0; } } + // ----------------------------- -// SETTINGS +// Settings .group-info { padding: 16 16 16 72; line-height: 4; } -.options-list { +.options { .option { vertical-align: center; - padding: 14 8; - margin: 0 16; + padding: 14 12; .ico { - padding: 0; - margin: 0 24 0 16; + margin: 0 24 0 12; } .info, .sub { @@ -359,7 +365,7 @@ button { } // ----------------------------- -// ABOUT +// About .app-info { .icon { horizontal-alignment: center; @@ -372,8 +378,9 @@ button { line-height: 4; } } + // ----------------------------- -// VIEW RECIPE +// ViewRecipe .photo { border-radius: 12; margin: 24 16 0 0; @@ -396,15 +403,12 @@ button { @extend .tw; } } -.clickable { - color: $orange; -} .ingredient { padding: 0 16; .value { @extend .tw; vertical-align: center; - padding: 14 0 14 16; + padding: 14 16; line-height: 4; } } @@ -416,13 +420,12 @@ button { } .value { @extend .tw; - padding: 14 0 14 16; + padding: 14 16; line-height: 4; } } .done { opacity: 0.5; - // @extend .fade; .value { text-decoration: line-through; } @@ -443,8 +446,9 @@ button { font-size: 12; line-height: 4; } + // ----------------------------- -// APPBAR +// AppBar .appbar { z-index: 4; min-height: 56; @@ -461,13 +465,16 @@ button { padding: 14 16; } .fab { - margin-left: 4; + margin-left: 8; + } + &.home { + margin: 8 8 0; } } .toolbar { z-index: 4; padding: 4; - margin-bottom: 0; + margin: 0 0 52; horizontal-alignment: left; .tool { padding: 0 12; @@ -475,19 +482,20 @@ button { vertical-alignment: center; } .ico { - padding-right: 8; + padding: 0 8 0 0; + &.rtl { + padding: 0 0 0 8; + } } } } .fab { - width: 48; - height: 48; - margin: 0 4 0 0; border-radius: 12; background: $orange; } + // ----------------------------- -// EDIT RECIPE +// EditRecipe .sectionTitle { @extend .tb; @extend .tw; @@ -504,8 +512,9 @@ button { font-size: 17; color: $orange; } + // ----------------------------- -// MEAL PLANNER +// MealPlanner .calendar { padding: 0 8; .navBtn { @@ -541,13 +550,13 @@ button { } .recipeTitle { @extend .tw; - text-align: left; padding: 16 8; line-height: 4; } } + // ----------------------------- -// DIALOGS +// Dialogs .modal { max-width: 320; width: 100%; @@ -567,13 +576,12 @@ button { padding: 0 16 8; } ListPicker { - width: 25%; - height: 128; + width: 30%; + height: 144; margin: 16 0; } .listItem { @extend .tw; - width: 100%; letter-spacing: 0; text-transform: none; line-height: 4; @@ -607,32 +615,9 @@ button { padding: 16; line-height: 4; } -// ----------------------------- -ActivityIndicator { - width: 24; - height: 24; - margin: 12; - color: $orange; -} + // ----------------------------- // Transitions -.blink { - animation-name: blink; - animation-duration: 1s; - animation-iteration-count: infinite; - animation-timing-function: ease; -} -@keyframes blink { - 0% { - opacity: 0; - } - 50% { - opacity: 1; - } - 100% { - opacity: 0; - } -} .hl { animation-name: hl; animation-duration: 0.2s; @@ -661,3 +646,18 @@ ActivityIndicator { opacity: 0.5; } } + +// ----------------------------- +// Helpers +.rtl { + transform: scaleX(-1); +} +.clickable { + color: $orange; +} +.hal { + horizontal-alignment: left; + &.r { + horizontal-alignment: right; + } +} From 45eae5f36f6eb25b89e717bdfc71548ed997616d Mon Sep 17 00:00:00 2001 From: vishnuraghavb Date: Tue, 8 Jun 2021 17:13:54 +0530 Subject: [PATCH 6/7] language change without restart --- app/components/settings/Interface.vue | 70 ++++++++++++--------------- 1 file changed, 32 insertions(+), 38 deletions(-) diff --git a/app/components/settings/Interface.vue b/app/components/settings/Interface.vue index be65f6eb..dbcc4c2c 100644 --- a/app/components/settings/Interface.vue +++ b/app/components/settings/Interface.vue @@ -1,11 +1,17 @@ @@ -16,7 +22,7 @@ import { Device, Frame, } from "@nativescript/core"; -import { localize, overrideLocale } from "@nativescript/localize"; +import { localize } from "@nativescript/localize"; import Action from "../modals/Action"; import Confirm from "../modals/Confirm"; import OptionsList from "../sub/OptionsList"; @@ -27,11 +33,11 @@ export default { components: { OptionsList }, data() { return { - appLanguage: "English", + applang: 0, }; }, computed: { - ...mapState(["icon", "language", "appTheme", "layout"]), + ...mapState(["icon", "language", "appTheme", "layout", "RTL"]), items() { return [ {}, @@ -39,23 +45,21 @@ export default { type: "list", icon: "lang", title: "lang", - subTitle: this.appLanguage, - action: this.selectAppLanguage, + subTitle: this.applang, + action: this.setAppLang, }, { type: "list", icon: "theme", title: "Theme", - subTitle: localize( - ApplicationSettings.getString("appTheme", "sysDef") - ), + subTitle: ApplicationSettings.getString("appTheme", "sysDef"), action: this.selectThemes, }, { type: "list", icon: "layout", title: "listVM", - subTitle: localize(this.layout), + subTitle: this.layout, action: this.setLayoutMode, }, {}, @@ -63,12 +67,12 @@ export default { }, }, methods: { - ...mapActions(["setTheme", "setLayout"]), - onPageLoad({ object }) { + ...mapActions(["setTheme", "setLayout", "setRTL"]), + pgLoad({ object }) { object.bindingContext = new Observable(); }, // LANGUAGE SELECTION - selectAppLanguage() { + setAppLang() { let languages = this.language.map((e) => e.title); this.$showModal(Action, { props: { @@ -76,26 +80,19 @@ export default { list: [...languages], }, }).then((action) => { - if (action && this.appLanguage !== action) { - let currentLocale = Device.language.split("-")[0]; + if (action && this.applang !== action) { + let currentLocale = ApplicationSettings.getString( + "appLocale", + "none" + ).split("-"); let locale = this.language.filter((e) => e.title === action)[0] .locale; if (currentLocale !== locale) { - this.$showModal(Confirm, { - props: { - title: "appRst", - description: localize("nLangInfo"), - cancelButtonText: "cBtn", - okButtonText: "rst", - }, - }).then((result) => { - if (result) { - this.appLanguage = action; - ApplicationSettings.setString("appLanguage", action); - overrideLocale(locale); - setTimeout(utils.restartApp, 250); - } - }); + this.applang = action; + ApplicationSettings.setString("applang", action); + ApplicationSettings.setString("appLocale", locale); + utils.updateLocale(); + this.setRTL(); } } }); @@ -111,7 +108,7 @@ export default { if ( action && (ApplicationSettings.getString("appTheme") != this.appTheme - ? true + ? 1 : this.appTheme != action) ) { this.setTheme(action); @@ -136,10 +133,7 @@ export default { }, }, created() { - this.appLanguage = ApplicationSettings.getString( - "appLanguage", - localize("sysDef") - ); + this.applang = ApplicationSettings.getString("applang", "sysDef"); }, }; From e2a0c11d43221ef4f9fddc5f7273a1e534cb524b Mon Sep 17 00:00:00 2001 From: vishnuraghavb Date: Tue, 8 Jun 2021 21:49:33 +0530 Subject: [PATCH 7/7] updated strings --- app/i18n/en-GB.default.json | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/app/i18n/en-GB.default.json b/app/i18n/en-GB.default.json index 7063b5b4..3e6c911d 100644 --- a/app/i18n/en-GB.default.json +++ b/app/i18n/en-GB.default.json @@ -320,5 +320,21 @@ "texp": "%s timers expired", "dismiss": "Dismiss", "dismissAll": "Dismiss all timers", - "ttv": "Tap to view" + "ttv": "Tap to view", + "oAP": "%1$s ongoing, %2$s paused", + "calVM": "Calendar view mode", + "mnthly": "Monthly", + "wkly": "Weekly", + "dly": "Daily", + "sun": "Sunday", + "mon": "Monday", + "tue": "Tuesday", + "wed": "Wednesday", + "thu": "Thursday", + "fri": "Friday", + "sat": "Saturday", + "cpy": "copy", + "tdy": "Today", + "tmrw": "Tomorrow", + "ystr": "Yesterday" }