@esri/solutions-components 1.2.0-next.61 → 1.2.0-next.62

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.
Files changed (445) hide show
  1. package/dist/cdn/{5NLTO3PR.js → 22JVEJ5Q.js} +2 -2
  2. package/dist/cdn/22NCE237.js +4 -0
  3. package/dist/cdn/{2P2YESFX.js → 22PAFNIS.js} +1 -1
  4. package/dist/cdn/{KEWPVUIZ.js → 236NYJJU.js} +2 -2
  5. package/dist/cdn/23YDHQTC.js +4 -0
  6. package/dist/cdn/253F2A32.js +4 -0
  7. package/dist/cdn/{2KUBOJR6.js → 2GSMLN5P.js} +2 -2
  8. package/dist/cdn/2HJI2XXY.js +99 -0
  9. package/dist/cdn/{5EWASS5Y.js → 2PLJEDPA.js} +2 -2
  10. package/dist/cdn/{Y5Z6SQWV.js → 2S7HZF7M.js} +2 -2
  11. package/dist/cdn/{MVZ36ZHD.js → 32CAHGJ5.js} +2 -2
  12. package/dist/cdn/37ABMKIT.js +4 -0
  13. package/dist/cdn/{FIMVJEAW.js → 3GS5C3NN.js} +2 -2
  14. package/dist/cdn/{KMGP5TOD.js → 3HWVOIZJ.js} +2 -2
  15. package/dist/cdn/{N2SUT7FJ.js → 3X3W65RV.js} +2 -2
  16. package/dist/cdn/{QK32UHKA.js → 43XNXLYA.js} +1 -1
  17. package/dist/cdn/45XVYTNF.js +4 -0
  18. package/dist/cdn/{GUBWX2WB.js → 4DEQWZVP.js} +2 -2
  19. package/dist/cdn/{PFYTP7QM.js → 4IVBY5EY.js} +2 -2
  20. package/dist/cdn/{HRISF5DG.js → 4LZ6CQRP.js} +2 -2
  21. package/dist/cdn/{IUBHGF2N.js → 4MMEN7ON.js} +1 -1
  22. package/dist/cdn/{GAOKI2BY.js → 4UIXAAHB.js} +2 -2
  23. package/dist/cdn/{E5KFUJOK.js → 4XIOAYVM.js} +2 -2
  24. package/dist/cdn/{YXOC3RVO.js → 4XVPHNUD.js} +2 -2
  25. package/dist/cdn/{IOEQU6RW.js → 52LPF2VM.js} +2 -2
  26. package/dist/cdn/{7F6WLIL6.js → 54CECDRX.js} +3 -3
  27. package/dist/cdn/{E2CGQDSH.js → 554VYCGW.js} +2 -2
  28. package/dist/cdn/{T5LGXZ6I.js → 57XJMKLA.js} +2 -2
  29. package/dist/cdn/{X3DGKM76.js → 5APMCLL6.js} +2 -2
  30. package/dist/cdn/{UHC2PSZO.js → 5D5B7JGO.js} +2 -2
  31. package/dist/cdn/{K4EMRK2P.js → 5FMIL22Q.js} +2 -2
  32. package/dist/cdn/{TXXIYMC6.js → 5KQ5Q26R.js} +2 -2
  33. package/dist/cdn/{DWLP7FVH.js → 5M6DOBGP.js} +2 -2
  34. package/dist/cdn/{7XBFX5YB.js → 5T5TBQ6T.js} +2 -2
  35. package/dist/cdn/{WOV556RO.js → 5TSB7GTX.js} +1 -1
  36. package/dist/cdn/{AMGDTZAY.js → 62DGAPEO.js} +2 -2
  37. package/dist/cdn/{GUVTOQ5L.js → 62ZCP7VD.js} +2 -2
  38. package/dist/cdn/{FOUBW7TI.js → 63OPMGEP.js} +1 -1
  39. package/dist/cdn/{5TCTFJWQ.js → 64QSZHAO.js} +2 -2
  40. package/dist/cdn/{IOSETLM7.js → 6CU2WRF6.js} +2 -2
  41. package/dist/cdn/{TJ3BCTHU.js → 6IIEGCHC.js} +1 -1
  42. package/dist/cdn/{KFYIXGQ4.js → 6NJA65DE.js} +2 -2
  43. package/dist/cdn/{74MUDU3T.js → 6PW6R74H.js} +2 -2
  44. package/dist/cdn/{O4MIVQW2.js → 726JATVV.js} +2 -2
  45. package/dist/cdn/7GUJY2LR.js +4 -0
  46. package/dist/cdn/{YRXDCRD5.js → 7IGDME5U.js} +2 -2
  47. package/dist/cdn/{QZUDTUL4.js → 7R442J7P.js} +2 -2
  48. package/dist/cdn/{G5RSCNV7.js → 7RMDHBJB.js} +2 -2
  49. package/dist/cdn/{33ZIAGPE.js → 7Y3KZNR2.js} +2 -2
  50. package/dist/cdn/{QRTITFJW.js → A24UTMFY.js} +2 -2
  51. package/dist/cdn/{2VC52E6A.js → A4UPSJJE.js} +2 -2
  52. package/dist/cdn/{Z5FJEEOQ.js → A6VN4V55.js} +2 -2
  53. package/dist/cdn/{BPGYGOGE.js → A7DAUWF2.js} +2 -2
  54. package/dist/cdn/{EC3ZB4EV.js → ADPIMKQF.js} +2 -2
  55. package/dist/cdn/{HKC4DOUE.js → AGA3QECA.js} +2 -2
  56. package/dist/cdn/{2XWNFKLG.js → AI4YPMS2.js} +2 -2
  57. package/dist/cdn/{VZEXIREU.js → AKIG2SOT.js} +2 -2
  58. package/dist/cdn/{V63MM3HQ.js → ALPA4YMT.js} +2 -2
  59. package/dist/cdn/{YAIF3EAU.js → AMPKI3ZS.js} +2 -2
  60. package/dist/cdn/{YWFNYLHW.js → APXUHBE6.js} +2 -2
  61. package/dist/cdn/{EC446DZP.js → ARVI4H2Q.js} +2 -2
  62. package/dist/cdn/{SPAE66AK.js → ASIRLW76.js} +2 -2
  63. package/dist/cdn/AVOVSN7I.js +4 -0
  64. package/dist/cdn/{W3S4KP2W.js → AYBCSY7S.js} +1 -1
  65. package/dist/cdn/{LSJUMURC.js → B325AODH.js} +2 -2
  66. package/dist/cdn/{2VREYY62.js → B34U5BOQ.js} +2 -2
  67. package/dist/cdn/{M5PBCFVC.js → B5HFPNLU.js} +2 -2
  68. package/dist/cdn/B6AW4EWR.js +4 -0
  69. package/dist/cdn/{O3PPPBNQ.js → B7SKJJP3.js} +2 -2
  70. package/dist/cdn/{N7VLWHNA.js → BAMGFCWQ.js} +2 -2
  71. package/dist/cdn/{NLQYJY3Y.js → BBVT6UMT.js} +1 -1
  72. package/dist/cdn/{AC6U7VHK.js → BIXSBFWC.js} +2 -2
  73. package/dist/cdn/{KKLCJ7G6.js → BK4RW3VQ.js} +2 -2
  74. package/dist/cdn/{ASMCIIQQ.js → BKAHIMJS.js} +2 -2
  75. package/dist/cdn/{JTUKW55P.js → BNJCN3PG.js} +2 -2
  76. package/dist/cdn/{E655IBST.js → BZDZ3UJ6.js} +2 -2
  77. package/dist/cdn/{72XFODRX.js → C5VOK3FJ.js} +2 -2
  78. package/dist/cdn/{CUYQTJFU.js → C6IB2AKM.js} +2 -2
  79. package/dist/cdn/{BTNDZYSA.js → C6JSF4KJ.js} +2 -2
  80. package/dist/cdn/{7ZJKMLGT.js → CACE6JPT.js} +2 -2
  81. package/dist/cdn/CGH4Y5QV.js +4 -0
  82. package/dist/cdn/{QSCOANTT.js → CNVT4KW2.js} +2 -2
  83. package/dist/cdn/{4U5HZVBY.js → CUCGCLEY.js} +2 -2
  84. package/dist/cdn/{4RSHHJ4Y.js → CUEWTRE6.js} +2 -2
  85. package/dist/cdn/{IVWWMUTU.js → D3FDZ2UO.js} +2 -2
  86. package/dist/cdn/{VZO4FNSJ.js → D7AKN3FL.js} +2 -2
  87. package/dist/cdn/{TTMLJD3R.js → DADOAOGK.js} +2 -2
  88. package/dist/cdn/{AACZXF33.js → DBJEWRVF.js} +2 -2
  89. package/dist/cdn/{C3ZPPW4E.js → DBQK233J.js} +2 -2
  90. package/dist/cdn/{SVBXPTEC.js → DHGDH6TY.js} +2 -2
  91. package/dist/cdn/{XTTVLQHV.js → DIUGFURH.js} +2 -2
  92. package/dist/cdn/{XNIWSIVJ.js → DJQJX7XN.js} +2 -2
  93. package/dist/cdn/{F2GOV2LM.js → DKENTSZS.js} +2 -2
  94. package/dist/cdn/{I5ICGT74.js → DMBX6WDE.js} +2 -2
  95. package/dist/cdn/{QBFLPL3H.js → DNQXEBRM.js} +1 -1
  96. package/dist/cdn/{PNA5TAPP.js → DOUCTK4Y.js} +2 -2
  97. package/dist/cdn/{SW6HTS4W.js → DQ56YCHP.js} +2 -2
  98. package/dist/cdn/{G275NPKZ.js → DY6XHIHX.js} +2 -2
  99. package/dist/cdn/{EJOQBJEG.js → DYTPNPZ6.js} +2 -2
  100. package/dist/cdn/{S63HTRIQ.js → E4CBAFDM.js} +2 -2
  101. package/dist/cdn/{LL2DC5FJ.js → E4GKMLY7.js} +1 -1
  102. package/dist/cdn/{W4AED5XB.js → E4MHP3D6.js} +2 -2
  103. package/dist/cdn/{K3WLDI57.js → E5TKEWBV.js} +2 -2
  104. package/dist/cdn/{TEDBS3IP.js → EAEVZCHH.js} +2 -2
  105. package/dist/cdn/{H72745YU.js → EARAW6MW.js} +2 -2
  106. package/dist/cdn/{RZBDTEMW.js → EGFNOBOA.js} +2 -2
  107. package/dist/cdn/{7S7C334Z.js → ERMUBMJN.js} +3 -3
  108. package/dist/cdn/{U2IPPMM4.js → ET3OO6ME.js} +2 -2
  109. package/dist/cdn/{PAWHH43E.js → EVD3PK7T.js} +2 -2
  110. package/dist/cdn/{Z2TSSAC6.js → EWAAPXCJ.js} +2 -2
  111. package/dist/cdn/{WOP4PDSB.js → EWXIH5IA.js} +1 -1
  112. package/dist/cdn/{QXR4PIXQ.js → EZEU4P7C.js} +2 -2
  113. package/dist/cdn/{7QIYL4NV.js → F3G2SMGH.js} +2 -2
  114. package/dist/cdn/{MSTVHU7I.js → F4O75RZP.js} +2 -2
  115. package/dist/cdn/{RD423PZS.js → F5JAPR6B.js} +2 -2
  116. package/dist/cdn/{CXYLIV2Q.js → FNQ2L2DM.js} +2 -2
  117. package/dist/cdn/{N4UPS6UJ.js → FP5D2SZA.js} +2 -2
  118. package/dist/cdn/{YJIB4Y3F.js → FPZEMX4B.js} +2 -2
  119. package/dist/cdn/{2Q2UIIGY.js → FTRDBT4T.js} +1 -1
  120. package/dist/cdn/{BTKJFFR4.js → FZJHK5CF.js} +2 -2
  121. package/dist/cdn/{72SOLDRJ.js → FZLUKWFG.js} +2 -2
  122. package/dist/cdn/{JJWGVOLU.js → G2AIEDH5.js} +2 -2
  123. package/dist/cdn/{NQFZ7BDB.js → G2WHRDRB.js} +2 -2
  124. package/dist/cdn/{WCFBD5RR.js → G5HIPUSK.js} +2 -2
  125. package/dist/cdn/{6MFGJWPB.js → GC4O5APO.js} +2 -2
  126. package/dist/cdn/{YUH4EAMP.js → GEIREK7Z.js} +2 -2
  127. package/dist/cdn/{SBN2L5NX.js → GJFCLYAN.js} +2 -2
  128. package/dist/cdn/{JV6V3HHU.js → GKEZI3PT.js} +2 -2
  129. package/dist/cdn/{F2DO4TJL.js → GNV3ZQMC.js} +2 -2
  130. package/dist/cdn/{OY6L3W2Y.js → GQ2XFFMS.js} +2 -2
  131. package/dist/cdn/{QCHTYOMH.js → GUNQEMBA.js} +2 -2
  132. package/dist/cdn/{VT6KVQP2.js → GVHW3DLW.js} +2 -2
  133. package/dist/cdn/{PRASXEUN.js → H2OY3T5X.js} +2 -2
  134. package/dist/cdn/{67W5QUHZ.js → H55LL3JW.js} +2 -2
  135. package/dist/cdn/{UHS75MT5.js → H5CJXI25.js} +2 -2
  136. package/dist/cdn/{FN4EUS3M.js → HDZR66W4.js} +2 -2
  137. package/dist/cdn/HFAKSY2S.js +4 -0
  138. package/dist/cdn/{NVSFHLTL.js → HGL4EETI.js} +2 -2
  139. package/dist/cdn/{IOAOXSTZ.js → HGORRSQH.js} +2 -2
  140. package/dist/cdn/{JXV6VWAC.js → HHTFAIXB.js} +2 -2
  141. package/dist/cdn/{KK2KCKMU.js → HMRGYX5P.js} +2 -2
  142. package/dist/cdn/{65Q2WFD6.js → HP5QJTNI.js} +2 -2
  143. package/dist/cdn/{253RNXBF.js → HUGBK2U5.js} +2 -2
  144. package/dist/cdn/{I2XGORZH.js → HV67SLIL.js} +2 -2
  145. package/dist/cdn/{T5DWKLEN.js → HZ6I4XIB.js} +2 -2
  146. package/dist/cdn/{SUOVHYZB.js → IAYBBBQT.js} +2 -2
  147. package/dist/cdn/{2HGM3S4H.js → IFZPP6SX.js} +2 -2
  148. package/dist/cdn/{VQSSXCIB.js → IHPRKZ6H.js} +2 -2
  149. package/dist/cdn/{ZA4WM6SU.js → IHYUEJMC.js} +2 -2
  150. package/dist/cdn/{MIARN2ON.js → IJQDG7IP.js} +1 -1
  151. package/dist/cdn/{2KXBQAJW.js → INSM2YOC.js} +1 -1
  152. package/dist/cdn/{ZWFGE4SE.js → IPK2F5FY.js} +2 -2
  153. package/dist/cdn/{UAFG6I6N.js → IULSZB52.js} +2 -2
  154. package/dist/cdn/{4RJSBWD3.js → IWA7DA43.js} +2 -2
  155. package/dist/cdn/{JZVTSNGA.js → IWCAJBZW.js} +2 -2
  156. package/dist/cdn/{JE5LYMSR.js → IXXHXXXL.js} +2 -2
  157. package/dist/cdn/J2GHMMFS.js +4 -0
  158. package/dist/cdn/{TB7KH2C7.js → J3UFVX3S.js} +2 -2
  159. package/dist/cdn/{QM6NH6VR.js → J63NAMCW.js} +2 -2
  160. package/dist/cdn/{EJBHWF54.js → JC7RDCAK.js} +1 -1
  161. package/dist/cdn/{HRAGHKCQ.js → JFF52LZP.js} +2 -2
  162. package/dist/cdn/{DJWFUXLO.js → JFSGS5OC.js} +2 -2
  163. package/dist/cdn/{BCQENLR7.js → JHLUVV4N.js} +2 -2
  164. package/dist/cdn/{XJN5V4KW.js → JIJ63VQQ.js} +2 -2
  165. package/dist/cdn/{SN5WNNQ5.js → JIWFE5LY.js} +2 -2
  166. package/dist/cdn/{GVFIYM23.js → JLLGVKZ3.js} +2 -2
  167. package/dist/cdn/{P4RFQ7SQ.js → JOKQH5HY.js} +2 -2
  168. package/dist/cdn/{4CHUCN2Z.js → JQUL7FKM.js} +2 -2
  169. package/dist/cdn/JRR6TOXN.js +4 -0
  170. package/dist/cdn/{OAYNPATX.js → JVKAKNFS.js} +2 -2
  171. package/dist/cdn/{L2PXDXZ3.js → K3AJABNT.js} +2 -2
  172. package/dist/cdn/K4AQW7JU.js +4 -0
  173. package/dist/cdn/{6OK4QGOG.js → K5PP5PS3.js} +2 -2
  174. package/dist/cdn/{5AEHA2S7.js → K5XSI7EQ.js} +2 -2
  175. package/dist/cdn/{YA7YZCDB.js → KB4RIKZC.js} +2 -2
  176. package/dist/cdn/{YEPUWT4K.js → KD3N253K.js} +2 -2
  177. package/dist/cdn/{2FCQYSQR.js → KDYFZUTB.js} +2 -2
  178. package/dist/cdn/{4BPWBJER.js → KG6ZXBS3.js} +2 -2
  179. package/dist/cdn/{BOV6NXRD.js → KK7FYLJQ.js} +2 -2
  180. package/dist/cdn/{4MQ7CZCO.js → KMZFQSAO.js} +2 -2
  181. package/dist/cdn/{LJ2SBS2G.js → KTC723NZ.js} +2 -2
  182. package/dist/cdn/{6KSUL7MO.js → KX5MJZBS.js} +2 -2
  183. package/dist/cdn/{DQKUJ4FE.js → KXKGISFI.js} +2 -2
  184. package/dist/cdn/{22HYHLHN.js → KXM4MDPA.js} +1 -1
  185. package/dist/cdn/L3X5KHYY.js +4 -0
  186. package/dist/cdn/{O2BPA4V7.js → L4WWTSVG.js} +1 -1
  187. package/dist/cdn/{Y6KQQXHW.js → L6TD54I2.js} +2 -2
  188. package/dist/cdn/{UYYTMD45.js → LEQFLWZJ.js} +2 -2
  189. package/dist/cdn/{FOJIKFHL.js → LF6GOWP7.js} +2 -2
  190. package/dist/cdn/{FFJAKABB.js → LFZ3JTH2.js} +2 -2
  191. package/dist/cdn/LYOK3PYB.js +4 -0
  192. package/dist/cdn/{P6W2BHCC.js → M3NVL5WO.js} +2 -2
  193. package/dist/cdn/M3S3NPNI.js +4 -0
  194. package/dist/cdn/{3UYOYGTS.js → MBZ2CBF3.js} +2 -2
  195. package/dist/cdn/{VADP3QUO.js → MCTC2Q7E.js} +4 -4
  196. package/dist/cdn/{QRGOX3X3.js → MGYSZD74.js} +2 -2
  197. package/dist/cdn/{QXN2LHOP.js → MIBMK3NI.js} +2 -2
  198. package/dist/cdn/MJXQ54VH.js +4 -0
  199. package/dist/cdn/{6LEKXV2O.js → MNKJFLXG.js} +2 -2
  200. package/dist/cdn/{VFPLAMGY.js → MPWXNEN5.js} +2 -2
  201. package/dist/cdn/{LVSUN7XL.js → MR2LK44L.js} +2 -2
  202. package/dist/cdn/{6GBG5NTN.js → MS5LO6DW.js} +2 -2
  203. package/dist/cdn/{F3UOUFRO.js → MUGJVLFI.js} +2 -2
  204. package/dist/cdn/{HQBUH6CP.js → MWZHS3D4.js} +2 -2
  205. package/dist/cdn/{BHUYCAVR.js → MX5P2FVF.js} +2 -2
  206. package/dist/cdn/{IYA6MXY3.js → MXLQXZPF.js} +2 -2
  207. package/dist/cdn/{PB54RSUS.js → N3WZI64X.js} +2 -2
  208. package/dist/cdn/{NTPTDDMB.js → N4UDOCET.js} +2 -2
  209. package/dist/cdn/{FFW3O2HK.js → N6VBAVNA.js} +2 -2
  210. package/dist/cdn/{UTSPKJHP.js → N7B4ODMG.js} +1 -1
  211. package/dist/cdn/{HAZAWSKY.js → NDRCKJQN.js} +1 -1
  212. package/dist/cdn/{JOGLCI7L.js → NGBAJJ6D.js} +2 -2
  213. package/dist/cdn/{ZOSVEKXW.js → NH3EQDO5.js} +1 -1
  214. package/dist/cdn/{T7MHQ327.js → NHCQYVJM.js} +2 -2
  215. package/dist/cdn/{TPWZ5VSB.js → NLYW2WAM.js} +2 -2
  216. package/dist/cdn/{BYDTC7F2.js → NO3GNFZC.js} +2 -2
  217. package/dist/cdn/{J3PAYUNS.js → NPJZFC4M.js} +2 -2
  218. package/dist/cdn/{FRIROEJG.js → NTD7CHVT.js} +2 -2
  219. package/dist/cdn/{M5ZKBFJG.js → NW7OFXKC.js} +2 -2
  220. package/dist/cdn/{FQ6ADWV5.js → O3P5NOM2.js} +2 -2
  221. package/dist/cdn/{I7PHK7YM.js → OA2S63FZ.js} +2 -2
  222. package/dist/cdn/{3VKMKDDC.js → OFWF4FLH.js} +1 -1
  223. package/dist/cdn/{ABEP4JVD.js → OOFFATCD.js} +2 -2
  224. package/dist/cdn/{N7Z27NQM.js → OPYKS7CX.js} +2 -2
  225. package/dist/cdn/{7FBZLDTR.js → OUAROGMB.js} +2 -2
  226. package/dist/cdn/{KVYBYT6S.js → OYOHY5WS.js} +2 -2
  227. package/dist/cdn/{HJY4KM2B.js → P2A5KXML.js} +2 -2
  228. package/dist/cdn/{2TJRLAO6.js → P3OVPYEQ.js} +2 -2
  229. package/dist/cdn/{UYHXKTBT.js → P6L7EUVQ.js} +2 -2
  230. package/dist/cdn/{WTKMR5UY.js → P6SI3ZH2.js} +1 -1
  231. package/dist/cdn/{S47HFMCK.js → PBORVLXJ.js} +2 -2
  232. package/dist/cdn/{LXHG5NDC.js → PHODD4Z6.js} +1 -1
  233. package/dist/cdn/{YIL2K7VK.js → PJQAZKQO.js} +2 -2
  234. package/dist/cdn/{3NINBJYJ.js → PTLVWRGF.js} +2 -2
  235. package/dist/cdn/{EHYJGYQT.js → PXKUIO5A.js} +1 -1
  236. package/dist/cdn/{IC4NXYTR.js → Q2WQ7T7X.js} +2 -2
  237. package/dist/cdn/{6MABMJPE.js → Q4CAV6BE.js} +1 -1
  238. package/dist/cdn/{Y3HJDMXS.js → QEYD7M5P.js} +2 -2
  239. package/dist/cdn/{MDXURHIQ.js → QL3LWZTF.js} +2 -2
  240. package/dist/cdn/{4MRVUTHZ.js → QP5YBLLN.js} +2 -2
  241. package/dist/cdn/{2BZFJQA6.js → QPKAXYA6.js} +2 -2
  242. package/dist/cdn/{NX7Z5SDJ.js → QQ272QFM.js} +2 -2
  243. package/dist/cdn/{TZHHGOBK.js → R3LWYP4G.js} +2 -2
  244. package/dist/cdn/{QI6JRQAM.js → R3P3XMLO.js} +2 -2
  245. package/dist/cdn/{HAP67XTT.js → R3RWAKZN.js} +2 -2
  246. package/dist/cdn/{R3KCYH5W.js → R3WMYDWR.js} +2 -2
  247. package/dist/cdn/{MUUINRCV.js → RFS4CVZ4.js} +2 -2
  248. package/dist/cdn/{3F27MINM.js → RID7XYT6.js} +2 -2
  249. package/dist/cdn/{FCETVVUT.js → RJMILIJO.js} +2 -2
  250. package/dist/cdn/{JW6FCTL4.js → RL5RZQ3Q.js} +2 -2
  251. package/dist/cdn/{LSJPBG7F.js → RLHTV7UW.js} +2 -2
  252. package/dist/cdn/{PSPTZCWK.js → RLPYO4Q4.js} +2 -2
  253. package/dist/cdn/{2OIIWDJB.js → RMIDYV3B.js} +2 -2
  254. package/dist/cdn/{HLU4ZUSE.js → RO3ES6UD.js} +2 -2
  255. package/dist/cdn/{Q4HNTDMI.js → RRTOIEHS.js} +2 -2
  256. package/dist/cdn/{35CUREMH.js → RTTRLG4C.js} +2 -2
  257. package/dist/cdn/{V3ILHNQJ.js → RUUYDJAI.js} +2 -2
  258. package/dist/cdn/{53QFE7JQ.js → RVOGF5GW.js} +2 -2
  259. package/dist/cdn/RXOWC3ZA.js +4 -0
  260. package/dist/cdn/{R5G5UBJR.js → RZ73JTAW.js} +2 -2
  261. package/dist/cdn/{3MHKWSCC.js → RZHJQZ7I.js} +1 -1
  262. package/dist/cdn/{AOGB6RX7.js → S3HCQON5.js} +2 -2
  263. package/dist/cdn/{QJ6VS55N.js → S4PR5QYT.js} +2 -2
  264. package/dist/cdn/{6OG7ILZC.js → S72CRXHN.js} +2 -2
  265. package/dist/cdn/{GI6HTTYJ.js → SAEYOHYV.js} +2 -2
  266. package/dist/cdn/{UVQX5FMQ.js → SDNXMJH4.js} +2 -2
  267. package/dist/cdn/{XILQXDEB.js → T56TNAF3.js} +1 -1
  268. package/dist/cdn/{ZFU6EH5A.js → TBMZRIU6.js} +2 -2
  269. package/dist/cdn/{4CO4QKQV.js → TBZMPKUE.js} +2 -2
  270. package/dist/cdn/{X32XVTAA.js → THL4LIOE.js} +2 -2
  271. package/dist/cdn/{4JMYQZGR.js → TNSW4TRC.js} +2 -2
  272. package/dist/cdn/{6PGQ7UDC.js → TUKMTW4X.js} +2 -2
  273. package/dist/cdn/TYKBDMUD.js +4 -0
  274. package/dist/cdn/{HF4QD63I.js → TYMBB7GT.js} +2 -2
  275. package/dist/cdn/{BOWNLLRC.js → TZWGA55B.js} +2 -2
  276. package/dist/cdn/{KGY42XQ4.js → U3653AAK.js} +2 -2
  277. package/dist/cdn/{P5SP66TM.js → U4TLYOFC.js} +2 -2
  278. package/dist/cdn/{GY3AMW7G.js → U5K2UMRG.js} +2 -2
  279. package/dist/cdn/{FRKMUBQW.js → U5QDQ3AE.js} +1 -1
  280. package/dist/cdn/{P4I7E7PJ.js → U5VJAOJI.js} +2 -2
  281. package/dist/cdn/{XRVUVLK7.js → U72STWZM.js} +1 -1
  282. package/dist/cdn/{3V3ARU4S.js → UA6OB7Z3.js} +1 -1
  283. package/dist/cdn/{S56TUI7H.js → UB7EJKIT.js} +1 -1
  284. package/dist/cdn/{5IW2AA7A.js → UDBS4W2F.js} +2 -2
  285. package/dist/cdn/{RD6JTK3X.js → UIXMR5OS.js} +2 -2
  286. package/dist/cdn/{MFAJRJR3.js → UK3Y26QU.js} +1 -1
  287. package/dist/cdn/{DOZS4G2O.js → URCMK5PU.js} +2 -2
  288. package/dist/cdn/{Z6SV4EJB.js → V6B7ICFF.js} +1 -1
  289. package/dist/cdn/{L3CVI6KC.js → VCX42K34.js} +2 -2
  290. package/dist/cdn/{KKGQAK4H.js → VFQZQD4U.js} +2 -2
  291. package/dist/cdn/{RGNMACS5.js → VFY3MJZR.js} +2 -2
  292. package/dist/cdn/VI5526JP.js +4 -0
  293. package/dist/cdn/{LK7INEHZ.js → VIAGSUD6.js} +2 -2
  294. package/dist/cdn/{S732ZTVO.js → VLXAVLHU.js} +2 -2
  295. package/dist/cdn/{LF44LBHN.js → VWFBOHPK.js} +2 -2
  296. package/dist/cdn/{TEMZGRBD.js → VX47PIHG.js} +2 -2
  297. package/dist/cdn/{CEBTYHFA.js → VXBXLYF2.js} +1 -1
  298. package/dist/cdn/{CBOKEM2G.js → VXFBOPP3.js} +2 -2
  299. package/dist/cdn/{UI4YSFA3.js → VYX3EYGU.js} +2 -2
  300. package/dist/cdn/VZYFBVG3.js +4 -0
  301. package/dist/cdn/{5ZXC6E3E.js → W5YSAGU7.js} +2 -2
  302. package/dist/cdn/{UI74ZNTQ.js → WF3R5HTS.js} +2 -2
  303. package/dist/cdn/{4B42RCTX.js → WGA7J4T3.js} +2 -2
  304. package/dist/cdn/{62TZFM26.js → WIXYBKC6.js} +2 -2
  305. package/dist/cdn/{KRMTXV6V.js → WKAPUSKT.js} +2 -2
  306. package/dist/cdn/{M3ONDW4E.js → WKI33GD4.js} +2 -2
  307. package/dist/cdn/{PKGSI55Q.js → WO6O4V7P.js} +2 -2
  308. package/dist/cdn/{HKY5DY62.js → WYV3XXOH.js} +2 -2
  309. package/dist/cdn/{PJK2OHT3.js → X2K7HTRW.js} +1 -1
  310. package/dist/cdn/{HHJZ4HZ6.js → X2SHXAEX.js} +2 -2
  311. package/dist/cdn/{GPG4VHYE.js → X3UWVOUF.js} +2 -2
  312. package/dist/cdn/{AMNGDLOS.js → XBNBDIQF.js} +2 -2
  313. package/dist/cdn/{OXHUFOLR.js → XIR3LIO5.js} +2 -2
  314. package/dist/cdn/{IXQOFTAB.js → XKOHRGWS.js} +2 -2
  315. package/dist/cdn/{5JBKNTRM.js → XN4ZLYC3.js} +2 -2
  316. package/dist/cdn/{IDUQIZKF.js → XWYQHMRJ.js} +2 -2
  317. package/dist/cdn/{XLHDG4FM.js → XYK3ZJ74.js} +2 -2
  318. package/dist/cdn/{SWVL5I4H.js → Y4O7BEH5.js} +2 -2
  319. package/dist/cdn/{FOYHZHWB.js → YC3C5VLU.js} +2 -2
  320. package/dist/cdn/{LLMVZTU7.js → YDNDI3GC.js} +2 -2
  321. package/dist/cdn/{UGCYPIG3.js → YGN4DTLR.js} +2 -2
  322. package/dist/cdn/{PPDXHEPT.js → YKZ4EIP4.js} +2 -2
  323. package/dist/cdn/{OEIXFB5S.js → YMEMNG2X.js} +2 -2
  324. package/dist/cdn/{SZT2IBTM.js → YN7MAH2I.js} +1 -1
  325. package/dist/cdn/{J6NCWDHN.js → YNQH4WHK.js} +2 -2
  326. package/dist/cdn/{UGNCB4PA.js → YT326XBB.js} +2 -2
  327. package/dist/cdn/{IJZIMEUA.js → Z6GXQBPV.js} +2 -2
  328. package/dist/cdn/{FGBI6PLB.js → ZIMI5N7B.js} +2 -2
  329. package/dist/cdn/{DAHW5CIV.js → ZP7YO34W.js} +2 -2
  330. package/dist/cdn/{DYI3P36O.js → ZPINCTCI.js} +1 -1
  331. package/dist/cdn/{CGLEKTNI.js → ZQOWCQMD.js} +2 -2
  332. package/dist/cdn/{3D5J3QUN.js → ZV5UJA56.js} +2 -2
  333. package/dist/cdn/{M7AB2AFS.js → ZVYEXCFN.js} +2 -2
  334. package/dist/cdn/{GP6DK5OL.js → ZX3GJIWV.js} +2 -2
  335. package/dist/cdn/index.js +2 -2
  336. package/dist/chunks/Auth.js +1 -1
  337. package/dist/chunks/appConfig.js +1 -1
  338. package/dist/chunks/cardFetchingUtils.js +2 -15
  339. package/dist/chunks/cardFetchingUtils.js.map +1 -1
  340. package/dist/chunks/cardsHelpers.js +1 -1
  341. package/dist/chunks/common.js +1 -1
  342. package/dist/chunks/deployAppContexts.js +1 -1
  343. package/dist/chunks/downloadUtils.js +1 -1
  344. package/dist/chunks/getItemIcon.js +1 -1
  345. package/dist/chunks/helpers.js +1 -1
  346. package/dist/chunks/interfaces.js +1 -1
  347. package/dist/chunks/mapViewUtils.js +1 -1
  348. package/dist/chunks/pciUtils.js +1 -1
  349. package/dist/chunks/popupUtils.js +1 -1
  350. package/dist/chunks/publicNotificationContext.js +1 -1
  351. package/dist/chunks/queryUtils.js +1 -1
  352. package/dist/chunks/runtime.js +1 -1
  353. package/dist/chunks/solutions-deploy-app-nav.js +1 -1
  354. package/dist/chunks/useT9n.js +1 -1
  355. package/dist/components/arcgis-solutions-assistant/customElement.js +1 -1
  356. package/dist/components/buffer-tools/customElement.js +1 -1
  357. package/dist/components/card-manager/customElement.js +1 -1
  358. package/dist/components/consent-manager/customElement.js +1 -1
  359. package/dist/components/create-feature/customElement.js +1 -1
  360. package/dist/components/create-related-feature/customElement.js +1 -1
  361. package/dist/components/crowdsource-manager/customElement.js +1 -1
  362. package/dist/components/crowdsource-reporter/customElement.js +1 -1
  363. package/dist/components/deduct-calculator/customElement.js +1 -1
  364. package/dist/components/delete-button/customElement.js +1 -1
  365. package/dist/components/delete-dialog/customElement.js +1 -1
  366. package/dist/components/edit-card/customElement.js +1 -1
  367. package/dist/components/feature-details/customElement.js +1 -1
  368. package/dist/components/feature-list/customElement.js +1 -1
  369. package/dist/components/field-selection/customElement.js +1 -1
  370. package/dist/components/info-card/customElement.js +1 -1
  371. package/dist/components/layer-list/customElement.js +1 -1
  372. package/dist/components/layer-table/customElement.js +1 -1
  373. package/dist/components/map-basemap-gallery/customElement.js +1 -1
  374. package/dist/components/map-card/customElement.js +1 -1
  375. package/dist/components/map-draw-tools/customElement.js +1 -1
  376. package/dist/components/map-floor-filter/customElement.js +1 -1
  377. package/dist/components/map-fullscreen/customElement.js +1 -1
  378. package/dist/components/map-layer-picker/customElement.js +1 -1
  379. package/dist/components/map-legend/customElement.js +1 -1
  380. package/dist/components/map-picker/customElement.js +1 -1
  381. package/dist/components/map-search/customElement.js +1 -1
  382. package/dist/components/map-select-tools/customElement.js +1 -1
  383. package/dist/components/map-tools/customElement.js +1 -1
  384. package/dist/components/pci-calculator/customElement.js +1 -1
  385. package/dist/components/pdf-download/customElement.js +1 -1
  386. package/dist/components/public-notification/customElement.js +1 -1
  387. package/dist/components/refine-selection/customElement.js +1 -1
  388. package/dist/components/selection-tool/customElement.js +1 -1
  389. package/dist/components/solution-configure-titles/customElement.js +1 -1
  390. package/dist/components/solution-delete-dialog/customElement.js +1 -1
  391. package/dist/components/solution-deploy-dialog/customElement.js +1 -1
  392. package/dist/components/solution-deployed-card/customElement.js +1 -1
  393. package/dist/components/solution-deployed-card-panel/customElement.js +1 -1
  394. package/dist/components/solution-deploying-dialog/customElement.js +1 -1
  395. package/dist/components/solution-details-card/customElement.js +1 -1
  396. package/dist/components/solution-details-panel/customElement.js +1 -1
  397. package/dist/components/solution-item-accordion/customElement.js +1 -1
  398. package/dist/components/solution-item-diagram/customElement.js +1 -1
  399. package/dist/components/solution-item-icon/customElement.js +1 -1
  400. package/dist/components/solution-resource-card/customElement.js +1 -1
  401. package/dist/components/solution-snapshot-gallery/customElement.js +1 -1
  402. package/dist/components/solution-social-share/customElement.js +1 -1
  403. package/dist/components/solutions-all-panel/customElement.js +14 -21
  404. package/dist/components/solutions-all-panel/customElement.js.map +1 -1
  405. package/dist/components/solutions-all-shell/customElement.js +1 -1
  406. package/dist/components/solutions-deploy-app/customElement.js +14 -21
  407. package/dist/components/solutions-deploy-app/customElement.js.map +1 -1
  408. package/dist/components/solutions-deploy-app-nav/customElement.js +1 -1
  409. package/dist/components/solutions-deployed-filter-panel/customElement.js +1 -1
  410. package/dist/components/solutions-deployed-panel/customElement.js +1 -1
  411. package/dist/components/solutions-deployed-shell/customElement.js +1 -1
  412. package/dist/components/solutions-filter-panel/customElement.js +1 -1
  413. package/dist/components/solutions-resource-panel/customElement.js +1 -1
  414. package/dist/components/solutions-resources/customElement.js +1 -1
  415. package/dist/components/solutions-resources-shell/customElement.js +1 -1
  416. package/dist/components/solutions-searchsort-toolbar/customElement.js +1 -1
  417. package/dist/docs/api.json +1 -1
  418. package/dist/docs/docs.json +1 -1
  419. package/dist/docs/web-types.json +1 -1
  420. package/dist/index.js +1 -1
  421. package/dist/loader.js +1 -1
  422. package/dist/utils/CardsFetcher.d.ts +1 -1
  423. package/package.json +1 -1
  424. package/dist/cdn/2H2732VO.js +0 -4
  425. package/dist/cdn/52TXKGYV.js +0 -4
  426. package/dist/cdn/5OOZELYI.js +0 -4
  427. package/dist/cdn/77APG7U3.js +0 -4
  428. package/dist/cdn/77VSL2LU.js +0 -4
  429. package/dist/cdn/AMF5XX36.js +0 -4
  430. package/dist/cdn/C74MDPRK.js +0 -4
  431. package/dist/cdn/CUBR3FSN.js +0 -4
  432. package/dist/cdn/DLPM4D5F.js +0 -4
  433. package/dist/cdn/DUNAQGU2.js +0 -99
  434. package/dist/cdn/EZOYFPK5.js +0 -4
  435. package/dist/cdn/G6ZWDEQU.js +0 -4
  436. package/dist/cdn/KZHJDYWQ.js +0 -4
  437. package/dist/cdn/LRDQVHWW.js +0 -4
  438. package/dist/cdn/MFNDNTOQ.js +0 -4
  439. package/dist/cdn/PHS66743.js +0 -4
  440. package/dist/cdn/SDXPFMHE.js +0 -4
  441. package/dist/cdn/SYGJWWZP.js +0 -4
  442. package/dist/cdn/VBIROJO3.js +0 -4
  443. package/dist/cdn/WW3ZPCO5.js +0 -4
  444. package/dist/cdn/YIZ7FHBE.js +0 -4
  445. package/dist/cdn/YYLKFRM5.js +0 -4
@@ -1,6 +1,6 @@
1
1
  /*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
2
2
  See https://js.arcgis.com/1.2/esri/copyright.txt for details.
3
- v1.2.0-next.61 */
3
+ v1.2.0-next.62 */
4
4
  import { g as getAssetPath, c as customElement } from "../../chunks/runtime.js";
5
5
  import { e as EExportType, a as EPageType, d as EWorkflowType } from "../../chunks/interfaces.js";
6
6
  import { a as goToSelection, h as highlightFeatures } from "../../chunks/mapViewUtils.js";
@@ -1,6 +1,6 @@
1
1
  /*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
2
2
  See https://js.arcgis.com/1.2/esri/copyright.txt for details.
3
- v1.2.0-next.61 */
3
+ v1.2.0-next.62 */
4
4
  import { c as customElement } from "../../chunks/runtime.js";
5
5
  import { b as ESelectionMode, f as EDrawMode, d as EWorkflowType } from "../../chunks/interfaces.js";
6
6
  import { g as getFeatureLayerView, b as getIdSets, c as highlightAllFeatures } from "../../chunks/mapViewUtils.js";
@@ -1,6 +1,6 @@
1
1
  /*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
2
2
  See https://js.arcgis.com/1.2/esri/copyright.txt for details.
3
- v1.2.0-next.61 */
3
+ v1.2.0-next.62 */
4
4
  import { c as customElement } from "../../chunks/runtime.js";
5
5
  import { g as getFeatureLayerView } from "../../chunks/mapViewUtils.js";
6
6
  import { LitElement, createEvent, noShadowRoot } from "@arcgis/lumina";
@@ -1,6 +1,6 @@
1
1
  /*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
2
2
  See https://js.arcgis.com/1.2/esri/copyright.txt for details.
3
- v1.2.0-next.61 */
3
+ v1.2.0-next.62 */
4
4
  import { c as customElement } from "../../chunks/runtime.js";
5
5
  import { u as useT9n } from "../../chunks/useT9n.js";
6
6
  import { LitElement, createEvent, safeClassMap } from "@arcgis/lumina";
@@ -1,6 +1,6 @@
1
1
  /*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
2
2
  See https://js.arcgis.com/1.2/esri/copyright.txt for details.
3
- v1.2.0-next.61 */
3
+ v1.2.0-next.62 */
4
4
  import { c as customElement } from "../../chunks/runtime.js";
5
5
  import { css, nothing, html } from "lit";
6
6
  import { u as useT9n } from "../../chunks/useT9n.js";
@@ -1,6 +1,6 @@
1
1
  /*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
2
2
  See https://js.arcgis.com/1.2/esri/copyright.txt for details.
3
- v1.2.0-next.61 */
3
+ v1.2.0-next.62 */
4
4
  import { c as customElement } from "../../chunks/runtime.js";
5
5
  import { u as useT9n } from "../../chunks/useT9n.js";
6
6
  import { LitElement, createEvent, nothing } from "@arcgis/lumina";
@@ -1,6 +1,6 @@
1
1
  /*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
2
2
  See https://js.arcgis.com/1.2/esri/copyright.txt for details.
3
- v1.2.0-next.61 */
3
+ v1.2.0-next.62 */
4
4
  import "../../chunks/runtime.js";
5
5
  import "../../chunks/useT9n.js";
6
6
  import "@arcgis/lumina";
@@ -1,6 +1,6 @@
1
1
  /*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
2
2
  See https://js.arcgis.com/1.2/esri/copyright.txt for details.
3
- v1.2.0-next.61 */
3
+ v1.2.0-next.62 */
4
4
  import { c as customElement } from "../../chunks/runtime.js";
5
5
  import { css, html } from "lit";
6
6
  import { keyed } from "lit/directives/keyed.js";
@@ -1,6 +1,6 @@
1
1
  /*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
2
2
  See https://js.arcgis.com/1.2/esri/copyright.txt for details.
3
- v1.2.0-next.61 */
3
+ v1.2.0-next.62 */
4
4
  import { c as customElement } from "../../chunks/runtime.js";
5
5
  import { css, html } from "lit";
6
6
  import { keyed } from "lit/directives/keyed.js";
@@ -1,6 +1,6 @@
1
1
  /*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
2
2
  See https://js.arcgis.com/1.2/esri/copyright.txt for details.
3
- v1.2.0-next.61 */
3
+ v1.2.0-next.62 */
4
4
  import { c as customElement } from "../../chunks/runtime.js";
5
5
  import { css, html } from "lit";
6
6
  import { u as useT9n } from "../../chunks/useT9n.js";
@@ -1,6 +1,6 @@
1
1
  /*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
2
2
  See https://js.arcgis.com/1.2/esri/copyright.txt for details.
3
- v1.2.0-next.61 */
3
+ v1.2.0-next.62 */
4
4
  import { c as customElement } from "../../chunks/runtime.js";
5
5
  import { css, html } from "lit";
6
6
  import { u as useT9n } from "../../chunks/useT9n.js";
@@ -1,6 +1,6 @@
1
1
  /*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
2
2
  See https://js.arcgis.com/1.2/esri/copyright.txt for details.
3
- v1.2.0-next.61 */
3
+ v1.2.0-next.62 */
4
4
  import { c as customElement } from "../../chunks/runtime.js";
5
5
  import { u as useT9n } from "../../chunks/useT9n.js";
6
6
  import { css, html, nothing } from "lit";
@@ -1,6 +1,6 @@
1
1
  /*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
2
2
  See https://js.arcgis.com/1.2/esri/copyright.txt for details.
3
- v1.2.0-next.61 */
3
+ v1.2.0-next.62 */
4
4
  import { c as customElement } from "../../chunks/runtime.js";
5
5
  import { css, html } from "lit";
6
6
  import { u as useT9n } from "../../chunks/useT9n.js";
@@ -1,6 +1,6 @@
1
1
  /*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
2
2
  See https://js.arcgis.com/1.2/esri/copyright.txt for details.
3
- v1.2.0-next.61 */
3
+ v1.2.0-next.62 */
4
4
  import { c as customElement } from "../../chunks/runtime.js";
5
5
  import { css, html } from "lit";
6
6
  import { LitElement, nothing } from "@arcgis/lumina";
@@ -1,6 +1,6 @@
1
1
  /*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
2
2
  See https://js.arcgis.com/1.2/esri/copyright.txt for details.
3
- v1.2.0-next.61 */
3
+ v1.2.0-next.62 */
4
4
  import { c as customElement } from "../../chunks/runtime.js";
5
5
  import { css, html } from "lit";
6
6
  import { u as useT9n } from "../../chunks/useT9n.js";
@@ -1,6 +1,6 @@
1
1
  /*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
2
2
  See https://js.arcgis.com/1.2/esri/copyright.txt for details.
3
- v1.2.0-next.61 */
3
+ v1.2.0-next.62 */
4
4
  import { c as customElement } from "../../chunks/runtime.js";
5
5
  import { u as useT9n } from "../../chunks/useT9n.js";
6
6
  import { LitElement, nothing } from "@arcgis/lumina";
@@ -1,6 +1,6 @@
1
1
  /*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
2
2
  See https://js.arcgis.com/1.2/esri/copyright.txt for details.
3
- v1.2.0-next.61 */
3
+ v1.2.0-next.62 */
4
4
  import { c as customElement } from "../../chunks/runtime.js";
5
5
  import { css, html, svg } from "lit";
6
6
  import { u as useT9n } from "../../chunks/useT9n.js";
@@ -1,6 +1,6 @@
1
1
  /*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
2
2
  See https://js.arcgis.com/1.2/esri/copyright.txt for details.
3
- v1.2.0-next.61 */
3
+ v1.2.0-next.62 */
4
4
  import { c as customElement } from "../../chunks/runtime.js";
5
5
  import { css, html, svg } from "lit";
6
6
  import { u as useT9n } from "../../chunks/useT9n.js";
@@ -212,26 +212,19 @@ class SolutionsAllPanel extends LitElement {
212
212
  async _getSolutions() {
213
213
  if (this._configContextConsumer.value) {
214
214
  this._isLoading = true;
215
- const fetchedCards = await this._cardsFetcher?.requestAvailableSolutionCards(
216
- {
217
- "q": this._agoTerms,
218
- "filter": "type:Solution",
219
- "sortField": this._sortField,
220
- "sortOrder": this._sortOrder,
221
- // TODO default search when old app loads is desc...may need to switch this for other
222
- "nextStart": -1,
223
- "categories": this._categories,
224
- "delay": this._delay,
225
- "getSuggested": this._getSuggested
226
- },
227
- this._configContextConsumer.value?.primarySolutionsGroupId,
228
- "",
229
- //this.enterpriseSolutionsGroupId, TODO both are passed by default in the old app...don't follow why
230
- this._configContextConsumer.value.userSession,
231
- {
232
- "num": 1e3
233
- }
234
- );
215
+ const fetchedCards = await this._cardsFetcher?.requestAvailableSolutionCards({
216
+ "q": this._agoTerms,
217
+ "filter": "type:Solution",
218
+ "sortField": this._sortField,
219
+ "sortOrder": this._sortOrder,
220
+ // TODO default search when old app loads is desc...may need to switch this for other
221
+ "nextStart": -1,
222
+ "categories": this._categories,
223
+ "delay": this._delay,
224
+ "getSuggested": this._getSuggested
225
+ }, this._configContextConsumer.value?.primarySolutionsGroupId, {
226
+ "num": 1e3
227
+ });
235
228
  const cards = fetchedCards?.cards.length ? fetchedCards.cards : [];
236
229
  if (this.sortType === "new" || this.sortType === "updated") {
237
230
  let releaseType = "/Categories/New Release";
@@ -1 +1 @@
1
- {"version":3,"file":"customElement.js","sources":["../../../src/components/solutions-all-panel/solutions-all-panel.tsx"],"sourcesContent":["/**\r\n * @license\r\n * Copyright 2025 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the 'License');\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an 'AS IS' BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\nimport type T9nStrings from './assets/t9n/messages.en.json';\r\nimport { useT9n } from '../../controllers/useT9n';\r\nimport {\r\n createEvent,\r\n h,\r\n LitElement,\r\n method,\r\n property,\r\n state,\r\n} from '@arcgis/lumina';\r\nimport {\r\n useContextConsumer,\r\n} from '@arcgis/lumina/context';\r\nimport type {\r\n JsxNode,\r\n} from '@arcgis/lumina';\r\nimport { styles } from './solutions-all-panel.css';\r\nimport {\r\n BASE_DEPLOYED_TERMS,\r\n BASE_SOLUTIONS_TERMS,\r\n EDomain,\r\n EIndustry,\r\n} from '../../utils/interfaces';\r\nimport type {\r\n IDeployedSolutionCards,\r\n IFilterOption,\r\n ISearchOption,\r\n ISearchTerm,\r\n ISolutionInfoCard,\r\n ISortOption,\r\n ISortType,\r\n SortType\r\n} from '../../utils/interfaces';\r\nimport * as cardsFetcher from '../../utils/CardsFetcher';\r\nimport * as cardsHelper from '../../utils/cardsHelpers';\r\nimport {\r\n getDeployedSolutions\r\n} from '../../utils/cardFetchingUtils';\r\nimport {\r\n configContext,\r\n} from '../../utils/deployAppContexts';\r\n\r\n/** Max tries a for query to see if query results is updated. */\r\nconst MAX_REQUERY = 5;\r\n\r\ndeclare global {\r\n interface DeclareElements {\r\n 'solutions-all-panel': SolutionsAllPanel;\r\n }\r\n}\r\n\r\n// TODO this should be removed after initial dev cycle\r\n// https://devtopia.esri.com/WebGIS/solution-deployment-apps/issues/401\r\n\r\nexport class SolutionsAllPanel extends LitElement {\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Overrides (internal)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n static override styles = styles;\r\n\r\n constructor() {\r\n super();\r\n this.listenOn<CustomEvent>(window, 'deployProgressEnd', () => {\r\n this._modifiedCheckTry = MAX_REQUERY;\r\n this._loadUpdateProcedures();\r\n });\r\n this.listenOn<CustomEvent>(window, 'solutionDeleted', () => {\r\n this._modifiedCheckTry = MAX_REQUERY;\r\n this._loadUpdateProcedures();\r\n });\r\n this.listenOn<CustomEvent>(window, 'sortTypeChanged', (evt) => {\r\n if (evt.detail && evt.detail.scope === 'all-solutions') {\r\n this.sortType = evt.detail.sortType;\r\n if (this.sortType === 'suggested' && this._deployedSolutions?.cards.length === 0) {\r\n //get deployed to make suggestions from\r\n this._getDeployedSolutions().then(() => {\r\n this.searchSolutions(evt.detail);\r\n });\r\n } else {\r\n this.searchSolutions(evt.detail);\r\n }\r\n }\r\n });\r\n this.listenOn<CustomEvent>(window, 'solutionIDFromAssistant', (id) => {\r\n this._lookupSolutionById(id.detail);\r\n });\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (public)\r\n //\r\n //---------------------------------------------------------------------------\r\n\r\n /** Define how the cards will be sorted */\r\n @property() sortType: SortType = 'relevance';\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // State (internal)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /** All the solution cards */\r\n @state() _cards: ISolutionInfoCard[] = [];\r\n\r\n /** When true we are actively fetching cards and should show a loading indicator */\r\n @state() _isLoading = true;\r\n\r\n /** Flag and retry counter to determine if new solution deployed or existing solution deleted. */\r\n @state() _modifiedCheckTry: number = 0;\r\n\r\n /**\r\n * Contains the translations for this component.\r\n * All UI strings should be defined here.\r\n */\r\n @state() _translations = useT9n<typeof T9nStrings>({ name: 'solutions-all-panel', blocking: true });\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (private)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /** Used for solution queries, the search terms for ago */\r\n private _agoTerms = `${BASE_SOLUTIONS_TERMS}`;\r\n\r\n /** All of the feteched solution cards used to help with fetching of deployed and related solutions.\r\n * This is only populated once on load.\r\n */\r\n private _allCards: ISolutionInfoCard[] = [];\r\n\r\n /** Used for solution queries, the search terms for ago */\r\n private _baseAgoTerms = BASE_SOLUTIONS_TERMS;\r\n\r\n /** Helper module that will handle the fecthing of solutions */\r\n private _cardsFetcher: cardsFetcher.CardsFetcher | undefined;\r\n\r\n /** Helper module that will handle the fecthing of deployed solutions */\r\n private _cardsFetcherDeployed: cardsFetcher.CardsFetcher | undefined;\r\n\r\n /** Used for solution queries, should be populated when domain filters are applied */\r\n private _categories: string[] = [];\r\n\r\n /** Key details such as portalUrl, locale, etc from the current config */\r\n private _configContextConsumer = useContextConsumer({\r\n context: configContext,\r\n subscribe: true,\r\n callback: async (evt) => {\r\n if (evt) {\r\n await this._loadUpdateProcedures();\r\n }\r\n }\r\n });\r\n\r\n /** Used for solution queries to delay the query */\r\n private _delay = false;\r\n\r\n /** Used to hold solutions that user has deployed */\r\n private _deployedSolutions: IDeployedSolutionCards | undefined;\r\n\r\n /** Used for solution queries, true when the getSuggested filter is applied */\r\n private _getSuggested = false;\r\n\r\n private _relatedSolutions: Set<string> = new Set();\r\n\r\n /** Used for solution queries, defines the key field that will be used to sort the solutions */\r\n private _sortField: 'created' | 'relevance' | 'title' | 'updated' = 'relevance';\r\n\r\n /** Used for solution queries, conrols the order solutions are sorted*/\r\n private _sortOrder: 'asc' | 'desc' = 'desc';\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Watch handlers\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Methods (public)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /** Search solutions based on key criteria\r\n *\r\n * @param searchOptions the key criteria to search with\r\n */\r\n @method() async searchSolutions(\r\n searchOptions?: IFilterOption[] | ISearchOption | ISortOption\r\n ): Promise<void> {\r\n if (searchOptions) {\r\n if ('searchTerm' in searchOptions) {\r\n // just sets props\r\n this._textSearch(searchOptions.searchTerm);\r\n } else if ('sortType' in searchOptions) {\r\n // just sets props\r\n this._sortCards(searchOptions);\r\n } else {\r\n this._filterCards(searchOptions);\r\n }\r\n } else {\r\n this._agoTerms = this._baseAgoTerms;\r\n this._clearFilterCategories();\r\n }\r\n this._cards = await this._getSolutions();\r\n }\r\n\r\n /** Set key properties for solution search\r\n * This is used for handeling multiple options from url params\r\n *\r\n * @param searchOptions the key criteria that will be used when searched\r\n */\r\n @method() async setSearchOptions(\r\n searchOptions?: IFilterOption | ISearchOption | ISortOption\r\n ): Promise<void> {\r\n if (searchOptions) {\r\n if ('searchTerm' in searchOptions) {\r\n // just sets props\r\n this._textSearch(searchOptions.searchTerm);\r\n // used to support url params\r\n this.searchTermSet.emit({\r\n searchTerm: searchOptions.searchTerm,\r\n scope: 'all-solutions'\r\n });\r\n }\r\n if ('sortType' in searchOptions) {\r\n // just sets props\r\n this._sortCards(searchOptions);\r\n // used to support url params\r\n this.sortTypeSet.emit({\r\n sortType: searchOptions.sortType,\r\n scope: 'all-solutions'\r\n });\r\n }\r\n }\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Events (public)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /** Emitted on demand when cards are fetched */\r\n cardsFetched = createEvent<number>();\r\n\r\n /** Emitted on demand when all of the cards are first fetched */\r\n allCardsFetched = createEvent<ISolutionInfoCard[]>();\r\n\r\n /** Emitted on demand when the serachTerm is set from url param */\r\n searchTermSet = createEvent<ISearchTerm>();\r\n\r\n /** Emitted on demand when the sortType is set from url param */\r\n sortTypeSet = createEvent<ISortType>();\r\n\r\n /** Emitted on demand when the details card is selected. */\r\n detailsCardSelected = createEvent<ISolutionInfoCard>();\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Functions (lifecycle)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /** Renders the component. */\r\n override render(): JsxNode {\r\n return this._isLoading || this._cards.length ? (\r\n <calcite-panel>\r\n {this._isLoading ? (\r\n <calcite-loader\r\n id='solutions-all-panel-loader'\r\n label={this._translations.fetchingSolutions}\r\n />\r\n ) : (\r\n <calcite-card-group\r\n class='card-group'\r\n label={this._translations.allSolutionCards}\r\n >\r\n {this._renderCards()}\r\n </calcite-card-group>\r\n )}\r\n </calcite-panel>\r\n ) : (\r\n <div class='no-solutions'>\r\n {this._getMeridianSearch()}\r\n <div class='text-center leader-1 warning-text trailer-1'>\r\n {this._translations.noSolutionsFound}\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Functions (private)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /** Renders the fetched cards. */\r\n private _renderCards(): JsxNode[] {\r\n return this._cards.map(card => {\r\n return (\r\n <solution-details-card\r\n card={card}\r\n />\r\n );\r\n });\r\n }\r\n\r\n /** Get the solutions from the ago or enterprise org. */\r\n private async _getSolutions(): Promise<ISolutionInfoCard[]> {\r\n if (this._configContextConsumer.value) {\r\n this._isLoading = true;\r\n const fetchedCards = await this._cardsFetcher?.requestAvailableSolutionCards(\r\n {\r\n 'q': this._agoTerms,\r\n 'filter': 'type:Solution',\r\n 'sortField': this._sortField,\r\n 'sortOrder': this._sortOrder, // TODO default search when old app loads is desc...may need to switch this for other\r\n 'nextStart': -1,\r\n 'categories': this._categories,\r\n 'delay': this._delay,\r\n 'getSuggested': this._getSuggested\r\n },\r\n this._configContextConsumer.value?.primarySolutionsGroupId,\r\n '', //this.enterpriseSolutionsGroupId, TODO both are passed by default in the old app...don't follow why\r\n this._configContextConsumer.value!.userSession,\r\n {\r\n 'num': 1000\r\n }\r\n );\r\n\r\n const cards = fetchedCards?.cards.length ? fetchedCards.cards : [];\r\n if (this.sortType === 'new' || this.sortType === 'updated') {\r\n let releaseType = '/Categories/New Release';\r\n if (this.sortType === 'updated') {\r\n releaseType = '/Categories/Updated';\r\n }\r\n cards.sort((a, b) => {\r\n if (a.categories.includes(releaseType) && !b.categories.includes(releaseType)) {\r\n return -1;\r\n } else if (!a.categories.includes(releaseType) && b.categories.includes(releaseType)) {\r\n return 1;\r\n } else if (a.categories.includes(releaseType) && b.categories.includes(releaseType)) {\r\n return a.categories.length - b.categories.length;\r\n } else {\r\n return 0;\r\n }\r\n })\r\n } else if (this.sortType === 'suggested') {\r\n if (this._relatedSolutions.size > 0 && this._deployedSolutions?.cards?.length) {\r\n // Find only deployments that match version as well\r\n const cardVersionMap = new Map<string, number>();\r\n for (const c of cards) {\r\n const existing = cardVersionMap.get(c.deployCommonId);\r\n const version = Number(c.deployVersion); // assuming version is numeric\r\n if (!existing || version > existing) {\r\n cardVersionMap.set(c.deployCommonId, version);\r\n }\r\n }\r\n // get deployments that are current version\r\n const deployedMatches = this._deployedSolutions.cards.filter(d => {\r\n const cardVersion = cardVersionMap.get(d.deployCommonId);\r\n return cardVersion !== undefined && Number(d.deployVersion) >= cardVersion;\r\n });\r\n // Remove deployed solutions from the related set\r\n const deployedIds = new Set(deployedMatches.map(d => d.deployCommonId));\r\n this._relatedSolutions = new Set(\r\n [...this._relatedSolutions].filter(id => !deployedIds.has(id))\r\n );\r\n cards.sort((a, b) => {\r\n const inRelatedA = this._relatedSolutions.has(a.deployCommonId);\r\n const inRelatedB = this._relatedSolutions.has(b.deployCommonId);\r\n\r\n if (inRelatedA && !inRelatedB) return -1;\r\n if (!inRelatedA && inRelatedB) return 1;\r\n return 0;\r\n });\r\n }\r\n }\r\n\r\n const solutionDetailsCards = cards.map(fetchedCard => {\r\n // can we have both updated and deployed? Seems like we could...need to update the card to support that\r\n const hasNewRelease = fetchedCard.categories.indexOf('/Categories/New Release') > -1;\r\n const hasUpdatedRelease = fetchedCard.categories.indexOf('/Categories/Updated') > -1;\r\n let isDeployed = false;\r\n let isLatestVersion = true;\r\n if (this._deployedSolutions) {\r\n isDeployed = this._isSolutionDeployed(fetchedCard.deployCommonId);\r\n isLatestVersion = this._isLatestVersion(fetchedCard);\r\n }\r\n fetchedCard.chip = hasNewRelease\r\n ? 'new'\r\n : hasUpdatedRelease\r\n ? 'updated'\r\n : isDeployed\r\n ? isLatestVersion\r\n ? 'deployed'\r\n : 'none'\r\n : 'none';\r\n fetchedCard.supportReuse = isDeployed ? isDeployed && !isLatestVersion ? true : false : true;\r\n return fetchedCard;\r\n });\r\n\r\n if (this._allCards.length === 0 && fetchedCards?.cards) {\r\n this._allCards = fetchedCards?.cards;\r\n if (this._deployedSolutions) {\r\n this._relatedSolutions = cardsHelper.getDeployedRelatedSolutionIds(this._deployedSolutions.cards, this._allCards);\r\n }\r\n }\r\n\r\n this.cardsFetched.emit(solutionDetailsCards.length);\r\n this._isLoading = false;\r\n return solutionDetailsCards;\r\n } else {\r\n this._isLoading = false;\r\n return [];\r\n }\r\n }\r\n\r\n /** Processes and queries to run at load and updates */\r\n private async _loadUpdateProcedures(): Promise<void> {\r\n this._isLoading = true;\r\n const config = this._configContextConsumer.value!;\r\n this._cardsFetcher = new cardsFetcher.CardsFetcher(config.locale, config.orgUrl, config.portalUrl);\r\n this._cardsFetcherDeployed = new cardsFetcher.CardsFetcher(config.locale, config.orgUrl, config.portalUrl);\r\n await this._getDeployedSolutions();\r\n this._cards = await this._getSolutions();\r\n this.allCardsFetched.emit(this._cards);\r\n this._isLoading = false;\r\n }\r\n\r\n /** Get the deployed solutions */\r\n private async _getDeployedSolutions(): Promise<void> {\r\n // TODO will need to get Auth from however global nav is implemented\r\n // Get the deployed cards as well because we need to be prepared to support suggested solutions\r\n const authentication = this._configContextConsumer.value!.authentication;\r\n const userSession = this._configContextConsumer.value!.userSession;\r\n if (authentication && userSession && authentication.IsSignedIn) {\r\n const deployedSolutions = await getDeployedSolutions(\r\n authentication,\r\n userSession,\r\n this._cardsFetcher!,\r\n this._cardsFetcherDeployed!,\r\n BASE_DEPLOYED_TERMS,\r\n 'created'\r\n );\r\n\r\n if (deployedSolutions) {\r\n if (this._modifiedCheckTry > 0) {\r\n if (this._deployedSolutions?.cards.length === deployedSolutions?.cards.length) {\r\n this._modifiedCheckTry--;\r\n return await this._getDeployedSolutions();\r\n } else {\r\n this._modifiedCheckTry = 0;\r\n }\r\n }\r\n this._deployedSolutions = deployedSolutions;\r\n }\r\n }\r\n }\r\n\r\n /** Get the calcite meridian search svg.\r\n */\r\n private _getMeridianSearch(): JsxNode {\r\n return (\r\n <div class='solutions-briefcase'>\r\n <svg viewBox='0 0 64 64' width='140' height='140' xmlns='http://www.w3.org/2000/svg' fill='var(--calcite-color-text-3)'>\r\n <path d='M60.217 54.937l-15.77-15.77-1.414 1.415-3.801-3.8a19.94 19.94 0 1 0-2.451 2.45l3.802 3.802-1.413 1.415 15.767 15.767a1.739 1.739 0 0 0 2.459 0l2.82-2.821a1.742 1.742 0 0 0 0-2.458zM4.9 24A19.1 19.1 0 1 1 24 43.1 19.121 19.121 0 0 1 4.9 24zm32.474 14.693q.69-.63 1.32-1.32l3.774 3.775-1.32 1.32zM59.65 56.83l-2.82 2.82a.97.97 0 0 1-1.327 0L40.3 44.45l4.145-4.15L59.65 55.501a.939.939 0 0 1 0 1.328zM22.343 9.62l.097.795q-.31.038-.619.086a13.635 13.635 0 0 0-11.353 11.775l-.026.217-.795-.084.026-.228a14.44 14.44 0 0 1 12.022-12.47c.215-.034.431-.064.648-.09z' />\r\n </svg>\r\n </div>\r\n );\r\n }\r\n\r\n /** These are text based searches and should not change existing filters or sort options */\r\n private _textSearch(\r\n searchText: string\r\n ): void {\r\n this._agoTerms = this._baseAgoTerms + ` ${searchText}`;\r\n }\r\n\r\n /** These are sort specific and should not change existing text based search or filters */\r\n private _sortCards(\r\n sortOption: ISortOption\r\n ): void {\r\n const sortType = sortOption.sortType;\r\n this._getSuggested = false;\r\n this._sortOrder = 'desc';\r\n if (sortType === 'suggested') {\r\n this._getSuggested = true;\r\n } else if (sortType === 'new') {\r\n // new cards are sorted after fetched based on a category they contain\r\n this._sortField = 'relevance';\r\n } else if (sortType === 'relevance' || sortType === 'title') { // it didn't like [].indexOf test here\r\n if (sortType === 'title') {\r\n this._sortOrder = 'asc';\r\n }\r\n this._sortField = sortType;\r\n } else if (sortType === 'updated') {\r\n this._sortField = 'relevance';\r\n }\r\n // TODO decide if this makes sense\r\n this.sortType = sortType;\r\n }\r\n\r\n /** These are specific to filters and should not change existing text based searches or sort options */\r\n private _filterCards(\r\n filterOptions: IFilterOption[]\r\n ): void {\r\n this._categories = [];\r\n filterOptions.forEach((filterOption) => {\r\n if (filterOption.industry) {\r\n const industry = this._getIndustryValue(filterOption.industry);\r\n if (filterOption.domain) {\r\n const domain = this._getDomainValue(filterOption.domain);\r\n this._categories.push(`/Categories/${industry}/${domain}`);\r\n } else {\r\n this._categories.push(`/Categories/${industry}`);\r\n }\r\n }\r\n })\r\n }\r\n\r\n /** Get the domain value in English*/\r\n private _getDomainValue(key: string): string {\r\n return EDomain[key as keyof typeof EDomain];\r\n }\r\n\r\n /** Get the industry value in English*/\r\n private _getIndustryValue(key: string): string {\r\n return key === 'AEC' ? 'AEC' : EIndustry[key as keyof typeof EIndustry];\r\n }\r\n\r\n /** Clear the categories that are populated when filters are applied*/\r\n private _clearFilterCategories(): void {\r\n this._categories = [];\r\n }\r\n\r\n /** Checks to see if a solution matches already deployed solution */\r\n private _isSolutionDeployed(solutionId: string): boolean {\r\n return !!this._deployedSolutions?.cards?.some(card =>\r\n card?.typeKeywords?.some(k =>\r\n k.includes('solutionid') && k.includes(solutionId)\r\n )\r\n );\r\n }\r\n\r\n /** Checks to see if the deployed version is the latest version */\r\n private _isLatestVersion(solutionCard: ISolutionInfoCard): boolean {\r\n const matchCards = this._deployedSolutions?.cards?.filter(card =>\r\n card?.typeKeywords?.some(k =>\r\n k.includes('solutionid') && k.includes(solutionCard.deployCommonId)\r\n )\r\n );\r\n if (matchCards && matchCards.length > 0) {\r\n const matchCard = matchCards[0];\r\n if (matchCard.deployVersion !== solutionCard.deployVersion) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n private _lookupSolutionById(id: string): void {\r\n const foundItem = this._cards.filter((card) => {\r\n const justKeywords = card.typeKeywords;\r\n return justKeywords.includes(id);\r\n })\r\n if (foundItem.length > 0) {\r\n this.detailsCardSelected.emit(foundItem[0]);\r\n }\r\n }\r\n\r\n}\r\n"],"names":["cardsHelper.getDeployedRelatedSolutionIds","cardsFetcher.CardsFetcher"],"mappings":"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"}
1
+ {"version":3,"file":"customElement.js","sources":["../../../src/components/solutions-all-panel/solutions-all-panel.tsx"],"sourcesContent":["/**\r\n * @license\r\n * Copyright 2025 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the 'License');\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an 'AS IS' BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\nimport type T9nStrings from './assets/t9n/messages.en.json';\r\nimport { useT9n } from '../../controllers/useT9n';\r\nimport {\r\n createEvent,\r\n h,\r\n LitElement,\r\n method,\r\n property,\r\n state,\r\n} from '@arcgis/lumina';\r\nimport {\r\n useContextConsumer,\r\n} from '@arcgis/lumina/context';\r\nimport type {\r\n JsxNode,\r\n} from '@arcgis/lumina';\r\nimport { styles } from './solutions-all-panel.css';\r\nimport {\r\n BASE_DEPLOYED_TERMS,\r\n BASE_SOLUTIONS_TERMS,\r\n EDomain,\r\n EIndustry,\r\n} from '../../utils/interfaces';\r\nimport type {\r\n IDeployedSolutionCards,\r\n IFilterOption,\r\n ISearchOption,\r\n ISearchTerm,\r\n ISolutionInfoCard,\r\n ISortOption,\r\n ISortType,\r\n SortType\r\n} from '../../utils/interfaces';\r\nimport * as cardsFetcher from '../../utils/CardsFetcher';\r\nimport * as cardsHelper from '../../utils/cardsHelpers';\r\nimport {\r\n getDeployedSolutions\r\n} from '../../utils/cardFetchingUtils';\r\nimport {\r\n configContext,\r\n} from '../../utils/deployAppContexts';\r\n\r\n/** Max tries a for query to see if query results is updated. */\r\nconst MAX_REQUERY = 5;\r\n\r\ndeclare global {\r\n interface DeclareElements {\r\n 'solutions-all-panel': SolutionsAllPanel;\r\n }\r\n}\r\n\r\n// TODO this should be removed after initial dev cycle\r\n// https://devtopia.esri.com/WebGIS/solution-deployment-apps/issues/401\r\n\r\nexport class SolutionsAllPanel extends LitElement {\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Overrides (internal)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n static override styles = styles;\r\n\r\n constructor() {\r\n super();\r\n this.listenOn<CustomEvent>(window, 'deployProgressEnd', () => {\r\n this._modifiedCheckTry = MAX_REQUERY;\r\n this._loadUpdateProcedures();\r\n });\r\n this.listenOn<CustomEvent>(window, 'solutionDeleted', () => {\r\n this._modifiedCheckTry = MAX_REQUERY;\r\n this._loadUpdateProcedures();\r\n });\r\n this.listenOn<CustomEvent>(window, 'sortTypeChanged', (evt) => {\r\n if (evt.detail && evt.detail.scope === 'all-solutions') {\r\n this.sortType = evt.detail.sortType;\r\n if (this.sortType === 'suggested' && this._deployedSolutions?.cards.length === 0) {\r\n //get deployed to make suggestions from\r\n this._getDeployedSolutions().then(() => {\r\n this.searchSolutions(evt.detail);\r\n });\r\n } else {\r\n this.searchSolutions(evt.detail);\r\n }\r\n }\r\n });\r\n this.listenOn<CustomEvent>(window, 'solutionIDFromAssistant', (id) => {\r\n this._lookupSolutionById(id.detail);\r\n });\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (public)\r\n //\r\n //---------------------------------------------------------------------------\r\n\r\n /** Define how the cards will be sorted */\r\n @property() sortType: SortType = 'relevance';\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // State (internal)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /** All the solution cards */\r\n @state() _cards: ISolutionInfoCard[] = [];\r\n\r\n /** When true we are actively fetching cards and should show a loading indicator */\r\n @state() _isLoading = true;\r\n\r\n /** Flag and retry counter to determine if new solution deployed or existing solution deleted. */\r\n @state() _modifiedCheckTry: number = 0;\r\n\r\n /**\r\n * Contains the translations for this component.\r\n * All UI strings should be defined here.\r\n */\r\n @state() _translations = useT9n<typeof T9nStrings>({ name: 'solutions-all-panel', blocking: true });\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (private)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /** Used for solution queries, the search terms for ago */\r\n private _agoTerms = `${BASE_SOLUTIONS_TERMS}`;\r\n\r\n /** All of the feteched solution cards used to help with fetching of deployed and related solutions.\r\n * This is only populated once on load.\r\n */\r\n private _allCards: ISolutionInfoCard[] = [];\r\n\r\n /** Used for solution queries, the search terms for ago */\r\n private _baseAgoTerms = BASE_SOLUTIONS_TERMS;\r\n\r\n /** Helper module that will handle the fecthing of solutions */\r\n private _cardsFetcher: cardsFetcher.CardsFetcher | undefined;\r\n\r\n /** Helper module that will handle the fecthing of deployed solutions */\r\n private _cardsFetcherDeployed: cardsFetcher.CardsFetcher | undefined;\r\n\r\n /** Used for solution queries, should be populated when domain filters are applied */\r\n private _categories: string[] = [];\r\n\r\n /** Key details such as portalUrl, locale, etc from the current config */\r\n private _configContextConsumer = useContextConsumer({\r\n context: configContext,\r\n subscribe: true,\r\n callback: async (evt) => {\r\n if (evt) {\r\n await this._loadUpdateProcedures();\r\n }\r\n }\r\n });\r\n\r\n /** Used for solution queries to delay the query */\r\n private _delay = false;\r\n\r\n /** Used to hold solutions that user has deployed */\r\n private _deployedSolutions: IDeployedSolutionCards | undefined;\r\n\r\n /** Used for solution queries, true when the getSuggested filter is applied */\r\n private _getSuggested = false;\r\n\r\n private _relatedSolutions: Set<string> = new Set();\r\n\r\n /** Used for solution queries, defines the key field that will be used to sort the solutions */\r\n private _sortField: 'created' | 'relevance' | 'title' | 'updated' = 'relevance';\r\n\r\n /** Used for solution queries, conrols the order solutions are sorted*/\r\n private _sortOrder: 'asc' | 'desc' = 'desc';\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Watch handlers\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Methods (public)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /** Search solutions based on key criteria\r\n *\r\n * @param searchOptions the key criteria to search with\r\n */\r\n @method() async searchSolutions(\r\n searchOptions?: IFilterOption[] | ISearchOption | ISortOption\r\n ): Promise<void> {\r\n if (searchOptions) {\r\n if ('searchTerm' in searchOptions) {\r\n // just sets props\r\n this._textSearch(searchOptions.searchTerm);\r\n } else if ('sortType' in searchOptions) {\r\n // just sets props\r\n this._sortCards(searchOptions);\r\n } else {\r\n this._filterCards(searchOptions);\r\n }\r\n } else {\r\n this._agoTerms = this._baseAgoTerms;\r\n this._clearFilterCategories();\r\n }\r\n this._cards = await this._getSolutions();\r\n }\r\n\r\n /** Set key properties for solution search\r\n * This is used for handeling multiple options from url params\r\n *\r\n * @param searchOptions the key criteria that will be used when searched\r\n */\r\n @method() async setSearchOptions(\r\n searchOptions?: IFilterOption | ISearchOption | ISortOption\r\n ): Promise<void> {\r\n if (searchOptions) {\r\n if ('searchTerm' in searchOptions) {\r\n // just sets props\r\n this._textSearch(searchOptions.searchTerm);\r\n // used to support url params\r\n this.searchTermSet.emit({\r\n searchTerm: searchOptions.searchTerm,\r\n scope: 'all-solutions'\r\n });\r\n }\r\n if ('sortType' in searchOptions) {\r\n // just sets props\r\n this._sortCards(searchOptions);\r\n // used to support url params\r\n this.sortTypeSet.emit({\r\n sortType: searchOptions.sortType,\r\n scope: 'all-solutions'\r\n });\r\n }\r\n }\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Events (public)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /** Emitted on demand when cards are fetched */\r\n cardsFetched = createEvent<number>();\r\n\r\n /** Emitted on demand when all of the cards are first fetched */\r\n allCardsFetched = createEvent<ISolutionInfoCard[]>();\r\n\r\n /** Emitted on demand when the serachTerm is set from url param */\r\n searchTermSet = createEvent<ISearchTerm>();\r\n\r\n /** Emitted on demand when the sortType is set from url param */\r\n sortTypeSet = createEvent<ISortType>();\r\n\r\n /** Emitted on demand when the details card is selected. */\r\n detailsCardSelected = createEvent<ISolutionInfoCard>();\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Functions (lifecycle)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /** Renders the component. */\r\n override render(): JsxNode {\r\n return this._isLoading || this._cards.length ? (\r\n <calcite-panel>\r\n {this._isLoading ? (\r\n <calcite-loader\r\n id='solutions-all-panel-loader'\r\n label={this._translations.fetchingSolutions}\r\n />\r\n ) : (\r\n <calcite-card-group\r\n class='card-group'\r\n label={this._translations.allSolutionCards}\r\n >\r\n {this._renderCards()}\r\n </calcite-card-group>\r\n )}\r\n </calcite-panel>\r\n ) : (\r\n <div class='no-solutions'>\r\n {this._getMeridianSearch()}\r\n <div class='text-center leader-1 warning-text trailer-1'>\r\n {this._translations.noSolutionsFound}\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Functions (private)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /** Renders the fetched cards. */\r\n private _renderCards(): JsxNode[] {\r\n return this._cards.map(card => {\r\n return (\r\n <solution-details-card\r\n card={card}\r\n />\r\n );\r\n });\r\n }\r\n\r\n /** Get the solutions from the ago or enterprise org. */\r\n private async _getSolutions(): Promise<ISolutionInfoCard[]> {\r\n if (this._configContextConsumer.value) {\r\n this._isLoading = true;\r\n const fetchedCards = await this._cardsFetcher?.requestAvailableSolutionCards(\r\n {\r\n 'q': this._agoTerms,\r\n 'filter': 'type:Solution',\r\n 'sortField': this._sortField,\r\n 'sortOrder': this._sortOrder, // TODO default search when old app loads is desc...may need to switch this for other\r\n 'nextStart': -1,\r\n 'categories': this._categories,\r\n 'delay': this._delay,\r\n 'getSuggested': this._getSuggested\r\n },\r\n this._configContextConsumer.value?.primarySolutionsGroupId,\r\n {\r\n 'num': 1000\r\n }\r\n );\r\n\r\n const cards = fetchedCards?.cards.length ? fetchedCards.cards : [];\r\n if (this.sortType === 'new' || this.sortType === 'updated') {\r\n let releaseType = '/Categories/New Release';\r\n if (this.sortType === 'updated') {\r\n releaseType = '/Categories/Updated';\r\n }\r\n cards.sort((a, b) => {\r\n if (a.categories.includes(releaseType) && !b.categories.includes(releaseType)) {\r\n return -1;\r\n } else if (!a.categories.includes(releaseType) && b.categories.includes(releaseType)) {\r\n return 1;\r\n } else if (a.categories.includes(releaseType) && b.categories.includes(releaseType)) {\r\n return a.categories.length - b.categories.length;\r\n } else {\r\n return 0;\r\n }\r\n })\r\n } else if (this.sortType === 'suggested') {\r\n if (this._relatedSolutions.size > 0 && this._deployedSolutions?.cards?.length) {\r\n // Find only deployments that match version as well\r\n const cardVersionMap = new Map<string, number>();\r\n for (const c of cards) {\r\n const existing = cardVersionMap.get(c.deployCommonId);\r\n const version = Number(c.deployVersion); // assuming version is numeric\r\n if (!existing || version > existing) {\r\n cardVersionMap.set(c.deployCommonId, version);\r\n }\r\n }\r\n // get deployments that are current version\r\n const deployedMatches = this._deployedSolutions.cards.filter(d => {\r\n const cardVersion = cardVersionMap.get(d.deployCommonId);\r\n return cardVersion !== undefined && Number(d.deployVersion) >= cardVersion;\r\n });\r\n // Remove deployed solutions from the related set\r\n const deployedIds = new Set(deployedMatches.map(d => d.deployCommonId));\r\n this._relatedSolutions = new Set(\r\n [...this._relatedSolutions].filter(id => !deployedIds.has(id))\r\n );\r\n cards.sort((a, b) => {\r\n const inRelatedA = this._relatedSolutions.has(a.deployCommonId);\r\n const inRelatedB = this._relatedSolutions.has(b.deployCommonId);\r\n\r\n if (inRelatedA && !inRelatedB) return -1;\r\n if (!inRelatedA && inRelatedB) return 1;\r\n return 0;\r\n });\r\n }\r\n }\r\n\r\n const solutionDetailsCards = cards.map(fetchedCard => {\r\n // can we have both updated and deployed? Seems like we could...need to update the card to support that\r\n const hasNewRelease = fetchedCard.categories.indexOf('/Categories/New Release') > -1;\r\n const hasUpdatedRelease = fetchedCard.categories.indexOf('/Categories/Updated') > -1;\r\n let isDeployed = false;\r\n let isLatestVersion = true;\r\n if (this._deployedSolutions) {\r\n isDeployed = this._isSolutionDeployed(fetchedCard.deployCommonId);\r\n isLatestVersion = this._isLatestVersion(fetchedCard);\r\n }\r\n fetchedCard.chip = hasNewRelease\r\n ? 'new'\r\n : hasUpdatedRelease\r\n ? 'updated'\r\n : isDeployed\r\n ? isLatestVersion\r\n ? 'deployed'\r\n : 'none'\r\n : 'none';\r\n fetchedCard.supportReuse = isDeployed ? isDeployed && !isLatestVersion ? true : false : true;\r\n return fetchedCard;\r\n });\r\n\r\n if (this._allCards.length === 0 && fetchedCards?.cards) {\r\n this._allCards = fetchedCards?.cards;\r\n if (this._deployedSolutions) {\r\n this._relatedSolutions = cardsHelper.getDeployedRelatedSolutionIds(this._deployedSolutions.cards, this._allCards);\r\n }\r\n }\r\n\r\n this.cardsFetched.emit(solutionDetailsCards.length);\r\n this._isLoading = false;\r\n return solutionDetailsCards;\r\n } else {\r\n this._isLoading = false;\r\n return [];\r\n }\r\n }\r\n\r\n /** Processes and queries to run at load and updates */\r\n private async _loadUpdateProcedures(): Promise<void> {\r\n this._isLoading = true;\r\n const config = this._configContextConsumer.value!;\r\n this._cardsFetcher = new cardsFetcher.CardsFetcher(config.locale, config.orgUrl, config.portalUrl);\r\n this._cardsFetcherDeployed = new cardsFetcher.CardsFetcher(config.locale, config.orgUrl, config.portalUrl);\r\n await this._getDeployedSolutions();\r\n this._cards = await this._getSolutions();\r\n this.allCardsFetched.emit(this._cards);\r\n this._isLoading = false;\r\n }\r\n\r\n /** Get the deployed solutions */\r\n private async _getDeployedSolutions(): Promise<void> {\r\n // TODO will need to get Auth from however global nav is implemented\r\n // Get the deployed cards as well because we need to be prepared to support suggested solutions\r\n const authentication = this._configContextConsumer.value!.authentication;\r\n const userSession = this._configContextConsumer.value!.userSession;\r\n if (authentication && userSession && authentication.IsSignedIn) {\r\n const deployedSolutions = await getDeployedSolutions(\r\n authentication,\r\n userSession,\r\n this._cardsFetcher!,\r\n this._cardsFetcherDeployed!,\r\n BASE_DEPLOYED_TERMS,\r\n 'created'\r\n );\r\n\r\n if (deployedSolutions) {\r\n if (this._modifiedCheckTry > 0) {\r\n if (this._deployedSolutions?.cards.length === deployedSolutions?.cards.length) {\r\n this._modifiedCheckTry--;\r\n return await this._getDeployedSolutions();\r\n } else {\r\n this._modifiedCheckTry = 0;\r\n }\r\n }\r\n this._deployedSolutions = deployedSolutions;\r\n }\r\n }\r\n }\r\n\r\n /** Get the calcite meridian search svg.\r\n */\r\n private _getMeridianSearch(): JsxNode {\r\n return (\r\n <div class='solutions-briefcase'>\r\n <svg viewBox='0 0 64 64' width='140' height='140' xmlns='http://www.w3.org/2000/svg' fill='var(--calcite-color-text-3)'>\r\n <path d='M60.217 54.937l-15.77-15.77-1.414 1.415-3.801-3.8a19.94 19.94 0 1 0-2.451 2.45l3.802 3.802-1.413 1.415 15.767 15.767a1.739 1.739 0 0 0 2.459 0l2.82-2.821a1.742 1.742 0 0 0 0-2.458zM4.9 24A19.1 19.1 0 1 1 24 43.1 19.121 19.121 0 0 1 4.9 24zm32.474 14.693q.69-.63 1.32-1.32l3.774 3.775-1.32 1.32zM59.65 56.83l-2.82 2.82a.97.97 0 0 1-1.327 0L40.3 44.45l4.145-4.15L59.65 55.501a.939.939 0 0 1 0 1.328zM22.343 9.62l.097.795q-.31.038-.619.086a13.635 13.635 0 0 0-11.353 11.775l-.026.217-.795-.084.026-.228a14.44 14.44 0 0 1 12.022-12.47c.215-.034.431-.064.648-.09z' />\r\n </svg>\r\n </div>\r\n );\r\n }\r\n\r\n /** These are text based searches and should not change existing filters or sort options */\r\n private _textSearch(\r\n searchText: string\r\n ): void {\r\n this._agoTerms = this._baseAgoTerms + ` ${searchText}`;\r\n }\r\n\r\n /** These are sort specific and should not change existing text based search or filters */\r\n private _sortCards(\r\n sortOption: ISortOption\r\n ): void {\r\n const sortType = sortOption.sortType;\r\n this._getSuggested = false;\r\n this._sortOrder = 'desc';\r\n if (sortType === 'suggested') {\r\n this._getSuggested = true;\r\n } else if (sortType === 'new') {\r\n // new cards are sorted after fetched based on a category they contain\r\n this._sortField = 'relevance';\r\n } else if (sortType === 'relevance' || sortType === 'title') { // it didn't like [].indexOf test here\r\n if (sortType === 'title') {\r\n this._sortOrder = 'asc';\r\n }\r\n this._sortField = sortType;\r\n } else if (sortType === 'updated') {\r\n this._sortField = 'relevance';\r\n }\r\n // TODO decide if this makes sense\r\n this.sortType = sortType;\r\n }\r\n\r\n /** These are specific to filters and should not change existing text based searches or sort options */\r\n private _filterCards(\r\n filterOptions: IFilterOption[]\r\n ): void {\r\n this._categories = [];\r\n filterOptions.forEach((filterOption) => {\r\n if (filterOption.industry) {\r\n const industry = this._getIndustryValue(filterOption.industry);\r\n if (filterOption.domain) {\r\n const domain = this._getDomainValue(filterOption.domain);\r\n this._categories.push(`/Categories/${industry}/${domain}`);\r\n } else {\r\n this._categories.push(`/Categories/${industry}`);\r\n }\r\n }\r\n })\r\n }\r\n\r\n /** Get the domain value in English*/\r\n private _getDomainValue(key: string): string {\r\n return EDomain[key as keyof typeof EDomain];\r\n }\r\n\r\n /** Get the industry value in English*/\r\n private _getIndustryValue(key: string): string {\r\n return key === 'AEC' ? 'AEC' : EIndustry[key as keyof typeof EIndustry];\r\n }\r\n\r\n /** Clear the categories that are populated when filters are applied*/\r\n private _clearFilterCategories(): void {\r\n this._categories = [];\r\n }\r\n\r\n /** Checks to see if a solution matches already deployed solution */\r\n private _isSolutionDeployed(solutionId: string): boolean {\r\n return !!this._deployedSolutions?.cards?.some(card =>\r\n card?.typeKeywords?.some(k =>\r\n k.includes('solutionid') && k.includes(solutionId)\r\n )\r\n );\r\n }\r\n\r\n /** Checks to see if the deployed version is the latest version */\r\n private _isLatestVersion(solutionCard: ISolutionInfoCard): boolean {\r\n const matchCards = this._deployedSolutions?.cards?.filter(card =>\r\n card?.typeKeywords?.some(k =>\r\n k.includes('solutionid') && k.includes(solutionCard.deployCommonId)\r\n )\r\n );\r\n if (matchCards && matchCards.length > 0) {\r\n const matchCard = matchCards[0];\r\n if (matchCard.deployVersion !== solutionCard.deployVersion) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n private _lookupSolutionById(id: string): void {\r\n const foundItem = this._cards.filter((card) => {\r\n const justKeywords = card.typeKeywords;\r\n return justKeywords.includes(id);\r\n })\r\n if (foundItem.length > 0) {\r\n this.detailsCardSelected.emit(foundItem[0]);\r\n }\r\n }\r\n\r\n}\r\n"],"names":["cardsHelper.getDeployedRelatedSolutionIds","cardsFetcher.CardsFetcher"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
2
2
  See https://js.arcgis.com/1.2/esri/copyright.txt for details.
3
- v1.2.0-next.61 */
3
+ v1.2.0-next.62 */
4
4
  import { c as customElement } from "../../chunks/runtime.js";
5
5
  import { repeat } from "lit/directives/repeat.js";
6
6
  import { u as useT9n } from "../../chunks/useT9n.js";
@@ -1,6 +1,6 @@
1
1
  /*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
2
2
  See https://js.arcgis.com/1.2/esri/copyright.txt for details.
3
- v1.2.0-next.61 */
3
+ v1.2.0-next.62 */
4
4
  import { c as customElement } from "../../chunks/runtime.js";
5
5
  import { css, html } from "lit";
6
6
  import { u as useT9n } from "../../chunks/useT9n.js";
@@ -318,26 +318,19 @@ class SolutionsDeployApp extends LitElement {
318
318
  this._configContextProvider.value.telemetrySession = telemetrySession;
319
319
  }
320
320
  async _getSolutions(primarySolutionsGroupId) {
321
- const fetchedCards = await this._cardsFetcher?.requestAvailableSolutionCards(
322
- {
323
- "q": this._agoTerms,
324
- "filter": "type:Solution",
325
- "sortField": this._sortField,
326
- "sortOrder": this._sortOrder,
327
- // TODO default search when old app loads is desc...may need to switch this for other
328
- "nextStart": -1,
329
- "categories": this._categories,
330
- "delay": this._delay,
331
- "getSuggested": this._getSuggested
332
- },
333
- primarySolutionsGroupId,
334
- "",
335
- //this.enterpriseSolutionsGroupId, TODO both are passed by default in the old app...don't follow why
336
- this._configContextProvider.value.userSession,
337
- {
338
- "num": 1e3
339
- }
340
- );
321
+ const fetchedCards = await this._cardsFetcher?.requestAvailableSolutionCards({
322
+ "q": this._agoTerms,
323
+ "filter": "type:Solution",
324
+ "sortField": this._sortField,
325
+ "sortOrder": this._sortOrder,
326
+ // TODO default search when old app loads is desc...may need to switch this for other
327
+ "nextStart": -1,
328
+ "categories": this._categories,
329
+ "delay": this._delay,
330
+ "getSuggested": this._getSuggested
331
+ }, primarySolutionsGroupId, {
332
+ "num": 1e3
333
+ });
341
334
  if (this._allCards.length === 0 && fetchedCards?.cards) {
342
335
  this._allCards = fetchedCards?.cards;
343
336
  }
@@ -1 +1 @@
1
- {"version":3,"file":"customElement.js","sources":["../../../src/components/solutions-deploy-app/solutions-deploy-app.tsx"],"sourcesContent":["/**\r\n * @license\r\n * Copyright 2025 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the 'License');\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an 'AS IS' BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\nimport type T9nStrings from './assets/t9n/messages.en.json';\r\nimport { useT9n } from '../../controllers/useT9n';\r\nimport {\r\n createEvent,\r\n h,\r\n LitElement,\r\n method,\r\n property,\r\n state,\r\n} from '@arcgis/lumina';\r\nimport type {\r\n JsxNode,\r\n} from '@arcgis/lumina';\r\nimport { styles } from './solutions-deploy-app.css';\r\nimport { TelemetryManager } from '../../utils/telemetryManager';\r\nimport type {\r\n DeployAppTab,\r\n IActiveTab,\r\n IDeployCard,\r\n INavTab,\r\n ISolutionInfoCard,\r\n} from '../../utils/interfaces';\r\nimport { createRef } from 'lit-html/directives/ref.js';\r\nimport * as cardsFetcher from '../../utils/CardsFetcher';\r\nimport {\r\n getDeployedSolutions\r\n} from '../../utils/cardFetchingUtils';\r\nimport {\r\n BASE_SOLUTIONS_TERMS,\r\n} from '../../utils/interfaces';\r\nimport type {\r\n SortType,\r\n} from '../../utils/interfaces';\r\nimport {\r\n BASE_DEPLOYED_TERMS\r\n} from '../../utils/interfaces';\r\nimport {\r\n useContextProvider,\r\n} from '@arcgis/lumina/context';\r\nimport {\r\n configContext,\r\n isMobileContext,\r\n} from '../../utils/deployAppContexts';\r\nimport {\r\n findSolutionByTitleOrId,\r\n findSolutionByTypeKeywordSolutionId\r\n} from '../../utils/cardsHelpers';\r\nimport { Auth } from '../../utils/Auth';\r\nimport * as _appConfig from '../../assets/config/appConfig.json';\r\nimport { SolutionsAllShell } from '../solutions-all-shell/solutions-all-shell';\r\nimport { SolutionsDeployedShell } from '../solutions-deployed-shell/solutions-deployed-shell';\r\nimport { SolutionDetailsPanel } from '../solution-details-panel/solution-details-panel';\r\nimport { SolutionsDeployAppNav } from '../solutions-deploy-app-nav/solutions-deploy-app-nav';\r\nimport { SolutionDeployedCardPanel } from '../solution-deployed-card-panel/solution-deployed-card-panel';\r\n\r\ndeclare global {\r\n interface DeclareElements {\r\n 'solutions-deploy-app': SolutionsDeployApp;\r\n }\r\n}\r\n\r\n// TODO consolidate card fetching and context providers here\r\n// we only need to fetch all of the cards 1 time at the start.\r\n// those cards will be shared through a context or event.\r\n// Then I was thinking that the cardFetcher and deployedCardFetcher would also be shared in a context\r\n// so they can all be setup in one place but then we will still do other queries for solutions\r\n// or deployed solutions based on search terms/filters in various components using the fetcher instance\r\n// that we shared through a context from the source app component\r\n\r\nexport class SolutionsDeployApp extends LitElement {\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Overrides (internal)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n static override styles = styles;\r\n\r\n constructor() {\r\n super();\r\n this.listenOn(window, 'detailsCardSelected', this._detailsCardSelected);\r\n this.listenOn(window, 'deployedCardSelected', this._deployedCardSelected);\r\n this.listenOn(window, 'deployProgressEnd', this._deployProgressEnd);\r\n this.listenOn(window, 'navTabSelected', this._setActiveTab);\r\n this._mediaQueryChange = this._mediaQueryChange.bind(this);\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (public)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /** App config to use when useLocalAppConfig is false */\r\n @property() appConfig: any;\r\n\r\n /** When defined this is the tab that should be loaded by default */\r\n @property() initTab: DeployAppTab | undefined;\r\n\r\n /** When defined this will contain the solution name or id that should be loaded by default */\r\n @property() initTitleOrId = '';\r\n\r\n /** Define how the cards will be sorted */\r\n @property() sortType: SortType = 'relevance';\r\n\r\n /**\r\n * When true the local appConfig will be used over anything that was passed in.\r\n * This is used for local debugging.\r\n * When this is false authentication, locale, orgUrl, and portalUrl MUST be defined.\r\n */\r\n @property() useLocalAppConfig = false;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // State (internal)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Authentication, when not provided through the appConfig property\r\n * the local appConfig details will be used to create the authentication\r\n */\r\n @state() authentication: Auth | undefined = undefined;\r\n\r\n /** When true a loader will not be shown */\r\n @state() _isLoaded = false;\r\n\r\n /** When true we are in mobile view. */\r\n @state() isMobile = false;\r\n\r\n /** The currently active tab */\r\n @state() _activeTab: DeployAppTab = 'all-solutions';\r\n\r\n /**\r\n * Contains the translations for this component.\r\n * All UI strings should be defined here.\r\n */\r\n @state() _translations = useT9n<typeof T9nStrings>({ name: 'solutions-deploy-app', blocking: true });\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (private)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /** Used for solution queries, the search terms for ago */\r\n private _agoTerms = `${BASE_SOLUTIONS_TERMS}`;\r\n\r\n /** All of the feteched solution cards this is only populated once on load. */\r\n private _allCards: ISolutionInfoCard[] = [];\r\n\r\n /** The all solutions shell reference */\r\n private _allShell = createRef<SolutionsAllShell['el']>();\r\n\r\n /** The all-solutions tab reference */\r\n private _allTab = createRef<HTMLCalciteTabElement>();\r\n\r\n /** The all-solutions tab title reference */\r\n private _allTabTitle = createRef<HTMLCalciteTabTitleElement>();\r\n\r\n /** The resources tab reference */\r\n private _resourcesTab = createRef<HTMLCalciteTabElement>();\r\n\r\n /** The resources tab-title reference */\r\n private _resourcesTabTitle = createRef<HTMLCalciteTabTitleElement>();\r\n\r\n /** Helper module that will handle the fecthing of solutions */\r\n private _cardsFetcher: cardsFetcher.CardsFetcher | undefined;\r\n\r\n /** Helper module that will handle the fecthing of deployed solutions */\r\n private _cardsFetcherDeployed: cardsFetcher.CardsFetcher | undefined;\r\n\r\n /** Used for solution queries, should be populated when domain filters are applied */\r\n private _categories: string[] = [];\r\n\r\n /**\r\n * Used to share either local appConfig or appConfig from react app.\r\n * This is avalible after auth is initialzed in the nav component but implemented here so all downstream components can have access.\r\n */\r\n private _configContextProvider = useContextProvider({ context: configContext });\r\n\r\n /** Used for solution queries to delay the query */\r\n private _delay = false;\r\n\r\n /** The deploy app nav reference */\r\n private _deployAppNav = createRef<SolutionsDeployAppNav['el']>();\r\n\r\n /** The details shell reference */\r\n private _deployedCardPanel = createRef<SolutionDeployedCardPanel['el']>();\r\n\r\n /** All of the deployed solutions */\r\n private _deployedSolutions: any;\r\n\r\n /** The details tab reference */\r\n private _deployedCardTab = createRef<HTMLCalciteTabElement>();\r\n\r\n /** The details title tab reference */\r\n private _deployedCardTabTitle = createRef<HTMLCalciteTabTitleElement>();\r\n\r\n /** The details shell reference */\r\n private _detailsShell = createRef<SolutionDetailsPanel['el']>();\r\n\r\n /** The details tab reference */\r\n private _detailsTab = createRef<HTMLCalciteTabElement>();\r\n\r\n /** The details title tab reference */\r\n private _detailsTabTitle = createRef<HTMLCalciteTabTitleElement>();\r\n\r\n /** Used for a special case when loading a deployed solution from url */\r\n private _forceInit = false;\r\n\r\n /** Used for solution queries, true when the getSuggested filter is applied */\r\n private _getSuggested = false;\r\n\r\n /** Any filters to load after initialization...only used for first load */\r\n private _initFilters: any;\r\n\r\n /** Any tab to load after initialization...only used for first load */\r\n private _initTab: IActiveTab | undefined;\r\n\r\n /**\r\n * The mobile view context provider.\r\n * This allows any downstream components that implement contextConsumer to have access to the isMobile property.\r\n */\r\n private _isMobileContextProvider = useContextProvider({ context: isMobileContext });\r\n\r\n /** The media query used to understand if we are in mobile view */\r\n private _mediaQuery: any;\r\n\r\n /** The my solutions shell reference */\r\n private _mySolutionsShell = createRef<SolutionsDeployedShell['el']>();\r\n\r\n /** The my-solutions tab reference */\r\n private _mySolutionsTab = createRef<HTMLCalciteTabElement>();\r\n\r\n /** The my-solutions tab title reference */\r\n private _mySolutionsTabTitle = createRef<HTMLCalciteTabTitleElement>();\r\n\r\n /** Used for solution queries, defines the key field that will be used to sort the solutions */\r\n private _sortField: 'created' | 'relevance' | 'title' = 'relevance';\r\n\r\n /** Used for solution queries, conrols the order solutions are sorted */\r\n private _sortOrder: 'asc' | 'desc' = 'desc';\r\n\r\n /** Telemetry manager instance */\r\n private _telemetryManager = new TelemetryManager();\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Watch handlers\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Methods (public)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /** Closes the dialog */\r\n @method()\r\n public async selectTab(\r\n tab: IActiveTab,\r\n filters: any //stay loose for now\r\n ): Promise<boolean> {\r\n if (this._isLoaded || this._forceInit) {\r\n const searchOptions = this._getDefaultSearchOptions(filters);\r\n switch (tab.tabType) {\r\n case 'all-solutions':\r\n this._allTab.value!.selected = true;\r\n this._allTabTitle.value!.selected = true;\r\n if (searchOptions) {\r\n await this._allShell.value?.searchSolutions(searchOptions);\r\n }\r\n break;\r\n case 'resources':\r\n this._resourcesTab.value!.selected = true;\r\n this._resourcesTabTitle.value!.selected = true;\r\n break;\r\n case 'deployed-card':\r\n this._forceInit = true;\r\n this._isLoaded = false;\r\n if (this._cardsFetcherDeployed) {\r\n await this._getDeployedSolutions();\r\n }\r\n if (this._deployedSolutions?.cards?.length > 0) {\r\n let card;\r\n this._deployedSolutions.cards.some((c: any) => {\r\n if (c.id === tab.tabTitleOrId) {\r\n card = c;\r\n this.deployedCardSelected.emit({ card });\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n });\r\n this._isLoaded = true;\r\n this._forceInit = false;\r\n }\r\n break;\r\n case 'details':\r\n if (this._allCards) {\r\n let card = findSolutionByTitleOrId(this._allCards, tab.tabTitleOrId);\r\n // also search for v1 typeKeyword id\r\n card = card ? card : findSolutionByTypeKeywordSolutionId(this._allCards, tab.tabTitleOrId);\r\n if (card) {\r\n this._detailsTab.value!.selected = true;\r\n this._detailsTabTitle.value!.selected = true;\r\n this.detailsCardSelected.emit(card);\r\n } else {\r\n // if no card is found we should open the all-solutions tab\r\n tab.tabType = 'all-solutions';\r\n this._allTab.value!.selected = true;\r\n this._allTabTitle.value!.selected = true;\r\n }\r\n }\r\n break;\r\n case 'deployments':\r\n this._mySolutionsTab.value!.selected = true;\r\n this._mySolutionsTabTitle.value!.selected = true;\r\n if (searchOptions) {\r\n await this._mySolutionsShell.value?.searchSolutions(searchOptions);\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n this._setActiveTab(new CustomEvent('setActiveTab', { detail: tab }));\r\n this._blurTabs();\r\n return true;\r\n } else {\r\n // When loading url params we need to delay until after the auth initialization\r\n this._initTab = tab;\r\n this._initFilters = filters;\r\n return false;\r\n }\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Events (public)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /** Tab selected event */\r\n deployAppTabSelected = createEvent<DeployAppTab>();\r\n\r\n /** Details card selected event */\r\n detailsCardSelected = createEvent<ISolutionInfoCard>();\r\n\r\n /** Emitted on demand when the details card is selected. */\r\n deployedCardSelected = createEvent<IDeployCard>();\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Functions (lifecycle)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /** Invoked each time your component is added to the document's DOM. */\r\n override async connectedCallback(): Promise<void> {\r\n // This is tied to a css media query\r\n // We will use this to track when the filter was forced open/closed based on the size of the browser\r\n // If you need to change this size you need to also change the associated size in css\r\n this._mediaQuery = window.matchMedia('(max-width: 800px)');\r\n this._mediaQuery.addEventListener('change', this._mediaQueryChange);\r\n this._mediaQueryChange(this._mediaQuery);\r\n }\r\n\r\n /**\r\n * Called once just after the component is first connected to the DOM.\r\n *\r\n * @returns Promise when complete\r\n */\r\n async load(): Promise<void> {\r\n if (this.useLocalAppConfig) {\r\n this.appConfig = _appConfig;\r\n }\r\n }\r\n\r\n /** Renders the component. */\r\n override render(): JsxNode {\r\n const loaderCss = this._isLoaded ? 'display-none' : '';\r\n const tabsCss = this._isLoaded ? '' : 'display-none';\r\n return (\r\n <calcite-shell>\r\n <solutions-deploy-app-nav\r\n appConfig={this.appConfig}\r\n initTab={this.initTab}\r\n onauthInit={this._handleAuthInit}\r\n ref={this._deployAppNav}\r\n slot='header'\r\n useLocalAppConfig={this.useLocalAppConfig}\r\n />\r\n {this._isSearchToolbarShowing() && <div class='border' slot='header' />}\r\n <solutions-searchsort-toolbar\r\n isMobile={this.isMobile}\r\n slot='header'\r\n />\r\n <calcite-loader\r\n class={loaderCss}\r\n id='solutions-loader'\r\n label={this._translations.fetchingAllSolutions}\r\n >\r\n </calcite-loader>\r\n <calcite-tabs class={tabsCss} scale='l'>\r\n <calcite-tab-nav\r\n class='display-none'\r\n slot='title-group'\r\n >\r\n <calcite-tab-title\r\n ref={this._allTabTitle}\r\n >\r\n {this._translations.allSolutions}\r\n </calcite-tab-title>\r\n <calcite-tab-title\r\n ref={this._mySolutionsTabTitle}\r\n >\r\n {this._translations.mySolutions}\r\n </calcite-tab-title>\r\n <calcite-tab-title\r\n ref={this._resourcesTabTitle}\r\n >\r\n {this._translations.solutionResources}\r\n </calcite-tab-title>\r\n <calcite-tab-title\r\n class='display-none'\r\n ref={this._detailsTabTitle}\r\n />\r\n <calcite-tab-title\r\n class='display-none'\r\n ref={this._deployedCardTabTitle}\r\n />\r\n </calcite-tab-nav>\r\n <calcite-tab\r\n class='back-color-override tab-space-0'\r\n ref={this._allTab}\r\n selected\r\n >\r\n <solutions-all-shell\r\n class='height-100'\r\n ref={this._allShell}\r\n />\r\n </calcite-tab>\r\n <calcite-tab\r\n class='back-color-override tab-space-0'\r\n ref={this._mySolutionsTab}\r\n >\r\n <solutions-deployed-shell\r\n class='height-100'\r\n ref={this._mySolutionsShell}\r\n />\r\n </calcite-tab>\r\n <calcite-tab\r\n class='back-color-override tab-space-0'\r\n ref={this._resourcesTab}\r\n >\r\n <solutions-resources-shell class='height-100' />\r\n </calcite-tab>\r\n <calcite-tab\r\n class='back-color-override'\r\n ref={this._detailsTab}\r\n >\r\n <solution-details-panel\r\n class='height-100'\r\n ref={this._detailsShell}\r\n />\r\n </calcite-tab>\r\n <calcite-tab\r\n class='back-color-override tab-space-0'\r\n ref={this._deployedCardTab}\r\n >\r\n <solution-deployed-card-panel\r\n class='shell-container height-100'\r\n ref={this._deployedCardPanel}\r\n />\r\n </calcite-tab>\r\n </calcite-tabs>\r\n </calcite-shell>\r\n );\r\n }\r\n\r\n /** Invoked when the component is removed from the document's DOM.\r\n * This callback is the main signal to the element that it may no longer be used.\r\n * disconnectedCallback() should ensure that nothing is holding a reference to the element\r\n * (such as event listeners added to nodes external to the element), so that it is free to be garbage collected.\r\n */\r\n override disconnectedCallback(): void {\r\n this._mediaQuery?.removeEventListener('change', this._mediaQueryChange);\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Functions (private)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /** Invoked when the auth is initialized in the nav component. */\r\n private async _handleAuthInit(\r\n evt: CustomEvent\r\n ): Promise<void> {\r\n const config = evt.detail;\r\n \r\n // Initialize telemetrySession with a safe default before setting context\r\n if (!config.telemetrySession) {\r\n config.telemetrySession = TelemetryManager.getDisabledSession();\r\n }\r\n \r\n this._configContextProvider.setValue(config);\r\n\r\n if (config.authentication) {\r\n this.authentication = config.authentication;\r\n }\r\n\r\n this._cardsFetcherDeployed = new cardsFetcher.CardsFetcher(config.locale, config.orgUrl, config.portalUrl);\r\n\r\n this._cardsFetcher = new cardsFetcher.CardsFetcher(config.locale, config.orgUrl, config.portalUrl);\r\n await this._getSolutions(config.primarySolutionsGroupId);\r\n\r\n this._configContextProvider.value.allCards = this._allCards;\r\n\r\n // Initialize telemetry (will replace the disabled session if telemetry is enabled)\r\n await this._initializeTelemetry();\r\n\r\n this._isLoaded = true;\r\n\r\n // _initTab is levereaged for url params when we have a tab from the url before we have full initialized\r\n if (this._initTab) {\r\n this.selectTab(this._initTab!, this._initFilters);\r\n this._initTab = undefined;\r\n this._initFilters = undefined;\r\n }\r\n }\r\n\r\n /** Update the mobile view state when this media query change occurs. */\r\n private _mediaQueryChange(event: any) {\r\n this.isMobile = event.matches;\r\n this._isMobileContextProvider.setValue(this.isMobile);\r\n }\r\n\r\n /** Emit deployAppTabSelected event when a tab is selected */\r\n private _setActiveTab(evt: CustomEvent): void {\r\n const navTab = evt.detail as INavTab;\r\n const tabType = navTab.tabType;\r\n this._activeTab = tabType;\r\n switch (tabType) {\r\n case 'all-solutions':\r\n this._allTabTitle.value?.click();\r\n break;\r\n case 'deployments':\r\n this._mySolutionsTabTitle.value?.click();\r\n break;\r\n case 'resources':\r\n this._resourcesTabTitle.value?.click();\r\n break;\r\n case 'deployed-card':\r\n this._deployedCardTabTitle.value?.click();\r\n case 'details':\r\n this._detailsTabTitle.value?.click();\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n if (tabType !== 'details' && tabType !== 'deployed-card') {\r\n this._deployAppNav.value!.activateMenuItem(tabType);\r\n this.deployAppTabSelected.emit(tabType);\r\n }\r\n }\r\n\r\n /** Respond to detailsCardSelected event and select the details tab */\r\n private _detailsCardSelected(): void {\r\n this._activeTab = 'details';\r\n this._detailsTabTitle.value!.selected = true;\r\n this._detailsTab.value!.selected = true;\r\n this._deployAppNav.value!.clearMenuItems();\r\n }\r\n\r\n /** Respond to deployedCardSelected event and select the deployed-card tab */\r\n private _deployedCardSelected(): void {\r\n this._activeTab = 'deployed-card';\r\n this._deployedCardTabTitle.value!.selected = true;\r\n this._deployedCardTab.value!.selected = true;\r\n this._deployAppNav.value!.clearMenuItems();\r\n }\r\n\r\n /** Respond to deployProgressEnd event and select the my-solutions tab */\r\n private _deployProgressEnd(): void {\r\n this._activeTab = 'deployments';\r\n this._mySolutionsTabTitle.value!.selected = true;\r\n this._mySolutionsTab.value!.selected = true;\r\n }\r\n\r\n /** Initialize telemetry if enabled in app config */\r\n private async _initializeTelemetry(): Promise<void> {\r\n const config = this._configContextProvider.value;\r\n if (!this.authentication || !config) return;\r\n\r\n const telemetrySession = await this._telemetryManager.initializeTelemetry(this.authentication, config);\r\n this._configContextProvider.value.telemetrySession = telemetrySession;\r\n }\r\n\r\n /** Get the solutions from the ago or enterprise org. */\r\n private async _getSolutions(\r\n primarySolutionsGroupId: string\r\n ): Promise<ISolutionInfoCard[]> {\r\n const fetchedCards = await this._cardsFetcher?.requestAvailableSolutionCards(\r\n {\r\n 'q': this._agoTerms,\r\n 'filter': 'type:Solution',\r\n 'sortField': this._sortField,\r\n 'sortOrder': this._sortOrder, // TODO default search when old app loads is desc...may need to switch this for other\r\n 'nextStart': -1,\r\n 'categories': this._categories,\r\n 'delay': this._delay,\r\n 'getSuggested': this._getSuggested\r\n },\r\n primarySolutionsGroupId,\r\n '', //this.enterpriseSolutionsGroupId, TODO both are passed by default in the old app...don't follow why\r\n this._configContextProvider.value.userSession,\r\n {\r\n 'num': 1000\r\n }\r\n );\r\n\r\n if (this._allCards.length === 0 && fetchedCards?.cards) {\r\n this._allCards = fetchedCards?.cards;\r\n }\r\n\r\n //this.cardsFetched.emit(solutionDetailsCards.length);\r\n //return solutionDetailsCards;\r\n return this._allCards;\r\n }\r\n\r\n /** Get the deployed solutions */\r\n private async _getDeployedSolutions(): Promise<void> {\r\n const authentication = this._configContextProvider.value.authentication;\r\n const userSession = this._configContextProvider.value.userSession;\r\n if (authentication && userSession && authentication.IsSignedIn) {\r\n this._deployedSolutions = await getDeployedSolutions(\r\n authentication,\r\n userSession,\r\n this._cardsFetcher!,\r\n this._cardsFetcherDeployed!,\r\n BASE_DEPLOYED_TERMS,\r\n 'created'\r\n );\r\n }\r\n }\r\n\r\n /** Blur all tabs */\r\n private _blurTabs(): void {\r\n this._allTabTitle.value?.blur();\r\n this._resourcesTabTitle.value?.blur();\r\n this._detailsTabTitle.value?.blur();\r\n this._mySolutionsTabTitle.value?.blur();\r\n }\r\n\r\n /** Determine if the search/sort toolbar should be displayed based on current tab and authentication */\r\n private _isSearchToolbarShowing(): boolean {\r\n return this._activeTab === 'all-solutions' ||\r\n (this._activeTab === 'deployments' && this.authentication?.IsSignedIn === true);\r\n }\r\n\r\n /** Get the searchOptions from the provided filters we get from the apps url parsing */\r\n private _getDefaultSearchOptions(\r\n filters: any\r\n ): any {\r\n let searchOptions = undefined;\r\n if (filters) {\r\n const domain = filters.domain\r\n const industry = filters.industry\r\n const offerType = filters.offerType\r\n const searchTerm = filters.searchTerm\r\n const displayValue = '';\r\n let sortType = filters.sortField\r\n const owner = filters.owner;\r\n\r\n searchOptions = domain || industry ? {\r\n type: domain ? 'domain' : industry ? 'industry' : ''\r\n } : undefined\r\n\r\n if (domain) {\r\n searchOptions = searchOptions ? { ...searchOptions, domain } : { domain }\r\n }\r\n\r\n if (industry) {\r\n searchOptions = searchOptions ? { ...searchOptions, industry } : { industry }\r\n }\r\n\r\n if (searchTerm) {\r\n searchOptions = searchOptions ? { ...searchOptions, searchTerm } : { searchTerm }\r\n }\r\n\r\n // TODO not sure how to set the required value\r\n if (searchOptions) {\r\n // TODO understand how we are supposed to determine the displayValue\r\n searchOptions = { ...searchOptions, displayValue }\r\n }\r\n\r\n if (sortType) {\r\n searchOptions = searchOptions ? { ...searchOptions, sortType } : { sortType }\r\n }\r\n\r\n // new and suggested are general sortTypes now\r\n if (offerType) {\r\n sortType = offerType.toLowerCase();\r\n searchOptions = searchOptions ? { ...searchOptions, sortType } : { sortType }\r\n }\r\n\r\n if (owner) {\r\n searchOptions = searchOptions ? { ...searchOptions, owner } : { owner }\r\n }\r\n\r\n }\r\n return searchOptions\r\n }\r\n}\r\n"],"names":["ref$jsx","cardsFetcher.CardsFetcher"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsFM,MAAO,2BAA2B,WAAU;AAAA,EAUhD,cAAA;AACE,UAAA;AAqBU,SAAA,gBAAgB;AAGhB,SAAA,WAAqB;AAOrB,SAAA,oBAAoB;AAYvB,SAAA,iBAAmC;AAGnC,SAAA,YAAY;AAGZ,SAAA,WAAW;AAGX,SAAA,aAA2B;AAM3B,SAAA,gBAAgB,OAA0B,EAAE,MAAM,wBAAwB,UAAU,MAAM;AASnG,SAAQ,YAAY,GAAG,oBAAoB;AAG3C,SAAQ,YAAiC,CAAA;AAGzC,SAAQ,YAAY,UAAA;AAGpB,SAAQ,UAAU,UAAA;AAGlB,SAAQ,eAAe,UAAA;AAGvB,SAAQ,gBAAgB,UAAA;AAGxB,SAAQ,qBAAqB,UAAA;AAS7B,SAAQ,cAAwB,CAAA;AAMhC,SAAQ,yBAAyB,mBAAmB,EAAE,SAAS,eAAe;AAG9E,SAAQ,SAAS;AAGjB,SAAQ,gBAAgB,UAAA;AAGxB,SAAQ,qBAAqB,UAAA;AAM7B,SAAQ,mBAAmB,UAAA;AAG3B,SAAQ,wBAAwB,UAAA;AAGhC,SAAQ,gBAAgB,UAAA;AAGxB,SAAQ,cAAc,UAAA;AAGtB,SAAQ,mBAAmB,UAAA;AAG3B,SAAQ,aAAa;AAGrB,SAAQ,gBAAgB;AAYxB,SAAQ,2BAA2B,mBAAmB,EAAE,SAAS,iBAAiB;AAMlF,SAAQ,oBAAoB,UAAA;AAG5B,SAAQ,kBAAkB,UAAA;AAG1B,SAAQ,uBAAuB,UAAA;AAG/B,SAAQ,aAAgD;AAGxD,SAAQ,aAA6B;AAGrC,SAAQ,oBAAoB,IAAI,iBAAA;AAoGhC,SAAA,uBAAuB,YAAA;AAGvB,SAAA,sBAAsB,YAAA;AAGtB,SAAA,uBAAuB,YAAA;AA/QrB,SAAK,SAAS,QAAQ,uBAAuB,KAAK,oBAAoB;AACtE,SAAK,SAAS,QAAQ,wBAAwB,KAAK,qBAAqB;AACxE,SAAK,SAAS,QAAQ,qBAAqB,KAAK,kBAAkB;AAClE,SAAK,SAAS,QAAQ,kBAAkB,KAAK,aAAa;AAC1D,SAAK,oBAAoB,KAAK,kBAAkB,KAAK,IAAI;AAAA,EAC3D;AAAA;;;EATA,OAAA;AAAA,SAAgB,SAAS;AAAA,EAAA;AAAA,EAyLzB,MAAa,UACX,KACA,SACiB;AACjB,QAAI,KAAK,aAAa,KAAK,YAAY;AACrC,YAAM,gBAAgB,KAAK,yBAAyB,OAAO;AAC3D,cAAQ,IAAI,SAAA;AAAA,QACV,KAAK;AACH,eAAK,QAAQ,MAAO,WAAW;AAC/B,eAAK,aAAa,MAAO,WAAW;AACpC,cAAI,eAAe;AACjB,kBAAM,KAAK,UAAU,OAAO,gBAAgB,aAAa;AAAA,UAC3D;AACA;AAAA,QACF,KAAK;AACH,eAAK,cAAc,MAAO,WAAW;AACrC,eAAK,mBAAmB,MAAO,WAAW;AAC1C;AAAA,QACF,KAAK;AACH,eAAK,aAAa;AAClB,eAAK,YAAY;AACjB,cAAI,KAAK,uBAAuB;AAC9B,kBAAM,KAAK,sBAAA;AAAA,UACb;AACA,cAAI,KAAK,oBAAoB,OAAO,SAAS,GAAG;AAC9C,gBAAI;AACJ,iBAAK,mBAAmB,MAAM,KAAK,CAAC,MAAU;AAC5C,kBAAI,EAAE,OAAO,IAAI,cAAc;AAC7B,uBAAO;AACP,qBAAK,qBAAqB,KAAK,EAAE,KAAA,CAAM;AACvC,uBAAO;AAAA,cACT,OAAO;AACL,uBAAO;AAAA,cACT;AAAA,YACF,CAAC;AACD,iBAAK,YAAY;AACjB,iBAAK,aAAa;AAAA,UACpB;AACA;AAAA,QACF,KAAK;AACH,cAAI,KAAK,WAAW;AAClB,gBAAI,OAAO,wBAAwB,KAAK,WAAW,IAAI,YAAY;AAEnE,mBAAO,OAAO,OAAO,oCAAoC,KAAK,WAAW,IAAI,YAAY;AACzF,gBAAI,MAAM;AACR,mBAAK,YAAY,MAAO,WAAW;AACnC,mBAAK,iBAAiB,MAAO,WAAW;AACxC,mBAAK,oBAAoB,KAAK,IAAI;AAAA,YACpC,OAAO;AAEL,kBAAI,UAAU;AACd,mBAAK,QAAQ,MAAO,WAAW;AAC/B,mBAAK,aAAa,MAAO,WAAW;AAAA,YACtC;AAAA,UACF;AACA;AAAA,QACF,KAAK;AACH,eAAK,gBAAgB,MAAO,WAAW;AACvC,eAAK,qBAAqB,MAAO,WAAW;AAC5C,cAAI,eAAe;AACjB,kBAAM,KAAK,kBAAkB,OAAO,gBAAgB,aAAa;AAAA,UACnE;AACA;AAAA,MAEA;AAEJ,WAAK,cAAc,IAAI,YAAY,gBAAgB,EAAE,QAAQ,IAAA,CAAK,CAAC;AACnE,WAAK,UAAA;AACL,aAAO;AAAA,IACT,OAAO;AAEL,WAAK,WAAW;AAChB,WAAK,eAAe;AACpB,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAwBA,MAAe,oBAAkC;;AAI/C,SAAK,cAAc,OAAO,WAAW,oBAAoB;AACzD,SAAK,YAAY,iBAAiB,UAAU,KAAK,iBAAiB;AAClE,SAAK,kBAAkB,KAAK,WAAW;AAAA,EACxC;AAAA,EAOD,MAAM,OAAqB;AACzB,QAAI,KAAK,mBAAmB;AAC1B,WAAK,YAAY;AAAA,IACnB;AAAA,EACF;AAAA,EAGS,SAAiB;AACxB,UAAM,YAAY,KAAK,YAAY,iBAAiB;AACpD,UAAM,UAAU,KAAK,YAAY,KAAK;AACtC,WAAO,2DAGU,KAAK,SAAS,aAChB,KAAK,OAAO,cACT,KAAK,eAAe,mCAGb,KAAK,iBAAiB,IAAAA,IAFpC,KAAK,aAAa,CAAA,+BAIxB,KAAK,6BAAyB,gDAAwC,EAAA,2CAE3D,KAAK,QAAQ,qEAAA,aAIhB,SAAS,CAAA,+BAET,KAAK,cAAc,oBAAoB,yCAAA,aAG3B,OAAO,CAAA,sFAAAA,IAMjB,KAAK,YAAY,CAAA,IAErB,KAAK,cAAc,YAAY,0CAAAA,IAG3B,KAAK,oBAAoB,CAAA,IAE7B,KAAK,cAAc,WAAW,0CAAAA,IAG1B,KAAK,kBAAkB,CAAA,IAE3B,KAAK,cAAc,iBAAiB,+DAAAA,IAIhC,KAAK,gBAAgB,CAAA,gEAAAA,IAIrB,KAAK,qBAAqB,CAAA,wGAAAA,IAK5B,KAAK,OAAO,CAAA,4CAAAA,IAKV,KAAK,SAAS,CAAA,6FAAAA,IAKhB,KAAK,eAAe,CAAA,iDAAAA,IAIlB,KAAK,iBAAiB,CAAA,kGAAAA,IAKxB,KAAK,aAAa,CAAA,qIAAAA,IAMlB,KAAK,WAAW,oDAId,KAAK,aAAa,CAAA,gGAAAA,IAKpB,KAAK,gBAAgB,CAAA,qEAAAA,IAInB,KAAK,kBAAkB,CAAA;AAAA,EAMxC;AAAA,EAOS,uBAA4B;;AACnC,SAAK,aAAa,oBAAoB,UAAU,KAAK,iBAAiB;AAAA,EACvE;AAAA,EASD,MAAc,gBACZ,KACc;AACd,UAAM,SAAS,IAAI;AAGnB,QAAI,CAAC,OAAO,kBAAkB;AAC5B,aAAO,mBAAmB,iBAAiB,mBAAA;AAAA,IAC7C;AAEA,SAAK,uBAAuB,SAAS,MAAM;AAE3C,QAAI,OAAO,gBAAgB;AACzB,WAAK,iBAAiB,OAAO;AAAA,IAC/B;AAEA,SAAK,wBAAwB,IAAIC,aAA0B,OAAO,QAAQ,OAAO,QAAQ,OAAO,SAAS;AAEzG,SAAK,gBAAgB,IAAIA,aAA0B,OAAO,QAAQ,OAAO,QAAQ,OAAO,SAAS;AACjG,UAAM,KAAK,cAAc,OAAO,uBAAuB;AAEvD,SAAK,uBAAuB,MAAM,WAAW,KAAK;AAGlD,UAAM,KAAK,qBAAA;AAEX,SAAK,YAAY;AAGjB,QAAI,KAAK,UAAU;AACjB,WAAK,UAAU,KAAK,UAAW,KAAK,YAAY;AAChD,WAAK,WAAW;AAChB,WAAK,eAAe;AAAA,IACtB;AAAA,EACF;AAAA,EAGQ,kBAAkB,OAAU;AAClC,SAAK,WAAW,MAAM;AACtB,SAAK,yBAAyB,SAAS,KAAK,QAAQ;AAAA,EACtD;AAAA,EAGQ,cAAc,KAAuB;AAC3C,UAAM,SAAS,IAAI;AACnB,UAAM,UAAU,OAAO;AACvB,SAAK,aAAa;AAClB,YAAQ,SAAA;AAAA,MACN,KAAK;AACH,aAAK,aAAa,OAAO,MAAA;AACzB;AAAA,MACF,KAAK;AACH,aAAK,qBAAqB,OAAO,MAAA;AACjC;AAAA,MACF,KAAK;AACH,aAAK,mBAAmB,OAAO,MAAA;AAC/B;AAAA,MACF,KAAK;AACH,aAAK,sBAAsB,OAAO,MAAA;AAAA,MACpC,KAAK;AACH,aAAK,iBAAiB,OAAO,MAAA;AAC7B;AAAA,IAGA;AAEJ,QAAI,YAAY,aAAa,YAAY,iBAAiB;AACxD,WAAK,cAAc,MAAO,iBAAiB,OAAO;AAClD,WAAK,qBAAqB,KAAK,OAAO;AAAA,IACxC;AAAA,EACF;AAAA,EAGQ,uBAA4B;AAClC,SAAK,aAAa;AAClB,SAAK,iBAAiB,MAAO,WAAW;AACxC,SAAK,YAAY,MAAO,WAAW;AACnC,SAAK,cAAc,MAAO,eAAA;AAAA,EAC5B;AAAA,EAGQ,wBAA6B;AACnC,SAAK,aAAa;AAClB,SAAK,sBAAsB,MAAO,WAAW;AAC7C,SAAK,iBAAiB,MAAO,WAAW;AACxC,SAAK,cAAc,MAAO,eAAA;AAAA,EAC5B;AAAA,EAGQ,qBAA0B;AAChC,SAAK,aAAa;AAClB,SAAK,qBAAqB,MAAO,WAAW;AAC5C,SAAK,gBAAgB,MAAO,WAAW;AAAA,EACzC;AAAA,EAGA,MAAc,uBAAqC;AACjD,UAAM,SAAS,KAAK,uBAAuB;AAC3C,QAAI,CAAC,KAAK,kBAAkB,CAAC;AAAQ;AAErC,UAAM,mBAAmB,MAAM,KAAK,kBAAkB,oBAAoB,KAAK,gBAAgB,MAAM;AACrG,SAAK,uBAAuB,MAAM,mBAAmB;AAAA,EACvD;AAAA,EAGA,MAAc,cACZ,yBAC6B;AAC7B,UAAM,eAAe,MAAM,KAAK,eAAe;AAAA,MAC7C;AAAA,QACE,KAAK,KAAK;AAAA,QACV,UAAU;AAAA,QACV,aAAa,KAAK;AAAA,QAClB,aAAa,KAAK;AAAA;AAAA,QAClB,aAAa;AAAA,QACb,cAAc,KAAK;AAAA,QACnB,SAAS,KAAK;AAAA,QACd,gBAAgB,KAAK;AAAA,MAAA;AAAA,MAEvB;AAAA,MACA;AAAA;AAAA,MACA,KAAK,uBAAuB,MAAM;AAAA,MAClC;AAAA,QACE,OAAO;AAAA,MAAA;AAAA,IACR;AAGH,QAAI,KAAK,UAAU,WAAW,KAAK,cAAc,OAAO;AACtD,WAAK,YAAY,cAAc;AAAA,IACjC;AAIA,WAAO,KAAK;AAAA,EACd;AAAA,EAGA,MAAc,wBAAsC;AAClD,UAAM,iBAAiB,KAAK,uBAAuB,MAAM;AACzD,UAAM,cAAc,KAAK,uBAAuB,MAAM;AACtD,QAAI,kBAAkB,eAAe,eAAe,YAAY;AAC9D,WAAK,qBAAqB,MAAM,qBAC9B,gBACA,aACA,KAAK,eACL,KAAK,uBACL,qBACA,SAAS;AAAA,IAEb;AAAA,EACF;AAAA,EAGQ,YAAiB;AACvB,SAAK,aAAa,OAAO,KAAA;AACzB,SAAK,mBAAmB,OAAO,KAAA;AAC/B,SAAK,iBAAiB,OAAO,KAAA;AAC7B,SAAK,qBAAqB,OAAO,KAAA;AAAA,EACnC;AAAA,EAGQ,0BAAkC;AACxC,WAAO,KAAK,eAAe,mBACxB,KAAK,eAAe,iBAAiB,KAAK,gBAAgB,eAAe;AAAA,EAC9E;AAAA,EAGQ,yBACN,SACI;AACJ,QAAI,gBAAgB;AACpB,QAAI,SAAS;AACX,YAAM,SAAS,QAAQ;AACvB,YAAM,WAAW,QAAQ;AACzB,YAAM,YAAY,QAAQ;AAC1B,YAAM,aAAa,QAAQ;AAC3B,YAAM,eAAe;AACrB,UAAI,WAAW,QAAQ;AACvB,YAAM,QAAQ,QAAQ;AAEtB,sBAAgB,UAAU,WAAW;AAAA,QACnC,MAAM,SAAS,WAAW,WAAW,aAAa;AAAA,MAAA,IAChD;AAEJ,UAAI,QAAQ;AACV,wBAAgB,gBAAgB,EAAE,GAAG,eAAe,OAAA,IAAW,EAAE,OAAA;AAAA,MACnE;AAEA,UAAI,UAAU;AACZ,wBAAgB,gBAAgB,EAAE,GAAG,eAAe,SAAA,IAAa,EAAE,SAAA;AAAA,MACrE;AAEA,UAAI,YAAY;AACd,wBAAgB,gBAAgB,EAAE,GAAG,eAAe,WAAA,IAAe,EAAE,WAAA;AAAA,MACvE;AAGA,UAAI,eAAe;AAEjB,wBAAgB,EAAE,GAAG,eAAe,aAAA;AAAA,MACtC;AAEA,UAAI,UAAU;AACZ,wBAAgB,gBAAgB,EAAE,GAAG,eAAe,SAAA,IAAa,EAAE,SAAA;AAAA,MACrE;AAGA,UAAI,WAAW;AACb,mBAAW,UAAU,YAAA;AACrB,wBAAgB,gBAAgB,EAAE,GAAG,eAAe,SAAA,IAAa,EAAE,SAAA;AAAA,MACrE;AAEA,UAAI,OAAO;AACT,wBAAgB,gBAAgB,EAAE,GAAG,eAAe,MAAA,IAAU,EAAE,MAAA;AAAA,MAClE;AAAA,IAEF;AACA,WAAO;AAAA,EACT;AACD;;"}
1
+ {"version":3,"file":"customElement.js","sources":["../../../src/components/solutions-deploy-app/solutions-deploy-app.tsx"],"sourcesContent":["/**\r\n * @license\r\n * Copyright 2025 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the 'License');\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an 'AS IS' BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\nimport type T9nStrings from './assets/t9n/messages.en.json';\r\nimport { useT9n } from '../../controllers/useT9n';\r\nimport {\r\n createEvent,\r\n h,\r\n LitElement,\r\n method,\r\n property,\r\n state,\r\n} from '@arcgis/lumina';\r\nimport type {\r\n JsxNode,\r\n} from '@arcgis/lumina';\r\nimport { styles } from './solutions-deploy-app.css';\r\nimport { TelemetryManager } from '../../utils/telemetryManager';\r\nimport type {\r\n DeployAppTab,\r\n IActiveTab,\r\n IDeployCard,\r\n INavTab,\r\n ISolutionInfoCard,\r\n} from '../../utils/interfaces';\r\nimport { createRef } from 'lit-html/directives/ref.js';\r\nimport * as cardsFetcher from '../../utils/CardsFetcher';\r\nimport {\r\n getDeployedSolutions\r\n} from '../../utils/cardFetchingUtils';\r\nimport {\r\n BASE_SOLUTIONS_TERMS,\r\n} from '../../utils/interfaces';\r\nimport type {\r\n SortType,\r\n} from '../../utils/interfaces';\r\nimport {\r\n BASE_DEPLOYED_TERMS\r\n} from '../../utils/interfaces';\r\nimport {\r\n useContextProvider,\r\n} from '@arcgis/lumina/context';\r\nimport {\r\n configContext,\r\n isMobileContext,\r\n} from '../../utils/deployAppContexts';\r\nimport {\r\n findSolutionByTitleOrId,\r\n findSolutionByTypeKeywordSolutionId\r\n} from '../../utils/cardsHelpers';\r\nimport { Auth } from '../../utils/Auth';\r\nimport * as _appConfig from '../../assets/config/appConfig.json';\r\nimport { SolutionsAllShell } from '../solutions-all-shell/solutions-all-shell';\r\nimport { SolutionsDeployedShell } from '../solutions-deployed-shell/solutions-deployed-shell';\r\nimport { SolutionDetailsPanel } from '../solution-details-panel/solution-details-panel';\r\nimport { SolutionsDeployAppNav } from '../solutions-deploy-app-nav/solutions-deploy-app-nav';\r\nimport { SolutionDeployedCardPanel } from '../solution-deployed-card-panel/solution-deployed-card-panel';\r\n\r\ndeclare global {\r\n interface DeclareElements {\r\n 'solutions-deploy-app': SolutionsDeployApp;\r\n }\r\n}\r\n\r\n// TODO consolidate card fetching and context providers here\r\n// we only need to fetch all of the cards 1 time at the start.\r\n// those cards will be shared through a context or event.\r\n// Then I was thinking that the cardFetcher and deployedCardFetcher would also be shared in a context\r\n// so they can all be setup in one place but then we will still do other queries for solutions\r\n// or deployed solutions based on search terms/filters in various components using the fetcher instance\r\n// that we shared through a context from the source app component\r\n\r\nexport class SolutionsDeployApp extends LitElement {\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Overrides (internal)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n static override styles = styles;\r\n\r\n constructor() {\r\n super();\r\n this.listenOn(window, 'detailsCardSelected', this._detailsCardSelected);\r\n this.listenOn(window, 'deployedCardSelected', this._deployedCardSelected);\r\n this.listenOn(window, 'deployProgressEnd', this._deployProgressEnd);\r\n this.listenOn(window, 'navTabSelected', this._setActiveTab);\r\n this._mediaQueryChange = this._mediaQueryChange.bind(this);\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (public)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /** App config to use when useLocalAppConfig is false */\r\n @property() appConfig: any;\r\n\r\n /** When defined this is the tab that should be loaded by default */\r\n @property() initTab: DeployAppTab | undefined;\r\n\r\n /** When defined this will contain the solution name or id that should be loaded by default */\r\n @property() initTitleOrId = '';\r\n\r\n /** Define how the cards will be sorted */\r\n @property() sortType: SortType = 'relevance';\r\n\r\n /**\r\n * When true the local appConfig will be used over anything that was passed in.\r\n * This is used for local debugging.\r\n * When this is false authentication, locale, orgUrl, and portalUrl MUST be defined.\r\n */\r\n @property() useLocalAppConfig = false;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // State (internal)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Authentication, when not provided through the appConfig property\r\n * the local appConfig details will be used to create the authentication\r\n */\r\n @state() authentication: Auth | undefined = undefined;\r\n\r\n /** When true a loader will not be shown */\r\n @state() _isLoaded = false;\r\n\r\n /** When true we are in mobile view. */\r\n @state() isMobile = false;\r\n\r\n /** The currently active tab */\r\n @state() _activeTab: DeployAppTab = 'all-solutions';\r\n\r\n /**\r\n * Contains the translations for this component.\r\n * All UI strings should be defined here.\r\n */\r\n @state() _translations = useT9n<typeof T9nStrings>({ name: 'solutions-deploy-app', blocking: true });\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (private)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /** Used for solution queries, the search terms for ago */\r\n private _agoTerms = `${BASE_SOLUTIONS_TERMS}`;\r\n\r\n /** All of the feteched solution cards this is only populated once on load. */\r\n private _allCards: ISolutionInfoCard[] = [];\r\n\r\n /** The all solutions shell reference */\r\n private _allShell = createRef<SolutionsAllShell['el']>();\r\n\r\n /** The all-solutions tab reference */\r\n private _allTab = createRef<HTMLCalciteTabElement>();\r\n\r\n /** The all-solutions tab title reference */\r\n private _allTabTitle = createRef<HTMLCalciteTabTitleElement>();\r\n\r\n /** The resources tab reference */\r\n private _resourcesTab = createRef<HTMLCalciteTabElement>();\r\n\r\n /** The resources tab-title reference */\r\n private _resourcesTabTitle = createRef<HTMLCalciteTabTitleElement>();\r\n\r\n /** Helper module that will handle the fecthing of solutions */\r\n private _cardsFetcher: cardsFetcher.CardsFetcher | undefined;\r\n\r\n /** Helper module that will handle the fecthing of deployed solutions */\r\n private _cardsFetcherDeployed: cardsFetcher.CardsFetcher | undefined;\r\n\r\n /** Used for solution queries, should be populated when domain filters are applied */\r\n private _categories: string[] = [];\r\n\r\n /**\r\n * Used to share either local appConfig or appConfig from react app.\r\n * This is avalible after auth is initialzed in the nav component but implemented here so all downstream components can have access.\r\n */\r\n private _configContextProvider = useContextProvider({ context: configContext });\r\n\r\n /** Used for solution queries to delay the query */\r\n private _delay = false;\r\n\r\n /** The deploy app nav reference */\r\n private _deployAppNav = createRef<SolutionsDeployAppNav['el']>();\r\n\r\n /** The details shell reference */\r\n private _deployedCardPanel = createRef<SolutionDeployedCardPanel['el']>();\r\n\r\n /** All of the deployed solutions */\r\n private _deployedSolutions: any;\r\n\r\n /** The details tab reference */\r\n private _deployedCardTab = createRef<HTMLCalciteTabElement>();\r\n\r\n /** The details title tab reference */\r\n private _deployedCardTabTitle = createRef<HTMLCalciteTabTitleElement>();\r\n\r\n /** The details shell reference */\r\n private _detailsShell = createRef<SolutionDetailsPanel['el']>();\r\n\r\n /** The details tab reference */\r\n private _detailsTab = createRef<HTMLCalciteTabElement>();\r\n\r\n /** The details title tab reference */\r\n private _detailsTabTitle = createRef<HTMLCalciteTabTitleElement>();\r\n\r\n /** Used for a special case when loading a deployed solution from url */\r\n private _forceInit = false;\r\n\r\n /** Used for solution queries, true when the getSuggested filter is applied */\r\n private _getSuggested = false;\r\n\r\n /** Any filters to load after initialization...only used for first load */\r\n private _initFilters: any;\r\n\r\n /** Any tab to load after initialization...only used for first load */\r\n private _initTab: IActiveTab | undefined;\r\n\r\n /**\r\n * The mobile view context provider.\r\n * This allows any downstream components that implement contextConsumer to have access to the isMobile property.\r\n */\r\n private _isMobileContextProvider = useContextProvider({ context: isMobileContext });\r\n\r\n /** The media query used to understand if we are in mobile view */\r\n private _mediaQuery: any;\r\n\r\n /** The my solutions shell reference */\r\n private _mySolutionsShell = createRef<SolutionsDeployedShell['el']>();\r\n\r\n /** The my-solutions tab reference */\r\n private _mySolutionsTab = createRef<HTMLCalciteTabElement>();\r\n\r\n /** The my-solutions tab title reference */\r\n private _mySolutionsTabTitle = createRef<HTMLCalciteTabTitleElement>();\r\n\r\n /** Used for solution queries, defines the key field that will be used to sort the solutions */\r\n private _sortField: 'created' | 'relevance' | 'title' = 'relevance';\r\n\r\n /** Used for solution queries, conrols the order solutions are sorted */\r\n private _sortOrder: 'asc' | 'desc' = 'desc';\r\n\r\n /** Telemetry manager instance */\r\n private _telemetryManager = new TelemetryManager();\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Watch handlers\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Methods (public)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /** Closes the dialog */\r\n @method()\r\n public async selectTab(\r\n tab: IActiveTab,\r\n filters: any //stay loose for now\r\n ): Promise<boolean> {\r\n if (this._isLoaded || this._forceInit) {\r\n const searchOptions = this._getDefaultSearchOptions(filters);\r\n switch (tab.tabType) {\r\n case 'all-solutions':\r\n this._allTab.value!.selected = true;\r\n this._allTabTitle.value!.selected = true;\r\n if (searchOptions) {\r\n await this._allShell.value?.searchSolutions(searchOptions);\r\n }\r\n break;\r\n case 'resources':\r\n this._resourcesTab.value!.selected = true;\r\n this._resourcesTabTitle.value!.selected = true;\r\n break;\r\n case 'deployed-card':\r\n this._forceInit = true;\r\n this._isLoaded = false;\r\n if (this._cardsFetcherDeployed) {\r\n await this._getDeployedSolutions();\r\n }\r\n if (this._deployedSolutions?.cards?.length > 0) {\r\n let card;\r\n this._deployedSolutions.cards.some((c: any) => {\r\n if (c.id === tab.tabTitleOrId) {\r\n card = c;\r\n this.deployedCardSelected.emit({ card });\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n });\r\n this._isLoaded = true;\r\n this._forceInit = false;\r\n }\r\n break;\r\n case 'details':\r\n if (this._allCards) {\r\n let card = findSolutionByTitleOrId(this._allCards, tab.tabTitleOrId);\r\n // also search for v1 typeKeyword id\r\n card = card ? card : findSolutionByTypeKeywordSolutionId(this._allCards, tab.tabTitleOrId);\r\n if (card) {\r\n this._detailsTab.value!.selected = true;\r\n this._detailsTabTitle.value!.selected = true;\r\n this.detailsCardSelected.emit(card);\r\n } else {\r\n // if no card is found we should open the all-solutions tab\r\n tab.tabType = 'all-solutions';\r\n this._allTab.value!.selected = true;\r\n this._allTabTitle.value!.selected = true;\r\n }\r\n }\r\n break;\r\n case 'deployments':\r\n this._mySolutionsTab.value!.selected = true;\r\n this._mySolutionsTabTitle.value!.selected = true;\r\n if (searchOptions) {\r\n await this._mySolutionsShell.value?.searchSolutions(searchOptions);\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n this._setActiveTab(new CustomEvent('setActiveTab', { detail: tab }));\r\n this._blurTabs();\r\n return true;\r\n } else {\r\n // When loading url params we need to delay until after the auth initialization\r\n this._initTab = tab;\r\n this._initFilters = filters;\r\n return false;\r\n }\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Events (public)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /** Tab selected event */\r\n deployAppTabSelected = createEvent<DeployAppTab>();\r\n\r\n /** Details card selected event */\r\n detailsCardSelected = createEvent<ISolutionInfoCard>();\r\n\r\n /** Emitted on demand when the details card is selected. */\r\n deployedCardSelected = createEvent<IDeployCard>();\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Functions (lifecycle)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /** Invoked each time your component is added to the document's DOM. */\r\n override async connectedCallback(): Promise<void> {\r\n // This is tied to a css media query\r\n // We will use this to track when the filter was forced open/closed based on the size of the browser\r\n // If you need to change this size you need to also change the associated size in css\r\n this._mediaQuery = window.matchMedia('(max-width: 800px)');\r\n this._mediaQuery.addEventListener('change', this._mediaQueryChange);\r\n this._mediaQueryChange(this._mediaQuery);\r\n }\r\n\r\n /**\r\n * Called once just after the component is first connected to the DOM.\r\n *\r\n * @returns Promise when complete\r\n */\r\n async load(): Promise<void> {\r\n if (this.useLocalAppConfig) {\r\n this.appConfig = _appConfig;\r\n }\r\n }\r\n\r\n /** Renders the component. */\r\n override render(): JsxNode {\r\n const loaderCss = this._isLoaded ? 'display-none' : '';\r\n const tabsCss = this._isLoaded ? '' : 'display-none';\r\n return (\r\n <calcite-shell>\r\n <solutions-deploy-app-nav\r\n appConfig={this.appConfig}\r\n initTab={this.initTab}\r\n onauthInit={this._handleAuthInit}\r\n ref={this._deployAppNav}\r\n slot='header'\r\n useLocalAppConfig={this.useLocalAppConfig}\r\n />\r\n {this._isSearchToolbarShowing() && <div class='border' slot='header' />}\r\n <solutions-searchsort-toolbar\r\n isMobile={this.isMobile}\r\n slot='header'\r\n />\r\n <calcite-loader\r\n class={loaderCss}\r\n id='solutions-loader'\r\n label={this._translations.fetchingAllSolutions}\r\n >\r\n </calcite-loader>\r\n <calcite-tabs class={tabsCss} scale='l'>\r\n <calcite-tab-nav\r\n class='display-none'\r\n slot='title-group'\r\n >\r\n <calcite-tab-title\r\n ref={this._allTabTitle}\r\n >\r\n {this._translations.allSolutions}\r\n </calcite-tab-title>\r\n <calcite-tab-title\r\n ref={this._mySolutionsTabTitle}\r\n >\r\n {this._translations.mySolutions}\r\n </calcite-tab-title>\r\n <calcite-tab-title\r\n ref={this._resourcesTabTitle}\r\n >\r\n {this._translations.solutionResources}\r\n </calcite-tab-title>\r\n <calcite-tab-title\r\n class='display-none'\r\n ref={this._detailsTabTitle}\r\n />\r\n <calcite-tab-title\r\n class='display-none'\r\n ref={this._deployedCardTabTitle}\r\n />\r\n </calcite-tab-nav>\r\n <calcite-tab\r\n class='back-color-override tab-space-0'\r\n ref={this._allTab}\r\n selected\r\n >\r\n <solutions-all-shell\r\n class='height-100'\r\n ref={this._allShell}\r\n />\r\n </calcite-tab>\r\n <calcite-tab\r\n class='back-color-override tab-space-0'\r\n ref={this._mySolutionsTab}\r\n >\r\n <solutions-deployed-shell\r\n class='height-100'\r\n ref={this._mySolutionsShell}\r\n />\r\n </calcite-tab>\r\n <calcite-tab\r\n class='back-color-override tab-space-0'\r\n ref={this._resourcesTab}\r\n >\r\n <solutions-resources-shell class='height-100' />\r\n </calcite-tab>\r\n <calcite-tab\r\n class='back-color-override'\r\n ref={this._detailsTab}\r\n >\r\n <solution-details-panel\r\n class='height-100'\r\n ref={this._detailsShell}\r\n />\r\n </calcite-tab>\r\n <calcite-tab\r\n class='back-color-override tab-space-0'\r\n ref={this._deployedCardTab}\r\n >\r\n <solution-deployed-card-panel\r\n class='shell-container height-100'\r\n ref={this._deployedCardPanel}\r\n />\r\n </calcite-tab>\r\n </calcite-tabs>\r\n </calcite-shell>\r\n );\r\n }\r\n\r\n /** Invoked when the component is removed from the document's DOM.\r\n * This callback is the main signal to the element that it may no longer be used.\r\n * disconnectedCallback() should ensure that nothing is holding a reference to the element\r\n * (such as event listeners added to nodes external to the element), so that it is free to be garbage collected.\r\n */\r\n override disconnectedCallback(): void {\r\n this._mediaQuery?.removeEventListener('change', this._mediaQueryChange);\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Functions (private)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /** Invoked when the auth is initialized in the nav component. */\r\n private async _handleAuthInit(\r\n evt: CustomEvent\r\n ): Promise<void> {\r\n const config = evt.detail;\r\n \r\n // Initialize telemetrySession with a safe default before setting context\r\n if (!config.telemetrySession) {\r\n config.telemetrySession = TelemetryManager.getDisabledSession();\r\n }\r\n \r\n this._configContextProvider.setValue(config);\r\n\r\n if (config.authentication) {\r\n this.authentication = config.authentication;\r\n }\r\n\r\n this._cardsFetcherDeployed = new cardsFetcher.CardsFetcher(config.locale, config.orgUrl, config.portalUrl);\r\n\r\n this._cardsFetcher = new cardsFetcher.CardsFetcher(config.locale, config.orgUrl, config.portalUrl);\r\n await this._getSolutions(config.primarySolutionsGroupId);\r\n\r\n this._configContextProvider.value.allCards = this._allCards;\r\n\r\n // Initialize telemetry (will replace the disabled session if telemetry is enabled)\r\n await this._initializeTelemetry();\r\n\r\n this._isLoaded = true;\r\n\r\n // _initTab is levereaged for url params when we have a tab from the url before we have full initialized\r\n if (this._initTab) {\r\n this.selectTab(this._initTab!, this._initFilters);\r\n this._initTab = undefined;\r\n this._initFilters = undefined;\r\n }\r\n }\r\n\r\n /** Update the mobile view state when this media query change occurs. */\r\n private _mediaQueryChange(event: any) {\r\n this.isMobile = event.matches;\r\n this._isMobileContextProvider.setValue(this.isMobile);\r\n }\r\n\r\n /** Emit deployAppTabSelected event when a tab is selected */\r\n private _setActiveTab(evt: CustomEvent): void {\r\n const navTab = evt.detail as INavTab;\r\n const tabType = navTab.tabType;\r\n this._activeTab = tabType;\r\n switch (tabType) {\r\n case 'all-solutions':\r\n this._allTabTitle.value?.click();\r\n break;\r\n case 'deployments':\r\n this._mySolutionsTabTitle.value?.click();\r\n break;\r\n case 'resources':\r\n this._resourcesTabTitle.value?.click();\r\n break;\r\n case 'deployed-card':\r\n this._deployedCardTabTitle.value?.click();\r\n case 'details':\r\n this._detailsTabTitle.value?.click();\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n if (tabType !== 'details' && tabType !== 'deployed-card') {\r\n this._deployAppNav.value!.activateMenuItem(tabType);\r\n this.deployAppTabSelected.emit(tabType);\r\n }\r\n }\r\n\r\n /** Respond to detailsCardSelected event and select the details tab */\r\n private _detailsCardSelected(): void {\r\n this._activeTab = 'details';\r\n this._detailsTabTitle.value!.selected = true;\r\n this._detailsTab.value!.selected = true;\r\n this._deployAppNav.value!.clearMenuItems();\r\n }\r\n\r\n /** Respond to deployedCardSelected event and select the deployed-card tab */\r\n private _deployedCardSelected(): void {\r\n this._activeTab = 'deployed-card';\r\n this._deployedCardTabTitle.value!.selected = true;\r\n this._deployedCardTab.value!.selected = true;\r\n this._deployAppNav.value!.clearMenuItems();\r\n }\r\n\r\n /** Respond to deployProgressEnd event and select the my-solutions tab */\r\n private _deployProgressEnd(): void {\r\n this._activeTab = 'deployments';\r\n this._mySolutionsTabTitle.value!.selected = true;\r\n this._mySolutionsTab.value!.selected = true;\r\n }\r\n\r\n /** Initialize telemetry if enabled in app config */\r\n private async _initializeTelemetry(): Promise<void> {\r\n const config = this._configContextProvider.value;\r\n if (!this.authentication || !config) return;\r\n\r\n const telemetrySession = await this._telemetryManager.initializeTelemetry(this.authentication, config);\r\n this._configContextProvider.value.telemetrySession = telemetrySession;\r\n }\r\n\r\n /** Get the solutions from the ago or enterprise org. */\r\n private async _getSolutions(\r\n primarySolutionsGroupId: string\r\n ): Promise<ISolutionInfoCard[]> {\r\n const fetchedCards = await this._cardsFetcher?.requestAvailableSolutionCards(\r\n {\r\n 'q': this._agoTerms,\r\n 'filter': 'type:Solution',\r\n 'sortField': this._sortField,\r\n 'sortOrder': this._sortOrder, // TODO default search when old app loads is desc...may need to switch this for other\r\n 'nextStart': -1,\r\n 'categories': this._categories,\r\n 'delay': this._delay,\r\n 'getSuggested': this._getSuggested\r\n },\r\n primarySolutionsGroupId,\r\n {\r\n 'num': 1000\r\n }\r\n );\r\n\r\n if (this._allCards.length === 0 && fetchedCards?.cards) {\r\n this._allCards = fetchedCards?.cards;\r\n }\r\n\r\n //this.cardsFetched.emit(solutionDetailsCards.length);\r\n //return solutionDetailsCards;\r\n return this._allCards;\r\n }\r\n\r\n /** Get the deployed solutions */\r\n private async _getDeployedSolutions(): Promise<void> {\r\n const authentication = this._configContextProvider.value.authentication;\r\n const userSession = this._configContextProvider.value.userSession;\r\n if (authentication && userSession && authentication.IsSignedIn) {\r\n this._deployedSolutions = await getDeployedSolutions(\r\n authentication,\r\n userSession,\r\n this._cardsFetcher!,\r\n this._cardsFetcherDeployed!,\r\n BASE_DEPLOYED_TERMS,\r\n 'created'\r\n );\r\n }\r\n }\r\n\r\n /** Blur all tabs */\r\n private _blurTabs(): void {\r\n this._allTabTitle.value?.blur();\r\n this._resourcesTabTitle.value?.blur();\r\n this._detailsTabTitle.value?.blur();\r\n this._mySolutionsTabTitle.value?.blur();\r\n }\r\n\r\n /** Determine if the search/sort toolbar should be displayed based on current tab and authentication */\r\n private _isSearchToolbarShowing(): boolean {\r\n return this._activeTab === 'all-solutions' ||\r\n (this._activeTab === 'deployments' && this.authentication?.IsSignedIn === true);\r\n }\r\n\r\n /** Get the searchOptions from the provided filters we get from the apps url parsing */\r\n private _getDefaultSearchOptions(\r\n filters: any\r\n ): any {\r\n let searchOptions = undefined;\r\n if (filters) {\r\n const domain = filters.domain\r\n const industry = filters.industry\r\n const offerType = filters.offerType\r\n const searchTerm = filters.searchTerm\r\n const displayValue = '';\r\n let sortType = filters.sortField\r\n const owner = filters.owner;\r\n\r\n searchOptions = domain || industry ? {\r\n type: domain ? 'domain' : industry ? 'industry' : ''\r\n } : undefined\r\n\r\n if (domain) {\r\n searchOptions = searchOptions ? { ...searchOptions, domain } : { domain }\r\n }\r\n\r\n if (industry) {\r\n searchOptions = searchOptions ? { ...searchOptions, industry } : { industry }\r\n }\r\n\r\n if (searchTerm) {\r\n searchOptions = searchOptions ? { ...searchOptions, searchTerm } : { searchTerm }\r\n }\r\n\r\n // TODO not sure how to set the required value\r\n if (searchOptions) {\r\n // TODO understand how we are supposed to determine the displayValue\r\n searchOptions = { ...searchOptions, displayValue }\r\n }\r\n\r\n if (sortType) {\r\n searchOptions = searchOptions ? { ...searchOptions, sortType } : { sortType }\r\n }\r\n\r\n // new and suggested are general sortTypes now\r\n if (offerType) {\r\n sortType = offerType.toLowerCase();\r\n searchOptions = searchOptions ? { ...searchOptions, sortType } : { sortType }\r\n }\r\n\r\n if (owner) {\r\n searchOptions = searchOptions ? { ...searchOptions, owner } : { owner }\r\n }\r\n\r\n }\r\n return searchOptions\r\n }\r\n}\r\n"],"names":["ref$jsx","cardsFetcher.CardsFetcher"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
2
2
  See https://js.arcgis.com/1.2/esri/copyright.txt for details.
3
- v1.2.0-next.61 */
3
+ v1.2.0-next.62 */
4
4
  import "../../chunks/runtime.js";
5
5
  import "../../chunks/useT9n.js";
6
6
  import "@arcgis/lumina";