From 8b64e4fd4245ac879d62581d5f04bae2229644b4 Mon Sep 17 00:00:00 2001 From: michaelchin Date: Thu, 3 Aug 2023 17:19:31 +1000 Subject: [PATCH] merge "Release 1.0" into main (#223) * minor css update * clean up rotation issues * improve layer removal * fix small problems * some small fixes * update to capacitor 5 * add podfile.lock * Update README.md * minor css update * update notes --- README.md | 2 + android/app/build.gradle | 3 +- android/app/src/main/AndroidManifest.xml | 2 +- android/build.gradle | 4 +- android/gradle.properties | 4 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- android/variables.gradle | 16 +- dev-doc/NOTES.md | 2 +- ios/.gitignore | 3 +- .../AppIcon.appiconset/AppIcon-20x20@1x.png | Bin 1033 -> 0 bytes .../AppIcon.appiconset/AppIcon-20x20@2x-1.png | Bin 2996 -> 0 bytes .../AppIcon.appiconset/AppIcon-20x20@2x.png | Bin 2996 -> 0 bytes .../AppIcon.appiconset/AppIcon-20x20@3x.png | Bin 5545 -> 0 bytes .../AppIcon.appiconset/AppIcon-29x29@1x.png | Bin 1871 -> 0 bytes .../AppIcon.appiconset/AppIcon-29x29@2x-1.png | Bin 5222 -> 0 bytes .../AppIcon.appiconset/AppIcon-29x29@2x.png | Bin 5222 -> 0 bytes .../AppIcon.appiconset/AppIcon-29x29@3x.png | Bin 9491 -> 0 bytes .../AppIcon.appiconset/AppIcon-40x40@1x.png | Bin 2996 -> 0 bytes .../AppIcon.appiconset/AppIcon-40x40@2x-1.png | Bin 8361 -> 0 bytes .../AppIcon.appiconset/AppIcon-40x40@2x.png | Bin 8361 -> 0 bytes .../AppIcon.appiconset/AppIcon-40x40@3x.png | Bin 14924 -> 0 bytes .../AppIcon.appiconset/AppIcon-60x60@2x.png | Bin 14924 -> 0 bytes .../AppIcon.appiconset/AppIcon-60x60@3x.png | Bin 25637 -> 0 bytes .../AppIcon.appiconset/AppIcon-76x76@1x.png | Bin 7696 -> 0 bytes .../AppIcon.appiconset/AppIcon-76x76@2x.png | Bin 20718 -> 0 bytes .../AppIcon-83.5x83.5@2x.png | Bin 23115 -> 0 bytes .../AppIcon.appiconset/Contents.json | 126 +- ios/App/App/Info.plist | 4 +- ios/App/Podfile.lock | 127 ++ package-lock.json | 1127 ++++++++++++++++- package.json | 36 +- set-env.sh | 4 +- src/components/AddLocationWidget.scss | 4 +- src/components/AddLocationWidget.tsx | 9 - src/components/AgeSlider.scss | 6 + src/components/CustomToolbar.scss | 1 + src/components/CustomToolbar.tsx | 8 +- src/components/GraphPanel.scss | 1 + src/components/MajorCities.tsx | 118 +- src/components/RasterMenu.tsx | 173 +-- src/components/VectorDataLayerMenu.scss | 2 +- src/components/VectorDataLayerMenu.tsx | 84 +- src/functions/animation.ts | 108 +- src/functions/cache.ts | 11 +- src/functions/cesiumViewer.ts | 114 +- src/functions/rotationModel.ts | 67 +- src/functions/vectorLayers.ts | 54 +- src/pages/AnimationSettings.tsx | 1 - src/pages/CacheInfo.tsx | 30 +- src/pages/Main.tsx | 7 +- src/pages/ModelInfo.scss | 6 +- src/pages/ModelInfo.tsx | 35 +- src/pages/SettingMenuPage.tsx | 52 +- 53 files changed, 1849 insertions(+), 504 deletions(-) delete mode 100644 ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@1x.png delete mode 100644 ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x-1.png delete mode 100644 ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x.png delete mode 100644 ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@3x.png delete mode 100644 ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@1x.png delete mode 100644 ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x-1.png delete mode 100644 ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x.png delete mode 100644 ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@3x.png delete mode 100644 ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@1x.png delete mode 100644 ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x-1.png delete mode 100644 ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x.png delete mode 100644 ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@3x.png delete mode 100644 ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@2x.png delete mode 100644 ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@3x.png delete mode 100644 ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@1x.png delete mode 100644 ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@2x.png delete mode 100644 ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5x83.5@2x.png create mode 100644 ios/App/Podfile.lock diff --git a/README.md b/README.md index 7c005c4..1dffe65 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,8 @@ https://github.com/GPlates/gplates-app/assets/2688316/50f5a6a9-56e6-44fc-a667-e1 **🔵 Clear the App storage data and cache, and then restart!!** +clear data + ### Reloading App could be useful when a bug or mishap caused the App to enter and stuck in a messy state. For example, if you see this blue ball diff --git a/android/app/build.gradle b/android/app/build.gradle index 6ae8d4e..064d735 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -1,12 +1,13 @@ apply plugin: 'com.android.application' android { + namespace "earthbyte.gplates.edu" compileSdkVersion rootProject.ext.compileSdkVersion defaultConfig { applicationId "earthbyte.gplates.edu" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 3 + versionCode 5 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" aaptOptions { diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index ff95f21..4bc7e97 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + > Q^ZWAqe&6>y2v#kIVcxMxm0)iC*J*B;_-!^=8qXRwbe~*k{H!bd@Fdg{ESKE zS2ovYNXX{54O#{HMvaXcRgc##+ zBoc{Gm5sVL1x?TIYucFG8uLwOg4Edjcz($4ks7BrT+%m;IRSve3`^VTbia|9^GDwx z8zRZlb8Q=5JOApZlGAnlRf^%fD~9!D>W^;@1AuzMfiCuKZys`msim5WPYAQ~%cAU6 zUH4<-vv;Lcnas1C95evkXK{?r`Y=ga9sVARGwzbURQC@H*6WSiUP`c7r)Zj0CGW^7 z6q|IRS_uFI5oB1Y*f;<~kt6_q@V9GowJx^SFt|XVq~x@7qMrdE7z_~vk&-Gv&+ckd z_5*<1vv~Qpfr=JmrNSgqjS_TJ`lJ_DMe@)&E z0CV%+_j6^ueOGoIZjH^q^@&7JQ)DO<2Ef95lWB@kq}S`WY>giuw?=6n$U2Bn%vWFk z1ONddXqj@ly@Bi9=H~?04@wPyDNK=Lb3R_RZg4)p3RX~1n2{lf3Z_)55L&ls%TC3e z-e|<-34Bqej7x72cZ_lM(>bz%Z`;{!vtWnA!Q;KG(P%k&anZ37gx1Gx-kp&nDlBb& zE4}WS9TzjcQ@MRX0IW65B#N}&5Z5Y-VmGl^oS3)=VtJa+3fquv^V7AY?7zPtT zc0%h_BbjG4OXJCKv}tZaJ32bIy|{g0!S%E;qQ?af@m_)azG-H~OUstz@O=LM)DP2T zvYX;sS*=7amfpVH_`9_EUi}S&ynR@3vh759Pn7T)KV#0%Hk*wv$l?p~vvW#v5B-pL z^unRzzZ9HoD*9e=^pvVt)McOdujaJ`{=eVQ+WUV2_{yjpz@YA<00000NkvXXu0mjf D2vYTd diff --git a/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x-1.png b/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x-1.png deleted file mode 100644 index 60fc112b33566d36d8c866a509784edb2ff3a4fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2996 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 diff --git a/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@1x.png b/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@1x.png deleted file mode 100644 index 7fd4bea797a591b9f52ec66413bf2a376e45fd87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1871 zcmV-V2e9~wP)-j(2axP-KYWa?`=XRBczI!F;z_oy6&AdO?%}r~Vt!(nh zyrC%SGT1~y2$rABMTi>D$Zz(KR(_iIWmZY+$&$9LvX0Z`UD=oKo~pc;S*1Ou=~LF~ z|MIyZ{Y&HF#sT*eEpOEt>Ay}<-{xY6MWe|Y7@hIQv})Iv>HbW=NTwo=w3tBVjfMyI z$Iy>+|L{R+c+9ck(Mg1$o#k0hu-Q2q!wZ6lBne59Ac!`WpJMqbh9?*{3|N4&Y4v5T zQ-k~%7h!7ri>76FoXm{ju&M~+H|2C zq&0xdmcRFo6GGr47b#bE=*Jkxz5dBd8&X(SkR*xY1W^mSH zqrQJZ;{7LJu zE6Ttr_MzFbG-C6%-yJ4I<~Tv1TE!jv3;kB41^xVF@Ve}TkFOmqYD+EY*q+-Go>J%b z(eOE;3_~5MZ@4+j|3$yx&Ckaso5yXUD6yOXp+pF# zg^Qq!p^Op15J?it3j!~$D{QBQp=^pOy9==l)Me!W%>3-kc`AzKSeA10J}dO_4)=aG zHvX+Ngb>H^k|d2hoNDPBZ0i|m>m9q@H+D;JZZ?eHw=htYI9_NUn$Yw;Ol!VB?!vE51;3^@BEYyVzbeRt17$ZtU9jPR1p4#DrD!S zprora4^%7b`w2lTFUSZIf(XGc7I!_JdmH5BhkG&v$FGmo3Dp=_=Zh;1VLgL zo)A)2b!SQ3spVS=A{~<`WcOvCJ(b7n^pwj96b+?Dqs3j>c&OP#6#UZh#!BGgQE8|xCJ>6(m@95yjWOCk(#lJ1}PrRH}ry~TjoWMKU zFRq|1^z=;@V#=+ruLl66rlvcJjDZkYtrLon@b7#0eb000p_D8-ksWOu%Gn~;#;;pwf{8)ccI2_Z+*(*Xd!b3=XR z{y00YRFa^x@hw*SzI09C`rMGMMZfr6eW)1;^JNbz~dSJ<+Gpt>6(oPk`A8Rdr%#-tzhBHnTytDFWGpu=H>t)*iOab z^oqNF?^d=CPJZ2QuK95EC>2;+Tkq@+jIr4~{;Q4gz-`V&vU`Sim0en5F$Yk9W@IDLCDWPzdANP zIDGBGu+7g!?~RK;aWJD+H(++Ai{k}C(C(9sEA~{FZGwyTX#OH9S*=zB0167uIiums zl{0BQT0`4c+MZsM#cHE-7D8HEj_KU+)nMSS3k$F79CLiy{3Q+}PCK!&vGe8!n#~qx z%`pr+HDzZQ4k0YdGD3*w=?1YgJmU~62;%yEo0j*&)7uk#iRQ z%s*(u{IG2cBi>mQxj!iCW5p_^V)cndF`1E@&S;Hvv;8No3q3S6)YGHw(;0NSex2T^ z*WcG02KD{JdgDmHakT%wx!+_lnymT(%g95z;s2faUEKfG`4y6W?yuJVc diff --git a/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x-1.png b/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x-1.png deleted file mode 100644 index 32abc1532fe08b1a6418fed924370d4506e6e46f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5222 zcmV-s6q)OZP)jBy#4F_;+)W?ai9R5le$Qbg$@ZTGfl zqg~y1RoiN-r9~LGT3tvNq>^i;NbW-Jib#==T<3l+?{j8)ZN{+nzx#il_x(NJ$8#QY z&Y92eb3Whe836fzwSbwQ3L^*v!~c;X(-{2UgZtlD@V^ch7TmIbkXhf_*WCUQwT^-2 zj)9gppISOUwR8@)yd7+LH`MZOsQKMcbJuWl*Kkw!a8vh4<9pN^dPY(EFk0U`R^K~T z*E?3%$E@o|t-61#m&Kbo=o!LA@AmDn`?^jHvvu+2o|i4W66S8YX0`RY^^RNfcBd@Z zbH~Q_-n@PHt^G4B4`f*!$u|8dclNOd#wQ*b{_ruo6mmsRpB5 zEvABa@i`{8a#e2YI3xc8TnIw%bnj8Kwp}>QIZD$plH|zHbdJ$-xj=P`*Y&upw=RM1 zb=_doE&A3Jy&b7K-==B%+|k^dPTH5D?w_f8Fq?2BSLvsR_~Uus+y9c&SWGB@k12qip~|5O4;Nftm0+G|XPQH9>RndEKQ9hn-0tKcueu;kL(tJ8KT7 zuREHtJ|N5Uc#hY}hhC@hJWoGfcQ$`*P=UwqPgjQ)x}Psv8By%QC|w>~=6s>t>5ods zOV1syRM{oee0{yv;%bcyqa0wAn;)SD{q9@FklPdisWW zJU)xXVY9iPjq~RLM|dpw%Ml)MCVj-=ve;Z6m)A4QG`U(M5m^pIm7lJDKNEtdg9`~R zZhJFe3;-QpxT4KW@+1mXfF)gbRdn(kDgD}YF^UysoCtk~B zqtvE1_hN&e;lfL$qRORXDuJl-xTd~o2nMDKUOl~oHp@?H&pkvo|1mD{8G;~8^b03( z$>NNRvUof+Gl3v~V31kc*7xK^cTRQJgSz*{ulm}0hnXx60`Uy><78p{p77yUyk<@w;p8okrW8rn%=X`TGpbBe{Bkk8L7Lz3(4Vj?ie z=kZ2ZYy{$$wtrMPQy}?k0dS@e2r8NtS|Sr&0YsJ`EPXc>!GPFkP}kT&xAfLB^`V&h zWxdS?KWRkoc}x7A(HNX(O~Um!wrchn{UqE znQG*7hwhiIc_gA@GUP*{6yj#n`YC;9N;m zZ4UzRM_BAJ7Kh8>_6{?RE>uc}mPkicNX1kDF%@a;gOeozi10ebWZ5tOjzD!)p|1WV z=-Ol%Fqv!wfpecUXwN^TXB%qZ$k6#Zg6bGaTMTcX`h4}C?8AdrarV?P3 zTi$MD@=^L=v2cadhBJ~Bh>M9-mw9&HJs$=@KKP{)SS$_o{E0lZphAh$ zPvc*_M-Y(7;s_Jl2$S>G#Y&05e3^4aQlTZ7h%)Ku3V=}_{GvyMVBkv+d)@xl#N3Uj zX|G6fxSW_Npq4c;zH%TC+_)>0VBk$#5TLW*6m4;czC)z?S0THOXLNlSLQv1=f39ZO zXd-|?G=z{0wSHM*jnyB|X|WY*(dF{d z6|xa(K7SVp1WUX z-ZA|}K_u&Q{-?5G7=l0nVH5q5C3xICG~PjjW9;wJ8cI3_5Lh(hAP|Uv{1GO*Z-kXp z-y<7QDhO(2-xj#)3`9dNl=S5*=MiA&wUK6Z8t%4Td1i2kDK_VE{-y~+1bD8n zUF!5xrSm1Sk!3Q`71-EHAiCn}%a1~WQFcFl8k}urgOw#qN|Vo=jhO6V_wJqcn4OKMe6Ey8L zXl}9^ZW%e{V&UG(sSi&ok4>$Kz5OEYZr#QE4RM)`vDwYhxh;%`uOc3|M&!Q^&VQX$ z-6d?}J|h-}2($zRL5PnaaB6d}#Q9Rm=nBP4)%BlPz)ClF0FVR#oQKCo2!h3WH=E6Y zVYsuiOGT9~ho>nMEmTMg)peH1Yb<~Cr0Pq!pB2pJ+HXsgwhAUXM5!%{Bdxroxh7H5 z>$=94WYwLwm3;2W`(?-;%m(&n&xa@SiM#8`s)*nHr+7Uo?_^Ihwgh%$3K&LBuDX3&ayaBc11e5jFvv^??u@2rG&W3 z`T-W|Y5@TO002lxU@ff{4h^AW1hK9*GBRpzu>hE*sGz8eS2iMOSWDq8e>}ku%kDbg zWNrHhL)RF6w>aaqmu7ne zg$*tO&K3Pq^7eCN7#JAP*EawF3;ZuUTWbo#WE_7x_V$}hu#nxFnip8Cyp*&O zPL3>(*HclQBP~CBhxgBu&lgD(!y_yNflgm8(_DSUY-ft`t~4XRbb|NYW4G%N1Qs@% z6PslI!F!GP6M6E1`KxZ!{h5RXB@RmP)2C0Rq+~D{oD5F+@#BK25WBdbkwjKbT~=Nb zucWU`G?!JjO1}L-=%Zp&@z@wz(YLhsn{7;>uTPl01?`TE_uM6W-^s3ihak|GaM4x; z28&z!DL>~CPd-*ZT~PM+&soWY0&?57?Sh~tz0_$XkH?=>K%!+sW@Z)u09Y9%oUDdC zUPp;wf+x(?q%F&T`W!(J9*@stvY9OQ=ah@K%3K6NKJ<^c_$HH`V~sqo8f{E6-JU|* zo?;h}J2Zke{o|VyN&@8bH(abB9Lbgc@xi`(&0qGI6X3pj^@>c^#7N-)37Pmy36q1G zkYGiWCcaK3eg--oTskibUrG1aB$?$W(q;mFNed;&VRXZ;}tc#aJt(C z`sz!Do{8q$Zs~q=Gx5=!XUB#=a2-eWmAc}a|df}*xOUQbbFHi5K& zr0b-jwL+fkPM~ig&+#Rh9a1wpu4Qx1(2+r3%FuC))OL!}cfUYh9=F6NwX+8sGV{w;_kjm;By$y4O_()5<Rv zFeEy7Md8BW{tIQ=yVA7w-1UjC7zZ;QT%pfZRaME$RJ^?oT2pS2<|#O3is zunPN#f|@RqU1>&p?waqpJ68`)53k!(_Hg=<Wi#C$nLZz++woMPxnxAL~IKeA>=)Y*vK(yBLt;U8L{img#uY|h5OM~2%|b$6r& zrPfcD!IW@?kKo@H|>{WtG_&xn2c6-x|Hr>$Qbn90B>#3-n zX4sFO&FAwMF0>UC5*R_zl2Yaa6O(sSL z>8ea!L(to(O5a8_^j0_7M>0D|o*O{13e=h(q-_(b^;IavHjHc=rez;acaG9>jJ)^c z)nBT1rf|nOc5`#XU}T6yEuxyPng*RjF{WsnX;H1Tb#17$CAtPqdd4oaIUaPg4f=C8 z8(4p9H2*ten;%SU56@Y0-0bT>bH^ZyWnq@fqbyg%Sh&Votc2*U>dt-A)WAmHFmd?hO zw~Z}bO|QC}UcGO6)zjSCi&|U1&|2F1>tFSL9Ay5RzZMYz{jV?h@0|Si;6l?a_%93= gZ~ra0{}jBy#4F_;+)W?ai9R5le$Qbg$@ZTGfl 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 diff --git a/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@1x.png b/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@1x.png deleted file mode 100644 index 60fc112b33566d36d8c866a509784edb2ff3a4fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2996 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 diff --git a/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@2x.png b/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@2x.png deleted file mode 100644 index 3d6884e18a3300d52b35cc4e5f3319836bc800da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14924 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 diff --git a/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@3x.png b/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@3x.png deleted file mode 100644 index 5f70a451cca151cf366fa425971968a3bf41a340..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25637 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 diff --git a/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5x83.5@2x.png b/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5x83.5@2x.png deleted file mode 100644 index b9ca8af0621f719216df1ff488cae337f80e4c95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23115 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

5znY;y?{?JLK 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 diff --git a/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json index dd3b8bc..905798d 100644 --- a/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,116 +1,14 @@ { - "images": [ - { - "size": "20x20", - "idiom": "iphone", - "filename": "AppIcon-20x20@2x.png", - "scale": "2x" - }, - { - "size": "20x20", - "idiom": "iphone", - "filename": "AppIcon-20x20@3x.png", - "scale": "3x" - }, - { - "size": "29x29", - "idiom": "iphone", - "filename": "AppIcon-29x29@2x-1.png", - "scale": "2x" - }, - { - "size": "29x29", - "idiom": "iphone", - "filename": "AppIcon-29x29@3x.png", - "scale": "3x" - }, - { - "size": "40x40", - "idiom": "iphone", - "filename": "AppIcon-40x40@2x.png", - "scale": "2x" - }, - { - "size": "40x40", - "idiom": "iphone", - "filename": "AppIcon-40x40@3x.png", - "scale": "3x" - }, - { - "size": "60x60", - "idiom": "iphone", - "filename": "AppIcon-60x60@2x.png", - "scale": "2x" - }, - { - "size": "60x60", - "idiom": "iphone", - "filename": "AppIcon-60x60@3x.png", - "scale": "3x" - }, - { - "size": "20x20", - "idiom": "ipad", - "filename": "AppIcon-20x20@1x.png", - "scale": "1x" - }, - { - "size": "20x20", - "idiom": "ipad", - "filename": "AppIcon-20x20@2x-1.png", - "scale": "2x" - }, - { - "size": "29x29", - "idiom": "ipad", - "filename": "AppIcon-29x29@1x.png", - "scale": "1x" - }, - { - "size": "29x29", - "idiom": "ipad", - "filename": "AppIcon-29x29@2x.png", - "scale": "2x" - }, - { - "size": "40x40", - "idiom": "ipad", - "filename": "AppIcon-40x40@1x.png", - "scale": "1x" - }, - { - "size": "40x40", - "idiom": "ipad", - "filename": "AppIcon-40x40@2x-1.png", - "scale": "2x" - }, - { - "size": "76x76", - "idiom": "ipad", - "filename": "AppIcon-76x76@1x.png", - "scale": "1x" - }, - { - "size": "76x76", - "idiom": "ipad", - "filename": "AppIcon-76x76@2x.png", - "scale": "2x" - }, - { - "size": "83.5x83.5", - "idiom": "ipad", - "filename": "AppIcon-83.5x83.5@2x.png", - "scale": "2x" - }, - { - "size": "1024x1024", - "idiom": "ios-marketing", - "filename": "AppIcon-512@2x.png", - "scale": "1x" + "images" : [ + { + "filename" : "AppIcon-512@2x.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 } - ], - "info": { - "version": 1, - "author": "xcode" - } -} +} \ No newline at end of file diff --git a/ios/App/App/Info.plist b/ios/App/App/Info.plist index cb27ab3..f6bc298 100644 --- a/ios/App/App/Info.plist +++ b/ios/App/App/Info.plist @@ -17,9 +17,9 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.0 + 1.0.1 CFBundleVersion - 4 + 1 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS diff --git a/ios/App/Podfile.lock b/ios/App/Podfile.lock new file mode 100644 index 0000000..965a462 --- /dev/null +++ b/ios/App/Podfile.lock @@ -0,0 +1,127 @@ +PODS: + - Capacitor (5.0.5): + - CapacitorCordova + - CapacitorApp (5.0.3): + - Capacitor + - CapacitorBrowser (5.0.3): + - Capacitor + - CapacitorCommunityMedia (5.0.1): + - Capacitor + - SDWebImage + - CapacitorCommunitySqlite (5.0.4): + - Capacitor + - SQLCipher + - ZIPFoundation + - CapacitorCordova (5.0.5) + - CapacitorFilesystem (5.0.4): + - Capacitor + - CapacitorGeolocation (5.0.4): + - Capacitor + - CapacitorHaptics (5.0.4): + - Capacitor + - CapacitorKeyboard (5.0.4): + - Capacitor + - CapacitorNetwork (5.0.4): + - Capacitor + - CapacitorPreferences (5.0.4): + - Capacitor + - CapacitorShare (5.0.4): + - Capacitor + - CapacitorSplashScreen (5.0.4): + - Capacitor + - CapacitorStatusBar (5.0.4): + - Capacitor + - CordovaPlugins (5.1.0): + - CapacitorCordova + - SDWebImage (5.15.5): + - SDWebImage/Core (= 5.15.5) + - SDWebImage/Core (5.15.5) + - SQLCipher (4.5.1): + - SQLCipher/standard (= 4.5.1) + - SQLCipher/common (4.5.1) + - SQLCipher/standard (4.5.1): + - SQLCipher/common + - ZIPFoundation (0.9.13) + +DEPENDENCIES: + - "Capacitor (from `../../node_modules/@capacitor/ios`)" + - "CapacitorApp (from `../../node_modules/@capacitor/app`)" + - "CapacitorBrowser (from `../../node_modules/@capacitor/browser`)" + - "CapacitorCommunityMedia (from `../../node_modules/@capacitor-community/media`)" + - "CapacitorCommunitySqlite (from `../../node_modules/@capacitor-community/sqlite`)" + - "CapacitorCordova (from `../../node_modules/@capacitor/ios`)" + - "CapacitorFilesystem (from `../../node_modules/@capacitor/filesystem`)" + - "CapacitorGeolocation (from `../../node_modules/@capacitor/geolocation`)" + - "CapacitorHaptics (from `../../node_modules/@capacitor/haptics`)" + - "CapacitorKeyboard (from `../../node_modules/@capacitor/keyboard`)" + - "CapacitorNetwork (from `../../node_modules/@capacitor/network`)" + - "CapacitorPreferences (from `../../node_modules/@capacitor/preferences`)" + - "CapacitorShare (from `../../node_modules/@capacitor/share`)" + - "CapacitorSplashScreen (from `../../node_modules/@capacitor/splash-screen`)" + - "CapacitorStatusBar (from `../../node_modules/@capacitor/status-bar`)" + - CordovaPlugins (from `../capacitor-cordova-ios-plugins`) + +SPEC REPOS: + trunk: + - SDWebImage + - SQLCipher + - ZIPFoundation + +EXTERNAL SOURCES: + Capacitor: + :path: "../../node_modules/@capacitor/ios" + CapacitorApp: + :path: "../../node_modules/@capacitor/app" + CapacitorBrowser: + :path: "../../node_modules/@capacitor/browser" + CapacitorCommunityMedia: + :path: "../../node_modules/@capacitor-community/media" + CapacitorCommunitySqlite: + :path: "../../node_modules/@capacitor-community/sqlite" + CapacitorCordova: + :path: "../../node_modules/@capacitor/ios" + CapacitorFilesystem: + :path: "../../node_modules/@capacitor/filesystem" + CapacitorGeolocation: + :path: "../../node_modules/@capacitor/geolocation" + CapacitorHaptics: + :path: "../../node_modules/@capacitor/haptics" + CapacitorKeyboard: + :path: "../../node_modules/@capacitor/keyboard" + CapacitorNetwork: + :path: "../../node_modules/@capacitor/network" + CapacitorPreferences: + :path: "../../node_modules/@capacitor/preferences" + CapacitorShare: + :path: "../../node_modules/@capacitor/share" + CapacitorSplashScreen: + :path: "../../node_modules/@capacitor/splash-screen" + CapacitorStatusBar: + :path: "../../node_modules/@capacitor/status-bar" + CordovaPlugins: + :path: "../capacitor-cordova-ios-plugins" + +SPEC CHECKSUMS: + Capacitor: b1248915663add1bd6567e2b67c1c1fa3abcf5e8 + CapacitorApp: 7a5dec8b33573707164b293475d5c89ba684364a + CapacitorBrowser: 2688852d02f1e89560a31b70521c71a5e7348860 + CapacitorCommunityMedia: 5724be7d15d5dbfeb704657c2a8ac5af718f5009 + CapacitorCommunitySqlite: e233665bd5f282483dd7fda96868002d003bdf58 + CapacitorCordova: f8c06b897c74ee8f7701fe10e6443b40822bc83a + CapacitorFilesystem: e1bdfab09b95b181c844c16abcfda45ec8e8ed6b + CapacitorGeolocation: 33015be1ef496585a60da9efa1c5642ff8624db3 + CapacitorHaptics: e36653b37326d71bb35ae42b944124037dbc3d97 + CapacitorKeyboard: d1b25fde6f19744ad09c890862aefc6e2a7ded3d + CapacitorNetwork: e2bd0bf1614aca34bb976f125a756a8a3df1c81a + CapacitorPreferences: 82a9ecf5355283a3b3cf7ac217d8c5534c4dee8a + CapacitorShare: 427bba238a1e3f116b2b349019aec6ea7f42cebd + CapacitorSplashScreen: 93a389d4f7673c08214ae25bb6f21d867d5305c5 + CapacitorStatusBar: 190e0321b8734f4244d0c81baa183a00d5806ddf + CordovaPlugins: cd41fec5db5ae1994e9d3e5b1df806ddc91bb946 + SDWebImage: fd7e1a22f00303e058058278639bf6196ee431fe + SQLCipher: 712e8416685e8e575b9b0706ffee71678b2fdcf8 + ZIPFoundation: ae5b4b813d216d3bf0a148773267fff14bd51d37 + +PODFILE CHECKSUM: 2f2990d97565df825952f09b25b8b20d119fc833 + +COCOAPODS: 1.12.1 diff --git a/package-lock.json b/package-lock.json index 381da1a..b4d1c82 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,20 +13,20 @@ "dependencies": { "@capacitor-community/media": "^5.0.0", "@capacitor-community/sqlite": "^5.0.3-1", - "@capacitor/android": "^5.0.3", - "@capacitor/app": "^5.0.2", - "@capacitor/browser": "^5.0.2", - "@capacitor/core": "^5.0.3", - "@capacitor/filesystem": "^5.0.2", - "@capacitor/geolocation": "^5.0.2", - "@capacitor/haptics": "^5.0.2", - "@capacitor/ios": "^5.0.3", - "@capacitor/keyboard": "^5.0.2", - "@capacitor/network": "^5.0.2", - "@capacitor/preferences": "^5.0.2", - "@capacitor/share": "^5.0.2", - "@capacitor/splash-screen": "^5.0.2", - "@capacitor/status-bar": "^5.0.2", + "@capacitor/android": "^5.0.0", + "@capacitor/app": "^5.0.0", + "@capacitor/browser": "^5.0.0", + "@capacitor/core": "^5.0.0", + "@capacitor/filesystem": "^5.0.0", + "@capacitor/geolocation": "^5.0.0", + "@capacitor/haptics": "^5.0.0", + "@capacitor/ios": "^5.0.0", + "@capacitor/keyboard": "^5.0.0", + "@capacitor/network": "^5.0.0", + "@capacitor/preferences": "^5.0.0", + "@capacitor/share": "^5.0.0", + "@capacitor/splash-screen": "^5.0.0", + "@capacitor/status-bar": "^5.0.0", "@craco/craco": "^7.0.0", "@ionic/react": "^7.0.5", "@ionic/react-router": "^7.0.5", @@ -62,7 +62,8 @@ }, "devDependencies": { "@babel/plugin-proposal-private-property-in-object": "^7.21.11", - "@capacitor/cli": "^5.0.3", + "@capacitor/cli": "^5.0.0", + "@ionic/cli": "^7.1.1", "@ionic/lab": "^3.2.15", "@testing-library/jest-dom": "^5.16.4", "@testing-library/user-event": "^14.1.1", @@ -2340,9 +2341,9 @@ } }, "node_modules/@capacitor-community/sqlite": { - "version": "5.0.3-1", - "resolved": "https://registry.npmjs.org/@capacitor-community/sqlite/-/sqlite-5.0.3-1.tgz", - "integrity": "sha512-PbODIG1z+WPbNb5FxVViL8S8U1e2PJFK1uoc+3euu7BTRmBtjk/l16LabpC5kmPPQjUaov7A5y4gcQ1fSJw37w==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@capacitor-community/sqlite/-/sqlite-5.0.4.tgz", + "integrity": "sha512-QWpyxCh/9U3kf/iy4VEKzh5b0k9icOgq00s2Nl+w/a+vYWmdeL4VkxI5LbR6A0/Z5U9YWUY6WjKq3JPdyVYVcw==", "dependencies": { "jeep-sqlite": "^2.3.6" }, @@ -2375,9 +2376,9 @@ } }, "node_modules/@capacitor/cli": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@capacitor/cli/-/cli-5.0.5.tgz", - "integrity": "sha512-Mf+lr2L98NfDZki3e5jdG176LUH0rf+OFoMa/oFf6dp4iHwQjS1HiHN5iaGcfJ5RWt432SMEB0dOgicXPb4KCQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@capacitor/cli/-/cli-5.1.0.tgz", + "integrity": "sha512-pAXCfLmiaG1F3TEcl7SR/EggIyk8SS5VMmHZPlxNOurilKf1gSIJUbwOs736cmOaqRmCKE8T/WtcBeKMdMdN1g==", "dev": true, "dependencies": { "@ionic/cli-framework-output": "^2.2.5", @@ -2939,6 +2940,46 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "node_modules/@ionic/cli": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@ionic/cli/-/cli-7.1.1.tgz", + "integrity": "sha512-Av9vaFGtOu6PQvKlBFUSMk+XWGWsUDWF9ZeQQ/jcfjYMv1u7BcvUNyw84hnelk/TDz4iWVooO7HFKpTGKkz/0g==", + "dev": true, + "dependencies": { + "@ionic/cli-framework": "5.1.4", + "@ionic/cli-framework-output": "2.2.6", + "@ionic/cli-framework-prompts": "2.1.11", + "@ionic/utils-array": "2.1.6", + "@ionic/utils-fs": "3.1.7", + "@ionic/utils-network": "2.1.6", + "@ionic/utils-process": "2.1.11", + "@ionic/utils-stream": "3.1.6", + "@ionic/utils-subprocess": "2.1.12", + "@ionic/utils-terminal": "2.3.4", + "chalk": "^4.0.0", + "debug": "^4.0.0", + "diff": "^4.0.1", + "elementtree": "^0.1.7", + "leek": "0.0.24", + "lodash": "^4.17.5", + "open": "^7.0.4", + "os-name": "^4.0.0", + "semver": "^7.1.1", + "split2": "^3.0.0", + "ssh-config": "^1.1.1", + "stream-combiner2": "^1.1.1", + "superagent": "^8.0.9", + "superagent-proxy": "^3.0.0", + "tar": "^6.0.1", + "tslib": "^2.0.1" + }, + "bin": { + "ionic": "bin/ionic" + }, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/@ionic/cli-framework": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/@ionic/cli-framework/-/cli-framework-5.1.3.tgz", @@ -2979,6 +3020,21 @@ "node": ">=16.0.0" } }, + "node_modules/@ionic/cli-framework-prompts": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/@ionic/cli-framework-prompts/-/cli-framework-prompts-2.1.11.tgz", + "integrity": "sha512-zTSLrw1gjDc5y4e62HB3JlPqtA8wXlV5QJBMWK1bGqjVSea4pdJ/RlYOT8U/uCZkBkFiZXv8E9/bmm1BTEnfoQ==", + "dev": true, + "dependencies": { + "@ionic/utils-terminal": "2.3.4", + "debug": "^4.0.0", + "inquirer": "^7.0.0", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/@ionic/cli-framework/node_modules/@ionic/cli-framework-output": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/@ionic/cli-framework-output/-/cli-framework-output-2.2.5.tgz", @@ -3062,6 +3118,142 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@ionic/cli/node_modules/@ionic/cli-framework": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@ionic/cli-framework/-/cli-framework-5.1.4.tgz", + "integrity": "sha512-SSUG0JGHmf23I1C1zU2LtZYz41o/zNWXOz58Xa4bapAo6DDBGt8LDndTCznKhRzNAqWHOa7+M8ogA4K3paTB3A==", + "dev": true, + "dependencies": { + "@ionic/cli-framework-output": "2.2.6", + "@ionic/utils-array": "2.1.6", + "@ionic/utils-fs": "3.1.7", + "@ionic/utils-object": "2.1.6", + "@ionic/utils-process": "2.1.11", + "@ionic/utils-stream": "3.1.6", + "@ionic/utils-subprocess": "2.1.12", + "@ionic/utils-terminal": "2.3.4", + "chalk": "^4.0.0", + "debug": "^4.0.0", + "lodash": "^4.17.5", + "minimist": "^1.2.0", + "rimraf": "^3.0.0", + "tslib": "^2.0.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@ionic/cli/node_modules/@ionic/utils-array": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@ionic/utils-array/-/utils-array-2.1.6.tgz", + "integrity": "sha512-0JZ1Zkp3wURnv8oq6Qt7fMPo5MpjbLoUoa9Bu2Q4PJuSDWM8H8gwF3dQO7VTeUj3/0o1IB1wGkFWZZYgUXZMUg==", + "dev": true, + "dependencies": { + "debug": "^4.0.0", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@ionic/cli/node_modules/@ionic/utils-object": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@ionic/utils-object/-/utils-object-2.1.6.tgz", + "integrity": "sha512-vCl7sl6JjBHFw99CuAqHljYJpcE88YaH2ZW4ELiC/Zwxl5tiwn4kbdP/gxi2OT3MQb1vOtgAmSNRtusvgxI8ww==", + "dev": true, + "dependencies": { + "debug": "^4.0.0", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@ionic/cli/node_modules/@ionic/utils-process": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/@ionic/utils-process/-/utils-process-2.1.11.tgz", + "integrity": "sha512-Uavxn+x8j3rDlZEk1X7YnaN6wCgbCwYQOeIjv/m94i1dzslqWhqIHEqxEyeE8HsT5Negboagg7GtQiABy+BLbA==", + "dev": true, + "dependencies": { + "@ionic/utils-object": "2.1.6", + "@ionic/utils-terminal": "2.3.4", + "debug": "^4.0.0", + "signal-exit": "^3.0.3", + "tree-kill": "^1.2.2", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@ionic/cli/node_modules/@ionic/utils-stream": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@ionic/utils-stream/-/utils-stream-3.1.6.tgz", + "integrity": "sha512-4+Kitey1lTA1yGtnigeYNhV/0tggI3lWBMjC7tBs1K9GXa/q7q4CtOISppdh8QgtOhrhAXS2Igp8rbko/Cj+lA==", + "dev": true, + "dependencies": { + "debug": "^4.0.0", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@ionic/cli/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ionic/cli/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@ionic/cli/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@ionic/cli/node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "dependencies": { + "readable-stream": "^3.0.0" + } + }, "node_modules/@ionic/core": { "version": "7.0.12", "resolved": "https://registry.npmjs.org/@ionic/core/-/core-7.0.12.tgz", @@ -3171,6 +3363,19 @@ "node": ">=16.0.0" } }, + "node_modules/@ionic/utils-network": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@ionic/utils-network/-/utils-network-2.1.6.tgz", + "integrity": "sha512-CJ91+WXSBlH2mJjJH70g6vhJ+wkXm1/3DyklW0gP42CgumzMtPWkm/DiROKCVqdwC+Ak7o40wyi5mtlCU742cw==", + "dev": true, + "dependencies": { + "debug": "^4.0.0", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/@ionic/utils-object": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@ionic/utils-object/-/utils-object-2.1.5.tgz", @@ -6416,6 +6621,18 @@ "node": ">=0.10.0" } }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dev": true, + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/ast-types-flow": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", @@ -7508,6 +7725,12 @@ "node": ">=10" } }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, "node_modules/check-types": { "version": "11.2.2", "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.2.2.tgz", @@ -7707,6 +7930,27 @@ "node": ">= 10.0" } }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -8073,6 +8317,12 @@ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "dev": true }, + "node_modules/cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "dev": true + }, "node_modules/copy-concurrently": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", @@ -9822,6 +10072,15 @@ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "dev": true }, + "node_modules/data-uri-to-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", + "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/data-urls": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", @@ -9939,6 +10198,103 @@ "node": ">=0.10.0" } }, + "node_modules/degenerator": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-3.0.4.tgz", + "integrity": "sha512-Z66uPeBfHZAHVmue3HPfyKu2Q0rC2cRxbTOsvmU/po5fvvcx27W4mIu9n0PUlQih4oUYvcG1BsbtVv8x7KDOSw==", + "dev": true, + "dependencies": { + "ast-types": "^0.13.2", + "escodegen": "^1.8.1", + "esprima": "^4.0.0", + "vm2": "^3.9.17" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/degenerator/node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/degenerator/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/degenerator/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/degenerator/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/degenerator/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/degenerator/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -10033,6 +10389,16 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", @@ -10262,6 +10628,15 @@ "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", "dev": true }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.2" + } + }, "node_modules/duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -11665,6 +12040,20 @@ "node": ">=0.10.0" } }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/extglob": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", @@ -11769,6 +12158,12 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true + }, "node_modules/fastq": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", @@ -11814,6 +12209,30 @@ "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", "dev": true }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -12176,6 +12595,21 @@ "node": ">= 6" } }, + "node_modules/formidable": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz", + "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==", + "dev": true, + "dependencies": { + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0", + "qs": "^6.11.0" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -12310,6 +12744,43 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/ftp": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", + "integrity": "sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==", + "dev": true, + "dependencies": { + "readable-stream": "1.1.x", + "xregexp": "2.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/ftp/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "node_modules/ftp/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/ftp/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -12419,6 +12890,64 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-uri": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz", + "integrity": "sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "data-uri-to-buffer": "3", + "debug": "4", + "file-uri-to-path": "2", + "fs-extra": "^8.1.0", + "ftp": "^0.3.10" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/get-uri/node_modules/file-uri-to-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz", + "integrity": "sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/get-uri/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/get-uri/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/get-uri/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -12822,6 +13351,15 @@ "he": "bin/he" } }, + "node_modules/hexoid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/history": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", @@ -13347,6 +13885,30 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/internal-slot": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", @@ -13381,6 +13943,12 @@ "npm": ">=6.0.0" } }, + "node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "dev": true + }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -16356,6 +16924,32 @@ "shell-quote": "^1.7.3" } }, + "node_modules/leek": { + "version": "0.0.24", + "resolved": "https://registry.npmjs.org/leek/-/leek-0.0.24.tgz", + "integrity": "sha512-6PVFIYXxlYF0o6hrAsHtGpTmi06otkwNrMcmQ0K96SeSRHPREPa9J3nJZ1frliVH7XT0XFswoJFQoXsDukzGNQ==", + "dev": true, + "dependencies": { + "debug": "^2.1.0", + "lodash.assign": "^3.2.0", + "rsvp": "^3.0.21" + } + }, + "node_modules/leek/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/leek/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -16471,12 +17065,91 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "node_modules/lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha512-t3N26QR2IdSN+gqSy9Ds9pBu/J1EAFEshKlUHpJG3rvyJOYgcELIxcIeKKfZk7sjOz11cFfzJRsyFry/JyabJQ==", + "dev": true, + "dependencies": { + "lodash._basecopy": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "node_modules/lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha512-rFR6Vpm4HeCK1WPGvjZSJ+7yik8d8PVUdCJx5rT2pogG4Ve/2ZS7kfmO5l5T2o5V2mqlNIfSF5MZlr1+xOoYQQ==", + "dev": true + }, + "node_modules/lodash._bindcallback": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", + "integrity": "sha512-2wlI0JRAGX8WEf4Gm1p/mv/SZ+jLijpj0jyaE/AXeuQphzCgD8ZQW4oSpoN8JAopujOFGU3KMuq7qfHBWlGpjQ==", + "dev": true + }, + "node_modules/lodash._createassigner": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", + "integrity": "sha512-LziVL7IDnJjQeeV95Wvhw6G28Z8Q6da87LWKOPWmzBLv4u6FAT/x5v00pyGW0u38UoogNF2JnD3bGgZZDaNEBw==", + "dev": true, + "dependencies": { + "lodash._bindcallback": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash.restparam": "^3.0.0" + } + }, + "node_modules/lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha512-RrL9VxMEPyDMHOd9uFbvMe8X55X16/cGM5IgOKgRElQZutpX89iS6vwl64duTV1/16w5JY7tuFNXqoekmh1EmA==", + "dev": true + }, + "node_modules/lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha512-De+ZbrMu6eThFti/CSzhRvTKMgQToLxbij58LMfM8JnYDNSOjkjTCIaa8ixglOeGh2nyPlakbt5bJWJ7gvpYlQ==", + "dev": true + }, + "node_modules/lodash.assign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", + "integrity": "sha512-/VVxzgGBmbphasTg51FrztxQJ/VgAUpol6zmJuSVSGcNg4g7FA4z7rQV8Ovr9V3vFBNWZhvKWHfpAytjTVUfFA==", + "dev": true, + "dependencies": { + "lodash._baseassign": "^3.0.0", + "lodash._createassigner": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==", + "dev": true + }, + "node_modules/lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha512-JwObCrNJuT0Nnbuecmqr5DgtuBppuCvGD9lxjFpAzwnVtdGoDQ1zig+5W8k5/6Gcn0gZ3936HDAlGd28i7sOGQ==", "dev": true }, + "node_modules/lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha512-CuBsapFjcubOGMn3VD+24HOAPxM79tH+V6ivJL3CHYjtrawauDJHUk//Yew9Hvc6e9rbCrURGk8z6PC+8WJBfQ==", + "dev": true, + "dependencies": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -16489,6 +17162,12 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha512-L4/arjjuq4noiUJpt3yS6KIKDtJwNe2fIYgMqyYYKoeIfV1iEqvPwhCx23o+R9dzouGihDAPN1dTIRWa7zk8tw==", + "dev": true + }, "node_modules/lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -16530,6 +17209,18 @@ "yallist": "^3.0.2" } }, + "node_modules/macos-release": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.1.tgz", + "integrity": "sha512-DXqXhEM7gW59OjZO8NIjBCz9AQ1BEMrfiOAl4AYByHCtVHRF4KoGNO8mqQeM8lRCtQe/UnJ4imO/d2HdkKsd+A==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/magic-string": { "version": "0.25.9", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", @@ -16993,6 +17684,12 @@ "multicast-dns": "cli.js" } }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", @@ -17126,6 +17823,15 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", @@ -17584,6 +18290,31 @@ "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", "dev": true }, + "node_modules/os-name": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-4.0.1.tgz", + "integrity": "sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==", + "dev": true, + "dependencies": { + "macos-release": "^2.5.0", + "windows-release": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -17651,6 +18382,40 @@ "node": ">=6" } }, + "node_modules/pac-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz", + "integrity": "sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4", + "get-uri": "3", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "5", + "pac-resolver": "^5.0.0", + "raw-body": "^2.2.0", + "socks-proxy-agent": "5" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/pac-resolver": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-5.0.1.tgz", + "integrity": "sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q==", + "dev": true, + "dependencies": { + "degenerator": "^3.0.2", + "ip": "^1.1.5", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -19444,6 +20209,31 @@ "node": ">= 0.10" } }, + "node_modules/proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-5.0.0.tgz", + "integrity": "sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.0", + "debug": "4", + "http-proxy-agent": "^4.0.0", + "https-proxy-agent": "^5.0.0", + "lru-cache": "^5.1.1", + "pac-proxy-agent": "^5.0.0", + "proxy-from-env": "^1.0.0", + "socks-proxy-agent": "^5.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -20307,6 +21097,19 @@ "node": ">=10" } }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", @@ -20459,6 +21262,24 @@ "node": ">= 10.13.0" } }, + "node_modules/rsvp": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", + "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==", + "dev": true, + "engines": { + "node": "0.12.* || 4.* || 6.* || >= 7.*" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -20491,6 +21312,24 @@ "aproba": "^1.1.1" } }, + "node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/rxjs/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, "node_modules/safe-array-concat": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", @@ -21010,6 +21849,16 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, "node_modules/snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -21218,6 +22067,40 @@ "websocket-driver": "^0.7.4" } }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", + "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "4", + "socks": "^2.3.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/socks/node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, "node_modules/source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", @@ -21388,6 +22271,12 @@ "resolved": "https://registry.npmjs.org/sql.js/-/sql.js-1.8.0.tgz", "integrity": "sha512-3HD8pSkZL+5YvYUI8nlvNILs61ALqq34xgmF+BHpqxe68yZIJ1H+sIVIODvni25+CcxHUxDyrTJUL0lE/m7afw==" }, + "node_modules/ssh-config": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/ssh-config/-/ssh-config-1.1.6.tgz", + "integrity": "sha512-ZPO9rECxzs5JIQ6G/2EfL1I9ho/BVZkx9HRKn8+0af7QgwAmumQ7XBFP1ggMyPMo+/tUbmv0HFdv4qifdO/9JA==", + "dev": true + }, "node_modules/ssr-window": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-4.0.2.tgz", @@ -21551,6 +22440,16 @@ "readable-stream": "^2.0.2" } }, + "node_modules/stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", + "dev": true, + "dependencies": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, "node_modules/stream-each": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", @@ -21869,6 +22768,69 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/superagent": { + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.0.9.tgz", + "integrity": "sha512-4C7Bh5pyHTvU33KpZgwrNKh/VQnvgtCSqPRfJAUdmrtSYePVzVg4E4OzsrbkhJj9O7SO6Bnv75K/F8XVZT8YHA==", + "dev": true, + "dependencies": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.4", + "debug": "^4.3.4", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^2.1.2", + "methods": "^1.1.2", + "mime": "2.6.0", + "qs": "^6.11.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=6.4.0 <13 || >=14" + } + }, + "node_modules/superagent-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/superagent-proxy/-/superagent-proxy-3.0.0.tgz", + "integrity": "sha512-wAlRInOeDFyd9pyonrkJspdRAxdLrcsZ6aSnS+8+nu4x1aXbz6FWSTT9M6Ibze+eG60szlL7JA8wEIV7bPWuyQ==", + "dev": true, + "dependencies": { + "debug": "^4.3.2", + "proxy-agent": "^5.0.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "superagent": ">= 0.15.4 || 1 || 2 || 3" + } + }, + "node_modules/superagent/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/superagent/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -22423,6 +23385,12 @@ "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", "dev": true }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, "node_modules/through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -22461,6 +23429,18 @@ "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -23200,6 +24180,32 @@ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", "dev": true }, + "node_modules/vm2": { + "version": "3.9.19", + "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.19.tgz", + "integrity": "sha512-J637XF0DHDMV57R6JyVsTak7nIL8gy5KH4r1HiwWLf/4GBbb5MKL5y7LpmF4A8E2nR6XmzpmMFQ7V7ppPTmUQg==", + "deprecated": "The library contains critical security issues and should not be used for production! The maintenance of the project has been discontinued. Consider migrating your code to isolated-vm.", + "dev": true, + "dependencies": { + "acorn": "^8.7.0", + "acorn-walk": "^8.2.0" + }, + "bin": { + "vm2": "bin/vm2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/vm2/node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", @@ -24005,6 +25011,68 @@ "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" }, + "node_modules/windows-release": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-4.0.0.tgz", + "integrity": "sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==", + "dev": true, + "dependencies": { + "execa": "^4.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/windows-release/node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/windows-release/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/windows-release/node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "engines": { + "node": ">=8.12.0" + } + }, "node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -24565,6 +25633,15 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, + "node_modules/xregexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", + "integrity": "sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/package.json b/package.json index f8c77f0..ea4e4ea 100644 --- a/package.json +++ b/package.json @@ -6,20 +6,20 @@ "dependencies": { "@capacitor-community/media": "^5.0.0", "@capacitor-community/sqlite": "^5.0.3-1", - "@capacitor/android": "^5.0.3", - "@capacitor/app": "^5.0.2", - "@capacitor/browser": "^5.0.2", - "@capacitor/core": "^5.0.3", - "@capacitor/filesystem": "^5.0.2", - "@capacitor/geolocation": "^5.0.2", - "@capacitor/haptics": "^5.0.2", - "@capacitor/ios": "^5.0.3", - "@capacitor/keyboard": "^5.0.2", - "@capacitor/network": "^5.0.2", - "@capacitor/preferences": "^5.0.2", - "@capacitor/share": "^5.0.2", - "@capacitor/splash-screen": "^5.0.2", - "@capacitor/status-bar": "^5.0.2", + "@capacitor/android": "^5.0.0", + "@capacitor/app": "^5.0.0", + "@capacitor/browser": "^5.0.0", + "@capacitor/core": "^5.0.0", + "@capacitor/filesystem": "^5.0.0", + "@capacitor/geolocation": "^5.0.0", + "@capacitor/haptics": "^5.0.0", + "@capacitor/ios": "^5.0.0", + "@capacitor/keyboard": "^5.0.0", + "@capacitor/network": "^5.0.0", + "@capacitor/preferences": "^5.0.0", + "@capacitor/share": "^5.0.0", + "@capacitor/splash-screen": "^5.0.0", + "@capacitor/status-bar": "^5.0.0", "@craco/craco": "^7.0.0", "@ionic/react": "^7.0.5", "@ionic/react-router": "^7.0.5", @@ -86,7 +86,8 @@ }, "devDependencies": { "@babel/plugin-proposal-private-property-in-object": "^7.21.11", - "@capacitor/cli": "^5.0.3", + "@capacitor/cli": "^5.0.0", + "@ionic/cli":"^7.1.1", "@ionic/lab": "^3.2.15", "@testing-library/jest-dom": "^5.16.4", "@testing-library/user-event": "^14.1.1", @@ -120,5 +121,8 @@ "bundledDependencies": [ "ionicons/icons" ], - "description": "GPlates App" + "description": "GPlates App", + "bundleDependencies": [ + "ionicons/icons" + ] } \ No newline at end of file diff --git a/set-env.sh b/set-env.sh index e744e80..0f015c9 100755 --- a/set-env.sh +++ b/set-env.sh @@ -3,14 +3,14 @@ # how-to-use "source ./set-env.sh" or ". ./set-env.sh" # set the correct JAVA_HOME and ANDROID_SDK_ROOT for your computer -export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.16.1.jdk/Contents/Home/ +export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jbr/Contents/Home/ export ANDROID_SDK_ROOT=/Users/mchin/Library/Android/sdk export PATH=$PATH:$ANDROID_SDK_ROOT/platform-tools/ export PATH=$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/ export PATH=$PATH:$ANDROID_SDK_ROOT/emulator/ -export CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL=https://services.gradle.org/distributions/gradle-6.9-all.zip +export CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL=https://services.gradle.org/distributions/gradle-8.1-all.zip export SKIP_PREFLIGHT_CHECK=true diff --git a/src/components/AddLocationWidget.scss b/src/components/AddLocationWidget.scss index 6d1ed67..15849f0 100644 --- a/src/components/AddLocationWidget.scss +++ b/src/components/AddLocationWidget.scss @@ -1,7 +1,7 @@ .location-container { overflow: hidden; position: absolute; - bottom: 0; + bottom: env(safe-area-inset-bottom); right: 0; height: auto; z-index: 1000; @@ -33,7 +33,7 @@ /*left: 0;*/ right: 0; text-align: center; - bottom: 0; + bottom: env(safe-area-inset-bottom); max-width: 600px; /*background-color: pink;*/ diff --git a/src/components/AddLocationWidget.tsx b/src/components/AddLocationWidget.tsx index 035709d..d9366f4 100644 --- a/src/components/AddLocationWidget.tsx +++ b/src/components/AddLocationWidget.tsx @@ -11,15 +11,12 @@ import { IonItem, IonLabel, IonInput, - IonItemDivider, IonModal, IonHeader, IonToolbar, IonButtons, IonTitle, IonContent, - IonAccordionGroup, - IonAccordion, useIonToast, } from '@ionic/react' import { @@ -29,7 +26,6 @@ import { Cartographic, Math as CMath, Cartesian3, - ConstantPositionProperty, SceneMode, Rectangle, } from 'cesium' @@ -280,11 +276,6 @@ const AddLocationWidget: React.FC = ({ let paleoCoords: { lon: number; lat: number }[] = [] - // fetch finite rotation for plate IDs - await currentModel.fetchFiniteRotations( - presentDayLonLatList.map((lll) => String(lll.pid)) - ) - presentDayLonLatList.forEach((point) => { if (currentModel) { let rp = currentModel.rotate(point, paleoAge) diff --git a/src/components/AgeSlider.scss b/src/components/AgeSlider.scss index a4de127..d2bfbd7 100755 --- a/src/components/AgeSlider.scss +++ b/src/components/AgeSlider.scss @@ -125,6 +125,12 @@ $transition: all 150ms; text-shadow: 1px 1px 8px #000000, 1px 1px 8px #000000, 1px 1px 8px #000000; } +@media only screen and (max-width: 380px) { + .time { + font-size: 20px; + } +} + .time-input { ion-input { input { diff --git a/src/components/CustomToolbar.scss b/src/components/CustomToolbar.scss index 5d034a2..3941cac 100644 --- a/src/components/CustomToolbar.scss +++ b/src/components/CustomToolbar.scss @@ -57,4 +57,5 @@ bottom: unset !important; top: 8px !important; } + height: 100%; } diff --git a/src/components/CustomToolbar.tsx b/src/components/CustomToolbar.tsx index edc0e27..8f9f57c 100644 --- a/src/components/CustomToolbar.tsx +++ b/src/components/CustomToolbar.tsx @@ -128,7 +128,7 @@ const CustomToolbar: React.FC = ({ scene }) => { const getPlateID = async () => { if (currentModel !== undefined) { let pid = plateIDMap.get(currentModel.name) - console.log(plateIDMap) + //console.log(plateIDMap) if (pid === undefined) { let result = await fetch( serverURL + @@ -172,8 +172,8 @@ const CustomToolbar: React.FC = ({ scene }) => { } if (currentLocationLat !== undefined && currentLocationLon !== undefined) { - await getPlateID() if (paleoAge === 0) { + getPlateID() updateCurrentLocationEntity(currentLocationLat, currentLocationLon) scene.camera.flyTo({ destination: Cartesian3.fromDegrees( @@ -184,6 +184,7 @@ const CustomToolbar: React.FC = ({ scene }) => { }) } else { if (currentModel !== undefined) { + await getPlateID() let pid = plateIDMap.get(currentModel.name) if (pid !== undefined) { let newLatLon = currentModel.rotate( @@ -244,10 +245,11 @@ const CustomToolbar: React.FC = ({ scene }) => { * */ useEffect(() => { + /* if (currentLocationLat !== undefined && currentLocationLon !== undefined) { updateCurrentLocationEntity(currentLocationLat, currentLocationLon) getPlateID() - } + }*/ }, [currentRasterID]) //do not show social sharing button on desktop/web browser diff --git a/src/components/GraphPanel.scss b/src/components/GraphPanel.scss index d0f8a76..1191f9c 100644 --- a/src/components/GraphPanel.scss +++ b/src/components/GraphPanel.scss @@ -7,6 +7,7 @@ $panel-height: 30vh; min-height: 300px; background-color: rgba(0, 0, 0, 0.85); width: 100vw; + z-index: 1000; } .graph-panel-list { diff --git a/src/components/MajorCities.tsx b/src/components/MajorCities.tsx index de8489e..2cf90f4 100644 --- a/src/components/MajorCities.tsx +++ b/src/components/MajorCities.tsx @@ -2,25 +2,23 @@ import React, { useEffect } from 'react' import * as Cesium from 'cesium' import { useRecoilValue } from 'recoil' import { ageState, showCities, currentRasterIDState } from '../functions/atoms' -import { serverURL } from '../functions/settings' +import { DEBUG, serverURL } from '../functions/settings' import { currentModel } from '../functions/rotationModel' import { cesiumViewer } from '../functions/cesiumViewer' import { getEnabledLayers } from '../functions/vectorLayers' //for example: "Sydney": [151.2099, -33.8651], -let citiesLonLat: any = null +let citiesLonLat: { [key: string]: [number, number] } | null = null //for example: "SETON2012": [801, 801, 801, 801, 801], -let cityPlateIDs: any = null +let cityPlateIDs: { [key: string]: number[] } | null = null -let cityCesiumEntities: any = [] -let labels: any = null +let cityCesiumEntities: any = [] //cesium entities +let labels: any = null //cesium primitives -// -// -// +/** + * remove the cities from the globe + */ const undrawCities = () => { - //console.log('undraw cities') - //console.log(cityCesiumEntities) for (let i = 0; i < cityCesiumEntities.length; i++) { cesiumViewer.entities.remove(cityCesiumEntities[i]) } @@ -31,9 +29,12 @@ const undrawCities = () => { } } -// -// -// +/** + * + * @param lon + * @param lat + * @param name + */ const drawCity = (lon: number, lat: number, name: string) => { let locationCartesian: Cesium.Cartesian3 = Cesium.Cartesian3.fromDegrees( lon, @@ -74,22 +75,32 @@ const drawCity = (lon: number, lat: number, name: string) => { } } -// -// -// -const drawPaleoCity = (city: number[], name: string, age: number) => { +/** + * rotate city's coordinates and show it on the globe + * + * @param city_coords + * @param name + * @param age + * @returns + */ +const drawPaleoCity = (city_coords: number[], name: string, age: number) => { if (cityPlateIDs) { - //reconstruct location - let reconstructedCity = currentModel?.rotateLonLatPid( - currentModel.getTimeIndex(age), + //reconstruct the city coordinates + let reconstructedCity = currentModel?.rotate( { - lon: city[0], - lat: city[1], - pid: cityPlateIDs[currentModel?.name][city[2]], //plate ID - } + lon: city_coords[0], + lat: city_coords[1], + pid: cityPlateIDs[currentModel?.name][city_coords[2]], //plate ID + }, + age ) if (!reconstructedCity) { - console.log('reconstructed city coordinates are undefined.') + if (DEBUG) { + console.log(name, age, city_coords) + console.log( + 'The paleo-city coordinates are undefined. 1. The city does not exist at the time. 2. The rotation model has not been loaded yet. 3. The paleo-age is 0.' + ) + } return } drawCity(reconstructedCity.lon, reconstructedCity.lat, name) //draw reconstructed coordinates @@ -98,9 +109,9 @@ const drawPaleoCity = (city: number[], name: string, age: number) => { } } -// -// -// +/** + * + */ const loadCityData = () => { fetch(serverURL + '/mobile/get_cities') .then((response) => response.json()) @@ -113,23 +124,24 @@ const loadCityData = () => { }) } -// -// +/** + * + */ interface MajorCitiesProps {} -// -// + +/** + * + * @returns + */ const MajorCities: React.FC = () => { const paleoAge = useRecoilValue(ageState) const showCitiesFlag = useRecoilValue(showCities) const currentRasterID = useRecoilValue(currentRasterIDState) - // - // - // + /** + * + */ const drawPaleoCities = async () => { - if (currentModel) { - await currentModel.fetchFiniteRotations(cityPlateIDs[currentModel.name]) - } //paleoAge !== 0, draw reconstructed city coordinates if (showCitiesFlag && paleoAge !== 0 && currentModel) { for (let key in citiesLonLat) { @@ -138,17 +150,12 @@ const MajorCities: React.FC = () => { } } - // - // - // + /** + * + */ useEffect(() => { if (showCitiesFlag) { undrawCities() - // fetch finite rotation for plate IDs - // finite rotation must be ready before currentModel.rotateLonLatPid() - if (currentModel) { - currentModel.fetchFiniteRotations(cityPlateIDs[currentModel.name]) - } for (let key in citiesLonLat) { drawPaleoCity(citiesLonLat[key], key, paleoAge) @@ -156,9 +163,9 @@ const MajorCities: React.FC = () => { } }, [paleoAge]) - // - // - // + /** + * + */ useEffect(() => { // draw cities on cesium here if (showCitiesFlag) { @@ -167,7 +174,6 @@ const MajorCities: React.FC = () => { drawCity(citiesLonLat[key][0], citiesLonLat[key][1], key) //paleoAge===0, draw present-day cities } } else { - // fetch finite rotation for plate IDs if (currentModel && cityPlateIDs) { drawPaleoCities() } @@ -177,16 +183,16 @@ const MajorCities: React.FC = () => { } }, [showCitiesFlag]) - // - // initial loading - // + /** + * initial loading + */ useEffect(() => { loadCityData() }, []) - // - // when the current raster is changed - // + /** + * when the current raster is changed + */ useEffect(() => { //find out if cities is enabled for this raster let enabledLayers = getEnabledLayers(currentRasterID) diff --git a/src/components/RasterMenu.tsx b/src/components/RasterMenu.tsx index 4e0e8c3..148cc27 100644 --- a/src/components/RasterMenu.tsx +++ b/src/components/RasterMenu.tsx @@ -25,23 +25,23 @@ import { rasterGroupState, currentRasterIDState, } from '../functions/atoms' -import { getRasters, getRasterByID } from '../functions/rasterMaps' -import { cesiumViewer, pruneLayers } from '../functions/cesiumViewer' +import { getRasters } from '../functions/rasterMaps' +import { + cesiumViewer, + pruneLayers, + drawBasemap, +} from '../functions/cesiumViewer' import { timeRange } from '../functions/util' import { raiseGraticuleLayerToTop } from '../functions/graticule' import RotationModel, { rotationModels, setCurrentModel, } from '../functions/rotationModel' -import { - loadVectorLayers, - getVectorLayers, - getEnabledLayers, -} from '../functions/vectorLayers' -import { createCesiumImageryProvider } from '../functions/cesiumViewer' +import { loadVectorLayers, getVectorLayers } from '../functions/vectorLayers' import { AnimationService } from '../functions/animation' import { RasterCfg, RasterGroup } from '../functions/types' import { closeCircleOutline } from 'ionicons/icons' +import { DEBUG } from '../functions/settings' interface ContainerProps { isViewerLoading: Function @@ -50,9 +50,12 @@ interface ContainerProps { animationService: AnimationService } -// -// RasterMenu funtional component -// +/** + * RasterMenu funtional component + * + * @param param0 + * @returns + */ export const RasterMenu: React.FC = ({ isCesiumViewerReady, setAgeSliderShown, @@ -62,23 +65,82 @@ export const RasterMenu: React.FC = ({ useRecoilState(currentRasterIDState) const [isShow, setIsShow] = useRecoilState(isRasterMenuShow) - const setAge = useSetRecoilState(ageState) + const [age, setAge] = useRecoilState(ageState) const setRange = useSetRecoilState(animateRange) const setShowTimeStampState = useSetRecoilState(showTimeStampState) const [swiper, setSwiper] = useState() const rasterGroup = useRecoilValue(rasterGroupState) - // - // switch to another raster - // - const switchRaster = (raster: RasterCfg) => { + /** + * switch to another basemap + * + * @param raster - new basemap configuration + */ + const switchBasemap = async (raster: RasterCfg) => { + if (DEBUG) { + console.log( + 'Length of Imagery Layers: ', + cesiumViewer.imageryLayers.length + ) + console.log(cesiumViewer.imageryLayers) + } + //stop the animation if necessary animationService.setPlaying(false) - //draw the raster - let provider = createCesiumImageryProvider(raster) - cesiumViewer.imageryLayers.addImageryProvider(provider) + drawBasemap(raster) + + let rasterID = raster.id + + setCurrentRasterID(rasterID) + + if (age != 0) { + setAge(0) + } + + if (raster) { + const endTime = raster.startTime + const startTime = raster.endTime + setRange({ + lower: endTime, + upper: startTime, + }) + //hide the time widget and time slider if the raster is present-day only + if (endTime === 0 && startTime === 0) { + setAgeSliderShown(false) + setShowTimeStampState(false) + } else { + setShowTimeStampState(true) + } + } + + if (cesiumViewer.entities.getById('userLocation')) { + if (!cesiumViewer.entities.removeById('userLocation')) { + console.log('Failed to remove user location.') + } + } + + //find out if the rotation model has been created + //if not, create one + if (raster) { + if (!getVectorLayers(raster.id)) { + loadVectorLayers(raster.id) + } + let modelName = raster.model + if (modelName) { + let m = rotationModels.get(modelName) + if (!m) { + let times = timeRange(raster.startTime, raster.endTime, raster.step) + + m = new RotationModel(modelName, times) + rotationModels.set(modelName, m) + } + setCurrentModel(m) + } else { + setCurrentModel(undefined) //present-day only raster, no reconstruction model + } + } raiseGraticuleLayerToTop() //raise graticlue layer if enabled @@ -86,22 +148,22 @@ export const RasterMenu: React.FC = ({ // the "remove" is very fast to complete, but the "add" is slow. // if we remove the old layer immediately, user will see something underneath. // sometimes, we don't want to show user that. - pruneLayers() + //pruneLayers() } - // - // - // + /** + * + */ useEffect(() => {}, [isCesiumViewerReady]) //initial selection - // - // - // + /** + * + */ useEffect(() => {}, [rasterGroup]) - // - // - // + /** + * + */ useEffect(() => {}, [currentRasterID]) // current raster ID changed let optionList = [] @@ -132,8 +194,7 @@ export const RasterMenu: React.FC = ({ } onClick={async (e) => { if (currentRasterID !== rasters[i].id) { - select(rasters[i].id) - switchRaster(rasters[i]) + switchBasemap(rasters[i]) } }} > @@ -152,56 +213,8 @@ export const RasterMenu: React.FC = ({ ) } - // - // select the current raster and deselect all others - // - const select = async (rasterID: string) => { - setCurrentRasterID(rasterID) - - setAge(0) - - let raster = getRasterByID(rasterID) - if (raster) { - const endTime = raster.startTime - const startTime = raster.endTime - setRange({ - lower: endTime, - upper: startTime, - }) - //hide the time widget and time slider if the raster is present-day only - if (endTime === 0 && startTime === 0) { - setAgeSliderShown(false) - setShowTimeStampState(false) - } else { - setShowTimeStampState(true) - } - } - cesiumViewer?.entities.removeById('userLocation') - - //find out if the rotation model has been created - //if not, create one - if (raster) { - if (!getVectorLayers(raster.id)) await loadVectorLayers(raster.id) - let modelName = raster.model - if (modelName) { - let m = rotationModels.get(modelName) - if (!m) { - let times = timeRange(raster.startTime, raster.endTime, raster.step) - - m = new RotationModel(modelName, times, getVectorLayers(modelName)) - rotationModels.set(modelName, m) - } - setCurrentModel(m) - } else { - setCurrentModel(undefined) //present-day only raster, no reconstruction model - } - } - } //end of select() - //swiper?.destroy(true, false) //destroy the old swiper instance. a new one will be created. - // - // - // + return (

{/*
{ - let layer: any = null for (let i = 0; i < vectorLayers.length; i++) { if (vectorLayers[i].id === layerID) { - layer = vectorLayers[i] + let layer = vectorLayers[i] + if (layer) { + layer.imageryLayer = imageryLayer + } break } } - //console.log(layer) - if (layer) { - if (layer.imageryLayer) { - cesiumViewer.imageryLayers.remove(layer.imageryLayer) - } - layer.imageryLayer = imageryLayer - } } interface ContainerProps {} +/** + * + * @param param0 + * @returns + */ export const VectorDataLayerMenu: React.FC = ({}) => { const [isShow, setIsShow] = useRecoilState(isVectorMenuShow) const currentRasterID = useRecoilValue(currentRasterIDState) const rAge = useRecoilValue(ageState) const setShowCities = useSetRecoilState(showCities) - // - // draw all enabled vector layers - // + /** + * draw all enabled vector layers + */ const drawEnabledVectorLayers = () => { let enabledLayers = getEnabledLayers(currentRasterID) - + currentVectorLayers.length = 0 for (let i = 0; i < vectorLayers.length; i++) { if (enabledLayers.includes(vectorLayers[i].id)) { let imageryLayer = cesiumViewer.imageryLayers.addImageryProvider( createCesiumImageryProvider(vectorLayers[i], 0) //time=0 ) vectorLayers[i].imageryLayer = imageryLayer + currentVectorLayers.push(imageryLayer) } } } - // - // prepare the vectorLayers array - // + /** + * prepare the vectorLayers array + */ const prepareVectorLayers = () => { //find out all the vector layers defined for the current raster let layers = getVectorLayers(currentRasterID) @@ -112,22 +118,24 @@ export const VectorDataLayerMenu: React.FC = ({}) => { } } - // - // when current raster is changed, populate the vectorLayers array - // + /** + * when current raster is changed, populate the vectorLayers array + */ useEffect(() => { prepareVectorLayers() drawEnabledVectorLayers() }, [currentRasterID]) - // - // initializing - // + /** + * initializing + */ useEffect(() => {}, []) - // - // when any vector layer checkbox changed - // + /** + * when any vector layer checkbox changed + * + * @param checkbox + */ const onCheckBoxChange = (checkbox: any) => { let layer = vectorLayers[checkbox.detail.value] layer.checked = checkbox.detail.checked @@ -147,11 +155,21 @@ export const VectorDataLayerMenu: React.FC = ({}) => { } disableLayer(currentRasterID, layer.id) } + + //update current vector layers + currentVectorLayers.length = 0 + for (let i = 0; i < vectorLayers.length; i++) { + if (vectorLayers[i].checked) { + currentVectorLayers.push(vectorLayers[i].imageryLayer) + } + } } - // - // callback when cities checkbox changed - // + /** + * callback when cities checkbox changed + * + * @param checkbox + */ const onCitiesCheckBoxChange = (checkbox: any) => { setShowCities(checkbox.detail.checked) diff --git a/src/functions/animation.ts b/src/functions/animation.ts index 63023d2..e1d6d37 100644 --- a/src/functions/animation.ts +++ b/src/functions/animation.ts @@ -1,11 +1,16 @@ -import { SingleTileImageryProvider, Viewer } from 'cesium' +import { SingleTileImageryProvider, Viewer, ImageryLayer } from 'cesium' import { CachingService } from './cache' import { SetterOrUpdater } from 'recoil' -import { getRasters, getRasterByID, getRasterIndexByID } from './rasterMaps' +import { getRasterByID } from './rasterMaps' import { getEnabledLayers, vectorLayers } from './vectorLayers' import { getLowResImageUrlForGeosrv } from './util' import { currentModel } from './rotationModel' -import { drawLayers } from './cesiumViewer' +import { + drawLayers, + removeCurrentImageryLayers, + setCurrentSingleTileImageryLayer, + getCurrentSingleTileImageryLayer, +} from './cesiumViewer' import { raiseGraticuleLayerToTop } from './graticule' import { RasterGroup } from './types' @@ -37,8 +42,22 @@ export class AnimationService { } /** + * remove imagery layer after 2 seconds delay * - * @param url + * @param layer + */ + delayRemoveSingleTileImageryLayer = (layer: ImageryLayer) => { + setTimeout(() => { + //console.log('remove SingleTileImageryProvider') + if (layer) { + this.viewer.imageryLayers.remove(layer, true) + } + }, 2000) + } + + /** + * + * @param url - the url of the geoserver wms for this frame * @returns */ drawFrame = async (url: string) => { @@ -55,14 +74,24 @@ export class AnimationService { const provider = new SingleTileImageryProvider({ url: dataURL, }) + // Disallow old frames from being printed when manually changing age if (animateNext) { - this.viewer.imageryLayers.addImageryProvider(provider) + let newLayer = this.viewer.imageryLayers.addImageryProvider(provider) + //console.log('add SingleTileImageryProvider') + + //delay remove the old layer + let currentSingleTileImageryLayer = getCurrentSingleTileImageryLayer() + if (currentSingleTileImageryLayer) { + this.delayRemoveSingleTileImageryLayer( + currentSingleTileImageryLayer + ) + } + setCurrentSingleTileImageryLayer(newLayer) + raiseGraticuleLayerToTop() } } - //reconstruct locations inserted by user - //await reconstructPresentDayLocations(animateFrame) } catch (err) { console.log(err) return @@ -72,9 +101,11 @@ export class AnimationService { if (!dragging) { this.setAge(animateFrame) } + + /* if (this.viewer.imageryLayers.length > 8) { this.viewer.imageryLayers.remove(this.viewer.imageryLayers.get(0), true) - } + }*/ if (animateNext) { this.scheduleFrame(url, true) @@ -218,10 +249,14 @@ export class AnimationService { } /** - * + * Move to the beginning of the animation */ resetPlayHead = () => { - this.setPlaying(false) + //if animation is playing, do nothing + if (this.playing) { + return + } + animateFrame = this.range.lower this.setAge(animateFrame) let raster = getRasterByID(this.currentRasterID) @@ -231,27 +266,14 @@ export class AnimationService { } /** - * - * @param value + * move to next frame */ - movePlayHead = (value: number) => { - this.setPlaying(false) - let raster = getRasterByID(this.currentRasterID) - if (raster) { - animateFrame = Math.min( - Math.max(animateFrame + value, raster.endTime), - raster.startTime - ) + moveNext = () => { + //if animation is playing, do nothing + if (this.playing) { + return } - this.setAge(animateFrame) - if (raster) drawLayers(animateFrame, raster) - } - /** - * - */ - moveNext = () => { - this.setPlaying(false) animateFrame = this.getNextFrameNumber(true) this.setAge(animateFrame) let raster = getRasterByID(this.currentRasterID) @@ -261,10 +283,13 @@ export class AnimationService { } /** - * + * move to previous frame */ movePrev = () => { - this.setPlaying(false) + //if animation is playing, do nothing + if (this.playing) { + return + } animateFrame = this.getPrevFrameNumber() this.setAge(animateFrame) let raster = getRasterByID(this.currentRasterID) @@ -275,7 +300,7 @@ export class AnimationService { /** * - * @param value + * @param value - True: dragging; False: not dragging */ setDragging = (value: boolean) => { dragging = value @@ -283,17 +308,32 @@ export class AnimationService { /** * - * @param value + * @param value - True: play; False: stop */ setPlaying = (value: boolean) => { + if (this.playing == value) { + return + } + + //delay remove the old layer + let currentSingleTileImageryLayer = getCurrentSingleTileImageryLayer() + if (currentSingleTileImageryLayer) { + this.delayRemoveSingleTileImageryLayer(currentSingleTileImageryLayer) + } + setCurrentSingleTileImageryLayer(null) + this._setPlaying(value) + animateNext = value if (value) { animateFrame = this.getNextFrameNumber(true) let url = this.getLowResImageUrl() if (url) this.scheduleFrame(url) + removeCurrentImageryLayers() } else { clearTimeout(animateTimeout) + + //when animation stopped, draw the tiled layers for higher resolution images let raster = getRasterByID(this.currentRasterID) if (raster) { drawLayers(animateFrame, raster) @@ -320,7 +360,7 @@ export class AnimationService { enabledLayers.forEach((layer) => { if (layer !== 'cities') { if (!raster) return - console.log(vectorLayers.get(raster.id)) + //console.log(vectorLayers.get(raster.id)) overlays.push(vectorLayers.get(raster.id)[layer].layerName) layerIDs.push(layer) } @@ -334,7 +374,7 @@ export class AnimationService { url = url + ',' + id }) url += '&time={{time}}&model=' + currentModel?.name + '&bg=211,211,211' - console.log(url) + //console.log(url) return url } else { //URL for geosever diff --git a/src/functions/cache.ts b/src/functions/cache.ts index 2bcccc5..ed595a5 100644 --- a/src/functions/cache.ts +++ b/src/functions/cache.ts @@ -56,7 +56,10 @@ export class CachingService { console.log('run query: ' + command) console.log(values) } - return this.db!.run(command, values).catch((error) => console.log(error)) + + return this.db!.run(command, values).catch((error) => { + //console.log(error) + }) } /** @@ -72,6 +75,7 @@ export class CachingService { const ret = await this.db!.query('SELECT * FROM cache WHERE url == ?', [ url, ]) + value = ret.values && ret.values[0] } catch (err) { console.log('Error occurred during fetching cache data. ') @@ -98,6 +102,7 @@ export class CachingService { this.cacheRequest(url, data).catch((error) => { console.log(error) //handle the promise rejection }) + //TODO: on "web" platform, you need to saveToStore. otherwise the DB is in memory //await sqlite.saveToStore('db_main') //LOOK HERE return URL.createObjectURL(blob) @@ -457,10 +462,10 @@ export class CachingService { */ purge(queryStr: string, callback: Function) { queryStr = "DELETE FROM cache WHERE url like '" + queryStr + "'" - console.log(`purging: ${queryStr}`) + //console.log(`purging: ${queryStr}`) this.db!.run(queryStr) .then(async (ret) => { - console.log(ret) + //console.log(ret) callback() }) .catch((error) => console.log(error)) diff --git a/src/functions/cesiumViewer.ts b/src/functions/cesiumViewer.ts index 4372874..aaf612f 100644 --- a/src/functions/cesiumViewer.ts +++ b/src/functions/cesiumViewer.ts @@ -1,7 +1,3 @@ -/** - * This module contains functions to manipulate Cesium Viewer. - */ - import { Preferences } from '@capacitor/preferences' //import { Color, Viewer, ImageryProvider, Cartesian3 } from 'cesium' import * as Cesium from 'cesium' @@ -13,8 +9,10 @@ import { } from './graticule' import { updateImageryLayer } from '../components/VectorDataLayerMenu' import { RasterCfg } from './types' -import { getLowResImageUrlForGeosrv } from './util' -import { cachingServant } from './cache' + +/** + * This module contains functions to manipulate Cesium Viewer. + */ //singleton Cersium Viewer object export let cesiumViewer: Cesium.Viewer @@ -24,6 +22,36 @@ export const HOME_LATITUDE = -25.0 export const DEFAULT_CAMERA_HEIGHT = 15000000 export const DEFAULT_CAMERA_HEIGHT_SMALL_SCREEN = 19000000 +let currentBasemapLayer: Cesium.ImageryLayer | null = null +let currentSingleTileImageryLayer: Cesium.ImageryLayer | null = null +export const currentVectorLayers: Cesium.ImageryLayer[] = [] + +/** + * + * @param layer + */ +export const setCurrentBasemapLayer = (layer: Cesium.ImageryLayer | null) => { + currentBasemapLayer = layer +} + +/** + * + * @param layer + */ +export const setCurrentSingleTileImageryLayer = ( + layer: Cesium.ImageryLayer | null +) => { + currentSingleTileImageryLayer = layer +} + +/** + * + * @returns + */ +export const getCurrentSingleTileImageryLayer = () => { + return currentSingleTileImageryLayer +} + /** * * @returns - the default camera height for Cesium Viewer @@ -73,6 +101,7 @@ export const initCesiumViewer = (provider: Cesium.ImageryProvider) => { ), }) cesiumViewer = viewer + currentBasemapLayer = viewer.imageryLayers.get(0) //the only imagery layer so far Preferences.get({ key: 'showGraticule' }).then((res) => { if (res?.value) { const flag = JSON.parse(res.value) @@ -85,14 +114,18 @@ export const initCesiumViewer = (provider: Cesium.ImageryProvider) => { } /** - * draw raster layer and vector layers - * @param time - * @param rasterCfg + * draw basemap layer and vector layers + * maily being used in animation + * + * @param time - paleo-age + * @param rasterCfg - basemap configuration */ export const drawLayers = (time: number, rasterCfg: RasterCfg) => { - //draw the raster layer + //draw the basemap layer const provider = createCesiumImageryProvider(rasterCfg, time) - cesiumViewer.imageryLayers.addImageryProvider(provider) + let newBasemapLayer = cesiumViewer.imageryLayers.addImageryProvider(provider) + removeCurrentImageryLayers() + currentBasemapLayer = newBasemapLayer //draw the vector layers let vectorLayers = getVectorLayers(rasterCfg.id) @@ -103,11 +136,12 @@ export const drawLayers = (time: number, rasterCfg: RasterCfg) => { let imageryLayer = cesiumViewer.imageryLayers.addImageryProvider( createCesiumImageryProvider(vectorLayers[id], time) ) + currentVectorLayers.push(imageryLayer) updateImageryLayer(id, imageryLayer) } } raiseGraticuleLayerToTop() //raise graticlue layer if enabled - pruneLayers() + //pruneLayers() } /** @@ -121,6 +155,52 @@ export const pruneLayers = () => { } } +/** + * remove basemap imagery layer after 2 seconds delay + * + * @param layer + */ +const delayRemoveBaseLayer = (layer: Cesium.ImageryLayer) => { + setTimeout(() => { + if (layer) { + if (!cesiumViewer.imageryLayers.remove(layer, true)) { + console.log('Failed to remove basemap layer: ', layer) + } + } + }, 2000) +} + +/** + * + * remove all vector layers and basemap layer + */ +export const removeCurrentImageryLayers = () => { + if (currentBasemapLayer) { + delayRemoveBaseLayer(currentBasemapLayer) + } + currentBasemapLayer = null + + for (let i = 0; i < currentVectorLayers.length; i++) { + //console.log('removing: ', currentVectorLayers[i]) + if (!cesiumViewer.imageryLayers.remove(currentVectorLayers[i])) { + console.log('failed to remove vector layer:', currentVectorLayers[i]) + } + } + currentVectorLayers.length = 0 +} + +/** + * + * @param raster - new base map configuration + */ +export const drawBasemap = (raster: RasterCfg) => { + //draw a new basemap + let provider = createCesiumImageryProvider(raster) + let newBasemapLayer = cesiumViewer.imageryLayers.addImageryProvider(provider) + removeCurrentImageryLayers() + setCurrentBasemapLayer(newBasemapLayer) +} + const gridsetName = 'EPSG:4326' const gridNames = [ 'EPSG:4326:0', @@ -182,8 +262,9 @@ export const createCesiumImageryProvider = (image: any, time = 0) => { //if the network is disconnected, use this error handler to load stored low resolution image const handler = (providerError: any) => { console.log(providerError) - cesiumViewer.imageryLayers.removeAll() + //cesiumViewer.imageryLayers.removeAll() //console.log(url_str, layer_name, style_name) + /* let url_ = getLowResImageUrlForGeosrv(image.wmsUrl, layer_name) cachingServant .getCachedRequest(url_.replace('{{time}}', String(time))) @@ -201,11 +282,12 @@ export const createCesiumImageryProvider = (image: any, time = 0) => { console.log('Error: createCesiumImageryProvider error handler') console.log(err) }) + */ } - provider.errorEvent.addEventListener(handler) + //provider.errorEvent.addEventListener(handler) //cache the low resolution image - let url = getLowResImageUrlForGeosrv(image.wmsUrl, layer_name) - cachingServant?.cacheURL(url.replace('{{time}}', String(time))) + //let url = getLowResImageUrlForGeosrv(image.wmsUrl, layer_name) + //cachingServant?.cacheURL(url.replace('{{time}}', String(time))) return provider } diff --git a/src/functions/rotationModel.ts b/src/functions/rotationModel.ts index 0be6da9..274de25 100644 --- a/src/functions/rotationModel.ts +++ b/src/functions/rotationModel.ts @@ -16,21 +16,26 @@ export const rotationModels: Map = new Map< >() /** - * * finiteRotations: The key is plate id string. The value is a list of pole-angles, + * Class to do the finate rotation on globe + * This class contains some deprecated code. The new implementation is inhttps://www.npmjs.com/package/gplates + * finiteRotations(deprecated!!): The key is plate id string. The value is a list of pole-angles, * such as [[0, 90, 0], [-80.0171, 51.5165, -0.312], [-80.0171, 51.5165, -0.624] ], for each time in this.times. */ export default class RotationModel { name: string times: number[] finiteRotations!: Map - vectorLayers: any newRotationModelImpl: RotationModelEx | undefined - // - constructor(name: string, times: number[], vLayers: any) { + /** + * + * @param name + * @param times + */ + constructor(name: string, times: number[]) { this.name = name this.times = times - this.vectorLayers = vLayers + this.finiteRotations = new Map() RotationModelEx.loadRotationModel( serverURL + '/rotation/get_rotation_map', @@ -39,8 +44,6 @@ export default class RotationModel { this.newRotationModelImpl = model } ) - //this.fetchFiniteRotations(['701', '801']) - //this.fetchAllFiniteRotations()//big performace impact at start up } /** @@ -62,8 +65,11 @@ export default class RotationModel { ) } - //retrieve all Euler pole and angles for all plate ids in a rotation model from the server - // /rotation/get_euler_pole_and_angle?times=0,50,100&group_by_pid&model=MULLER2019 + /** + * deprecated!!! Big performance impact. Do not use! + * retrieve all Euler pole and angles for all plate ids in a rotation model from the server + * "/rotation/get_euler_pole_and_angle?times=0,50,100&group_by_pid&model=MULLER2019" + */ fetchAllFiniteRotations = () => { let times = this.times @@ -82,8 +88,13 @@ export default class RotationModel { }) } - //retrieve all Euler pole and angles for given plate ids in a rotation model from the server - // /rotation/get_euler_pole_and_angle?pids=701,801&group_by_pid&model=MULLER2019 + /** + * deprecated!! + * retrieve all Euler pole and angles for given plate ids in a rotation model from the server + * "/rotation/get_euler_pole_and_angle?pids=701,801&group_by_pid&model=MULLER2019" + * @param pids + * @returns + */ fetchFiniteRotations = async (pids: string[]) => { let times = this.times @@ -125,14 +136,27 @@ export default class RotationModel { } } - //get Euler pole and angle for a plate id at a time + /** + * get Euler pole and angle for a plate id at a time + * + * @param pid + * @param timeIdx + * @returns + */ getEulerPoleAngle = (pid: number, timeIdx: number) => { assert(timeIdx < this.times.length) let r = this.finiteRotations.get(String(pid)) return r ? r[timeIdx] : [0, 90, 0] } - //rotate a location/point according to its plate id to a time + /** + * deprecated!!! + * rotate a location/point according to its plate id to a time + * + * @param timeIdx + * @param lonLatPid + * @returns + */ rotateLonLatPid = (timeIdx: number, lonLatPid: LonLatPid) => { let rotations = this.finiteRotations.get(String(lonLatPid.pid)) let poleAndAngle = rotations ? rotations[timeIdx] : [0, 90, 0] @@ -148,13 +172,22 @@ export default class RotationModel { ) } - // + /** + * + * @param time + * @returns + */ getTimeIndex = (time: number) => { return this.times.indexOf(time) } - //return the nearest valid time - //assume this.times is sorted in ascending order + /** + * return the nearest valid time + * assume this.times is sorted in ascending order + * + * @param time + * @returns + */ getNearestTime = (time: number) => { let lastOne = -1 for (let i = 0; i < this.times.length; i++) { @@ -173,6 +206,4 @@ export default class RotationModel { } return this.times[-1] //the last one is the nearest } - - // } diff --git a/src/functions/vectorLayers.ts b/src/functions/vectorLayers.ts index cfbea4d..fc231ec 100644 --- a/src/functions/vectorLayers.ts +++ b/src/functions/vectorLayers.ts @@ -10,9 +10,11 @@ export let vectorLayers: Map = new Map() //raster/basemap ID : vector layer names(array) const enabledLayers: Map = new Map() -// -// get vector-layers local storage object -// +/** + * get vector-layers local storage object + * + * @returns + */ export const getVectorLayerStore = async () => { if (store === null) { let store_ = new Storage({ name: 'vector-layers' }) @@ -22,9 +24,11 @@ export const getVectorLayerStore = async () => { return store } -// -// fetch the vector-layer configurate for a given raster ID from server -// +/** + * fetch the vector-layer configurate for a given raster ID from server + * + * @param rasterID + */ export const loadVectorLayers = async (rasterID: string) => { try { let response = await fetch( @@ -46,16 +50,22 @@ export const loadVectorLayers = async (rasterID: string) => { } } -// -// get all vector layers for a raster -// +/** + * get all vector layers for a raster + * + * @param rasterID + * @returns + */ export const getVectorLayers = (rasterID: string) => { return vectorLayers.get(rasterID) } -// -// add a new vector layer name into enabledLayers -// +/** + * add a new vector layer name into enabledLayers + * + * @param rasterID + * @param layerName + */ export const enableLayer = (rasterID: string, layerName: string) => { let layers = enabledLayers.get(rasterID) //console.log('enableLayer') @@ -67,12 +77,15 @@ export const enableLayer = (rasterID: string, layerName: string) => { layers.push(layerName) } } - console.log(enabledLayers) + //console.log(enabledLayers) } -// -// remove a vector layer name from enabledLayers -// +/** + * remove a vector layer name from enabledLayers + * + * @param rasterID + * @param layerName + */ export const disableLayer = (rasterID: string, layerName: string) => { let layers = enabledLayers.get(rasterID) if (layers !== undefined) { @@ -84,9 +97,12 @@ export const disableLayer = (rasterID: string, layerName: string) => { } } -// -// get enable the vector layer names -// +/** + * get enable the vector layer names + * + * @param rasterID + * @returns + */ export const getEnabledLayers = (rasterID: string) => { //console.log(enabledLayers) return enabledLayers.get(rasterID) ?? [] diff --git a/src/pages/AnimationSettings.tsx b/src/pages/AnimationSettings.tsx index 52d6864..4b1478d 100644 --- a/src/pages/AnimationSettings.tsx +++ b/src/pages/AnimationSettings.tsx @@ -106,7 +106,6 @@ export const AnimationSettings: React.FC = ({}) => { - Range range.upper ? 'rtl' : 'ltr'} dualKnobs={true} diff --git a/src/pages/CacheInfo.tsx b/src/pages/CacheInfo.tsx index c3cdcdc..d5ffb92 100644 --- a/src/pages/CacheInfo.tsx +++ b/src/pages/CacheInfo.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect } from 'react' +import React, { useState } from 'react' import './CacheInfo.scss' import { IonButton, @@ -27,9 +27,9 @@ import { getLowResImageUrlForGeosrv } from '../functions/util' export let cacheStatsMap: Map = new Map() let total = 0 -// -// -// +/** + * + */ export const getCacheStatsData = async () => { //do not remove the code below //for future reference @@ -48,10 +48,10 @@ export const getCacheStatsData = async () => { }) } -// -// Cache the current raster and overlays -// for now, only work for geoserver -// +/** + * Cache the current raster and overlays + * for now, only work for geoserver + */ const CacheCurrentRasterAndOverlays = async (currentRasterID: string) => { let overlays: string[] = [] let enabledLayers = getEnabledLayers(currentRasterID) @@ -67,23 +67,29 @@ const CacheCurrentRasterAndOverlays = async (currentRasterID: string) => { rasterMaps[index].layerName, overlays ) - console.log(url) + let allUrls = await cachingServant.getAllUrls() let count = 0 - console.log(allUrls) + currentModel?.times.forEach((time) => { - console.log(time) let newUrl = url.replaceAll('{{time}}', time.toString()) if (!allUrls?.includes(newUrl)) { - console.log(`caching ${newUrl}`) + //console.log(`caching ${newUrl}`) count += 1 setTimeout(() => cachingServant.cacheURL(newUrl), count * 1000) } }) } +/** + * + */ interface ContainerProps {} +/** + * + * @returns + */ export const CacheInfo: React.FC = () => { const [cacheInfoShow, setCacheInfoShow] = useRecoilState(isCacheInfoShowState) const [refresh, setRefresh] = useState(true) diff --git a/src/pages/Main.tsx b/src/pages/Main.tsx index 7e15ece..63d7435 100644 --- a/src/pages/Main.tsx +++ b/src/pages/Main.tsx @@ -272,8 +272,9 @@ const Main: React.FC = () => { //create a rotation model for each raster rasterMaps.forEach(async (raster) => { - if (!getVectorLayers(raster.id)) await loadVectorLayers(raster.id) - + if (!getVectorLayers(raster.id)) { + loadVectorLayers(raster.id) + } let modelName = raster.model if (modelName) { let m = rotationModels.get(modelName) @@ -283,7 +284,7 @@ const Main: React.FC = () => { times = timeRange(raster.startTime, raster.endTime, raster.step) } - m = new RotationModel(modelName, times, getVectorLayers(modelName)) + m = new RotationModel(modelName, times) //console.log(getVectorLayers(modelName)) rotationModels.set(modelName, m) } diff --git a/src/pages/ModelInfo.scss b/src/pages/ModelInfo.scss index 85c6c78..e2e36c0 100644 --- a/src/pages/ModelInfo.scss +++ b/src/pages/ModelInfo.scss @@ -45,7 +45,7 @@ .how-fade-enter-active { opacity: 1; - transition: opacity 4000ms; + transition: opacity 2000ms; } .how-fade-exit { @@ -60,3 +60,7 @@ .info-small-label { font-size: 80% !important; } + +.model-info-content { + height: 100%; +} diff --git a/src/pages/ModelInfo.tsx b/src/pages/ModelInfo.tsx index 808d697..29b13ee 100644 --- a/src/pages/ModelInfo.tsx +++ b/src/pages/ModelInfo.tsx @@ -43,9 +43,9 @@ export const ModelInfo: React.FC = () => { const [path, setPath] = useRecoilState(infoPath) const [showRasterLengend, setShowRasterLengend] = useState(false) - // - // - // + /** + * + */ useEffect(() => { setShowRasterLengend(false) }, [currentRasterID]) @@ -63,9 +63,12 @@ export const ModelInfo: React.FC = () => { ' Ma' } - // - // - // + /** + * + * @param path + * @param name + * @returns + */ const subPageRouting = (path: string, name: string) => { return ( = () => { } return ( - + {path !== 'root' && ( @@ -118,7 +126,7 @@ export const ModelInfo: React.FC = () => { unmountOnExit classNames={'info-fade'} > - +
{'Title'} @@ -149,11 +157,10 @@ export const ModelInfo: React.FC = () => { {currentRaster.model} )} - - - {subPageRouting('about', 'About GPlates')} - {subPageRouting('howtouse', 'How To Handle 3D Globe')} + {subPageRouting('about', 'About GPlates')} + {subPageRouting('howtouse', 'How To Handle 3D Globe')} +
= () => { onLoad={() => setShowRasterLengend(true)} />
- +
{/* About subpage */} @@ -182,7 +189,7 @@ export const ModelInfo: React.FC = () => { {/* HowToUse subpage */} diff --git a/src/pages/SettingMenuPage.tsx b/src/pages/SettingMenuPage.tsx index ad01846..67d1794 100644 --- a/src/pages/SettingMenuPage.tsx +++ b/src/pages/SettingMenuPage.tsx @@ -57,9 +57,9 @@ const titles: { [key: string]: string } = { backgroundSetting: 'Background Settings', } -// -// try to cache everything. not in use for now -// +/** + * try to cache everything. not in use for now + */ export const populateCache = () => { let count = 0 rasterMaps.forEach(async (raster) => { @@ -86,12 +86,19 @@ export const populateCache = () => { }) } -// +/** + * + */ interface ContainerProps { backgroundService: BackgroundService } -// main component for setting menu +/** + * main component for setting menu + * + * @param param0 + * @returns + */ export const SettingMenuPage: React.FC = ({ backgroundService, }) => { @@ -111,9 +118,9 @@ export const SettingMenuPage: React.FC = ({ //const navigate = useNavigate() const history = useHistory() - // - // - // + /** + * + */ useEffect(() => { if (isShow) { setStatusBarTheme(darkMode) @@ -124,9 +131,9 @@ export const SettingMenuPage: React.FC = ({ } }, [isShow]) - // - // Save settings on each change - // + /** + * Save settings on each change + */ useEffect(() => { if (isShow && path === 'root') { setDarkMode(darkMode) @@ -141,9 +148,9 @@ export const SettingMenuPage: React.FC = ({ } }, [darkMode]) - // - // - // + /** + * + */ useEffect(() => { if (isShow && path === 'root') { const settings = { @@ -156,9 +163,9 @@ export const SettingMenuPage: React.FC = ({ } }) - // - // - // + /** + * + */ useEffect(() => { let raster = getRasterByID(currentRasterID) if (!raster) return @@ -189,9 +196,11 @@ export const SettingMenuPage: React.FC = ({ ) } - // - // when the server url has changed, ask user if reload the page - // + /** + * when the server url has changed, ask user if reload the page + * + * @param msg + */ const showReloadPageAlert = (msg: string) => { presentAlert({ header: 'Confirm Reload', @@ -217,9 +226,6 @@ export const SettingMenuPage: React.FC = ({ }) } - // - // - // return (