@nasa-terra/components 0.0.66 → 0.0.68
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cdn/chunks/chunk.267X6M4K.js +32 -0
- package/{dist/chunks/chunk.QCPKB2RQ.js → cdn/chunks/chunk.2AIVKD54.js} +1 -1
- package/{dist/chunks/chunk.S4SOS6YI.js → cdn/chunks/chunk.2BW4SOWQ.js} +1 -1
- package/cdn/chunks/chunk.2EYRPHGL.js +10 -0
- package/cdn/chunks/chunk.2GEN6UCO.js +21 -0
- package/{dist/chunks/chunk.XNHODSUI.js → cdn/chunks/chunk.2LGINANI.js} +1 -1
- package/cdn/chunks/chunk.2O6ZLP2H.js +29 -0
- package/{dist/chunks/chunk.RG376NBJ.js → cdn/chunks/chunk.2OQZA3CW.js} +1 -1
- package/cdn/chunks/{chunk.E7LVY6QB.js → chunk.2UTYN7TH.js} +1 -1
- package/{dist/chunks/chunk.YW6MGSTP.js → cdn/chunks/chunk.2WYXDPGS.js} +1 -1
- package/cdn/chunks/{chunk.MOVW5G4G.js → chunk.37HJNI4K.js} +382 -13
- package/cdn/chunks/chunk.3GLMJLNY.js +139 -0
- package/{dist/chunks/chunk.AKP5NSM6.js → cdn/chunks/chunk.3H5ZUQL5.js} +16 -16
- package/{dist/chunks/chunk.6HUNVCKY.js → cdn/chunks/chunk.3L77HLPZ.js} +1 -1
- package/cdn/chunks/chunk.3NBSKUOT.js +29 -0
- package/cdn/chunks/chunk.3PUTIFOP.js +35 -0
- package/cdn/chunks/chunk.3XJ5QNGT.js +21 -0
- package/cdn/chunks/{chunk.R4TNI2PU.js → chunk.42OJJSTJ.js} +14 -11
- package/cdn/chunks/chunk.42V23REY.js +21 -0
- package/cdn/chunks/chunk.445A7YVG.js +271 -0
- package/{dist/chunks/chunk.VUC6OYZI.js → cdn/chunks/chunk.4E55SLUR.js} +1 -1
- package/{dist/chunks/chunk.ETL6SVKH.js → cdn/chunks/chunk.4EIGF3E4.js} +7 -4
- package/cdn/chunks/chunk.4MGGBJBD.js +20 -0
- package/cdn/chunks/{chunk.DYOCIII6.js → chunk.4RM2EJEW.js} +4 -4
- package/{dist/chunks/chunk.2RUMLCNG.js → cdn/chunks/chunk.4WKVINLB.js} +1 -1
- package/cdn/chunks/{chunk.QVZIEWRW.js → chunk.563FCLVE.js} +1 -1
- package/cdn/chunks/chunk.5ASTHFQ2.js +950 -0
- package/cdn/chunks/chunk.5IYUIO2L.js +35 -0
- package/cdn/chunks/chunk.5KFA2A5F.js +33 -0
- package/{dist/chunks/chunk.JGUDK23O.js → cdn/chunks/chunk.5QKVNNUH.js} +5 -5
- package/cdn/chunks/chunk.5TZQDEBJ.js +21 -0
- package/{dist/chunks/chunk.QXGOVVWV.js → cdn/chunks/chunk.642Z3X7N.js} +1 -1
- package/{dist/chunks/chunk.HRP2UCAE.js → cdn/chunks/chunk.64ARWPHU.js} +1 -1
- package/cdn/chunks/{chunk.26Y3U5MM.js → chunk.66XPY5CX.js} +1 -1
- package/cdn/chunks/{chunk.X5N7C225.js → chunk.675EEES3.js} +1 -1
- package/cdn/chunks/chunk.6KIVAUVU.js +124 -0
- package/{dist/chunks/chunk.GXQRUGWI.js → cdn/chunks/chunk.6VTAKEV4.js} +1 -1
- package/cdn/chunks/chunk.6YSGUTCT.js +29 -0
- package/cdn/chunks/chunk.7674U7FT.js +215 -0
- package/cdn/chunks/chunk.7AEQ2LX4.js +335 -0
- package/cdn/chunks/chunk.7CMA526Q.js +14 -0
- package/cdn/chunks/chunk.7MLJ7J6F.js +32 -0
- package/cdn/chunks/chunk.7OS7YKP4.js +29 -0
- package/cdn/chunks/chunk.7RT5CEB6.js +72 -0
- package/cdn/chunks/{chunk.T2KAO3UD.js → chunk.7TSM56FT.js} +1 -1
- package/cdn/chunks/{chunk.3MIPIE6V.js → chunk.A5QNIXR4.js} +1 -1
- package/{dist/chunks/chunk.EKUWLBOP.js → cdn/chunks/chunk.A6D5MCCT.js} +1 -0
- package/cdn/chunks/chunk.A7GHUUVY.js +21 -0
- package/cdn/chunks/chunk.ADFWUZLL.js +21 -0
- package/{dist/chunks/chunk.VNUPHGI3.js → cdn/chunks/chunk.AHGKSSSI.js} +8 -8
- package/cdn/chunks/chunk.AU4MMC6N.js +24 -0
- package/cdn/chunks/chunk.AZXB7ZHM.js +151 -0
- package/{dist/chunks/chunk.QFYOTBLT.js → cdn/chunks/chunk.B6JXOXP5.js} +16 -19
- package/cdn/chunks/chunk.BBQJZ64A.js +52 -0
- package/cdn/chunks/{chunk.2VDC2CLR.js → chunk.BDUFTI77.js} +1 -1
- package/cdn/chunks/chunk.BEDYDFXT.js +52 -0
- package/cdn/chunks/{chunk.FHFFLCE4.js → chunk.BLILGPHT.js} +4 -4
- package/cdn/chunks/chunk.BRVCFRLF.js +21 -0
- package/cdn/chunks/{chunk.5JKUUXXD.js → chunk.BXZG34AL.js} +1 -1
- package/{dist/chunks/chunk.NGMZML6J.js → cdn/chunks/chunk.CA2ZDE2M.js} +1 -1
- package/cdn/chunks/chunk.CGIR4OSR.js +29 -0
- package/cdn/chunks/chunk.CIFC3RF3.js +43 -0
- package/cdn/chunks/chunk.D3DPGMVW.js +222 -0
- package/cdn/chunks/chunk.D3XI3L7Y.js +55 -0
- package/cdn/chunks/{chunk.T27OOS5L.js → chunk.DKQUCHXW.js} +1 -1
- package/cdn/chunks/{chunk.QB7GRCXW.js → chunk.DLTRS5SJ.js} +1 -1
- package/cdn/chunks/chunk.DTUHBE3U.js +37 -0
- package/cdn/chunks/{chunk.2UIKXGCO.js → chunk.DUUVIZLI.js} +1 -1
- package/cdn/chunks/chunk.E2WXLMWX.js +0 -0
- package/{dist/chunks/chunk.WOD3IAR2.js → cdn/chunks/chunk.EBJUC35J.js} +1 -1
- package/cdn/chunks/{chunk.CQUNIMB6.js → chunk.ELVU6MXJ.js} +1 -1
- package/cdn/chunks/chunk.EPQBAMGN.js +32 -0
- package/{dist/chunks/chunk.YO2CHERX.js → cdn/chunks/chunk.ERXCYNDC.js} +1 -1
- package/cdn/chunks/{chunk.SIQLNOLM.js → chunk.F26HLQPA.js} +4 -4
- package/cdn/chunks/chunk.F3KBUEPT.js +10 -0
- package/cdn/chunks/chunk.F5AEDYTP.js +37 -0
- package/cdn/chunks/{chunk.5HS2P4QF.js → chunk.F6FOZL2X.js} +1 -1
- package/{dist/chunks/chunk.OO7FUQ6P.js → cdn/chunks/chunk.FF3EIVF2.js} +1 -1
- package/{dist/chunks/chunk.KRJLTCAP.js → cdn/chunks/chunk.FNTPKP6P.js} +19 -9
- package/cdn/chunks/chunk.FRSW4UHB.js +268 -0
- package/cdn/chunks/{chunk.T37LTQ4C.js → chunk.FT6FCCXU.js} +14 -14
- package/cdn/chunks/chunk.FUU57PWY.js +36 -0
- package/cdn/chunks/chunk.G6SMK5II.js +19 -0
- package/{dist/chunks/chunk.FHX7T2OA.js → cdn/chunks/chunk.GL5HOXON.js} +6 -6
- package/{dist/chunks/chunk.XPEGNLOR.js → cdn/chunks/chunk.GMJWNAQG.js} +1 -1
- package/{dist/chunks/chunk.BT3OM7YW.js → cdn/chunks/chunk.GQRGC6YW.js} +1 -1
- package/{dist/chunks/chunk.JLXWDK6Q.js → cdn/chunks/chunk.GUYBX63F.js} +1 -1
- package/cdn/chunks/chunk.H4KNN2HU.js +29 -0
- package/{dist/chunks/chunk.EOUI57NU.js → cdn/chunks/chunk.H73IKOBV.js} +1 -1
- package/cdn/chunks/{chunk.FK35YOPT.js → chunk.HDPH5PEF.js} +1 -2
- package/cdn/chunks/chunk.HKST5N6O.js +21 -0
- package/cdn/chunks/{chunk.MUYS3VLW.js → chunk.HMS35ZFE.js} +1 -1
- package/cdn/chunks/chunk.HNQMK3PU.js +685 -0
- package/{dist/chunks/chunk.M54W77XC.js → cdn/chunks/chunk.HNWBSRBL.js} +1 -1
- package/cdn/chunks/{chunk.VON4E7FJ.js → chunk.HP52P3QK.js} +1 -1
- package/{dist/chunks/chunk.N5RBPPIG.js → cdn/chunks/chunk.HUX2RF6U.js} +1 -1
- package/cdn/chunks/{chunk.QJ4KM4TA.js → chunk.HVXUUXZ7.js} +1 -1
- package/cdn/chunks/chunk.HWZP2UTW.js +49 -0
- package/cdn/chunks/{chunk.S5LWJDD7.js → chunk.HYCJBOI5.js} +1 -1
- package/cdn/chunks/{chunk.2QANHSCY.js → chunk.I2VFSA6U.js} +1 -1
- package/cdn/chunks/chunk.IC4T7CZD.js +62 -0
- package/cdn/chunks/chunk.IJC2KB5R.js +25 -0
- package/{dist/chunks/chunk.JY5KBXRE.js → cdn/chunks/chunk.J25AAZTC.js} +1 -1
- package/cdn/chunks/chunk.J5OQO7FQ.js +29 -0
- package/{dist/chunks/chunk.2KHKJBOB.js → cdn/chunks/chunk.JHEFOGNL.js} +1 -1
- package/cdn/chunks/{chunk.WN54FAZ2.js → chunk.JIGZ6E5V.js} +1 -1
- package/{dist/chunks/chunk.GM6TGL7L.js → cdn/chunks/chunk.JOFHFGQP.js} +1 -1
- package/{dist/chunks/chunk.2OG44KDU.js → cdn/chunks/chunk.JUQDLDHB.js} +2 -2
- package/cdn/chunks/chunk.KFMZHBMX.js +29 -0
- package/{dist/chunks/chunk.AP4TJGMK.js → cdn/chunks/chunk.KIC5ZCAM.js} +1 -1
- package/cdn/chunks/chunk.KLCOAQUS.js +65 -0
- package/cdn/chunks/chunk.KUSRVQBO.js +20 -0
- package/cdn/chunks/{chunk.EGZALHQH.js → chunk.KXDQAQQH.js} +1 -1
- package/{dist/chunks/chunk.34ZROIP4.js → cdn/chunks/chunk.KXL6VOQP.js} +1 -1
- package/cdn/chunks/chunk.L2M2AJ4W.js +21 -0
- package/cdn/chunks/chunk.L63WM7I3.js +65 -0
- package/{dist/chunks/chunk.GRGSTMOZ.js → cdn/chunks/chunk.LDCRCQNJ.js} +1 -1
- package/cdn/chunks/{chunk.TIANXDJM.js → chunk.LF2YS25X.js} +6 -6
- package/cdn/chunks/chunk.LF5NNQDS.js +29 -0
- package/cdn/chunks/{chunk.KAJGV2AN.js → chunk.LLQADAZV.js} +1 -1
- package/cdn/chunks/chunk.LRHEF6JN.js +32 -0
- package/cdn/chunks/{chunk.3SQ33WJL.js → chunk.LZSKCTIU.js} +6 -6
- package/{dist/chunks/chunk.KASQMBBH.js → cdn/chunks/chunk.M6X72F3Q.js} +1 -1
- package/cdn/chunks/{chunk.ZDCD6475.js → chunk.MB27YSID.js} +1 -1
- package/{dist/chunks/chunk.PE7UEIVX.js → cdn/chunks/chunk.MFI2M54Y.js} +6 -6
- package/{dist/chunks/chunk.EC75KAKW.js → cdn/chunks/chunk.MGM5E2VQ.js} +7 -0
- package/cdn/chunks/chunk.MN7UEWGN.js +29 -0
- package/cdn/chunks/chunk.MQOXBVDK.js +58 -0
- package/cdn/chunks/{chunk.5JLTH2LZ.js → chunk.MXI6CLWG.js} +1 -1
- package/cdn/chunks/{chunk.E4Y3ZGGY.js → chunk.NDNXLJCK.js} +2 -2
- package/cdn/chunks/chunk.NMWP5DQX.js +259 -0
- package/cdn/chunks/chunk.NQYUJ7FK.js +24 -0
- package/cdn/chunks/chunk.NT4JROIJ.js +29 -0
- package/{dist/chunks/chunk.MHGQR4W2.js → cdn/chunks/chunk.O6SXSDFR.js} +2 -2
- package/{dist/chunks/chunk.2OOE2V74.js → cdn/chunks/chunk.O7SVDS2A.js} +1 -1
- package/{dist/chunks/chunk.MQJRL4UB.js → cdn/chunks/chunk.OBANVLY7.js} +1 -1
- package/{dist/chunks/chunk.JLB3AJLB.js → cdn/chunks/chunk.OJC754DG.js} +6 -6
- package/cdn/chunks/{chunk.XPUSLKRS.js → chunk.OM26KC4G.js} +1 -1
- package/{dist/chunks/chunk.PSJFGFBP.js → cdn/chunks/chunk.OVUWZWWN.js} +4 -4
- package/{dist/chunks/chunk.5PBPZZYM.js → cdn/chunks/chunk.OX5IY75Y.js} +1 -1
- package/cdn/chunks/{chunk.PI4LM4FQ.js → chunk.OXUFHTFN.js} +10 -4
- package/cdn/chunks/chunk.OY5R7EVO.js +24 -0
- package/cdn/chunks/chunk.P6OOV5UQ.js +25 -0
- package/cdn/chunks/chunk.P7EL7GKI.js +41 -0
- package/cdn/chunks/chunk.PA5O6555.js +24 -0
- package/{dist/chunks/chunk.CTYCOFYG.js → cdn/chunks/chunk.PAJVTERU.js} +1 -1
- package/cdn/chunks/chunk.PBC3S6IG.js +33 -0
- package/cdn/chunks/{chunk.FP5FRSMY.js → chunk.PDAOAQE4.js} +5 -5
- package/{dist/chunks/chunk.I52J3GOW.js → cdn/chunks/chunk.PG4TSLWI.js} +5 -5
- package/{dist/chunks/chunk.6MTPABT6.js → cdn/chunks/chunk.PRQ5P3TK.js} +1 -1
- package/cdn/chunks/chunk.PX3KFYMT.js +32 -0
- package/cdn/chunks/{chunk.C7NEKS3B.js → chunk.Q52W3YPD.js} +1 -1
- package/{dist/chunks/chunk.3JVESZWK.js → cdn/chunks/chunk.QAMFDZKG.js} +1 -1
- package/{dist/chunks/chunk.V5URSACK.js → cdn/chunks/chunk.QHY2BYL4.js} +1 -1
- package/cdn/chunks/chunk.QI3YAMIR.js +33 -0
- package/{dist/chunks/chunk.SC2Q3UUF.js → cdn/chunks/chunk.QNNEWLT7.js} +1 -1
- package/cdn/chunks/chunk.QQQ2BD4U.js +80 -0
- package/cdn/chunks/{chunk.FRSCLRYD.js → chunk.QVPRK545.js} +2 -2
- package/{dist/chunks/chunk.6YCZZJMS.js → cdn/chunks/chunk.QZS6UUDI.js} +10 -4
- package/cdn/chunks/chunk.RBVJJWF4.js +21 -0
- package/cdn/chunks/chunk.RDID3JKQ.js +25 -0
- package/cdn/chunks/{chunk.M7WGJM54.js → chunk.RF7RG72G.js} +1 -1
- package/cdn/chunks/{chunk.YQK5E5T2.js → chunk.RJR6I3VL.js} +1 -1
- package/cdn/chunks/chunk.RJUTQBOV.js +21 -0
- package/{dist/chunks/chunk.7SZ5FLBG.js → cdn/chunks/chunk.RVH4PSND.js} +197 -14
- package/{dist/chunks/chunk.K36FUM7O.js → cdn/chunks/chunk.RZ3APMFR.js} +1 -1
- package/cdn/chunks/chunk.SGFD3ORP.js +293 -0
- package/cdn/chunks/{chunk.J4IIXP4W.js → chunk.SI75QZHB.js} +7 -0
- package/cdn/chunks/{chunk.TAW4DCZW.js → chunk.SJHEJ7W7.js} +1 -1
- package/cdn/chunks/{chunk.76RNZX2A.js → chunk.SJYXIRDX.js} +1 -1
- package/cdn/chunks/chunk.SLDPYP3J.js +29 -0
- package/cdn/chunks/chunk.SRBWEFVT.js +27 -0
- package/{dist/chunks/chunk.KB7DEF3R.js → cdn/chunks/chunk.SWDQJJ7Q.js} +1 -1
- package/cdn/chunks/{chunk.N2TTTIPA.js → chunk.SX6OLRTC.js} +8 -8
- package/cdn/chunks/{chunk.K3JEGUHG.js → chunk.T33FEXFP.js} +10 -10
- package/{dist/chunks/chunk.ZGSDVAHX.js → cdn/chunks/chunk.T53RBNNE.js} +1 -2
- package/cdn/chunks/chunk.TCEJ3MS6.js +97 -0
- package/cdn/chunks/chunk.TJGA66AX.js +25 -0
- package/cdn/chunks/{chunk.5QLXSATY.js → chunk.TJWGQR3Y.js} +7 -7
- package/cdn/chunks/{chunk.XR5EZIHP.js → chunk.TU7POBNP.js} +1 -1
- package/cdn/chunks/chunk.TVFCHGU3.js +76 -0
- package/cdn/chunks/{chunk.H6F3VHB2.js → chunk.U7VIR3OC.js} +8 -8
- package/cdn/chunks/{chunk.BOGE65ZY.js → chunk.UA57XIMB.js} +1 -1
- package/{dist/chunks/chunk.N7QDVMX3.js → cdn/chunks/chunk.UDCRU3NE.js} +1 -1
- package/cdn/chunks/{chunk.6ZUOFZAK.js → chunk.UEDKVSIH.js} +1 -1
- package/cdn/chunks/{chunk.JDQ6TQCQ.js → chunk.UHOMZS5K.js} +16 -19
- package/cdn/chunks/{chunk.ZVC7SBSS.js → chunk.UKT47BLY.js} +6 -6
- package/cdn/chunks/chunk.UMT2LQ4W.js +29 -0
- package/cdn/chunks/{chunk.OC666EPD.js → chunk.UO6SHH3I.js} +1 -1
- package/cdn/chunks/chunk.URKW2CME.js +21 -0
- package/{dist/chunks/chunk.YLMWEEA2.js → cdn/chunks/chunk.UT5XKCBV.js} +2 -2
- package/cdn/chunks/chunk.UZAIWUWC.js +8 -0
- package/{dist/chunks/chunk.DBWZYUMX.js → cdn/chunks/chunk.UZZDJISQ.js} +4 -4
- package/cdn/chunks/chunk.V2Z7ZBTD.js +293 -0
- package/cdn/chunks/chunk.V3EFWONT.js +26 -0
- package/cdn/chunks/chunk.V7LXD3II.js +318 -0
- package/cdn/chunks/{chunk.NC5TCHFE.js → chunk.VDOKMZL7.js} +5 -5
- package/cdn/chunks/{chunk.BI76W67M.js → chunk.VGHXDEZO.js} +1 -1
- package/cdn/chunks/{chunk.AQODH346.js → chunk.VLZAS4LQ.js} +2 -1
- package/cdn/chunks/{chunk.2A2HFMGZ.js → chunk.VUJ26IHB.js} +1 -1
- package/cdn/chunks/{chunk.JIBQZDEG.js → chunk.VYDVYEG6.js} +1 -1
- package/cdn/chunks/chunk.WJL4R4O2.js +7 -0
- package/cdn/chunks/{chunk.AOJTBQKP.js → chunk.WXFIXIOS.js} +2 -2
- package/cdn/chunks/chunk.WXZHDVQ3.js +21 -0
- package/{dist/chunks/chunk.Y54UJLRZ.js → cdn/chunks/chunk.X7MVYC7B.js} +1 -1
- package/cdn/chunks/chunk.XJVLYIYE.js +41 -0
- package/cdn/chunks/{chunk.SUU6GE6N.js → chunk.XKNIRUTP.js} +4 -4
- package/cdn/chunks/chunk.XOD4KYCP.js +120 -0
- package/cdn/chunks/{chunk.FUKHJNAX.js → chunk.XQNQJ73Y.js} +22 -12
- package/{dist/chunks/chunk.XYWAGUD5.js → cdn/chunks/chunk.XWDZOQJ3.js} +1 -1
- package/{dist/chunks/chunk.PB42J5AM.js → cdn/chunks/chunk.XXFKVRN5.js} +1 -1
- package/cdn/chunks/chunk.XZB6CNAL.js +96 -0
- package/cdn/chunks/chunk.Y7ZED6A4.js +24 -0
- package/cdn/chunks/chunk.YIP3L3SE.js +21 -0
- package/{dist/chunks/chunk.Z3HX7EEA.js → cdn/chunks/chunk.YMHBYV33.js} +8 -8
- package/cdn/chunks/chunk.YMKCGXI7.js +33 -0
- package/cdn/chunks/chunk.YNJENG4F.js +33 -0
- package/{dist/chunks/chunk.Y2LZH62Y.js → cdn/chunks/chunk.YP5DVLJS.js} +1 -1
- package/cdn/chunks/{chunk.N5GAZEUH.js → chunk.YQRTSELX.js} +1 -1
- package/cdn/chunks/chunk.YXLIUMJM.js +147 -0
- package/cdn/chunks/chunk.YY65ZHR5.js +35 -0
- package/cdn/chunks/{chunk.EXIJCLV5.js → chunk.Z3FCGMJE.js} +1 -1
- package/cdn/chunks/chunk.Z4S5QPB7.js +655 -0
- package/cdn/chunks/{chunk.HZHS4RMI.js → chunk.Z5SQ4THO.js} +1 -1
- package/cdn/chunks/chunk.ZAROXC53.js +29 -0
- package/cdn/chunks/{chunk.7IQH7BQC.js → chunk.ZBRNWBWX.js} +1 -1
- package/cdn/chunks/{chunk.DV54QIG7.js → chunk.ZNKT2Q6X.js} +2 -2
- package/cdn/chunks/{chunk.5EPVHMFA.js → chunk.ZZMMULOM.js} +1 -1
- package/cdn/components/accordion/accordion.component.js +5 -5
- package/cdn/components/accordion/accordion.js +6 -6
- package/cdn/components/alert/alert.component.js +4 -4
- package/cdn/components/alert/alert.js +5 -5
- package/cdn/components/browse-variables/browse-variables.component.js +20 -20
- package/cdn/components/browse-variables/browse-variables.controller.js +4 -4
- package/cdn/components/browse-variables/browse-variables.js +21 -21
- package/cdn/components/browse-variables/browse-variables.types.d.ts +1 -0
- package/cdn/components/button/button.component.js +3 -3
- package/cdn/components/button/button.js +4 -4
- package/cdn/components/chip/chip.component.js +3 -3
- package/cdn/components/chip/chip.js +4 -4
- package/cdn/components/combobox/combobox.component.js +7 -7
- package/cdn/components/combobox/combobox.js +8 -8
- package/cdn/components/data-rods/data-rods.component.js +40 -40
- package/cdn/components/data-rods/data-rods.js +41 -41
- package/cdn/components/data-subsetter/data-subsetter.component.js +29 -29
- package/cdn/components/data-subsetter/data-subsetter.controller.d.ts +1 -1
- package/cdn/components/data-subsetter/data-subsetter.controller.js +4 -4
- package/cdn/components/data-subsetter/data-subsetter.js +30 -30
- package/cdn/components/data-subsetter-history/data-subsetter-history.component.js +32 -32
- package/cdn/components/data-subsetter-history/data-subsetter-history.controller.js +3 -3
- package/cdn/components/data-subsetter-history/data-subsetter-history.js +33 -33
- package/cdn/components/date-picker/date-picker.component.js +4 -4
- package/cdn/components/date-picker/date-picker.js +5 -5
- package/cdn/components/date-range-slider/date-range-slider.component.js +4 -4
- package/cdn/components/date-range-slider/date-range-slider.js +5 -5
- package/cdn/components/dialog/dialog.component.js +3 -3
- package/cdn/components/dialog/dialog.js +4 -4
- package/cdn/components/icon/icon.component.js +3 -3
- package/cdn/components/icon/icon.js +4 -4
- package/cdn/components/loader/loader.component.js +3 -3
- package/cdn/components/loader/loader.js +4 -4
- package/cdn/components/login/login.component.js +13 -13
- package/cdn/components/login/login.js +14 -14
- package/cdn/components/map/leaflet-utils.js +3 -3
- package/cdn/components/map/map.component.js +10 -10
- package/cdn/components/map/map.controller.js +3 -3
- package/cdn/components/map/map.js +11 -11
- package/cdn/components/plot/plot.component.js +4 -4
- package/cdn/components/plot/plot.js +5 -5
- package/cdn/components/plot-toolbar/plot-toolbar.component.js +10 -10
- package/cdn/components/plot-toolbar/plot-toolbar.js +11 -11
- package/cdn/components/plot-toolbar/plot-toolbar.styles.js +1 -1
- package/cdn/components/skeleton/skeleton.component.js +7 -7
- package/cdn/components/skeleton/skeleton.js +8 -8
- package/cdn/components/spatial-picker/spatial-picker.component.js +12 -12
- package/cdn/components/spatial-picker/spatial-picker.js +13 -13
- package/cdn/components/time-average-map/time-average-map.component.d.ts +11 -0
- package/cdn/components/time-average-map/time-average-map.component.js +17 -17
- package/cdn/components/time-average-map/time-average-map.controller.js +3 -3
- package/cdn/components/time-average-map/time-average-map.js +18 -18
- package/cdn/components/time-average-map/time-average-map.styles.js +1 -1
- package/cdn/components/time-series/time-series.component.js +21 -21
- package/cdn/components/time-series/time-series.controller.js +3 -3
- package/cdn/components/time-series/time-series.js +22 -22
- package/cdn/components/variable-combobox/lib.js +3 -3
- package/cdn/components/variable-combobox/variable-combobox.component.js +15 -15
- package/cdn/components/variable-combobox/variable-combobox.controller.js +4 -4
- package/cdn/components/variable-combobox/variable-combobox.js +16 -16
- package/cdn/components/variable-keyword-search/variable-keyword-search.component.js +15 -15
- package/cdn/components/variable-keyword-search/variable-keyword-search.controller.js +4 -4
- package/cdn/components/variable-keyword-search/variable-keyword-search.js +16 -16
- package/cdn/custom-elements.json +1072 -960
- package/cdn/react/accordion/index.js +24 -0
- package/cdn/react/alert/index.js +19 -0
- package/cdn/react/browse-variables/index.js +51 -0
- package/cdn/react/button/index.js +21 -0
- package/cdn/react/chip/index.js +17 -0
- package/cdn/react/combobox/index.js +25 -0
- package/cdn/react/data-rods/index.js +75 -0
- package/cdn/react/data-subsetter/index.js +62 -0
- package/cdn/react/data-subsetter-history/index.js +67 -0
- package/cdn/react/date-picker/index.js +23 -0
- package/cdn/react/date-range-slider/index.js +19 -0
- package/cdn/react/dialog/index.js +15 -0
- package/cdn/react/icon/index.js +22 -0
- package/cdn/react/index.d.ts +5 -5
- package/cdn/react/index.js +214 -0
- package/cdn/react/loader/index.js +17 -0
- package/cdn/react/login/index.js +38 -0
- package/cdn/react/map/index.js +26 -0
- package/cdn/react/plot/index.js +17 -0
- package/cdn/react/plot-toolbar/index.js +34 -0
- package/cdn/react/skeleton/index.js +24 -0
- package/cdn/react/spatial-picker/index.js +28 -0
- package/cdn/react/time-average-map/index.js +46 -0
- package/cdn/react/time-series/index.js +50 -0
- package/cdn/react/variable-combobox/index.js +41 -0
- package/cdn/react/variable-keyword-search/index.js +42 -0
- package/cdn/terra-ui-components.js +99 -99
- package/cdn/types/vue/index.d.ts +121 -117
- package/cdn/utilities/animation.js +4 -4
- package/cdn/vscode.html-custom-data.json +137 -137
- package/cdn/web-types.json +471 -469
- package/dist/chunks/chunk.2AIVKD54.js +214 -0
- package/dist/chunks/chunk.2BW4SOWQ.js +11 -0
- package/dist/chunks/chunk.2GEN6UCO.js +21 -0
- package/dist/chunks/chunk.2LGINANI.js +82 -0
- package/dist/chunks/chunk.2OQZA3CW.js +477 -0
- package/dist/chunks/chunk.2WYXDPGS.js +11 -0
- package/dist/chunks/chunk.34PJLKJJ.js +416 -0
- package/dist/chunks/chunk.35EPISNE.js +11 -0
- package/dist/chunks/chunk.3H5ZUQL5.js +498 -0
- package/dist/chunks/chunk.3L77HLPZ.js +88 -0
- package/dist/chunks/chunk.3UAVO7EA.js +24 -0
- package/dist/chunks/chunk.3ULVIGJG.js +21 -0
- package/dist/chunks/chunk.3XJ5QNGT.js +21 -0
- package/dist/chunks/chunk.42V23REY.js +21 -0
- package/dist/chunks/chunk.44BRND6T.js +21 -0
- package/dist/chunks/chunk.4E55SLUR.js +11 -0
- package/dist/chunks/chunk.4EIGF3E4.js +470 -0
- package/dist/chunks/chunk.4SUQPJ6R.js +63 -0
- package/dist/chunks/chunk.4WKVINLB.js +11 -0
- package/dist/chunks/chunk.5QKVNNUH.js +73 -0
- package/dist/chunks/chunk.5TZQDEBJ.js +21 -0
- package/dist/chunks/chunk.642Z3X7N.js +11 -0
- package/dist/chunks/chunk.64ARWPHU.js +11 -0
- package/dist/chunks/chunk.65TXBD5Q.js +11 -0
- package/dist/chunks/chunk.6DUMNJRP.js +11 -0
- package/dist/chunks/chunk.6VTAKEV4.js +74 -0
- package/dist/chunks/chunk.76XDDHGB.js +24 -0
- package/dist/chunks/chunk.77RFVKUZ.js +21 -0
- package/dist/chunks/chunk.7JCOOCRE.js +498 -0
- package/dist/chunks/chunk.A6D5MCCT.js +123 -0
- package/dist/chunks/chunk.A7GHUUVY.js +21 -0
- package/dist/chunks/chunk.A7JSMGCJ.js +11 -0
- package/dist/chunks/chunk.ADFWUZLL.js +21 -0
- package/dist/chunks/chunk.AHGKSSSI.js +185 -0
- package/dist/chunks/chunk.AQADCBKW.js +11 -0
- package/dist/chunks/chunk.AU4MMC6N.js +24 -0
- package/dist/chunks/chunk.B63QBHY2.js +21 -0
- package/dist/chunks/chunk.B6JXOXP5.js +348 -0
- package/dist/chunks/chunk.BRVCFRLF.js +21 -0
- package/dist/chunks/chunk.CA2ZDE2M.js +11 -0
- package/dist/chunks/chunk.CDJJZBFH.js +21 -0
- package/dist/chunks/chunk.E4HHQCTB.js +25 -0
- package/dist/chunks/chunk.EBJUC35J.js +11 -0
- package/dist/chunks/chunk.EFBCCYOG.js +21 -0
- package/dist/chunks/chunk.ERXCYNDC.js +11 -0
- package/dist/chunks/chunk.EU34RZJ6.js +348 -0
- package/dist/chunks/chunk.FD3GJNJJ.js +82 -0
- package/dist/chunks/chunk.FF3EIVF2.js +11 -0
- package/dist/chunks/chunk.FNTPKP6P.js +538 -0
- package/dist/chunks/chunk.FZMMKJAN.js +11 -0
- package/dist/chunks/chunk.FZUQIX6Q.js +24 -0
- package/dist/chunks/chunk.GGRGK2NT.js +78 -0
- package/dist/chunks/chunk.GJZMMPJG.js +21 -0
- package/dist/chunks/chunk.GL5HOXON.js +202 -0
- package/dist/chunks/chunk.GMJWNAQG.js +264 -0
- package/dist/chunks/chunk.GPP6JDF4.js +11 -0
- package/dist/chunks/chunk.GQRGC6YW.js +11 -0
- package/dist/chunks/chunk.GUYBX63F.js +108 -0
- package/dist/chunks/chunk.H2UQBMCX.js +21 -0
- package/dist/chunks/chunk.H73IKOBV.js +11 -0
- package/dist/chunks/chunk.HKST5N6O.js +21 -0
- package/dist/chunks/chunk.HN27UQHP.js +21 -0
- package/dist/chunks/chunk.HNWBSRBL.js +43 -0
- package/dist/chunks/chunk.HUX2RF6U.js +53 -0
- package/dist/chunks/chunk.IFHDVWGZ.js +258 -0
- package/dist/chunks/chunk.IG5HGQXY.js +11 -0
- package/dist/chunks/chunk.IJC2KB5R.js +25 -0
- package/dist/chunks/chunk.J25AAZTC.js +21 -0
- package/dist/chunks/chunk.J6VAJGFU.js +11 -0
- package/dist/chunks/chunk.JHEFOGNL.js +11 -0
- package/dist/chunks/chunk.JOFHFGQP.js +180 -0
- package/dist/chunks/chunk.JOTLSXEI.js +82 -0
- package/dist/chunks/chunk.JUQDLDHB.js +139 -0
- package/dist/chunks/chunk.KIC5ZCAM.js +63 -0
- package/dist/chunks/chunk.KOT22IKI.js +21 -0
- package/dist/chunks/chunk.KQXAXXOQ.js +53 -0
- package/dist/chunks/chunk.KRADMAUS.js +11 -0
- package/dist/chunks/chunk.KXL6VOQP.js +82 -0
- package/dist/chunks/chunk.L2M2AJ4W.js +21 -0
- package/dist/chunks/chunk.L7RNO3FR.js +11 -0
- package/dist/chunks/chunk.LDCRCQNJ.js +103 -0
- package/dist/chunks/chunk.LNIZRE4P.js +180 -0
- package/dist/chunks/chunk.LQOZT7TL.js +228 -0
- package/dist/chunks/chunk.LQXULJBQ.js +21 -0
- package/dist/chunks/chunk.M3SLDTSE.js +477 -0
- package/dist/chunks/chunk.M6X72F3Q.js +373 -0
- package/dist/chunks/chunk.M74U5ILB.js +25 -0
- package/dist/chunks/chunk.M7ZB5QRP.js +273 -0
- package/dist/chunks/chunk.MEMNTMV2.js +183 -0
- package/dist/chunks/chunk.MFI2M54Y.js +273 -0
- package/dist/chunks/chunk.MGM5E2VQ.js +98 -0
- package/dist/chunks/chunk.MKU7QBFN.js +11 -0
- package/dist/chunks/chunk.NDADYNAA.js +11 -0
- package/dist/chunks/chunk.NLADA7XK.js +11 -0
- package/dist/chunks/chunk.NQYUJ7FK.js +24 -0
- package/dist/chunks/chunk.O6SXSDFR.js +539 -0
- package/dist/chunks/chunk.O7SVDS2A.js +11 -0
- package/dist/chunks/chunk.OBANVLY7.js +11 -0
- package/dist/chunks/chunk.OJC754DG.js +228 -0
- package/dist/chunks/chunk.OVUWZWWN.js +355 -0
- package/dist/chunks/chunk.OX5IY75Y.js +11 -0
- package/dist/chunks/chunk.OY5R7EVO.js +24 -0
- package/dist/chunks/chunk.P6OOV5UQ.js +25 -0
- package/dist/chunks/chunk.P7EL7GKI.js +41 -0
- package/dist/chunks/chunk.P7UY5YOM.js +202 -0
- package/dist/chunks/chunk.PA5O6555.js +24 -0
- package/dist/chunks/chunk.PAJVTERU.js +357 -0
- package/dist/chunks/chunk.PG4TSLWI.js +78 -0
- package/dist/chunks/chunk.PKAXRUSD.js +11 -0
- package/dist/chunks/chunk.PRQ5P3TK.js +11 -0
- package/dist/chunks/chunk.PSIAGOIP.js +538 -0
- package/dist/chunks/chunk.Q6LK4OHE.js +11 -0
- package/dist/chunks/chunk.QAMFDZKG.js +11 -0
- package/dist/chunks/chunk.QEGTBKYW.js +21 -0
- package/dist/chunks/chunk.QHY2BYL4.js +11 -0
- package/dist/chunks/chunk.QNNEWLT7.js +11 -0
- package/dist/chunks/chunk.QZS6UUDI.js +277 -0
- package/dist/chunks/chunk.RBVJJWF4.js +21 -0
- package/dist/chunks/chunk.RDID3JKQ.js +25 -0
- package/dist/chunks/chunk.RJUTQBOV.js +21 -0
- package/dist/chunks/chunk.RVCQSKMD.js +108 -0
- package/dist/chunks/chunk.RVH4PSND.js +416 -0
- package/dist/chunks/chunk.RZ3APMFR.js +195 -0
- package/dist/chunks/chunk.SFFOTZON.js +25 -0
- package/dist/chunks/chunk.SPVE7NND.js +11 -0
- package/dist/chunks/chunk.SRBWEFVT.js +27 -0
- package/dist/chunks/chunk.SWDQJJ7Q.js +11 -0
- package/dist/chunks/chunk.T53RBNNE.js +519 -0
- package/dist/chunks/chunk.T7DACXNM.js +11 -0
- package/dist/chunks/chunk.TCGYS77N.js +27 -0
- package/dist/chunks/chunk.TIQXW7ZH.js +11 -0
- package/dist/chunks/chunk.TJGA66AX.js +25 -0
- package/dist/chunks/chunk.TMXTLPTE.js +11 -0
- package/dist/chunks/chunk.TSIWRLNC.js +539 -0
- package/dist/chunks/chunk.UDCRU3NE.js +120 -0
- package/dist/chunks/chunk.UPMJQK2S.js +120 -0
- package/dist/chunks/chunk.URKW2CME.js +21 -0
- package/dist/chunks/chunk.UT5XKCBV.js +183 -0
- package/dist/chunks/chunk.UTXEG3QD.js +214 -0
- package/dist/chunks/chunk.UZZDJISQ.js +258 -0
- package/dist/chunks/chunk.V3CHZTI6.js +470 -0
- package/dist/chunks/chunk.VDCD52OC.js +185 -0
- package/dist/chunks/chunk.VO4JJ7CZ.js +357 -0
- package/dist/chunks/chunk.VT32WPUI.js +73 -0
- package/dist/chunks/chunk.VYPNLWLL.js +11 -0
- package/dist/chunks/chunk.W5O3LYQV.js +21 -0
- package/dist/chunks/chunk.WTQMOLV2.js +24 -0
- package/dist/chunks/chunk.WXZHDVQ3.js +21 -0
- package/dist/chunks/chunk.WZCLDYKY.js +25 -0
- package/dist/chunks/chunk.X7MVYC7B.js +11 -0
- package/dist/chunks/chunk.XIUGWVFS.js +355 -0
- package/dist/chunks/chunk.XJPYDQOZ.js +11 -0
- package/dist/chunks/chunk.XWDZOQJ3.js +11 -0
- package/dist/chunks/chunk.XXFKVRN5.js +104 -0
- package/dist/chunks/chunk.Y7TVB466.js +1625 -0
- package/dist/chunks/chunk.Y7ZED6A4.js +24 -0
- package/dist/chunks/chunk.YIP3L3SE.js +21 -0
- package/dist/chunks/chunk.YMHBYV33.js +1625 -0
- package/dist/chunks/chunk.YP5DVLJS.js +11 -0
- package/dist/chunks/chunk.YRJRQDLF.js +21 -0
- package/dist/chunks/chunk.ZK4JLVS4.js +11 -0
- package/dist/chunks/chunk.ZLRH3XYC.js +24 -0
- package/dist/chunks/chunk.ZOCIZGYF.js +11 -0
- package/dist/components/accordion/accordion.component.js +5 -5
- package/dist/components/accordion/accordion.js +6 -6
- package/dist/components/alert/alert.component.js +4 -4
- package/dist/components/alert/alert.js +5 -5
- package/dist/components/browse-variables/browse-variables.component.js +16 -16
- package/dist/components/browse-variables/browse-variables.controller.js +4 -4
- package/dist/components/browse-variables/browse-variables.js +17 -17
- package/dist/components/browse-variables/browse-variables.types.d.ts +1 -0
- package/dist/components/button/button.component.js +3 -3
- package/dist/components/button/button.js +4 -4
- package/dist/components/chip/chip.component.js +3 -3
- package/dist/components/chip/chip.js +4 -4
- package/dist/components/combobox/combobox.component.js +3 -3
- package/dist/components/combobox/combobox.js +4 -4
- package/dist/components/data-rods/data-rods.component.js +34 -34
- package/dist/components/data-rods/data-rods.js +35 -35
- package/dist/components/data-subsetter/data-subsetter.component.js +26 -26
- package/dist/components/data-subsetter/data-subsetter.controller.d.ts +1 -1
- package/dist/components/data-subsetter/data-subsetter.controller.js +4 -4
- package/dist/components/data-subsetter/data-subsetter.js +27 -27
- package/dist/components/data-subsetter-history/data-subsetter-history.component.js +29 -29
- package/dist/components/data-subsetter-history/data-subsetter-history.controller.js +3 -3
- package/dist/components/data-subsetter-history/data-subsetter-history.js +30 -30
- package/dist/components/date-picker/date-picker.component.js +4 -4
- package/dist/components/date-picker/date-picker.js +5 -5
- package/dist/components/date-range-slider/date-range-slider.component.js +4 -4
- package/dist/components/date-range-slider/date-range-slider.js +5 -5
- package/dist/components/dialog/dialog.component.js +3 -3
- package/dist/components/dialog/dialog.js +4 -4
- package/dist/components/icon/icon.component.js +3 -3
- package/dist/components/icon/icon.js +4 -4
- package/dist/components/loader/loader.component.js +3 -3
- package/dist/components/loader/loader.js +4 -4
- package/dist/components/login/login.component.js +11 -11
- package/dist/components/login/login.js +12 -12
- package/dist/components/map/leaflet-utils.js +3 -3
- package/dist/components/map/map.component.js +8 -8
- package/dist/components/map/map.controller.js +3 -3
- package/dist/components/map/map.js +9 -9
- package/dist/components/plot/plot.component.js +3 -3
- package/dist/components/plot/plot.js +4 -4
- package/dist/components/plot-toolbar/plot-toolbar.component.js +7 -7
- package/dist/components/plot-toolbar/plot-toolbar.js +8 -8
- package/dist/components/plot-toolbar/plot-toolbar.styles.js +1 -1
- package/dist/components/skeleton/skeleton.component.js +3 -3
- package/dist/components/skeleton/skeleton.js +4 -4
- package/dist/components/spatial-picker/spatial-picker.component.js +10 -10
- package/dist/components/spatial-picker/spatial-picker.js +11 -11
- package/dist/components/time-average-map/time-average-map.component.d.ts +11 -0
- package/dist/components/time-average-map/time-average-map.component.js +14 -14
- package/dist/components/time-average-map/time-average-map.controller.js +3 -3
- package/dist/components/time-average-map/time-average-map.js +15 -15
- package/dist/components/time-average-map/time-average-map.styles.js +1 -1
- package/dist/components/time-series/time-series.component.js +18 -18
- package/dist/components/time-series/time-series.controller.js +3 -3
- package/dist/components/time-series/time-series.js +19 -19
- package/dist/components/variable-combobox/variable-combobox.component.js +9 -9
- package/dist/components/variable-combobox/variable-combobox.js +10 -10
- package/dist/components/variable-keyword-search/variable-keyword-search.component.js +12 -12
- package/dist/components/variable-keyword-search/variable-keyword-search.controller.js +4 -4
- package/dist/components/variable-keyword-search/variable-keyword-search.js +13 -13
- package/dist/custom-elements.json +1072 -960
- package/dist/react/accordion/index.js +19 -0
- package/dist/react/alert/index.js +14 -0
- package/dist/react/browse-variables/index.js +38 -0
- package/dist/react/button/index.js +15 -0
- package/dist/react/chip/index.js +12 -0
- package/dist/react/combobox/index.js +15 -0
- package/dist/react/data-rods/index.js +59 -0
- package/dist/react/data-subsetter/index.js +50 -0
- package/dist/react/data-subsetter-history/index.js +55 -0
- package/dist/react/date-picker/index.js +17 -0
- package/dist/react/date-range-slider/index.js +15 -0
- package/dist/react/dialog/index.js +12 -0
- package/dist/react/icon/index.js +17 -0
- package/dist/react/index.d.ts +5 -5
- package/dist/react/index.js +186 -0
- package/dist/react/loader/index.js +12 -0
- package/dist/react/login/index.js +29 -0
- package/dist/react/map/index.js +19 -0
- package/dist/react/plot/index.js +13 -0
- package/dist/react/plot-toolbar/index.js +24 -0
- package/dist/react/skeleton/index.js +13 -0
- package/dist/react/spatial-picker/index.js +21 -0
- package/dist/react/time-average-map/index.js +32 -0
- package/dist/react/time-series/index.js +38 -0
- package/dist/react/variable-combobox/index.js +27 -0
- package/dist/react/variable-keyword-search/index.js +30 -0
- package/dist/terra-ui-components.js +92 -92
- package/dist/{terra_ui_components-0.0.66-py3-none-any.whl → terra_ui_components-0.0.68-py3-none-any.whl} +0 -0
- package/dist/{terra_ui_components-0.0.66.tar.gz → terra_ui_components-0.0.68.tar.gz} +0 -0
- package/dist/types/vue/index.d.ts +121 -117
- package/dist/vscode.html-custom-data.json +137 -137
- package/dist/web-types.json +471 -469
- package/package.json +1 -1
- package/cdn/chunks/chunk.LS7CBIGK.js +0 -28
- package/dist/chunks/chunk.VSZLMYWV.js +0 -17
- package/cdn/chunks/{chunk.EDY6YM3Y.js → chunk.EMLDT66I.js} +4 -4
- package/cdn/chunks/{chunk.NFS2RDEX.js → chunk.SU2EH44I.js} +5 -5
- package/cdn/chunks/{chunk.QFJLPXXJ.js → chunk.VPW32Q52.js} +3 -3
|
@@ -0,0 +1,1625 @@
|
|
|
1
|
+
import {
|
|
2
|
+
defaultSubsetFileMimeType,
|
|
3
|
+
getFriendlyNameForMimeType
|
|
4
|
+
} from "./chunk.4MGGBJBD.js";
|
|
5
|
+
import {
|
|
6
|
+
TerraLogin
|
|
7
|
+
} from "./chunk.VT32WPUI.js";
|
|
8
|
+
import {
|
|
9
|
+
TerraDatePicker
|
|
10
|
+
} from "./chunk.MEMNTMV2.js";
|
|
11
|
+
import {
|
|
12
|
+
TerraSpatialPicker
|
|
13
|
+
} from "./chunk.M7ZB5QRP.js";
|
|
14
|
+
import {
|
|
15
|
+
AuthController
|
|
16
|
+
} from "./chunk.4SUQPJ6R.js";
|
|
17
|
+
import {
|
|
18
|
+
DataSubsetterController
|
|
19
|
+
} from "./chunk.QZS6UUDI.js";
|
|
20
|
+
import {
|
|
21
|
+
data_subsetter_styles_default
|
|
22
|
+
} from "./chunk.5ASTHFQ2.js";
|
|
23
|
+
import {
|
|
24
|
+
TerraAccordion
|
|
25
|
+
} from "./chunk.GGRGK2NT.js";
|
|
26
|
+
import {
|
|
27
|
+
TerraIcon
|
|
28
|
+
} from "./chunk.UTXEG3QD.js";
|
|
29
|
+
import {
|
|
30
|
+
getBasePath
|
|
31
|
+
} from "./chunk.PBC3S6IG.js";
|
|
32
|
+
import {
|
|
33
|
+
watch
|
|
34
|
+
} from "./chunk.DTUHBE3U.js";
|
|
35
|
+
import {
|
|
36
|
+
TerraElement,
|
|
37
|
+
component_styles_default
|
|
38
|
+
} from "./chunk.TSIWRLNC.js";
|
|
39
|
+
import {
|
|
40
|
+
__decorateClass,
|
|
41
|
+
__privateAdd,
|
|
42
|
+
__privateGet,
|
|
43
|
+
__privateMethod,
|
|
44
|
+
__spreadProps,
|
|
45
|
+
__spreadValues
|
|
46
|
+
} from "./chunk.TVFCHGU3.js";
|
|
47
|
+
|
|
48
|
+
// src/components/data-subsetter/data-subsetter.component.ts
|
|
49
|
+
import { html, nothing } from "lit";
|
|
50
|
+
import { property, query, state } from "lit/decorators.js";
|
|
51
|
+
|
|
52
|
+
// src/internal/debounce.ts
|
|
53
|
+
var TIMER_ID_KEY = Symbol();
|
|
54
|
+
var debounce = (delay) => {
|
|
55
|
+
return (_target, _propertyKey, descriptor) => {
|
|
56
|
+
const fn = descriptor.value;
|
|
57
|
+
descriptor.value = function(...args) {
|
|
58
|
+
clearTimeout(this[TIMER_ID_KEY]);
|
|
59
|
+
this[TIMER_ID_KEY] = window.setTimeout(() => {
|
|
60
|
+
fn.apply(this, args);
|
|
61
|
+
}, delay);
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
// src/components/data-subsetter/data-subsetter.component.ts
|
|
67
|
+
var _controller, _authController, _renderSizeInfo, renderSizeInfo_fn, _renderSubsetOptions, renderSubsetOptions_fn, _renderSearchForCollection, renderSearchForCollection_fn, _renderOutputFormatSelection, renderOutputFormatSelection_fn, _renderDateRangeSelection, renderDateRangeSelection_fn, _handleStartDateChange, _handleEndDateChange, _resetDateRangeSelection, _resetFormatSelection, _getCollectionDateRange, getCollectionDateRange_fn, _handleRegionAccordionToggle, handleRegionAccordionToggle_fn, _renderSpatialSelection, renderSpatialSelection_fn, _handleSpatialChange, _resetSpatialSelection, _renderVariableSelection, renderVariableSelection_fn, _buildVariableTree, buildVariableTree_fn, _renderVariableTree, renderVariableTree_fn, _getAllGroupPaths, getAllGroupPaths_fn, _toggleGroupExpand, toggleGroupExpand_fn, _toggleExpandCollapseAll, toggleExpandCollapseAll_fn, _toggleVariableSelection, toggleVariableSelection_fn, _markFieldTouched, markFieldTouched_fn, _resetVariableSelection, _renderJobStatus, renderJobStatus_fn, _renderSelectedParams, renderSelectedParams_fn, _cancelJob, cancelJob_fn, _getData, getData_fn, _touchAllFields, touchAllFields_fn, _numberOfFilesFoundEstimate, numberOfFilesFoundEstimate_fn, _getDocumentationLinks, getDocumentationLinks_fn, _getDataLinks, getDataLinks_fn, _hasAtLeastOneSubsetOption, hasAtLeastOneSubsetOption_fn, _hasSpatialSubset, hasSpatialSubset_fn, _renderJobMessage, renderJobMessage_fn, _getJobMessageText, getJobMessageText_fn, _estimateJobSize, estimateJobSize_fn, _refineParameters, refineParameters_fn, _toggleDownloadMenu, toggleDownloadMenu_fn, _downloadLinksAsTxt, downloadLinksAsTxt_fn, _downloadPythonScript, downloadPythonScript_fn, _downloadEarthdataDownload, downloadEarthdataDownload_fn, _handleClickOutside, handleClickOutside_fn, _handleJupyterNotebookClick, handleJupyterNotebookClick_fn, _renderAvailableTemporalRangeSection, renderAvailableTemporalRangeSection_fn, _renderAvailableSpatialRangeSection, renderAvailableSpatialRangeSection_fn;
|
|
68
|
+
var TerraDataSubsetter = class extends TerraElement {
|
|
69
|
+
constructor() {
|
|
70
|
+
super(...arguments);
|
|
71
|
+
__privateAdd(this, _renderSizeInfo);
|
|
72
|
+
__privateAdd(this, _renderSubsetOptions);
|
|
73
|
+
__privateAdd(this, _renderSearchForCollection);
|
|
74
|
+
__privateAdd(this, _renderOutputFormatSelection);
|
|
75
|
+
__privateAdd(this, _renderDateRangeSelection);
|
|
76
|
+
__privateAdd(this, _getCollectionDateRange);
|
|
77
|
+
__privateAdd(this, _handleRegionAccordionToggle);
|
|
78
|
+
__privateAdd(this, _renderSpatialSelection);
|
|
79
|
+
__privateAdd(this, _renderVariableSelection);
|
|
80
|
+
__privateAdd(this, _buildVariableTree);
|
|
81
|
+
__privateAdd(this, _renderVariableTree);
|
|
82
|
+
__privateAdd(this, _getAllGroupPaths);
|
|
83
|
+
__privateAdd(this, _toggleGroupExpand);
|
|
84
|
+
__privateAdd(this, _toggleExpandCollapseAll);
|
|
85
|
+
__privateAdd(this, _toggleVariableSelection);
|
|
86
|
+
__privateAdd(this, _markFieldTouched);
|
|
87
|
+
__privateAdd(this, _renderJobStatus);
|
|
88
|
+
__privateAdd(this, _renderSelectedParams);
|
|
89
|
+
__privateAdd(this, _cancelJob);
|
|
90
|
+
__privateAdd(this, _getData);
|
|
91
|
+
__privateAdd(this, _touchAllFields);
|
|
92
|
+
__privateAdd(this, _numberOfFilesFoundEstimate);
|
|
93
|
+
__privateAdd(this, _getDocumentationLinks);
|
|
94
|
+
__privateAdd(this, _getDataLinks);
|
|
95
|
+
__privateAdd(this, _hasAtLeastOneSubsetOption);
|
|
96
|
+
__privateAdd(this, _hasSpatialSubset);
|
|
97
|
+
__privateAdd(this, _renderJobMessage);
|
|
98
|
+
__privateAdd(this, _getJobMessageText);
|
|
99
|
+
__privateAdd(this, _estimateJobSize);
|
|
100
|
+
__privateAdd(this, _refineParameters);
|
|
101
|
+
__privateAdd(this, _toggleDownloadMenu);
|
|
102
|
+
__privateAdd(this, _downloadLinksAsTxt);
|
|
103
|
+
__privateAdd(this, _downloadPythonScript);
|
|
104
|
+
__privateAdd(this, _downloadEarthdataDownload);
|
|
105
|
+
__privateAdd(this, _handleClickOutside);
|
|
106
|
+
__privateAdd(this, _handleJupyterNotebookClick);
|
|
107
|
+
__privateAdd(this, _renderAvailableTemporalRangeSection);
|
|
108
|
+
__privateAdd(this, _renderAvailableSpatialRangeSection);
|
|
109
|
+
this.showCollectionSearch = true;
|
|
110
|
+
this.selectedVariables = [];
|
|
111
|
+
this.expandedVariableGroups = /* @__PURE__ */ new Set();
|
|
112
|
+
this.touchedFields = /* @__PURE__ */ new Set();
|
|
113
|
+
this.spatialSelection = null;
|
|
114
|
+
this.selectedDateRange = {
|
|
115
|
+
startDate: null,
|
|
116
|
+
endDate: null
|
|
117
|
+
};
|
|
118
|
+
this.selectedFormat = defaultSubsetFileMimeType;
|
|
119
|
+
this.cancelingGetData = false;
|
|
120
|
+
this.selectedTab = "web-links";
|
|
121
|
+
this.refineParameters = false;
|
|
122
|
+
this.showDownloadMenu = false;
|
|
123
|
+
this.renderedInDialog = false;
|
|
124
|
+
this.collectionSearchType = "all";
|
|
125
|
+
this.collectionSearchLoading = false;
|
|
126
|
+
this.collectionLoading = false;
|
|
127
|
+
this.collectionAccordionOpen = true;
|
|
128
|
+
__privateAdd(this, _controller, new DataSubsetterController(this));
|
|
129
|
+
__privateAdd(this, _authController, new AuthController(this));
|
|
130
|
+
__privateAdd(this, _handleStartDateChange, (e) => {
|
|
131
|
+
__privateMethod(this, _markFieldTouched, markFieldTouched_fn).call(this, "date");
|
|
132
|
+
const datePicker = e.currentTarget;
|
|
133
|
+
this.selectedDateRange = __spreadProps(__spreadValues({}, this.selectedDateRange), {
|
|
134
|
+
startDate: datePicker.selectedDates.startDate
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
__privateAdd(this, _handleEndDateChange, (e) => {
|
|
138
|
+
__privateMethod(this, _markFieldTouched, markFieldTouched_fn).call(this, "date");
|
|
139
|
+
const datePicker = e.currentTarget;
|
|
140
|
+
this.selectedDateRange = __spreadProps(__spreadValues({}, this.selectedDateRange), {
|
|
141
|
+
endDate: datePicker.selectedDates.startDate
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
__privateAdd(this, _resetDateRangeSelection, () => {
|
|
145
|
+
this.selectedDateRange = { startDate: null, endDate: null };
|
|
146
|
+
});
|
|
147
|
+
__privateAdd(this, _resetFormatSelection, () => {
|
|
148
|
+
this.selectedFormat = defaultSubsetFileMimeType;
|
|
149
|
+
});
|
|
150
|
+
__privateAdd(this, _handleSpatialChange, (e) => {
|
|
151
|
+
__privateMethod(this, _markFieldTouched, markFieldTouched_fn).call(this, "spatial");
|
|
152
|
+
const round2 = (n) => parseFloat(Number(n).toFixed(2));
|
|
153
|
+
if (e.detail.type === "bbox" /* BBOX */) {
|
|
154
|
+
this.spatialSelection = {
|
|
155
|
+
e: round2(e.detail.bounds.getNorthEast().lng),
|
|
156
|
+
n: round2(e.detail.bounds.getNorthEast().lat),
|
|
157
|
+
w: round2(e.detail.bounds.getSouthWest().lng),
|
|
158
|
+
s: round2(e.detail.bounds.getSouthWest().lat)
|
|
159
|
+
};
|
|
160
|
+
} else if (e.detail.type === "point" /* POINT */) {
|
|
161
|
+
this.spatialSelection = e.detail.latLng;
|
|
162
|
+
} else {
|
|
163
|
+
this.spatialSelection = null;
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
__privateAdd(this, _resetSpatialSelection, () => {
|
|
167
|
+
this.spatialSelection = null;
|
|
168
|
+
});
|
|
169
|
+
__privateAdd(this, _resetVariableSelection, () => {
|
|
170
|
+
this.selectedVariables = [];
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
jobIdChanged() {
|
|
174
|
+
if (this.jobId) {
|
|
175
|
+
__privateGet(this, _controller).fetchJobByID(this.jobId);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
firstUpdated() {
|
|
179
|
+
if (this.collectionEntryId) {
|
|
180
|
+
this.showCollectionSearch = false;
|
|
181
|
+
}
|
|
182
|
+
if (this.jobId) {
|
|
183
|
+
__privateGet(this, _controller).fetchJobByID(this.jobId);
|
|
184
|
+
}
|
|
185
|
+
document.addEventListener("click", __privateMethod(this, _handleClickOutside, handleClickOutside_fn).bind(this));
|
|
186
|
+
if (this.closest("terra-dialog")) {
|
|
187
|
+
this.renderedInDialog = true;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
disconnectedCallback() {
|
|
191
|
+
super.disconnectedCallback();
|
|
192
|
+
document.removeEventListener("click", __privateMethod(this, _handleClickOutside, handleClickOutside_fn).bind(this));
|
|
193
|
+
}
|
|
194
|
+
collectionChanged() {
|
|
195
|
+
const { startDate, endDate } = __privateMethod(this, _getCollectionDateRange, getCollectionDateRange_fn).call(this);
|
|
196
|
+
this.selectedDateRange = { startDate, endDate };
|
|
197
|
+
this.collectionLoading = false;
|
|
198
|
+
this.collectionAccordionOpen = false;
|
|
199
|
+
}
|
|
200
|
+
render() {
|
|
201
|
+
var _a, _b, _c;
|
|
202
|
+
const showJobStatus = __privateGet(this, _controller).currentJob && !this.refineParameters;
|
|
203
|
+
const showMinimizeButton = showJobStatus && this.renderedInDialog;
|
|
204
|
+
return html`
|
|
205
|
+
<div class="container">
|
|
206
|
+
<div class="header">
|
|
207
|
+
<h1>
|
|
208
|
+
<svg
|
|
209
|
+
class="download-icon"
|
|
210
|
+
viewBox="0 0 24 24"
|
|
211
|
+
fill="currentColor"
|
|
212
|
+
>
|
|
213
|
+
<path d="M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z" />
|
|
214
|
+
</svg>
|
|
215
|
+
${(_c = (_b = (_a = this.collectionWithServices) == null ? void 0 : _a.collection) == null ? void 0 : _b.EntryTitle) != null ? _c : html`Download Data`}
|
|
216
|
+
</h1>
|
|
217
|
+
|
|
218
|
+
${showMinimizeButton ? html`<button
|
|
219
|
+
class="minimize-btn"
|
|
220
|
+
@click=${() => this.minimizeDialog()}
|
|
221
|
+
>
|
|
222
|
+
-
|
|
223
|
+
</button>` : nothing}
|
|
224
|
+
</div>
|
|
225
|
+
|
|
226
|
+
${showJobStatus ? __privateMethod(this, _renderJobStatus, renderJobStatus_fn).call(this) : __privateMethod(this, _renderSubsetOptions, renderSubsetOptions_fn).call(this)}
|
|
227
|
+
</div>
|
|
228
|
+
`;
|
|
229
|
+
}
|
|
230
|
+
minimizeDialog() {
|
|
231
|
+
var _a;
|
|
232
|
+
(_a = this.closest("terra-dialog")) == null ? void 0 : _a.hide();
|
|
233
|
+
}
|
|
234
|
+
handleCollectionSearch(searchTerm) {
|
|
235
|
+
this.collectionSearchQuery = searchTerm;
|
|
236
|
+
}
|
|
237
|
+
renderHistoryPanel() {
|
|
238
|
+
const existingHistoryPanel = document.querySelector(
|
|
239
|
+
"terra-data-subsetter-history"
|
|
240
|
+
);
|
|
241
|
+
if (!existingHistoryPanel) {
|
|
242
|
+
const historyPanel = document.createElement(
|
|
243
|
+
"terra-data-subsetter-history"
|
|
244
|
+
);
|
|
245
|
+
if (this.bearerToken) {
|
|
246
|
+
historyPanel.setAttribute("bearer-token", this.bearerToken);
|
|
247
|
+
}
|
|
248
|
+
document.body.appendChild(historyPanel);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
_controller = new WeakMap();
|
|
253
|
+
_authController = new WeakMap();
|
|
254
|
+
_renderSizeInfo = new WeakSet();
|
|
255
|
+
renderSizeInfo_fn = function(estimates) {
|
|
256
|
+
if (!__privateGet(this, _authController).state.isLoading && !__privateGet(this, _authController).state.user) {
|
|
257
|
+
return html`
|
|
258
|
+
<div class="size-info warning">
|
|
259
|
+
<terra-login>
|
|
260
|
+
<h2 slot="logged-out">Limited access as a guest.</h2>
|
|
261
|
+
|
|
262
|
+
<p slot="logged-out">
|
|
263
|
+
Your results will be capped at 10 links. Log in for full
|
|
264
|
+
access to all data.
|
|
265
|
+
</p>
|
|
266
|
+
</terra-login>
|
|
267
|
+
</div>
|
|
268
|
+
`;
|
|
269
|
+
}
|
|
270
|
+
return html`<div
|
|
271
|
+
class="size-info ${estimates.links >= 150 ? "warning" : "neutral"}"
|
|
272
|
+
>
|
|
273
|
+
<h2>Estimated size of results</h2>
|
|
274
|
+
<div class="size-stats">
|
|
275
|
+
${estimates.days.toLocaleString()} days,
|
|
276
|
+
${estimates.links.toLocaleString()} links
|
|
277
|
+
</div>
|
|
278
|
+
${estimates.links >= 150 ? html`<div class="size-warning">
|
|
279
|
+
You are about to retrieve ${estimates.links.toLocaleString()}
|
|
280
|
+
file links from the archive. You may
|
|
281
|
+
<strong>speed up the request</strong> by limiting the scope of
|
|
282
|
+
your search.
|
|
283
|
+
</div>` : nothing}
|
|
284
|
+
</div>`;
|
|
285
|
+
};
|
|
286
|
+
_renderSubsetOptions = new WeakSet();
|
|
287
|
+
renderSubsetOptions_fn = function() {
|
|
288
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
289
|
+
const estimates = __privateMethod(this, _estimateJobSize, estimateJobSize_fn).call(this);
|
|
290
|
+
const hasSubsetOption = __privateMethod(this, _hasAtLeastOneSubsetOption, hasAtLeastOneSubsetOption_fn).call(this);
|
|
291
|
+
const collection = (_a = this.collectionWithServices) == null ? void 0 : _a.collection;
|
|
292
|
+
const temporalExtents = collection == null ? void 0 : collection.TemporalExtents;
|
|
293
|
+
const spatialExtent = collection == null ? void 0 : collection.SpatialExtent;
|
|
294
|
+
const showTemporalSection = temporalExtents && temporalExtents.length;
|
|
295
|
+
const showSpatialSection = spatialExtent && ((_c = (_b = spatialExtent.HorizontalSpatialDomain) == null ? void 0 : _b.Geometry) == null ? void 0 : _c.BoundingRectangles);
|
|
296
|
+
return html`
|
|
297
|
+
${hasSubsetOption && estimates ? __privateMethod(this, _renderSizeInfo, renderSizeInfo_fn).call(this, estimates) : nothing}
|
|
298
|
+
${this.showCollectionSearch ? html`
|
|
299
|
+
<div class="section">
|
|
300
|
+
<h2 class="section-title">
|
|
301
|
+
Select Data Collection
|
|
302
|
+
<span class="help-icon">?</span>
|
|
303
|
+
</h2>
|
|
304
|
+
|
|
305
|
+
${__privateMethod(this, _renderSearchForCollection, renderSearchForCollection_fn).call(this)}
|
|
306
|
+
</div>
|
|
307
|
+
` : nothing}
|
|
308
|
+
${hasSubsetOption ? html`
|
|
309
|
+
<div class="section">
|
|
310
|
+
<h2 class="section-title">
|
|
311
|
+
Method Options
|
|
312
|
+
<span class="help-icon">?</span>
|
|
313
|
+
</h2>
|
|
314
|
+
|
|
315
|
+
${((_d = this.collectionWithServices) == null ? void 0 : _d.temporalSubset) ? __privateMethod(this, _renderDateRangeSelection, renderDateRangeSelection_fn).call(this) : nothing}
|
|
316
|
+
${__privateMethod(this, _hasSpatialSubset, hasSpatialSubset_fn).call(this) ? __privateMethod(this, _renderSpatialSelection, renderSpatialSelection_fn).call(this) : nothing}
|
|
317
|
+
${((_e = this.collectionWithServices) == null ? void 0 : _e.variableSubset) ? __privateMethod(this, _renderVariableSelection, renderVariableSelection_fn).call(this) : nothing}
|
|
318
|
+
</div>
|
|
319
|
+
` : html`
|
|
320
|
+
${showTemporalSection && !((_f = this.collectionWithServices) == null ? void 0 : _f.temporalSubset) ? __privateMethod(this, _renderAvailableTemporalRangeSection, renderAvailableTemporalRangeSection_fn).call(this) : nothing}
|
|
321
|
+
${showSpatialSection && !__privateMethod(this, _hasSpatialSubset, hasSpatialSubset_fn).call(this) ? __privateMethod(this, _renderAvailableSpatialRangeSection, renderAvailableSpatialRangeSection_fn).call(this) : nothing}
|
|
322
|
+
`}
|
|
323
|
+
${((_h = (_g = this.collectionWithServices) == null ? void 0 : _g.outputFormats) == null ? void 0 : _h.length) && hasSubsetOption ? html`
|
|
324
|
+
<div class="section">
|
|
325
|
+
<h2 class="section-title">
|
|
326
|
+
Output Format
|
|
327
|
+
<span class="help-icon">?</span>
|
|
328
|
+
</h2>
|
|
329
|
+
|
|
330
|
+
${__privateMethod(this, _renderOutputFormatSelection, renderOutputFormatSelection_fn).call(this)}
|
|
331
|
+
</div>
|
|
332
|
+
` : nothing}
|
|
333
|
+
${!hasSubsetOption && estimates ? html`
|
|
334
|
+
<div
|
|
335
|
+
class="neutral-info"
|
|
336
|
+
style="margin-top: 24px; padding: 16px 20px; border-radius: 6px; background: #f8f9fa; color: #555; border: 1px solid #ccc;"
|
|
337
|
+
>
|
|
338
|
+
<strong>Estimated result size:</strong><br />
|
|
339
|
+
Your request will return approximately
|
|
340
|
+
<b>${estimates.links.toLocaleString()}</b> files covering
|
|
341
|
+
<b>${estimates.days.toLocaleString()}</b> days.
|
|
342
|
+
</div>
|
|
343
|
+
` : nothing}
|
|
344
|
+
|
|
345
|
+
<div class="footer">
|
|
346
|
+
<button class="btn btn-secondary">Reset All</button>
|
|
347
|
+
<button class="btn btn-primary" @click=${__privateMethod(this, _getData, getData_fn)}>
|
|
348
|
+
Get Data
|
|
349
|
+
</button>
|
|
350
|
+
</div>
|
|
351
|
+
`;
|
|
352
|
+
};
|
|
353
|
+
_renderSearchForCollection = new WeakSet();
|
|
354
|
+
renderSearchForCollection_fn = function() {
|
|
355
|
+
var _a, _b;
|
|
356
|
+
let placeholder = "Search all types of resources (e.g. rainfall, GPM, hurricanes, etc.)";
|
|
357
|
+
if (this.collectionSearchType === "collection") {
|
|
358
|
+
placeholder = "Search collections (e.g. AQUA, GPM_3IMERGH, etc.)";
|
|
359
|
+
}
|
|
360
|
+
if (this.collectionSearchType === "variable") {
|
|
361
|
+
placeholder = "Search variables (e.g. rainfall, hurricanes, etc.)";
|
|
362
|
+
}
|
|
363
|
+
return html`
|
|
364
|
+
<terra-accordion .open=${this.collectionAccordionOpen}>
|
|
365
|
+
<div slot="summary">
|
|
366
|
+
<span class="accordion-title">Collection:</span>
|
|
367
|
+
</div>
|
|
368
|
+
|
|
369
|
+
<div
|
|
370
|
+
slot="summary-right"
|
|
371
|
+
style="display: flex; align-items: center; gap: 10px"
|
|
372
|
+
>
|
|
373
|
+
${this.collectionEntryId ? html` <span
|
|
374
|
+
class="accordion-value"
|
|
375
|
+
id="selected-collection-display"
|
|
376
|
+
>${this.collectionEntryId}</span
|
|
377
|
+
>
|
|
378
|
+
|
|
379
|
+
<button
|
|
380
|
+
class="reset-btn"
|
|
381
|
+
@click=${() => this.collectionEntryId = void 0}
|
|
382
|
+
>
|
|
383
|
+
Reset
|
|
384
|
+
</button>` : nothing}
|
|
385
|
+
</div>
|
|
386
|
+
|
|
387
|
+
<div class="search-tabs-mini">
|
|
388
|
+
<button
|
|
389
|
+
class="search-tab-mini ${this.collectionSearchType === "all" ? "active" : ""}"
|
|
390
|
+
@click=${() => this.collectionSearchType = "all"}
|
|
391
|
+
>
|
|
392
|
+
All
|
|
393
|
+
</button>
|
|
394
|
+
<button
|
|
395
|
+
class="search-tab-mini ${this.collectionSearchType === "collection" ? "active" : ""}"
|
|
396
|
+
@click=${() => this.collectionSearchType = "collection"}
|
|
397
|
+
>
|
|
398
|
+
Collections
|
|
399
|
+
</button>
|
|
400
|
+
<button
|
|
401
|
+
class="search-tab-mini ${this.collectionSearchType === "variable" ? "active" : ""}"
|
|
402
|
+
@click=${() => this.collectionSearchType = "variable"}
|
|
403
|
+
>
|
|
404
|
+
Variables
|
|
405
|
+
</button>
|
|
406
|
+
</div>
|
|
407
|
+
|
|
408
|
+
<div class="search-container-mini">
|
|
409
|
+
<input
|
|
410
|
+
type="text"
|
|
411
|
+
class="search-input-mini"
|
|
412
|
+
id="search-input"
|
|
413
|
+
placeholder=${placeholder}
|
|
414
|
+
@input="${(e) => this.handleCollectionSearch(
|
|
415
|
+
e.target.value
|
|
416
|
+
)}"
|
|
417
|
+
/>
|
|
418
|
+
|
|
419
|
+
<button class="search-button-mini">
|
|
420
|
+
<svg
|
|
421
|
+
class="search-icon-mini"
|
|
422
|
+
viewBox="0 0 24 24"
|
|
423
|
+
fill="currentColor"
|
|
424
|
+
>
|
|
425
|
+
<path
|
|
426
|
+
d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"
|
|
427
|
+
/>
|
|
428
|
+
</svg>
|
|
429
|
+
Search
|
|
430
|
+
</button>
|
|
431
|
+
</div>
|
|
432
|
+
|
|
433
|
+
<!-- TODO: it may be nice to have a quick search, perhaps by recent trends?
|
|
434
|
+
<div class="quick-links-mini">
|
|
435
|
+
<a href="#" class="quick-link-mini" onclick="quickSearch('GPM')"
|
|
436
|
+
>GPM Precipitation</a
|
|
437
|
+
>
|
|
438
|
+
<a href="#" class="quick-link-mini" onclick="quickSearch('MODIS')"
|
|
439
|
+
>MODIS Data</a
|
|
440
|
+
>
|
|
441
|
+
<a
|
|
442
|
+
href="#"
|
|
443
|
+
class="quick-link-mini"
|
|
444
|
+
onclick="quickSearch('Landsat')"
|
|
445
|
+
>Landsat Imagery</a
|
|
446
|
+
>
|
|
447
|
+
<a href="#" class="quick-link-mini" onclick="quickSearch('AIRS')"
|
|
448
|
+
>Atmospheric Data</a
|
|
449
|
+
>
|
|
450
|
+
</div>
|
|
451
|
+
-->
|
|
452
|
+
|
|
453
|
+
<div id="search-results-section" class="search-results-section">
|
|
454
|
+
${this.collectionSearchLoading ? html`
|
|
455
|
+
<div id="loading-mini" class="loading-mini">
|
|
456
|
+
<div class="spinner-mini"></div>
|
|
457
|
+
<div>Searching NASA CMR...</div>
|
|
458
|
+
</div>
|
|
459
|
+
` : ((_a = this.collectionSearchResults) == null ? void 0 : _a.length) ? html` <div
|
|
460
|
+
id="results-container-mini"
|
|
461
|
+
class="results-container-mini"
|
|
462
|
+
>
|
|
463
|
+
${(_b = this.collectionSearchResults) == null ? void 0 : _b.map(
|
|
464
|
+
(item) => html`
|
|
465
|
+
<div
|
|
466
|
+
class="result-item-mini"
|
|
467
|
+
@click=${() => {
|
|
468
|
+
this.collectionEntryId = item.collectionEntryId;
|
|
469
|
+
this.collectionAccordionOpen = false;
|
|
470
|
+
this.collectionLoading = true;
|
|
471
|
+
if (item.type === "variable") {
|
|
472
|
+
this.selectedVariables = [
|
|
473
|
+
{
|
|
474
|
+
name: item.entryId,
|
|
475
|
+
href: "",
|
|
476
|
+
conceptId: item.conceptId
|
|
477
|
+
}
|
|
478
|
+
];
|
|
479
|
+
}
|
|
480
|
+
this.requestUpdate();
|
|
481
|
+
}}
|
|
482
|
+
style="cursor: pointer;"
|
|
483
|
+
>
|
|
484
|
+
<div class="result-title-mini">
|
|
485
|
+
${item.title}
|
|
486
|
+
</div>
|
|
487
|
+
<div class="result-id-mini">
|
|
488
|
+
${item.entryId}
|
|
489
|
+
</div>
|
|
490
|
+
<div class="result-description-mini">
|
|
491
|
+
${item.summary || item.title}
|
|
492
|
+
</div>
|
|
493
|
+
<div class="result-meta-mini">
|
|
494
|
+
<span>📅 2000-02-24 - ongoing</span>
|
|
495
|
+
<span>🌍 Global</span>
|
|
496
|
+
<span>🏢 ${item.provider}</span>
|
|
497
|
+
${item.type === "variable" ? html` <span
|
|
498
|
+
>📊
|
|
499
|
+
${item.collectionEntryId}</span
|
|
500
|
+
>` : nothing}
|
|
501
|
+
<span class="tag-mini"
|
|
502
|
+
>${item.type.toUpperCase()}</span
|
|
503
|
+
>
|
|
504
|
+
</div>
|
|
505
|
+
</div>
|
|
506
|
+
`
|
|
507
|
+
)}
|
|
508
|
+
</div>` : this.collectionSearchResults && this.collectionSearchResults.length === 0 ? html`<div id="no-results-mini" class="no-results-mini">
|
|
509
|
+
<p>
|
|
510
|
+
No results found for
|
|
511
|
+
'${this.collectionSearchQuery}'. Try adjusting
|
|
512
|
+
your search term.
|
|
513
|
+
</p>
|
|
514
|
+
</div>` : nothing}
|
|
515
|
+
</div>
|
|
516
|
+
</terra-accordion>
|
|
517
|
+
|
|
518
|
+
${this.collectionLoading ? html`
|
|
519
|
+
<div
|
|
520
|
+
class="collection-loading-bar"
|
|
521
|
+
style="display: flex; align-items: center; gap: 10px; margin: 16px 0;"
|
|
522
|
+
>
|
|
523
|
+
<span
|
|
524
|
+
class="loading-spinner"
|
|
525
|
+
style="width: 20px; height: 20px; border: 3px solid #ccc; border-top: 3px solid #31708f; border-radius: 50%; display: inline-block; animation: spin 1s linear infinite;"
|
|
526
|
+
></span>
|
|
527
|
+
Retrieving collection, please wait...
|
|
528
|
+
</div>
|
|
529
|
+
<style>
|
|
530
|
+
@keyframes spin {
|
|
531
|
+
0% {
|
|
532
|
+
transform: rotate(0deg);
|
|
533
|
+
}
|
|
534
|
+
100% {
|
|
535
|
+
transform: rotate(360deg);
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
</style>
|
|
539
|
+
` : nothing}
|
|
540
|
+
`;
|
|
541
|
+
};
|
|
542
|
+
_renderOutputFormatSelection = new WeakSet();
|
|
543
|
+
renderOutputFormatSelection_fn = function() {
|
|
544
|
+
return html`
|
|
545
|
+
<terra-accordion>
|
|
546
|
+
<div slot="summary">
|
|
547
|
+
<span class="accordion-title">File Format:</span>
|
|
548
|
+
</div>
|
|
549
|
+
|
|
550
|
+
<div
|
|
551
|
+
slot="summary-right"
|
|
552
|
+
style="display: flex; align-items: center; gap: 10px;"
|
|
553
|
+
>
|
|
554
|
+
<span>${getFriendlyNameForMimeType(this.selectedFormat)}</span>
|
|
555
|
+
|
|
556
|
+
<button class="reset-btn" @click=${__privateGet(this, _resetFormatSelection)}>
|
|
557
|
+
Reset
|
|
558
|
+
</button>
|
|
559
|
+
</div>
|
|
560
|
+
|
|
561
|
+
<div class="accordion-content" style="margin-top: 12px;">
|
|
562
|
+
${(() => {
|
|
563
|
+
var _a;
|
|
564
|
+
const uniqueFormats = Array.from(
|
|
565
|
+
new Set(((_a = this.collectionWithServices) == null ? void 0 : _a.outputFormats) || [])
|
|
566
|
+
);
|
|
567
|
+
return uniqueFormats.map(
|
|
568
|
+
(format) => html`
|
|
569
|
+
<label
|
|
570
|
+
style="display: flex; align-items: center; gap: 8px; padding: 5px;"
|
|
571
|
+
>
|
|
572
|
+
<input
|
|
573
|
+
type="radio"
|
|
574
|
+
name="output-format"
|
|
575
|
+
value="${format}"
|
|
576
|
+
.checked=${this.selectedFormat === format}
|
|
577
|
+
@change=${() => this.selectedFormat = format}
|
|
578
|
+
/>
|
|
579
|
+
${getFriendlyNameForMimeType(format)}
|
|
580
|
+
</label>
|
|
581
|
+
`
|
|
582
|
+
);
|
|
583
|
+
})()}
|
|
584
|
+
</div>
|
|
585
|
+
</terra-accordion>
|
|
586
|
+
`;
|
|
587
|
+
};
|
|
588
|
+
_renderDateRangeSelection = new WeakSet();
|
|
589
|
+
renderDateRangeSelection_fn = function() {
|
|
590
|
+
var _a, _b;
|
|
591
|
+
const { startDate: defaultStartDate, endDate: defaultEndDate } = __privateMethod(this, _getCollectionDateRange, getCollectionDateRange_fn).call(this);
|
|
592
|
+
const startDate = (_a = this.selectedDateRange.startDate) != null ? _a : defaultStartDate;
|
|
593
|
+
const endDate = (_b = this.selectedDateRange.endDate) != null ? _b : defaultEndDate;
|
|
594
|
+
const showError = this.touchedFields.has("date") && (!this.selectedDateRange.startDate || !this.selectedDateRange.endDate);
|
|
595
|
+
return html`
|
|
596
|
+
<terra-accordion>
|
|
597
|
+
<div slot="summary">
|
|
598
|
+
<span class="accordion-title">Refine Date Range:</span>
|
|
599
|
+
</div>
|
|
600
|
+
|
|
601
|
+
<div
|
|
602
|
+
slot="summary-right"
|
|
603
|
+
style="display: flex; align-items: center; gap: 10px;"
|
|
604
|
+
>
|
|
605
|
+
${showError ? html`<span class="accordion-value error"
|
|
606
|
+
>Please select a date range</span
|
|
607
|
+
>` : this.touchedFields.has("date") && startDate && endDate ? html`<span class="accordion-value"
|
|
608
|
+
>${startDate} to ${endDate}</span
|
|
609
|
+
>` : nothing}
|
|
610
|
+
<button class="reset-btn" @click=${__privateGet(this, _resetDateRangeSelection)}>
|
|
611
|
+
Reset
|
|
612
|
+
</button>
|
|
613
|
+
</div>
|
|
614
|
+
|
|
615
|
+
<div style="display: flex; gap: 16px;">
|
|
616
|
+
<terra-date-picker
|
|
617
|
+
label="Start Date"
|
|
618
|
+
allow-input
|
|
619
|
+
class="w-full"
|
|
620
|
+
.minDate=${defaultStartDate}
|
|
621
|
+
.maxDate=${endDate}
|
|
622
|
+
.defaultDate=${startDate}
|
|
623
|
+
@terra-change=${__privateGet(this, _handleStartDateChange)}
|
|
624
|
+
></terra-date-picker>
|
|
625
|
+
<terra-date-picker
|
|
626
|
+
label="End Date"
|
|
627
|
+
allow-input
|
|
628
|
+
class="w-full"
|
|
629
|
+
.minDate=${startDate}
|
|
630
|
+
.maxDate=${defaultEndDate}
|
|
631
|
+
.defaultDate=${endDate}
|
|
632
|
+
@terra-change=${__privateGet(this, _handleEndDateChange)}
|
|
633
|
+
></terra-date-picker>
|
|
634
|
+
</div>
|
|
635
|
+
|
|
636
|
+
<div
|
|
637
|
+
style="display: flex; gap: 16px; margin-top: 15px; color: #31708f;"
|
|
638
|
+
>
|
|
639
|
+
<span
|
|
640
|
+
><strong>Available Range:</strong> ${defaultStartDate} to
|
|
641
|
+
${defaultEndDate}</span
|
|
642
|
+
>
|
|
643
|
+
<span
|
|
644
|
+
><strong>Note:</strong> All dates and times are in UTC.</span
|
|
645
|
+
>
|
|
646
|
+
</div>
|
|
647
|
+
</terra-accordion>
|
|
648
|
+
`;
|
|
649
|
+
};
|
|
650
|
+
_handleStartDateChange = new WeakMap();
|
|
651
|
+
_handleEndDateChange = new WeakMap();
|
|
652
|
+
_resetDateRangeSelection = new WeakMap();
|
|
653
|
+
_resetFormatSelection = new WeakMap();
|
|
654
|
+
_getCollectionDateRange = new WeakSet();
|
|
655
|
+
getCollectionDateRange_fn = function() {
|
|
656
|
+
var _a, _b;
|
|
657
|
+
const temporalExtents = (_b = (_a = this.collectionWithServices) == null ? void 0 : _a.collection) == null ? void 0 : _b.TemporalExtents;
|
|
658
|
+
if (!temporalExtents || !temporalExtents.length)
|
|
659
|
+
return {
|
|
660
|
+
startDate: null,
|
|
661
|
+
endDate: null
|
|
662
|
+
};
|
|
663
|
+
let minStart = null;
|
|
664
|
+
let maxEnd = null;
|
|
665
|
+
const today = /* @__PURE__ */ new Date();
|
|
666
|
+
for (const temporal of temporalExtents) {
|
|
667
|
+
for (const range of temporal.RangeDateTimes) {
|
|
668
|
+
const start = new Date(range.BeginningDateTime);
|
|
669
|
+
let end;
|
|
670
|
+
if (temporal.EndsAtPresentFlag || !range.EndingDateTime) {
|
|
671
|
+
end = today;
|
|
672
|
+
} else {
|
|
673
|
+
end = new Date(range.EndingDateTime);
|
|
674
|
+
}
|
|
675
|
+
if (!minStart || start < minStart)
|
|
676
|
+
minStart = start;
|
|
677
|
+
if (!maxEnd || end > maxEnd)
|
|
678
|
+
maxEnd = end;
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
return {
|
|
682
|
+
startDate: minStart ? minStart.toISOString().slice(0, 10) : null,
|
|
683
|
+
endDate: maxEnd ? maxEnd.toISOString().slice(0, 10) : null
|
|
684
|
+
};
|
|
685
|
+
};
|
|
686
|
+
_handleRegionAccordionToggle = new WeakSet();
|
|
687
|
+
handleRegionAccordionToggle_fn = function() {
|
|
688
|
+
var _a;
|
|
689
|
+
(_a = this.spatialPicker) == null ? void 0 : _a.invalidateSize();
|
|
690
|
+
};
|
|
691
|
+
_renderSpatialSelection = new WeakSet();
|
|
692
|
+
renderSpatialSelection_fn = function() {
|
|
693
|
+
var _a, _b, _c, _d, _e, _f;
|
|
694
|
+
const showError = this.touchedFields.has("spatial") && !this.spatialSelection;
|
|
695
|
+
let boundingRects = (_e = (_d = (_c = (_b = (_a = this.collectionWithServices) == null ? void 0 : _a.collection) == null ? void 0 : _b.SpatialExtent) == null ? void 0 : _c.HorizontalSpatialDomain) == null ? void 0 : _d.Geometry) == null ? void 0 : _e.BoundingRectangles;
|
|
696
|
+
if (boundingRects && !Array.isArray(boundingRects)) {
|
|
697
|
+
boundingRects = [boundingRects];
|
|
698
|
+
}
|
|
699
|
+
return html`
|
|
700
|
+
<terra-accordion
|
|
701
|
+
@terra-accordion-toggle=${__privateMethod(this, _handleRegionAccordionToggle, handleRegionAccordionToggle_fn)}
|
|
702
|
+
>
|
|
703
|
+
<div slot="summary">
|
|
704
|
+
<span class="accordion-title">Refine Region:</span>
|
|
705
|
+
</div>
|
|
706
|
+
|
|
707
|
+
<div
|
|
708
|
+
slot="summary-right"
|
|
709
|
+
style="display: flex; align-items: center; gap: 10px;"
|
|
710
|
+
>
|
|
711
|
+
${showError ? html`<span class="accordion-value error"
|
|
712
|
+
>Please select a region</span
|
|
713
|
+
>` : this.spatialSelection && "w" in this.spatialSelection ? html`<span class="accordion-value"
|
|
714
|
+
>${this.spatialSelection.w},${this.spatialSelection.s},${this.spatialSelection.e},${this.spatialSelection.n}</span
|
|
715
|
+
>` : this.spatialSelection && "lat" in this.spatialSelection && "lng" in this.spatialSelection ? html`<span class="accordion-value"
|
|
716
|
+
>${this.spatialSelection.lat},${this.spatialSelection.lng}</span
|
|
717
|
+
>` : nothing}
|
|
718
|
+
<button class="reset-btn" @click=${__privateGet(this, _resetSpatialSelection)}>
|
|
719
|
+
Reset
|
|
720
|
+
</button>
|
|
721
|
+
</div>
|
|
722
|
+
<div class="accordion-content">
|
|
723
|
+
<terra-spatial-picker
|
|
724
|
+
part="spatial-picker"
|
|
725
|
+
inline
|
|
726
|
+
hide-label
|
|
727
|
+
has-shape-selector
|
|
728
|
+
hide-point-selection
|
|
729
|
+
.initialValue=${(_f = this.spatialSelection) != null ? _f : ""}
|
|
730
|
+
@terra-map-change=${__privateGet(this, _handleSpatialChange)}
|
|
731
|
+
></terra-spatial-picker>
|
|
732
|
+
${boundingRects && Array.isArray(boundingRects) && boundingRects.length ? html`<div
|
|
733
|
+
style="display: flex; gap: 16px; margin-top: 15px; color: #31708f;"
|
|
734
|
+
>
|
|
735
|
+
${boundingRects.map(
|
|
736
|
+
(rect) => html`<div>
|
|
737
|
+
<strong>Available Range:</strong>
|
|
738
|
+
${rect.WestBoundingCoordinate},
|
|
739
|
+
${rect.SouthBoundingCoordinate},
|
|
740
|
+
${rect.EastBoundingCoordinate},
|
|
741
|
+
${rect.NorthBoundingCoordinate}
|
|
742
|
+
</div>`
|
|
743
|
+
)}
|
|
744
|
+
</div>` : nothing}
|
|
745
|
+
</div>
|
|
746
|
+
</terra-accordion>
|
|
747
|
+
`;
|
|
748
|
+
};
|
|
749
|
+
_handleSpatialChange = new WeakMap();
|
|
750
|
+
_resetSpatialSelection = new WeakMap();
|
|
751
|
+
_renderVariableSelection = new WeakSet();
|
|
752
|
+
renderVariableSelection_fn = function() {
|
|
753
|
+
var _a;
|
|
754
|
+
const variables = ((_a = this.collectionWithServices) == null ? void 0 : _a.variables) || [];
|
|
755
|
+
const showError = this.touchedFields.has("variables") && this.selectedVariables.length === 0;
|
|
756
|
+
const tree = __privateMethod(this, _buildVariableTree, buildVariableTree_fn).call(this, variables);
|
|
757
|
+
const allGroups = __privateMethod(this, _getAllGroupPaths, getAllGroupPaths_fn).call(this, tree);
|
|
758
|
+
const allExpanded = allGroups.length > 0 && allGroups.every((g) => this.expandedVariableGroups.has(g));
|
|
759
|
+
return html`
|
|
760
|
+
<terra-accordion>
|
|
761
|
+
<div slot="summary">
|
|
762
|
+
<span class="accordion-title">Select Variables:</span>
|
|
763
|
+
</div>
|
|
764
|
+
<div
|
|
765
|
+
slot="summary-right"
|
|
766
|
+
style="display: flex; align-items: center; gap: 10px;"
|
|
767
|
+
>
|
|
768
|
+
${showError ? html`<span class="accordion-value error"
|
|
769
|
+
>Please select at least one variable</span
|
|
770
|
+
>` : this.selectedVariables.length ? html`<span class="accordion-value"
|
|
771
|
+
>${this.selectedVariables.length} selected</span
|
|
772
|
+
>` : nothing}
|
|
773
|
+
|
|
774
|
+
<button class="reset-btn" @click=${__privateGet(this, _resetVariableSelection)}>
|
|
775
|
+
Reset
|
|
776
|
+
</button>
|
|
777
|
+
</div>
|
|
778
|
+
<div class="accordion-content">
|
|
779
|
+
<button
|
|
780
|
+
class="reset-btn"
|
|
781
|
+
style="margin-bottom: 10px;"
|
|
782
|
+
@click=${() => __privateMethod(this, _toggleExpandCollapseAll, toggleExpandCollapseAll_fn).call(this, tree)}
|
|
783
|
+
>
|
|
784
|
+
${allExpanded ? "Collapse Tree" : "Expand Tree"}
|
|
785
|
+
</button>
|
|
786
|
+
${variables.length === 0 ? html`<p style="color: #666; font-style: italic;">
|
|
787
|
+
No variables available for this collection.
|
|
788
|
+
</p>` : __privateMethod(this, _renderVariableTree, renderVariableTree_fn).call(this, tree, [])}
|
|
789
|
+
</div>
|
|
790
|
+
</terra-accordion>
|
|
791
|
+
`;
|
|
792
|
+
};
|
|
793
|
+
_buildVariableTree = new WeakSet();
|
|
794
|
+
buildVariableTree_fn = function(variables) {
|
|
795
|
+
const root = {};
|
|
796
|
+
for (const v of variables) {
|
|
797
|
+
const parts = v.name.split("/");
|
|
798
|
+
let node = root;
|
|
799
|
+
for (let i = 0; i < parts.length; i++) {
|
|
800
|
+
const part = parts[i];
|
|
801
|
+
if (!node[part])
|
|
802
|
+
node[part] = { __children: {}, __isLeaf: false };
|
|
803
|
+
if (i === parts.length - 1) {
|
|
804
|
+
node[part].__isLeaf = true;
|
|
805
|
+
node[part].__variable = v;
|
|
806
|
+
}
|
|
807
|
+
node = node[part].__children;
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
return root;
|
|
811
|
+
};
|
|
812
|
+
_renderVariableTree = new WeakSet();
|
|
813
|
+
renderVariableTree_fn = function(node, path) {
|
|
814
|
+
return html`
|
|
815
|
+
<div style="margin-left: ${path.length * 20}px;">
|
|
816
|
+
${Object.entries(node).map(([key, value]) => {
|
|
817
|
+
const groupPath = [...path, key].join("/");
|
|
818
|
+
if (value.__isLeaf) {
|
|
819
|
+
return html`
|
|
820
|
+
<div class="option-row">
|
|
821
|
+
<label class="checkbox-option">
|
|
822
|
+
<input
|
|
823
|
+
type="checkbox"
|
|
824
|
+
.checked=${this.selectedVariables.some(
|
|
825
|
+
(v) => v.name === value.__variable.name
|
|
826
|
+
)}
|
|
827
|
+
@change=${(e) => __privateMethod(this, _toggleVariableSelection, toggleVariableSelection_fn).call(this, e, value.__variable)}
|
|
828
|
+
/>
|
|
829
|
+
<span>${key}</span>
|
|
830
|
+
</label>
|
|
831
|
+
</div>
|
|
832
|
+
`;
|
|
833
|
+
} else {
|
|
834
|
+
const expanded = this.expandedVariableGroups.has(groupPath);
|
|
835
|
+
return html`
|
|
836
|
+
<div class="option-row" style="align-items: flex-start;">
|
|
837
|
+
<span
|
|
838
|
+
style="cursor: pointer; display: flex; align-items: center;"
|
|
839
|
+
@click=${() => __privateMethod(this, _toggleGroupExpand, toggleGroupExpand_fn).call(this, groupPath)}
|
|
840
|
+
>
|
|
841
|
+
<terra-icon
|
|
842
|
+
library="heroicons"
|
|
843
|
+
name="${expanded ? "outline-minus-circle" : "outline-plus-circle"}"
|
|
844
|
+
style="margin-right: 4px;"
|
|
845
|
+
></terra-icon>
|
|
846
|
+
<span style="font-weight: 500;">${key}</span>
|
|
847
|
+
</span>
|
|
848
|
+
</div>
|
|
849
|
+
${expanded ? __privateMethod(this, _renderVariableTree, renderVariableTree_fn).call(this, value.__children, [
|
|
850
|
+
...path,
|
|
851
|
+
key
|
|
852
|
+
]) : ""}
|
|
853
|
+
`;
|
|
854
|
+
}
|
|
855
|
+
})}
|
|
856
|
+
</div>
|
|
857
|
+
`;
|
|
858
|
+
};
|
|
859
|
+
_getAllGroupPaths = new WeakSet();
|
|
860
|
+
getAllGroupPaths_fn = function(node, path = []) {
|
|
861
|
+
let groups = [];
|
|
862
|
+
for (const [key, value] of Object.entries(node)) {
|
|
863
|
+
if (!value.__isLeaf) {
|
|
864
|
+
const groupPath = [...path, key].join("/");
|
|
865
|
+
groups.push(groupPath);
|
|
866
|
+
groups = groups.concat(
|
|
867
|
+
__privateMethod(this, _getAllGroupPaths, getAllGroupPaths_fn).call(this, value.__children, [...path, key])
|
|
868
|
+
);
|
|
869
|
+
}
|
|
870
|
+
}
|
|
871
|
+
return groups;
|
|
872
|
+
};
|
|
873
|
+
_toggleGroupExpand = new WeakSet();
|
|
874
|
+
toggleGroupExpand_fn = function(groupPath) {
|
|
875
|
+
const set = new Set(this.expandedVariableGroups);
|
|
876
|
+
if (set.has(groupPath)) {
|
|
877
|
+
set.delete(groupPath);
|
|
878
|
+
} else {
|
|
879
|
+
set.add(groupPath);
|
|
880
|
+
}
|
|
881
|
+
this.expandedVariableGroups = set;
|
|
882
|
+
};
|
|
883
|
+
_toggleExpandCollapseAll = new WeakSet();
|
|
884
|
+
toggleExpandCollapseAll_fn = function(tree) {
|
|
885
|
+
const allGroups = __privateMethod(this, _getAllGroupPaths, getAllGroupPaths_fn).call(this, tree);
|
|
886
|
+
const allExpanded = allGroups.length > 0 && allGroups.every((g) => this.expandedVariableGroups.has(g));
|
|
887
|
+
if (allExpanded) {
|
|
888
|
+
this.expandedVariableGroups = /* @__PURE__ */ new Set();
|
|
889
|
+
} else {
|
|
890
|
+
this.expandedVariableGroups = new Set(allGroups);
|
|
891
|
+
}
|
|
892
|
+
};
|
|
893
|
+
_toggleVariableSelection = new WeakSet();
|
|
894
|
+
toggleVariableSelection_fn = function(e, variable) {
|
|
895
|
+
__privateMethod(this, _markFieldTouched, markFieldTouched_fn).call(this, "variables");
|
|
896
|
+
const checked = e.target.checked;
|
|
897
|
+
if (checked) {
|
|
898
|
+
if (!this.selectedVariables.some((v) => v.name === variable.name)) {
|
|
899
|
+
this.selectedVariables = [...this.selectedVariables, variable];
|
|
900
|
+
}
|
|
901
|
+
} else {
|
|
902
|
+
this.selectedVariables = this.selectedVariables.filter(
|
|
903
|
+
(v) => v.name !== variable.name
|
|
904
|
+
);
|
|
905
|
+
}
|
|
906
|
+
};
|
|
907
|
+
_markFieldTouched = new WeakSet();
|
|
908
|
+
markFieldTouched_fn = function(field) {
|
|
909
|
+
this.touchedFields = new Set(this.touchedFields).add(field);
|
|
910
|
+
};
|
|
911
|
+
_resetVariableSelection = new WeakMap();
|
|
912
|
+
_renderJobStatus = new WeakSet();
|
|
913
|
+
renderJobStatus_fn = function() {
|
|
914
|
+
var _a, _b;
|
|
915
|
+
if (!((_a = __privateGet(this, _controller).currentJob) == null ? void 0 : _a.jobID)) {
|
|
916
|
+
return html`<div class="results-section" id="job-status-section">
|
|
917
|
+
<h2 class="results-title">Results:</h2>
|
|
918
|
+
|
|
919
|
+
<div class="progress-container">
|
|
920
|
+
<div class="progress-text">
|
|
921
|
+
<span class="spinner"></span>
|
|
922
|
+
<span class="status-running">Searching for data...</span>
|
|
923
|
+
</div>
|
|
924
|
+
|
|
925
|
+
<div class="progress-bar">
|
|
926
|
+
<div class="progress-fill" style="width: 0%"></div>
|
|
927
|
+
</div>
|
|
928
|
+
</div>
|
|
929
|
+
|
|
930
|
+
${__privateMethod(this, _renderJobMessage, renderJobMessage_fn).call(this)}
|
|
931
|
+
</div>`;
|
|
932
|
+
}
|
|
933
|
+
return html`
|
|
934
|
+
<div class="results-section" id="job-status-section">
|
|
935
|
+
<h2 class="results-title">Results:</h2>
|
|
936
|
+
|
|
937
|
+
${__privateGet(this, _controller).currentJob.status !== "canceled" && __privateGet(this, _controller).currentJob.status !== "failed" ? html` <div class="progress-container">
|
|
938
|
+
<div class="progress-text">
|
|
939
|
+
${__privateGet(this, _controller).currentJob.progress >= 100 ? html`
|
|
940
|
+
<span class="status-complete"
|
|
941
|
+
>✓ Search complete</span
|
|
942
|
+
>
|
|
943
|
+
` : html`
|
|
944
|
+
<span class="spinner"></span>
|
|
945
|
+
<span class="status-running"
|
|
946
|
+
>Searching for data...
|
|
947
|
+
(${__privateGet(this, _controller).currentJob.progress}%)</span
|
|
948
|
+
>
|
|
949
|
+
`}
|
|
950
|
+
</div>
|
|
951
|
+
|
|
952
|
+
<div class="progress-bar">
|
|
953
|
+
<div
|
|
954
|
+
class="progress-fill"
|
|
955
|
+
style="width: ${__privateGet(this, _controller).currentJob.progress}%"
|
|
956
|
+
></div>
|
|
957
|
+
</div>
|
|
958
|
+
</div>` : nothing}
|
|
959
|
+
|
|
960
|
+
<div class="search-status">
|
|
961
|
+
<span class="file-count"
|
|
962
|
+
>Found ${__privateMethod(this, _numberOfFilesFoundEstimate, numberOfFilesFoundEstimate_fn).call(this)} files</span
|
|
963
|
+
>
|
|
964
|
+
out of estimated
|
|
965
|
+
<span class="estimated-total"
|
|
966
|
+
>${__privateGet(this, _controller).currentJob.numInputGranules.toLocaleString()}</span
|
|
967
|
+
>
|
|
968
|
+
</div>
|
|
969
|
+
|
|
970
|
+
${__privateMethod(this, _renderJobMessage, renderJobMessage_fn).call(this)}
|
|
971
|
+
${((_b = __privateGet(this, _controller).currentJob.errors) == null ? void 0 : _b.length) ? html`
|
|
972
|
+
<terra-accordion>
|
|
973
|
+
<div slot="summary">
|
|
974
|
+
<span
|
|
975
|
+
class="accordion-title"
|
|
976
|
+
style="color: #dc3545;"
|
|
977
|
+
>Errors
|
|
978
|
+
(${__privateGet(this, _controller).currentJob.errors.length})</span
|
|
979
|
+
>
|
|
980
|
+
</div>
|
|
981
|
+
<div class="accordion-content">
|
|
982
|
+
<ul
|
|
983
|
+
style="color: #dc3545; font-size: 14px; padding-left: 20px;"
|
|
984
|
+
>
|
|
985
|
+
${__privateGet(this, _controller).currentJob.errors.map(
|
|
986
|
+
(err) => html`
|
|
987
|
+
<li style="margin-bottom: 12px;">
|
|
988
|
+
<a
|
|
989
|
+
href="${err.url}"
|
|
990
|
+
target="_blank"
|
|
991
|
+
style="word-break: break-all; color: #dc3545; text-decoration: underline;"
|
|
992
|
+
>
|
|
993
|
+
${err.url}
|
|
994
|
+
</a>
|
|
995
|
+
<div style="margin-top: 2px;">
|
|
996
|
+
${err.message}
|
|
997
|
+
</div>
|
|
998
|
+
</li>
|
|
999
|
+
`
|
|
1000
|
+
)}
|
|
1001
|
+
</ul>
|
|
1002
|
+
</div>
|
|
1003
|
+
</terra-accordion>
|
|
1004
|
+
` : nothing}
|
|
1005
|
+
|
|
1006
|
+
<div class="tabs">
|
|
1007
|
+
<button
|
|
1008
|
+
class="tab ${this.selectedTab === "web-links" ? "active" : ""}"
|
|
1009
|
+
@click=${() => this.selectedTab = "web-links"}
|
|
1010
|
+
>
|
|
1011
|
+
Web Links
|
|
1012
|
+
</button>
|
|
1013
|
+
|
|
1014
|
+
<button
|
|
1015
|
+
class="tab ${this.selectedTab === "selected-params" ? "active" : ""}"
|
|
1016
|
+
@click=${() => this.selectedTab = "selected-params"}
|
|
1017
|
+
>
|
|
1018
|
+
Selected Parameters
|
|
1019
|
+
</button>
|
|
1020
|
+
</div>
|
|
1021
|
+
<div
|
|
1022
|
+
id="web-links"
|
|
1023
|
+
class="tab-content ${this.selectedTab === "web-links" ? "active" : ""}"
|
|
1024
|
+
>
|
|
1025
|
+
${__privateMethod(this, _getDocumentationLinks, getDocumentationLinks_fn).call(this).length ? html`
|
|
1026
|
+
<div class="documentation-links">
|
|
1027
|
+
${__privateMethod(this, _getDocumentationLinks, getDocumentationLinks_fn).call(this).map(
|
|
1028
|
+
(link) => html`
|
|
1029
|
+
<a href="${link.href}" class="doc-link"
|
|
1030
|
+
>${link.title}</a
|
|
1031
|
+
>
|
|
1032
|
+
`
|
|
1033
|
+
)}
|
|
1034
|
+
</div>
|
|
1035
|
+
` : nothing}
|
|
1036
|
+
|
|
1037
|
+
<ul class="file-list">
|
|
1038
|
+
${__privateMethod(this, _getDataLinks, getDataLinks_fn).call(this).map(
|
|
1039
|
+
(link) => html`
|
|
1040
|
+
<li class="file-item">
|
|
1041
|
+
<a
|
|
1042
|
+
href="${link.href}"
|
|
1043
|
+
class="file-link"
|
|
1044
|
+
target="_blank"
|
|
1045
|
+
>
|
|
1046
|
+
${link.title}
|
|
1047
|
+
</a>
|
|
1048
|
+
</li>
|
|
1049
|
+
`
|
|
1050
|
+
)}
|
|
1051
|
+
</ul>
|
|
1052
|
+
</div>
|
|
1053
|
+
|
|
1054
|
+
<div
|
|
1055
|
+
id="selected-params"
|
|
1056
|
+
class="tab-content ${this.selectedTab === "selected-params" ? "active" : ""}"
|
|
1057
|
+
>
|
|
1058
|
+
${__privateMethod(this, _renderSelectedParams, renderSelectedParams_fn).call(this)}
|
|
1059
|
+
</div>
|
|
1060
|
+
</div>
|
|
1061
|
+
|
|
1062
|
+
<div class="footer">
|
|
1063
|
+
${__privateGet(this, _controller).currentJob.status === "successful" /* SUCCESSFUL */ || __privateGet(this, _controller).currentJob.status === "complete_with_errors" /* COMPLETE_WITH_ERRORS */ ? html`
|
|
1064
|
+
<div>
|
|
1065
|
+
<div
|
|
1066
|
+
class="download-dropdown ${this.showDownloadMenu ? "open" : ""}"
|
|
1067
|
+
>
|
|
1068
|
+
<terra-button
|
|
1069
|
+
@click=${(e) => __privateMethod(this, _toggleDownloadMenu, toggleDownloadMenu_fn).call(this, e)}
|
|
1070
|
+
>
|
|
1071
|
+
Download Options
|
|
1072
|
+
<svg
|
|
1073
|
+
class="dropdown-arrow"
|
|
1074
|
+
viewBox="0 0 24 24"
|
|
1075
|
+
fill="currentColor"
|
|
1076
|
+
>
|
|
1077
|
+
<path d="M7 10l5 5 5-5z" />
|
|
1078
|
+
</svg>
|
|
1079
|
+
</terra-button>
|
|
1080
|
+
|
|
1081
|
+
<div
|
|
1082
|
+
class="download-menu ${this.showDownloadMenu ? "open" : ""}"
|
|
1083
|
+
>
|
|
1084
|
+
<button
|
|
1085
|
+
class="download-option"
|
|
1086
|
+
@click=${(e) => __privateMethod(this, _downloadLinksAsTxt, downloadLinksAsTxt_fn).call(this, e)}
|
|
1087
|
+
>
|
|
1088
|
+
<svg
|
|
1089
|
+
class="file-icon"
|
|
1090
|
+
viewBox="0 0 24 24"
|
|
1091
|
+
fill="currentColor"
|
|
1092
|
+
>
|
|
1093
|
+
<path
|
|
1094
|
+
d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z"
|
|
1095
|
+
/>
|
|
1096
|
+
</svg>
|
|
1097
|
+
File List
|
|
1098
|
+
</button>
|
|
1099
|
+
<button
|
|
1100
|
+
class="download-option"
|
|
1101
|
+
@click=${(e) => __privateMethod(this, _downloadPythonScript, downloadPythonScript_fn).call(this, e)}
|
|
1102
|
+
>
|
|
1103
|
+
<svg
|
|
1104
|
+
class="file-icon"
|
|
1105
|
+
viewBox="0 0 128 128"
|
|
1106
|
+
width="16"
|
|
1107
|
+
height="16"
|
|
1108
|
+
>
|
|
1109
|
+
<path
|
|
1110
|
+
fill="currentColor"
|
|
1111
|
+
d="M49.33 62h29.159C86.606 62 93 55.132 93 46.981V19.183c0-7.912-6.632-13.856-14.555-15.176-5.014-.835-10.195-1.215-15.187-1.191-4.99.023-9.612.448-13.805 1.191C37.098 6.188 35 10.758 35 19.183V30h29v4H23.776c-8.484 0-15.914 5.108-18.237 14.811-2.681 11.12-2.8 17.919 0 29.53C7.614 86.983 12.569 93 21.054 93H31V79.952C31 70.315 39.428 62 49.33 62zm-1.838-39.11c-3.026 0-5.478-2.479-5.478-5.545 0-3.079 2.451-5.581 5.478-5.581 3.015 0 5.479 2.502 5.479 5.581-.001 3.066-2.465 5.545-5.479 5.545zm74.789 25.921C120.183 40.363 116.178 34 107.682 34H97v12.981C97 57.031 88.206 65 78.489 65H49.33C41.342 65 35 72.326 35 80.326v27.8c0 7.91 6.745 12.564 14.462 14.834 9.242 2.717 17.994 3.208 29.051 0C85.862 120.831 93 116.549 93 108.126V97H64v-4h43.682c8.484 0 11.647-5.776 14.599-14.66 3.047-9.145 2.916-17.799 0-29.529zm-41.955 55.606c3.027 0 5.479 2.479 5.479 5.547 0 3.076-2.451 5.579-5.479 5.579-3.015 0-5.478-2.502-5.478-5.579 0-3.068 2.463-5.547 5.478-5.547z"
|
|
1112
|
+
></path>
|
|
1113
|
+
</svg>
|
|
1114
|
+
Python Script
|
|
1115
|
+
</button>
|
|
1116
|
+
<button
|
|
1117
|
+
class="download-option"
|
|
1118
|
+
@click=${(e) => __privateMethod(this, _downloadEarthdataDownload, downloadEarthdataDownload_fn).call(this, e)}
|
|
1119
|
+
>
|
|
1120
|
+
<svg
|
|
1121
|
+
class="file-icon"
|
|
1122
|
+
viewBox="0 0 64 64"
|
|
1123
|
+
fill="none"
|
|
1124
|
+
width="16"
|
|
1125
|
+
height="16"
|
|
1126
|
+
>
|
|
1127
|
+
<circle
|
|
1128
|
+
cx="32"
|
|
1129
|
+
cy="32"
|
|
1130
|
+
r="28"
|
|
1131
|
+
fill="currentColor"
|
|
1132
|
+
/>
|
|
1133
|
+
<path
|
|
1134
|
+
d="M32 14v26M32 40l-9-9M32 40l9-9"
|
|
1135
|
+
stroke="#fff"
|
|
1136
|
+
stroke-width="4"
|
|
1137
|
+
stroke-linecap="round"
|
|
1138
|
+
stroke-linejoin="round"
|
|
1139
|
+
fill="none"
|
|
1140
|
+
/>
|
|
1141
|
+
</svg>
|
|
1142
|
+
Earthdata Download
|
|
1143
|
+
</button>
|
|
1144
|
+
</div>
|
|
1145
|
+
</div>
|
|
1146
|
+
|
|
1147
|
+
<terra-button
|
|
1148
|
+
outline
|
|
1149
|
+
@click=${() => __privateMethod(this, _handleJupyterNotebookClick, handleJupyterNotebookClick_fn).call(this)}
|
|
1150
|
+
style="margin-left: 8px;"
|
|
1151
|
+
>
|
|
1152
|
+
<terra-icon
|
|
1153
|
+
name="outline-code-bracket"
|
|
1154
|
+
library="heroicons"
|
|
1155
|
+
font-size="1.5em"
|
|
1156
|
+
style="margin-right: 5px;"
|
|
1157
|
+
></terra-icon>
|
|
1158
|
+
Open in Jupyter Notebook
|
|
1159
|
+
</terra-button>
|
|
1160
|
+
</div>
|
|
1161
|
+
` : nothing}
|
|
1162
|
+
${__privateGet(this, _controller).currentJob.status === "running" ? html`<button
|
|
1163
|
+
class="btn btn-success"
|
|
1164
|
+
@click=${__privateMethod(this, _cancelJob, cancelJob_fn)}
|
|
1165
|
+
?disabled=${this.cancelingGetData}
|
|
1166
|
+
>
|
|
1167
|
+
${this.cancelingGetData ? "Canceling..." : "Cancel request"}
|
|
1168
|
+
</button>` : nothing}
|
|
1169
|
+
|
|
1170
|
+
<div class="job-info">
|
|
1171
|
+
Job ID:
|
|
1172
|
+
<span class="job-id">
|
|
1173
|
+
${this.bearerToken ? html`<a
|
|
1174
|
+
href="https://harmony.earthdata.nasa.gov/jobs/${__privateGet(this, _controller).currentJob.jobID}"
|
|
1175
|
+
target="_blank"
|
|
1176
|
+
>${__privateGet(this, _controller).currentJob.jobID}</a
|
|
1177
|
+
>` : __privateGet(this, _controller).currentJob.jobID}
|
|
1178
|
+
</span>
|
|
1179
|
+
<span class="info-icon">?</span>
|
|
1180
|
+
</div>
|
|
1181
|
+
</div>
|
|
1182
|
+
`;
|
|
1183
|
+
};
|
|
1184
|
+
_renderSelectedParams = new WeakSet();
|
|
1185
|
+
renderSelectedParams_fn = function() {
|
|
1186
|
+
var _a, _b;
|
|
1187
|
+
const collection = (_a = this.collectionWithServices) == null ? void 0 : _a.collection;
|
|
1188
|
+
const variables = this.selectedVariables.length ? this.selectedVariables.map((v) => v.name) : ["All"];
|
|
1189
|
+
const dateRange = this.selectedDateRange.startDate && this.selectedDateRange.endDate ? `${this.selectedDateRange.startDate} to ${this.selectedDateRange.endDate}` : "\u2014";
|
|
1190
|
+
let spatial = "\u2014";
|
|
1191
|
+
if (this.spatialSelection) {
|
|
1192
|
+
if ("w" in this.spatialSelection) {
|
|
1193
|
+
spatial = `Bounding Box: ${this.spatialSelection.w}, ${this.spatialSelection.s}, ${this.spatialSelection.e}, ${this.spatialSelection.n}`;
|
|
1194
|
+
} else if ("lat" in this.spatialSelection && "lng" in this.spatialSelection) {
|
|
1195
|
+
spatial = `Point: ${this.spatialSelection.lat}, ${this.spatialSelection.lng}`;
|
|
1196
|
+
}
|
|
1197
|
+
}
|
|
1198
|
+
return html`
|
|
1199
|
+
<dl class="params-summary">
|
|
1200
|
+
<div>
|
|
1201
|
+
<dt><strong>Dataset</strong></dt>
|
|
1202
|
+
<dd>${(_b = collection == null ? void 0 : collection.EntryTitle) != null ? _b : "\u2014"}</dd>
|
|
1203
|
+
</div>
|
|
1204
|
+
<div>
|
|
1205
|
+
<dt><strong>Variables</strong></dt>
|
|
1206
|
+
<dd>${variables.map((v) => html`<div>${v}</div>`)}</dd>
|
|
1207
|
+
</div>
|
|
1208
|
+
<div>
|
|
1209
|
+
<dt><strong>Date Range</strong></dt>
|
|
1210
|
+
<dd>${dateRange}</dd>
|
|
1211
|
+
</div>
|
|
1212
|
+
<div>
|
|
1213
|
+
<dt><strong>Spatial</strong></dt>
|
|
1214
|
+
<dd>${spatial}</dd>
|
|
1215
|
+
</div>
|
|
1216
|
+
</dl>
|
|
1217
|
+
|
|
1218
|
+
<terra-button @click=${__privateMethod(this, _refineParameters, refineParameters_fn)}
|
|
1219
|
+
>Refine Parameters</terra-button
|
|
1220
|
+
>
|
|
1221
|
+
`;
|
|
1222
|
+
};
|
|
1223
|
+
_cancelJob = new WeakSet();
|
|
1224
|
+
cancelJob_fn = function() {
|
|
1225
|
+
this.cancelingGetData = true;
|
|
1226
|
+
__privateGet(this, _controller).cancelCurrentJob();
|
|
1227
|
+
};
|
|
1228
|
+
_getData = new WeakSet();
|
|
1229
|
+
getData_fn = function() {
|
|
1230
|
+
this.cancelingGetData = false;
|
|
1231
|
+
__privateMethod(this, _touchAllFields, touchAllFields_fn).call(this);
|
|
1232
|
+
__privateGet(this, _controller).cancelCurrentJob();
|
|
1233
|
+
__privateGet(this, _controller).currentJob = null;
|
|
1234
|
+
__privateGet(this, _controller).jobStatusTask.run();
|
|
1235
|
+
setTimeout(() => {
|
|
1236
|
+
const el = this.renderRoot.querySelector("#job-status-section");
|
|
1237
|
+
el == null ? void 0 : el.scrollIntoView({ behavior: "smooth" });
|
|
1238
|
+
}, 100);
|
|
1239
|
+
this.refineParameters = false;
|
|
1240
|
+
};
|
|
1241
|
+
_touchAllFields = new WeakSet();
|
|
1242
|
+
touchAllFields_fn = function() {
|
|
1243
|
+
this.touchedFields = /* @__PURE__ */ new Set(["variables", "spatial"]);
|
|
1244
|
+
};
|
|
1245
|
+
_numberOfFilesFoundEstimate = new WeakSet();
|
|
1246
|
+
numberOfFilesFoundEstimate_fn = function() {
|
|
1247
|
+
return Math.floor(
|
|
1248
|
+
__privateGet(this, _controller).currentJob.numInputGranules * __privateGet(this, _controller).currentJob.progress / 100
|
|
1249
|
+
);
|
|
1250
|
+
};
|
|
1251
|
+
_getDocumentationLinks = new WeakSet();
|
|
1252
|
+
getDocumentationLinks_fn = function() {
|
|
1253
|
+
return __privateGet(this, _controller).currentJob.links.filter(
|
|
1254
|
+
(link) => link.rel === "stac-catalog-json"
|
|
1255
|
+
);
|
|
1256
|
+
};
|
|
1257
|
+
_getDataLinks = new WeakSet();
|
|
1258
|
+
getDataLinks_fn = function() {
|
|
1259
|
+
return __privateGet(this, _controller).currentJob.links.filter((link) => link.rel === "data");
|
|
1260
|
+
};
|
|
1261
|
+
_hasAtLeastOneSubsetOption = new WeakSet();
|
|
1262
|
+
hasAtLeastOneSubsetOption_fn = function() {
|
|
1263
|
+
var _a, _b, _c, _d;
|
|
1264
|
+
return ((_a = this.collectionWithServices) == null ? void 0 : _a.bboxSubset) || ((_b = this.collectionWithServices) == null ? void 0 : _b.shapeSubset) || ((_c = this.collectionWithServices) == null ? void 0 : _c.variableSubset) || ((_d = this.collectionWithServices) == null ? void 0 : _d.temporalSubset);
|
|
1265
|
+
};
|
|
1266
|
+
_hasSpatialSubset = new WeakSet();
|
|
1267
|
+
hasSpatialSubset_fn = function() {
|
|
1268
|
+
var _a, _b;
|
|
1269
|
+
return ((_a = this.collectionWithServices) == null ? void 0 : _a.bboxSubset) || ((_b = this.collectionWithServices) == null ? void 0 : _b.shapeSubset);
|
|
1270
|
+
};
|
|
1271
|
+
_renderJobMessage = new WeakSet();
|
|
1272
|
+
renderJobMessage_fn = function() {
|
|
1273
|
+
const warningStatuses = [
|
|
1274
|
+
"canceled" /* CANCELED */,
|
|
1275
|
+
"complete_with_errors" /* COMPLETE_WITH_ERRORS */,
|
|
1276
|
+
"running_with_errors" /* RUNNING_WITH_ERRORS */
|
|
1277
|
+
];
|
|
1278
|
+
const errorStatuses = ["failed" /* FAILED */];
|
|
1279
|
+
let type = "normal";
|
|
1280
|
+
if (warningStatuses.includes(__privateGet(this, _controller).currentJob.status)) {
|
|
1281
|
+
type = "warning";
|
|
1282
|
+
} else if (errorStatuses.includes(__privateGet(this, _controller).currentJob.status)) {
|
|
1283
|
+
type = "error";
|
|
1284
|
+
}
|
|
1285
|
+
let color, bg;
|
|
1286
|
+
if (type === "error") {
|
|
1287
|
+
color = "#dc3545";
|
|
1288
|
+
bg = "#f8d7da";
|
|
1289
|
+
} else if (type === "warning") {
|
|
1290
|
+
color = "#856404";
|
|
1291
|
+
bg = "#fff3cd";
|
|
1292
|
+
} else {
|
|
1293
|
+
color = "#555";
|
|
1294
|
+
bg = "#f8f9fa";
|
|
1295
|
+
}
|
|
1296
|
+
return html`
|
|
1297
|
+
<div
|
|
1298
|
+
style="
|
|
1299
|
+
margin: 24px 0 16px 0;
|
|
1300
|
+
padding: 16px 20px;
|
|
1301
|
+
border-radius: 6px;
|
|
1302
|
+
background: ${bg};
|
|
1303
|
+
color: ${color};
|
|
1304
|
+
border: 1px solid ${color}22;
|
|
1305
|
+
"
|
|
1306
|
+
>
|
|
1307
|
+
${__privateMethod(this, _getJobMessageText, getJobMessageText_fn).call(this)}
|
|
1308
|
+
</div>
|
|
1309
|
+
`;
|
|
1310
|
+
};
|
|
1311
|
+
_getJobMessageText = new WeakSet();
|
|
1312
|
+
getJobMessageText_fn = function() {
|
|
1313
|
+
var _a;
|
|
1314
|
+
return (_a = __privateGet(this, _controller).currentJob) == null ? void 0 : _a.message.replace(
|
|
1315
|
+
/\b(The job|the job|job|Job)\b/g,
|
|
1316
|
+
(match) => {
|
|
1317
|
+
switch (match) {
|
|
1318
|
+
case "The job":
|
|
1319
|
+
return "Your request";
|
|
1320
|
+
case "the job":
|
|
1321
|
+
return "Your Request";
|
|
1322
|
+
case "job":
|
|
1323
|
+
return "request";
|
|
1324
|
+
case "Job":
|
|
1325
|
+
return "Request";
|
|
1326
|
+
}
|
|
1327
|
+
return match;
|
|
1328
|
+
}
|
|
1329
|
+
);
|
|
1330
|
+
};
|
|
1331
|
+
_estimateJobSize = new WeakSet();
|
|
1332
|
+
estimateJobSize_fn = function() {
|
|
1333
|
+
var _a, _b;
|
|
1334
|
+
const collection = (_a = this.collectionWithServices) == null ? void 0 : _a.collection;
|
|
1335
|
+
if (!collection)
|
|
1336
|
+
return;
|
|
1337
|
+
const range = __privateMethod(this, _getCollectionDateRange, getCollectionDateRange_fn).call(this);
|
|
1338
|
+
let startDate;
|
|
1339
|
+
let endDate;
|
|
1340
|
+
let links = (_b = collection.granuleCount) != null ? _b : 0;
|
|
1341
|
+
if (this.selectedDateRange.startDate && this.selectedDateRange.endDate) {
|
|
1342
|
+
startDate = this.selectedDateRange.startDate;
|
|
1343
|
+
endDate = this.selectedDateRange.endDate;
|
|
1344
|
+
} else {
|
|
1345
|
+
startDate = range.startDate;
|
|
1346
|
+
endDate = range.endDate;
|
|
1347
|
+
}
|
|
1348
|
+
if (!startDate || !endDate)
|
|
1349
|
+
return;
|
|
1350
|
+
const start = new Date(startDate);
|
|
1351
|
+
const end = new Date(endDate);
|
|
1352
|
+
const days = Math.floor((end.getTime() - start.getTime()) / (1e3 * 60 * 60 * 24)) + 1;
|
|
1353
|
+
if (range.startDate && range.endDate) {
|
|
1354
|
+
const availableDaysInCollection = Math.floor(
|
|
1355
|
+
(new Date(range.endDate).getTime() - new Date(range.startDate).getTime()) / (1e3 * 60 * 60 * 24)
|
|
1356
|
+
) + 1;
|
|
1357
|
+
const granulesPerDay = links / availableDaysInCollection;
|
|
1358
|
+
links = Math.ceil(days * granulesPerDay);
|
|
1359
|
+
}
|
|
1360
|
+
return { days, links };
|
|
1361
|
+
};
|
|
1362
|
+
_refineParameters = new WeakSet();
|
|
1363
|
+
refineParameters_fn = function() {
|
|
1364
|
+
this.refineParameters = true;
|
|
1365
|
+
};
|
|
1366
|
+
_toggleDownloadMenu = new WeakSet();
|
|
1367
|
+
toggleDownloadMenu_fn = function(event) {
|
|
1368
|
+
event.stopPropagation();
|
|
1369
|
+
this.showDownloadMenu = !this.showDownloadMenu;
|
|
1370
|
+
};
|
|
1371
|
+
_downloadLinksAsTxt = new WeakSet();
|
|
1372
|
+
downloadLinksAsTxt_fn = function(event) {
|
|
1373
|
+
var _a;
|
|
1374
|
+
event.stopPropagation();
|
|
1375
|
+
if (!((_a = __privateGet(this, _controller).currentJob) == null ? void 0 : _a.links)) {
|
|
1376
|
+
return;
|
|
1377
|
+
}
|
|
1378
|
+
const dataLinks = __privateMethod(this, _getDataLinks, getDataLinks_fn).call(this);
|
|
1379
|
+
if (dataLinks.length === 0) {
|
|
1380
|
+
return;
|
|
1381
|
+
}
|
|
1382
|
+
const content = dataLinks.map((link) => link.href).join("\n");
|
|
1383
|
+
const blob = new Blob([content], { type: "text/plain" });
|
|
1384
|
+
const url = URL.createObjectURL(blob);
|
|
1385
|
+
const a = document.createElement("a");
|
|
1386
|
+
a.href = url;
|
|
1387
|
+
a.download = `subset_links_${__privateGet(this, _controller).currentJob.jobID}.txt`;
|
|
1388
|
+
document.body.appendChild(a);
|
|
1389
|
+
a.click();
|
|
1390
|
+
document.body.removeChild(a);
|
|
1391
|
+
URL.revokeObjectURL(url);
|
|
1392
|
+
this.showDownloadMenu = false;
|
|
1393
|
+
};
|
|
1394
|
+
_downloadPythonScript = new WeakSet();
|
|
1395
|
+
downloadPythonScript_fn = async function(event) {
|
|
1396
|
+
var _a;
|
|
1397
|
+
event.stopPropagation();
|
|
1398
|
+
if (!((_a = __privateGet(this, _controller).currentJob) == null ? void 0 : _a.links)) {
|
|
1399
|
+
return;
|
|
1400
|
+
}
|
|
1401
|
+
const response = await fetch(
|
|
1402
|
+
getBasePath("assets/data-subsetter/download_subset_files.py.txt")
|
|
1403
|
+
);
|
|
1404
|
+
if (!response.ok) {
|
|
1405
|
+
alert(
|
|
1406
|
+
"Sorry, there was a problem generating the Python script. We are investigating the issue.\nYou could try using the Jupyter Notebook in the meantime"
|
|
1407
|
+
);
|
|
1408
|
+
}
|
|
1409
|
+
const content = (await response.text()).replace(
|
|
1410
|
+
/{{jobId}}/gi,
|
|
1411
|
+
__privateGet(this, _controller).currentJob.jobID
|
|
1412
|
+
);
|
|
1413
|
+
const blob = new Blob([content], { type: "text/plain" });
|
|
1414
|
+
const url = URL.createObjectURL(blob);
|
|
1415
|
+
const a = document.createElement("a");
|
|
1416
|
+
a.href = url;
|
|
1417
|
+
a.download = `download_subset_files_${__privateGet(this, _controller).currentJob.jobID}.py`;
|
|
1418
|
+
document.body.appendChild(a);
|
|
1419
|
+
a.click();
|
|
1420
|
+
document.body.removeChild(a);
|
|
1421
|
+
URL.revokeObjectURL(url);
|
|
1422
|
+
this.showDownloadMenu = false;
|
|
1423
|
+
};
|
|
1424
|
+
_downloadEarthdataDownload = new WeakSet();
|
|
1425
|
+
downloadEarthdataDownload_fn = async function(event) {
|
|
1426
|
+
var _a;
|
|
1427
|
+
event.stopPropagation();
|
|
1428
|
+
if (!((_a = __privateGet(this, _controller).currentJob) == null ? void 0 : _a.links)) {
|
|
1429
|
+
return;
|
|
1430
|
+
}
|
|
1431
|
+
alert("Sorry, Earthdata Download is not currently supported");
|
|
1432
|
+
this.showDownloadMenu = false;
|
|
1433
|
+
};
|
|
1434
|
+
_handleClickOutside = new WeakSet();
|
|
1435
|
+
handleClickOutside_fn = function(event) {
|
|
1436
|
+
if (!this.showDownloadMenu) {
|
|
1437
|
+
return;
|
|
1438
|
+
}
|
|
1439
|
+
const target = event.target;
|
|
1440
|
+
const downloadDropdown = this.renderRoot.querySelector(".download-dropdown");
|
|
1441
|
+
if (downloadDropdown && !downloadDropdown.contains(target)) {
|
|
1442
|
+
this.showDownloadMenu = false;
|
|
1443
|
+
}
|
|
1444
|
+
};
|
|
1445
|
+
_handleJupyterNotebookClick = new WeakSet();
|
|
1446
|
+
handleJupyterNotebookClick_fn = function() {
|
|
1447
|
+
const jupyterLiteUrl = "https://gesdisc.github.io/jupyterlite/lab/index.html";
|
|
1448
|
+
const jupyterWindow = window.open(jupyterLiteUrl, "_blank");
|
|
1449
|
+
if (!jupyterWindow) {
|
|
1450
|
+
console.error("Failed to open JupyterLite!");
|
|
1451
|
+
return;
|
|
1452
|
+
}
|
|
1453
|
+
setTimeout(() => {
|
|
1454
|
+
var _a, _b;
|
|
1455
|
+
const notebook = [
|
|
1456
|
+
{
|
|
1457
|
+
id: "2733501b-0de4-4067-8aff-864e1b4c76cb",
|
|
1458
|
+
cell_type: "code",
|
|
1459
|
+
source: "%pip install -q terra_ui_components",
|
|
1460
|
+
metadata: {
|
|
1461
|
+
trusted: true
|
|
1462
|
+
},
|
|
1463
|
+
outputs: [],
|
|
1464
|
+
execution_count: null
|
|
1465
|
+
},
|
|
1466
|
+
{
|
|
1467
|
+
id: "870c1384-e706-48ee-ba07-fd552a949869",
|
|
1468
|
+
cell_type: "code",
|
|
1469
|
+
source: `from terra_ui_components import TerraDataSubsetter
|
|
1470
|
+
subsetter = TerraDataSubsetter()
|
|
1471
|
+
|
|
1472
|
+
subsetter.jobId = '${(_a = __privateGet(this, _controller).currentJob) == null ? void 0 : _a.jobID}'
|
|
1473
|
+
|
|
1474
|
+
subsetter`,
|
|
1475
|
+
metadata: {
|
|
1476
|
+
trusted: true
|
|
1477
|
+
},
|
|
1478
|
+
outputs: [],
|
|
1479
|
+
execution_count: null
|
|
1480
|
+
}
|
|
1481
|
+
];
|
|
1482
|
+
console.log("posting to JupyterLite ", notebook);
|
|
1483
|
+
jupyterWindow.postMessage(
|
|
1484
|
+
{
|
|
1485
|
+
type: "load-notebook",
|
|
1486
|
+
filename: `subset_${(_b = __privateGet(this, _controller).currentJob) == null ? void 0 : _b.jobID}.ipynb`,
|
|
1487
|
+
notebook
|
|
1488
|
+
},
|
|
1489
|
+
"*"
|
|
1490
|
+
);
|
|
1491
|
+
}, 500);
|
|
1492
|
+
};
|
|
1493
|
+
_renderAvailableTemporalRangeSection = new WeakSet();
|
|
1494
|
+
renderAvailableTemporalRangeSection_fn = function() {
|
|
1495
|
+
const { startDate, endDate } = __privateMethod(this, _getCollectionDateRange, getCollectionDateRange_fn).call(this);
|
|
1496
|
+
if (!startDate || !endDate)
|
|
1497
|
+
return nothing;
|
|
1498
|
+
return html`
|
|
1499
|
+
<div class="section" style="margin-bottom: 16px;">
|
|
1500
|
+
<h2 class="section-title">Available Date Range</h2>
|
|
1501
|
+
<div style="color: #31708f; margin-top: 8px;">
|
|
1502
|
+
<strong>${startDate}</strong> to <strong>${endDate}</strong>
|
|
1503
|
+
</div>
|
|
1504
|
+
<div style="font-size: 0.95em; color: #666;">
|
|
1505
|
+
This collection does not support temporal subsetting.
|
|
1506
|
+
</div>
|
|
1507
|
+
</div>
|
|
1508
|
+
`;
|
|
1509
|
+
};
|
|
1510
|
+
_renderAvailableSpatialRangeSection = new WeakSet();
|
|
1511
|
+
renderAvailableSpatialRangeSection_fn = function() {
|
|
1512
|
+
var _a, _b, _c, _d, _e;
|
|
1513
|
+
const boundingRects = (_e = (_d = (_c = (_b = (_a = this.collectionWithServices) == null ? void 0 : _a.collection) == null ? void 0 : _b.SpatialExtent) == null ? void 0 : _c.HorizontalSpatialDomain) == null ? void 0 : _d.Geometry) == null ? void 0 : _e.BoundingRectangles;
|
|
1514
|
+
if (!boundingRects || !Array.isArray(boundingRects) || !boundingRects.length)
|
|
1515
|
+
return nothing;
|
|
1516
|
+
return html`
|
|
1517
|
+
<div class="section" style="margin-bottom: 16px;">
|
|
1518
|
+
<h2 class="section-title">Available Spatial Area</h2>
|
|
1519
|
+
<div style="color: #31708f; margin-top: 8px;">
|
|
1520
|
+
${boundingRects.map(
|
|
1521
|
+
(rect) => html`<div>
|
|
1522
|
+
<strong>Bounding Box:</strong>
|
|
1523
|
+
${rect.WestBoundingCoordinate},
|
|
1524
|
+
${rect.SouthBoundingCoordinate},
|
|
1525
|
+
${rect.EastBoundingCoordinate},
|
|
1526
|
+
${rect.NorthBoundingCoordinate}
|
|
1527
|
+
</div>`
|
|
1528
|
+
)}
|
|
1529
|
+
</div>
|
|
1530
|
+
<div style="font-size: 0.95em; color: #666;">
|
|
1531
|
+
This collection does not support spatial subsetting.
|
|
1532
|
+
</div>
|
|
1533
|
+
</div>
|
|
1534
|
+
`;
|
|
1535
|
+
};
|
|
1536
|
+
TerraDataSubsetter.styles = [component_styles_default, data_subsetter_styles_default];
|
|
1537
|
+
TerraDataSubsetter.dependencies = {
|
|
1538
|
+
"terra-accordion": TerraAccordion,
|
|
1539
|
+
"terra-date-picker": TerraDatePicker,
|
|
1540
|
+
"terra-icon": TerraIcon,
|
|
1541
|
+
"terra-spatial-picker": TerraSpatialPicker,
|
|
1542
|
+
"terra-login": TerraLogin
|
|
1543
|
+
};
|
|
1544
|
+
__decorateClass([
|
|
1545
|
+
property({ reflect: true, attribute: "collection-entry-id" })
|
|
1546
|
+
], TerraDataSubsetter.prototype, "collectionEntryId", 2);
|
|
1547
|
+
__decorateClass([
|
|
1548
|
+
property({ reflect: true, type: Boolean, attribute: "show-collection-search" })
|
|
1549
|
+
], TerraDataSubsetter.prototype, "showCollectionSearch", 2);
|
|
1550
|
+
__decorateClass([
|
|
1551
|
+
property({ reflect: true, attribute: "job-id" })
|
|
1552
|
+
], TerraDataSubsetter.prototype, "jobId", 2);
|
|
1553
|
+
__decorateClass([
|
|
1554
|
+
property({ attribute: "bearer-token" })
|
|
1555
|
+
], TerraDataSubsetter.prototype, "bearerToken", 2);
|
|
1556
|
+
__decorateClass([
|
|
1557
|
+
state()
|
|
1558
|
+
], TerraDataSubsetter.prototype, "collectionWithServices", 2);
|
|
1559
|
+
__decorateClass([
|
|
1560
|
+
state()
|
|
1561
|
+
], TerraDataSubsetter.prototype, "selectedVariables", 2);
|
|
1562
|
+
__decorateClass([
|
|
1563
|
+
state()
|
|
1564
|
+
], TerraDataSubsetter.prototype, "expandedVariableGroups", 2);
|
|
1565
|
+
__decorateClass([
|
|
1566
|
+
state()
|
|
1567
|
+
], TerraDataSubsetter.prototype, "touchedFields", 2);
|
|
1568
|
+
__decorateClass([
|
|
1569
|
+
state()
|
|
1570
|
+
], TerraDataSubsetter.prototype, "spatialSelection", 2);
|
|
1571
|
+
__decorateClass([
|
|
1572
|
+
state()
|
|
1573
|
+
], TerraDataSubsetter.prototype, "selectedDateRange", 2);
|
|
1574
|
+
__decorateClass([
|
|
1575
|
+
state()
|
|
1576
|
+
], TerraDataSubsetter.prototype, "selectedFormat", 2);
|
|
1577
|
+
__decorateClass([
|
|
1578
|
+
state()
|
|
1579
|
+
], TerraDataSubsetter.prototype, "cancelingGetData", 2);
|
|
1580
|
+
__decorateClass([
|
|
1581
|
+
state()
|
|
1582
|
+
], TerraDataSubsetter.prototype, "selectedTab", 2);
|
|
1583
|
+
__decorateClass([
|
|
1584
|
+
state()
|
|
1585
|
+
], TerraDataSubsetter.prototype, "refineParameters", 2);
|
|
1586
|
+
__decorateClass([
|
|
1587
|
+
state()
|
|
1588
|
+
], TerraDataSubsetter.prototype, "showDownloadMenu", 2);
|
|
1589
|
+
__decorateClass([
|
|
1590
|
+
state()
|
|
1591
|
+
], TerraDataSubsetter.prototype, "renderedInDialog", 2);
|
|
1592
|
+
__decorateClass([
|
|
1593
|
+
state()
|
|
1594
|
+
], TerraDataSubsetter.prototype, "collectionSearchType", 2);
|
|
1595
|
+
__decorateClass([
|
|
1596
|
+
state()
|
|
1597
|
+
], TerraDataSubsetter.prototype, "collectionSearchQuery", 2);
|
|
1598
|
+
__decorateClass([
|
|
1599
|
+
state()
|
|
1600
|
+
], TerraDataSubsetter.prototype, "collectionSearchLoading", 2);
|
|
1601
|
+
__decorateClass([
|
|
1602
|
+
state()
|
|
1603
|
+
], TerraDataSubsetter.prototype, "collectionSearchResults", 2);
|
|
1604
|
+
__decorateClass([
|
|
1605
|
+
state()
|
|
1606
|
+
], TerraDataSubsetter.prototype, "collectionLoading", 2);
|
|
1607
|
+
__decorateClass([
|
|
1608
|
+
state()
|
|
1609
|
+
], TerraDataSubsetter.prototype, "collectionAccordionOpen", 2);
|
|
1610
|
+
__decorateClass([
|
|
1611
|
+
query('[part~="spatial-picker"]')
|
|
1612
|
+
], TerraDataSubsetter.prototype, "spatialPicker", 2);
|
|
1613
|
+
__decorateClass([
|
|
1614
|
+
watch(["jobId"], { waitUntilFirstUpdate: true })
|
|
1615
|
+
], TerraDataSubsetter.prototype, "jobIdChanged", 1);
|
|
1616
|
+
__decorateClass([
|
|
1617
|
+
watch(["collectionWithServices"])
|
|
1618
|
+
], TerraDataSubsetter.prototype, "collectionChanged", 1);
|
|
1619
|
+
__decorateClass([
|
|
1620
|
+
debounce(500)
|
|
1621
|
+
], TerraDataSubsetter.prototype, "handleCollectionSearch", 1);
|
|
1622
|
+
|
|
1623
|
+
export {
|
|
1624
|
+
TerraDataSubsetter
|
|
1625
|
+
};
|