@openc3/vue-common 6.10.2 → 6.10.4

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 (545) hide show
  1. package/dist/{ArrayWidget-ByKRAWXn.cjs → ArrayWidget-CIMbQsGW.cjs} +3 -3
  2. package/dist/{ArrayWidget-ByKRAWXn.cjs.map → ArrayWidget-CIMbQsGW.cjs.map} +1 -1
  3. package/dist/{ArrayWidget-CR7Wpw3N.js → ArrayWidget-DfiusKpM.js} +11 -11
  4. package/dist/{ArrayWidget-CR7Wpw3N.js.map → ArrayWidget-DfiusKpM.js.map} +1 -1
  5. package/dist/{ArrayplotWidget-Cty7KQ_h.cjs → ArrayplotWidget-DrrqqJEu.cjs} +2 -2
  6. package/dist/{ArrayplotWidget-Cty7KQ_h.cjs.map → ArrayplotWidget-DrrqqJEu.cjs.map} +1 -1
  7. package/dist/{ArrayplotWidget-DDEd-jRJ.js → ArrayplotWidget-DsvOovu9.js} +4 -4
  8. package/dist/{ArrayplotWidget-DDEd-jRJ.js.map → ArrayplotWidget-DsvOovu9.js.map} +1 -1
  9. package/dist/BarColumn-CWgcL5w1.cjs +2 -0
  10. package/dist/BarColumn-CWgcL5w1.cjs.map +1 -0
  11. package/dist/{BarColumn-XWs-3Cwb.js → BarColumn-DHHJBR3V.js} +11 -11
  12. package/dist/BarColumn-DHHJBR3V.js.map +1 -0
  13. package/dist/{BlockWidget-BDzoqpxO.cjs → BlockWidget-7Ecn_42c.cjs} +3 -3
  14. package/dist/{BlockWidget-BDzoqpxO.cjs.map → BlockWidget-7Ecn_42c.cjs.map} +1 -1
  15. package/dist/{BlockWidget-CfFgdNSv.js → BlockWidget-BdYXWS_0.js} +14 -14
  16. package/dist/{BlockWidget-CfFgdNSv.js.map → BlockWidget-BdYXWS_0.js.map} +1 -1
  17. package/dist/{ButtonWidget-BBMDS_YF.cjs → ButtonWidget-DFxBj0MG.cjs} +3 -3
  18. package/dist/ButtonWidget-DFxBj0MG.cjs.map +1 -0
  19. package/dist/{ButtonWidget-BaSvtElA.js → ButtonWidget-zpSJmiQT.js} +15 -15
  20. package/dist/ButtonWidget-zpSJmiQT.js.map +1 -0
  21. package/dist/{CanvasWidget-CFNpgqfW.cjs → CanvasWidget-C5-iZ-YT.cjs} +2 -2
  22. package/dist/{CanvasWidget-CFNpgqfW.cjs.map → CanvasWidget-C5-iZ-YT.cjs.map} +1 -1
  23. package/dist/{CanvasWidget-DcwDi5Zk.js → CanvasWidget-DaUB1G9X.js} +4 -4
  24. package/dist/{CanvasWidget-DcwDi5Zk.js.map → CanvasWidget-DaUB1G9X.js.map} +1 -1
  25. package/dist/{CanvasdotWidget--awMOWyz.js → CanvasdotWidget-C255aTVc.js} +3 -3
  26. package/dist/{CanvasdotWidget--awMOWyz.js.map → CanvasdotWidget-C255aTVc.js.map} +1 -1
  27. package/dist/{CanvasdotWidget-BZ9TrTvw.cjs → CanvasdotWidget-CCrgS1yO.cjs} +2 -2
  28. package/dist/{CanvasdotWidget-BZ9TrTvw.cjs.map → CanvasdotWidget-CCrgS1yO.cjs.map} +1 -1
  29. package/dist/CanvasimageWidget-B2Mm0dYq.cjs +2 -0
  30. package/dist/CanvasimageWidget-B2Mm0dYq.cjs.map +1 -0
  31. package/dist/{CanvasimageWidget-YP1pCtvb.js → CanvasimageWidget-CFlUUFqr.js} +8 -7
  32. package/dist/CanvasimageWidget-CFlUUFqr.js.map +1 -0
  33. package/dist/CanvasimagevalueWidget-B1xVa3FB.cjs +2 -0
  34. package/dist/CanvasimagevalueWidget-B1xVa3FB.cjs.map +1 -0
  35. package/dist/{CanvasimagevalueWidget-CjVHb2uj.js → CanvasimagevalueWidget-s4gR3fo5.js} +5 -4
  36. package/dist/CanvasimagevalueWidget-s4gR3fo5.js.map +1 -0
  37. package/dist/{CanvaslabelWidget-Dw1YmiY0.cjs → CanvaslabelWidget-CAtE3qq_.cjs} +2 -2
  38. package/dist/{CanvaslabelWidget-Dw1YmiY0.cjs.map → CanvaslabelWidget-CAtE3qq_.cjs.map} +1 -1
  39. package/dist/{CanvaslabelWidget-DoMplTTO.js → CanvaslabelWidget-CaOc-lTQ.js} +3 -3
  40. package/dist/{CanvaslabelWidget-DoMplTTO.js.map → CanvaslabelWidget-CaOc-lTQ.js.map} +1 -1
  41. package/dist/CanvaslabelvalueWidget-CvVMrZsu.cjs +2 -0
  42. package/dist/CanvaslabelvalueWidget-CvVMrZsu.cjs.map +1 -0
  43. package/dist/{CanvaslabelvalueWidget-Dyo_ogHn.js → CanvaslabelvalueWidget-hqJoPekq.js} +4 -3
  44. package/dist/CanvaslabelvalueWidget-hqJoPekq.js.map +1 -0
  45. package/dist/{CanvaslineWidget-tm194dw1.cjs → CanvaslineWidget-CjPnyDod.cjs} +2 -2
  46. package/dist/{CanvaslineWidget-tm194dw1.cjs.map → CanvaslineWidget-CjPnyDod.cjs.map} +1 -1
  47. package/dist/{CanvaslineWidget-D7W1TIxm.js → CanvaslineWidget-DebP2L43.js} +3 -3
  48. package/dist/{CanvaslineWidget-D7W1TIxm.js.map → CanvaslineWidget-DebP2L43.js.map} +1 -1
  49. package/dist/{CanvaslinevalueWidget-BOZyJuLE.js → CanvaslinevalueWidget-BkPG5Vtx.js} +11 -10
  50. package/dist/CanvaslinevalueWidget-BkPG5Vtx.js.map +1 -0
  51. package/dist/CanvaslinevalueWidget-Caadjtan.cjs +2 -0
  52. package/dist/CanvaslinevalueWidget-Caadjtan.cjs.map +1 -0
  53. package/dist/CheckbuttonWidget-CEOWZkt6.cjs +2 -0
  54. package/dist/{CheckbuttonWidget-BSvTWD3x.cjs.map → CheckbuttonWidget-CEOWZkt6.cjs.map} +1 -1
  55. package/dist/{CheckbuttonWidget-B1E4BC6v.js → CheckbuttonWidget-eQIcPATf.js} +6 -6
  56. package/dist/{CheckbuttonWidget-B1E4BC6v.js.map → CheckbuttonWidget-eQIcPATf.js.map} +1 -1
  57. package/dist/{ClassificationBanners-CzZoKcRy.cjs → ClassificationBanners--l3qMxLo.cjs} +2 -2
  58. package/dist/{ClassificationBanners-CzZoKcRy.cjs.map → ClassificationBanners--l3qMxLo.cjs.map} +1 -1
  59. package/dist/{ClassificationBanners-DQeVwmYp.js → ClassificationBanners-CFLQaZJ2.js} +2 -2
  60. package/dist/{ClassificationBanners-DQeVwmYp.js.map → ClassificationBanners-CFLQaZJ2.js.map} +1 -1
  61. package/dist/{ComboboxWidget-BExUBH57.js → ComboboxWidget-B5kzYxFk.js} +6 -6
  62. package/dist/{ComboboxWidget-BExUBH57.js.map → ComboboxWidget-B5kzYxFk.js.map} +1 -1
  63. package/dist/ComboboxWidget-BSs59QzI.cjs +2 -0
  64. package/dist/{ComboboxWidget-B_KAnIVB.cjs.map → ComboboxWidget-BSs59QzI.cjs.map} +1 -1
  65. package/dist/{CriticalCmdDialog-BtzhxuZi.js → CriticalCmdDialog-BYHZbX2w.js} +62 -52
  66. package/dist/CriticalCmdDialog-BYHZbX2w.js.map +1 -0
  67. package/dist/CriticalCmdDialog-BhjiJIo5.cjs +2 -0
  68. package/dist/CriticalCmdDialog-BhjiJIo5.cjs.map +1 -0
  69. package/dist/{CustomIcon-DTfsnDJn.js → CustomIcon-B9m73Gqm.js} +5 -4
  70. package/dist/{CustomIcon-DTfsnDJn.js.map → CustomIcon-B9m73Gqm.js.map} +1 -1
  71. package/dist/CustomIcon-CEc927h0.cjs +2 -0
  72. package/dist/{CustomIcon-eie3rPKh.cjs.map → CustomIcon-CEc927h0.cjs.map} +1 -1
  73. package/dist/{DateWidget-_ZmPsi2l.js → DateWidget-1IZOe50K.js} +3 -3
  74. package/dist/{DateWidget-_ZmPsi2l.js.map → DateWidget-1IZOe50K.js.map} +1 -1
  75. package/dist/{DateWidget-kTJBAHVp.cjs → DateWidget-DkVxE7Xj.cjs} +2 -2
  76. package/dist/{DateWidget-kTJBAHVp.cjs.map → DateWidget-DkVxE7Xj.cjs.map} +1 -1
  77. package/dist/{DetailsDialog-Bq7SS7bc.js → DetailsDialog-D-rjL4oc.js} +130 -100
  78. package/dist/DetailsDialog-D-rjL4oc.js.map +1 -0
  79. package/dist/DetailsDialog-lJG8eclU.cjs +2 -0
  80. package/dist/DetailsDialog-lJG8eclU.cjs.map +1 -0
  81. package/dist/DynamicWidget-C4V2H2VJ.cjs +2 -0
  82. package/dist/DynamicWidget-C4V2H2VJ.cjs.map +1 -0
  83. package/dist/{DynamicWidget-DHL7pbgW.js → DynamicWidget-DEHWYr8i.js} +7 -7
  84. package/dist/DynamicWidget-DEHWYr8i.js.map +1 -0
  85. package/dist/EventListDialog-5UXvnmNE.cjs +2 -0
  86. package/dist/EventListDialog-5UXvnmNE.cjs.map +1 -0
  87. package/dist/{EventListDialog-jdNF3szO.js → EventListDialog-Id3rEQKY.js} +242 -242
  88. package/dist/EventListDialog-Id3rEQKY.js.map +1 -0
  89. package/dist/FilechecksumWidget-D-5GSjyV.cjs +2 -0
  90. package/dist/FilechecksumWidget-D-5GSjyV.cjs.map +1 -0
  91. package/dist/FilechecksumWidget-F_FX1Kjx.js +158 -0
  92. package/dist/FilechecksumWidget-F_FX1Kjx.js.map +1 -0
  93. package/dist/FiledisplayWidget-BF3G22jF.js +114 -0
  94. package/dist/FiledisplayWidget-BF3G22jF.js.map +1 -0
  95. package/dist/FiledisplayWidget-BHLOY_cM.cjs +2 -0
  96. package/dist/FiledisplayWidget-BHLOY_cM.cjs.map +1 -0
  97. package/dist/{FormatvalueWidget-4C0vrL2i.js → FormatvalueWidget-BkF9iiHs.js} +4 -4
  98. package/dist/{FormatvalueWidget-4C0vrL2i.js.map → FormatvalueWidget-BkF9iiHs.js.map} +1 -1
  99. package/dist/{FormatvalueWidget-CVoJgFJA.cjs → FormatvalueWidget-DTsP7isW.cjs} +2 -2
  100. package/dist/{FormatvalueWidget-CVoJgFJA.cjs.map → FormatvalueWidget-DTsP7isW.cjs.map} +1 -1
  101. package/dist/{Graph-B7KPo9Ul.js → Graph-C-7C2Jq5.js} +194 -187
  102. package/dist/Graph-C-7C2Jq5.js.map +1 -0
  103. package/dist/Graph-YYieRGo0.cjs +2 -0
  104. package/dist/Graph-YYieRGo0.cjs.map +1 -0
  105. package/dist/{GraphWidget-D3HueIZi.cjs → GraphWidget-C7hqdqL-.cjs} +2 -2
  106. package/dist/{GraphWidget-D3HueIZi.cjs.map → GraphWidget-C7hqdqL-.cjs.map} +1 -1
  107. package/dist/{GraphWidget-BpkPpAbd.js → GraphWidget-DRkDn8za.js} +2 -2
  108. package/dist/{GraphWidget-BpkPpAbd.js.map → GraphWidget-DRkDn8za.js.map} +1 -1
  109. package/dist/HorizontalWidget-DB64wzZB.js +69 -0
  110. package/dist/HorizontalWidget-DB64wzZB.js.map +1 -0
  111. package/dist/HorizontalWidget-h-U8i3G-.cjs +2 -0
  112. package/dist/HorizontalWidget-h-U8i3G-.cjs.map +1 -0
  113. package/dist/{HorizontalboxWidget-CTomf_Iy.js → HorizontalboxWidget-BsHsGlvK.js} +6 -6
  114. package/dist/{HorizontalboxWidget-CTomf_Iy.js.map → HorizontalboxWidget-BsHsGlvK.js.map} +1 -1
  115. package/dist/{HorizontalboxWidget-ysq7slso.cjs → HorizontalboxWidget-E4LUf2eN.cjs} +2 -2
  116. package/dist/{HorizontalboxWidget-ysq7slso.cjs.map → HorizontalboxWidget-E4LUf2eN.cjs.map} +1 -1
  117. package/dist/{HorizontallineWidget-B7xx7ofY.js → HorizontallineWidget-CyiexzIu.js} +3 -3
  118. package/dist/{HorizontallineWidget-B7xx7ofY.js.map → HorizontallineWidget-CyiexzIu.js.map} +1 -1
  119. package/dist/{HorizontallineWidget-BgXZZymr.cjs → HorizontallineWidget-LibmHnAf.cjs} +2 -2
  120. package/dist/{HorizontallineWidget-BgXZZymr.cjs.map → HorizontallineWidget-LibmHnAf.cjs.map} +1 -1
  121. package/dist/{IframeWidget-DK7rbULe.js → IframeWidget-D9Vh0w2c.js} +3 -3
  122. package/dist/{IframeWidget-DK7rbULe.js.map → IframeWidget-D9Vh0w2c.js.map} +1 -1
  123. package/dist/{IframeWidget-fV9e-Nm1.cjs → IframeWidget-xeXTxP_G.cjs} +2 -2
  124. package/dist/{IframeWidget-fV9e-Nm1.cjs.map → IframeWidget-xeXTxP_G.cjs.map} +1 -1
  125. package/dist/{ImageLoader-C9rN_pSY.js → ImageLoader-B4iBPFyi.js} +2 -2
  126. package/dist/{ImageLoader-C9rN_pSY.js.map → ImageLoader-B4iBPFyi.js.map} +1 -1
  127. package/dist/{ImageLoader-CJxiBXAL.cjs → ImageLoader-Cc4-BNJv.cjs} +2 -2
  128. package/dist/{ImageLoader-CJxiBXAL.cjs.map → ImageLoader-Cc4-BNJv.cjs.map} +1 -1
  129. package/dist/{ImageviewerWidget-6d6Kl3W_.js → ImageviewerWidget-DqV4SClv.js} +10 -9
  130. package/dist/ImageviewerWidget-DqV4SClv.js.map +1 -0
  131. package/dist/ImageviewerWidget-KVt487SJ.cjs +2 -0
  132. package/dist/ImageviewerWidget-KVt487SJ.cjs.map +1 -0
  133. package/dist/{InterfacesTab-BCqTanhV.js → InterfacesTab-C310FRIP.js} +4 -4
  134. package/dist/{InterfacesTab-BCqTanhV.js.map → InterfacesTab-C310FRIP.js.map} +1 -1
  135. package/dist/{InterfacesTab-0pmK3KNu.cjs → InterfacesTab-nZwg-ByS.cjs} +2 -2
  136. package/dist/{InterfacesTab-0pmK3KNu.cjs.map → InterfacesTab-nZwg-ByS.cjs.map} +1 -1
  137. package/dist/{LabelWidget-D71FfOSw.js → LabelWidget-BDukcPet.js} +3 -3
  138. package/dist/{LabelWidget-D71FfOSw.js.map → LabelWidget-BDukcPet.js.map} +1 -1
  139. package/dist/{LabelWidget-DdZz2NWv.cjs → LabelWidget-DYfv4K8h.cjs} +2 -2
  140. package/dist/{LabelWidget-DdZz2NWv.cjs.map → LabelWidget-DYfv4K8h.cjs.map} +1 -1
  141. package/dist/{LabelledWidget-BZ319slb.cjs → LabelledWidget-Dl1x6b3p.cjs} +2 -2
  142. package/dist/{LabelledWidget-BZ319slb.cjs.map → LabelledWidget-Dl1x6b3p.cjs.map} +1 -1
  143. package/dist/{LabelledWidget-D2ir5kVU.js → LabelledWidget-tVHE426s.js} +6 -6
  144. package/dist/{LabelledWidget-D2ir5kVU.js.map → LabelledWidget-tVHE426s.js.map} +1 -1
  145. package/dist/{LabelprogressbarWidget-C4_YbROz.js → LabelprogressbarWidget-CjMDFUUv.js} +6 -6
  146. package/dist/{LabelprogressbarWidget-C4_YbROz.js.map → LabelprogressbarWidget-CjMDFUUv.js.map} +1 -1
  147. package/dist/{LabelprogressbarWidget-LyevJNuz.cjs → LabelprogressbarWidget-DcO0gRM4.cjs} +2 -2
  148. package/dist/{LabelprogressbarWidget-LyevJNuz.cjs.map → LabelprogressbarWidget-DcO0gRM4.cjs.map} +1 -1
  149. package/dist/LabelsparklineWidget-Cp2a-qlI.cjs +2 -0
  150. package/dist/LabelsparklineWidget-Cp2a-qlI.cjs.map +1 -0
  151. package/dist/{LabelsparklineWidget-CdZ_pM2B.js → LabelsparklineWidget-dZl3cGu0.js} +13 -13
  152. package/dist/LabelsparklineWidget-dZl3cGu0.js.map +1 -0
  153. package/dist/{LabelvalueWidget-DSHwAKma.cjs → LabelvalueWidget-CgP4mzP_.cjs} +2 -2
  154. package/dist/{LabelvalueWidget-DSHwAKma.cjs.map → LabelvalueWidget-CgP4mzP_.cjs.map} +1 -1
  155. package/dist/{LabelvalueWidget-BS0EPY5h.js → LabelvalueWidget-UcAc_2Ry.js} +6 -6
  156. package/dist/{LabelvalueWidget-BS0EPY5h.js.map → LabelvalueWidget-UcAc_2Ry.js.map} +1 -1
  157. package/dist/{LabelvaluedescWidget-3lwQxkKj.cjs → LabelvaluedescWidget-CXJ037Qs.cjs} +2 -2
  158. package/dist/{LabelvaluedescWidget-3lwQxkKj.cjs.map → LabelvaluedescWidget-CXJ037Qs.cjs.map} +1 -1
  159. package/dist/{LabelvaluedescWidget-Cpr8_Voq.js → LabelvaluedescWidget-Crb8udVe.js} +6 -6
  160. package/dist/{LabelvaluedescWidget-Cpr8_Voq.js.map → LabelvaluedescWidget-Crb8udVe.js.map} +1 -1
  161. package/dist/{LabelvaluelimitsbarWidget-DbO_Q5ex.cjs → LabelvaluelimitsbarWidget-B3cn7i50.cjs} +2 -2
  162. package/dist/LabelvaluelimitsbarWidget-B3cn7i50.cjs.map +1 -0
  163. package/dist/{LabelvaluelimitsbarWidget-DTcYbEQS.js → LabelvaluelimitsbarWidget-BZGUQrRt.js} +10 -10
  164. package/dist/LabelvaluelimitsbarWidget-BZGUQrRt.js.map +1 -0
  165. package/dist/LabelvaluelimitscolumnWidget-DbBOkQ8R.cjs +2 -0
  166. package/dist/LabelvaluelimitscolumnWidget-DbBOkQ8R.cjs.map +1 -0
  167. package/dist/{LabelvaluelimitscolumnWidget-D0ltQ9Ta.js → LabelvaluelimitscolumnWidget-NNYW2aMO.js} +12 -12
  168. package/dist/LabelvaluelimitscolumnWidget-NNYW2aMO.js.map +1 -0
  169. package/dist/{LabelvaluerangebarWidget-B6_alHq4.cjs → LabelvaluerangebarWidget-B81fLpK0.cjs} +2 -2
  170. package/dist/{LabelvaluerangebarWidget-B6_alHq4.cjs.map → LabelvaluerangebarWidget-B81fLpK0.cjs.map} +1 -1
  171. package/dist/{LabelvaluerangebarWidget-O8IHjvHs.js → LabelvaluerangebarWidget-CjkVDlVJ.js} +6 -6
  172. package/dist/{LabelvaluerangebarWidget-O8IHjvHs.js.map → LabelvaluerangebarWidget-CjkVDlVJ.js.map} +1 -1
  173. package/dist/Layout-FpBx3iic.js +36 -0
  174. package/dist/Layout-FpBx3iic.js.map +1 -0
  175. package/dist/Layout-K7_I6jMV.cjs +2 -0
  176. package/dist/Layout-K7_I6jMV.cjs.map +1 -0
  177. package/dist/{LedWidget-DUvJ2v8k.js → LedWidget-Bsp1aja-.js} +46 -39
  178. package/dist/LedWidget-Bsp1aja-.js.map +1 -0
  179. package/dist/LedWidget-C19KREVz.cjs +2 -0
  180. package/dist/LedWidget-C19KREVz.cjs.map +1 -0
  181. package/dist/LimitsBar-IVv8t4FE.js +134 -0
  182. package/dist/LimitsBar-IVv8t4FE.js.map +1 -0
  183. package/dist/LimitsBar-LRiUSWd7.cjs +2 -0
  184. package/dist/LimitsBar-LRiUSWd7.cjs.map +1 -0
  185. package/dist/LimitsbarWidget-BFjMhTbA.cjs +2 -0
  186. package/dist/LimitsbarWidget-BFjMhTbA.cjs.map +1 -0
  187. package/dist/LimitsbarWidget-Bo1JAoQp.js +65 -0
  188. package/dist/LimitsbarWidget-Bo1JAoQp.js.map +1 -0
  189. package/dist/LimitscolorWidget-D214kS86.cjs +2 -0
  190. package/dist/LimitscolorWidget-D214kS86.cjs.map +1 -0
  191. package/dist/{LimitscolorWidget-FXT0ZPPH.js → LimitscolorWidget-Doq8h_g1.js} +14 -13
  192. package/dist/LimitscolorWidget-Doq8h_g1.js.map +1 -0
  193. package/dist/{LimitscolumnWidget-C5yozwf0.cjs → LimitscolumnWidget-BREF_CBr.cjs} +2 -2
  194. package/dist/{LimitscolumnWidget-C5yozwf0.cjs.map → LimitscolumnWidget-BREF_CBr.cjs.map} +1 -1
  195. package/dist/{LimitscolumnWidget-CjBy-CCI.js → LimitscolumnWidget-qasXHN7m.js} +3 -3
  196. package/dist/{LimitscolumnWidget-CjBy-CCI.js.map → LimitscolumnWidget-qasXHN7m.js.map} +1 -1
  197. package/dist/{LinegraphWidget-lmu_tFKd.js → LinegraphWidget-BNMqcr_r.js} +5 -5
  198. package/dist/{LinegraphWidget-lmu_tFKd.js.map → LinegraphWidget-BNMqcr_r.js.map} +1 -1
  199. package/dist/{LinegraphWidget-dO_B0T3E.cjs → LinegraphWidget-BhpYKxnT.cjs} +2 -2
  200. package/dist/{LinegraphWidget-dO_B0T3E.cjs.map → LinegraphWidget-BhpYKxnT.cjs.map} +1 -1
  201. package/dist/MatrixbycolumnsWidget-BKXkhATe.cjs +2 -0
  202. package/dist/MatrixbycolumnsWidget-BKXkhATe.cjs.map +1 -0
  203. package/dist/MatrixbycolumnsWidget-BlF1CyIT.js +83 -0
  204. package/dist/MatrixbycolumnsWidget-BlF1CyIT.js.map +1 -0
  205. package/dist/MicroservicesTab-BWFwBSuf.cjs +2 -0
  206. package/dist/MicroservicesTab-BWFwBSuf.cjs.map +1 -0
  207. package/dist/MicroservicesTab-xpDXKoa-.js +203 -0
  208. package/dist/MicroservicesTab-xpDXKoa-.js.map +1 -0
  209. package/dist/OpenC3TimePicker-6pE8gGCO.cjs +2 -0
  210. package/dist/OpenC3TimePicker-6pE8gGCO.cjs.map +1 -0
  211. package/dist/OpenC3TimePicker-D-_qqySI.js +219 -0
  212. package/dist/OpenC3TimePicker-D-_qqySI.js.map +1 -0
  213. package/dist/{Openc3Screen-DcIIUO63.js → Openc3Screen-DYJHNotN.js} +730 -510
  214. package/dist/Openc3Screen-DYJHNotN.js.map +1 -0
  215. package/dist/Openc3Screen-Pu1ktpS8.cjs +6 -0
  216. package/dist/Openc3Screen-Pu1ktpS8.cjs.map +1 -0
  217. package/dist/OutputDialog-BwEWPQW9.cjs +2 -0
  218. package/dist/OutputDialog-BwEWPQW9.cjs.map +1 -0
  219. package/dist/{OutputDialog-CNH74LpJ.js → OutputDialog-x4QZFAWe.js} +24 -17
  220. package/dist/OutputDialog-x4QZFAWe.js.map +1 -0
  221. package/dist/{PackagesTab-PEPT4CQu.cjs → PackagesTab-CHwfaqdP.cjs} +2 -2
  222. package/dist/{PackagesTab-PEPT4CQu.cjs.map → PackagesTab-CHwfaqdP.cjs.map} +1 -1
  223. package/dist/{PackagesTab-BE6W7Aru.js → PackagesTab-rzc4hqOb.js} +4 -4
  224. package/dist/{PackagesTab-BE6W7Aru.js.map → PackagesTab-rzc4hqOb.js.map} +1 -1
  225. package/dist/{PluginsTab-DXf9zX0h.cjs → PluginsTab-C7gLbRQn.cjs} +2 -2
  226. package/dist/PluginsTab-C7gLbRQn.cjs.map +1 -0
  227. package/dist/{PluginsTab-B_Pf2A9c.js → PluginsTab-Dff_0j26.js} +8 -8
  228. package/dist/PluginsTab-Dff_0j26.js.map +1 -0
  229. package/dist/{ProgressbarWidget-B5WN658S.js → ProgressbarWidget-DQ80NANH.js} +7 -5
  230. package/dist/ProgressbarWidget-DQ80NANH.js.map +1 -0
  231. package/dist/ProgressbarWidget-cQAtX_Q7.cjs +2 -0
  232. package/dist/ProgressbarWidget-cQAtX_Q7.cjs.map +1 -0
  233. package/dist/RadiobuttonWidget-DFrUZRaV.cjs +2 -0
  234. package/dist/{RadiobuttonWidget-DkG9GtAy.cjs.map → RadiobuttonWidget-DFrUZRaV.cjs.map} +1 -1
  235. package/dist/{RadiobuttonWidget-B_3nys46.js → RadiobuttonWidget-LD18M4IQ.js} +11 -10
  236. package/dist/{RadiobuttonWidget-B_3nys46.js.map → RadiobuttonWidget-LD18M4IQ.js.map} +1 -1
  237. package/dist/{RadiogroupWidget-BiMIL9li.js → RadiogroupWidget-D_pt2MPz.js} +6 -6
  238. package/dist/{RadiogroupWidget-BiMIL9li.js.map → RadiogroupWidget-D_pt2MPz.js.map} +1 -1
  239. package/dist/{RadiogroupWidget-BnUjXU28.cjs → RadiogroupWidget-ljP05k3g.cjs} +2 -2
  240. package/dist/{RadiogroupWidget-BnUjXU28.cjs.map → RadiogroupWidget-ljP05k3g.cjs.map} +1 -1
  241. package/dist/RangebarWidget-BsLWXvTo.cjs +2 -0
  242. package/dist/RangebarWidget-BsLWXvTo.cjs.map +1 -0
  243. package/dist/{RangebarWidget-Dn0GASdi.js → RangebarWidget-DhaWpHjB.js} +12 -11
  244. package/dist/RangebarWidget-DhaWpHjB.js.map +1 -0
  245. package/dist/{RedisTab-BsKrL4fD.js → RedisTab-C3yjh0JX.js} +3 -3
  246. package/dist/{RedisTab-BsKrL4fD.js.map → RedisTab-C3yjh0JX.js.map} +1 -1
  247. package/dist/{RedisTab-C1yaDRSt.cjs → RedisTab-DEKMLop2.cjs} +2 -2
  248. package/dist/{RedisTab-C1yaDRSt.cjs.map → RedisTab-DEKMLop2.cjs.map} +1 -1
  249. package/dist/{RollupWidget-b62qcG5K.js → RollupWidget-CMU1-HwL.js} +15 -13
  250. package/dist/RollupWidget-CMU1-HwL.js.map +1 -0
  251. package/dist/RollupWidget-sXTyo7zH.cjs +2 -0
  252. package/dist/RollupWidget-sXTyo7zH.cjs.map +1 -0
  253. package/dist/{RoutersTab-EHz4wDCn.js → RoutersTab-DaWde6np.js} +4 -4
  254. package/dist/{RoutersTab-EHz4wDCn.js.map → RoutersTab-DaWde6np.js.map} +1 -1
  255. package/dist/{RoutersTab-8wGbiPCk.cjs → RoutersTab-IKuEHQeO.cjs} +2 -2
  256. package/dist/{RoutersTab-8wGbiPCk.cjs.map → RoutersTab-IKuEHQeO.cjs.map} +1 -1
  257. package/dist/ScriptChooser-BmyV6QQD.cjs +2 -0
  258. package/dist/ScriptChooser-BmyV6QQD.cjs.map +1 -0
  259. package/dist/{ScriptChooser-DMPY3m8a.js → ScriptChooser-DCjI5aeZ.js} +118 -93
  260. package/dist/ScriptChooser-DCjI5aeZ.js.map +1 -0
  261. package/dist/ScrollwindowWidget-BcLF_bhy.cjs +2 -0
  262. package/dist/ScrollwindowWidget-BcLF_bhy.cjs.map +1 -0
  263. package/dist/ScrollwindowWidget-D7Ln-QMq.js +69 -0
  264. package/dist/ScrollwindowWidget-D7Ln-QMq.js.map +1 -0
  265. package/dist/{SecretsTab-DSMFodJM.cjs → SecretsTab-BM9HIjT_.cjs} +2 -2
  266. package/dist/{SecretsTab-DSMFodJM.cjs.map → SecretsTab-BM9HIjT_.cjs.map} +1 -1
  267. package/dist/{SecretsTab-Cbt_r-1I.js → SecretsTab-Dhal1RCq.js} +3 -3
  268. package/dist/{SecretsTab-Cbt_r-1I.js.map → SecretsTab-Dhal1RCq.js.map} +1 -1
  269. package/dist/SettingsTab-BrSkK_Fs.cjs +3 -0
  270. package/dist/SettingsTab-BrSkK_Fs.cjs.map +1 -0
  271. package/dist/{SettingsTab-L5xbCAW_.js → SettingsTab-Dtj_AlEW.js} +319 -202
  272. package/dist/SettingsTab-Dtj_AlEW.js.map +1 -0
  273. package/dist/SignalWidget-DHwveppA.cjs +2 -0
  274. package/dist/SignalWidget-DHwveppA.cjs.map +1 -0
  275. package/dist/{SignalWidget-CLi6qask.js → SignalWidget-PreTg4Mt.js} +5 -3
  276. package/dist/SignalWidget-PreTg4Mt.js.map +1 -0
  277. package/dist/SimpleTextDialog-Bdw3jul4.cjs +2 -0
  278. package/dist/SimpleTextDialog-Bdw3jul4.cjs.map +1 -0
  279. package/dist/{SimpleTextDialog-8vDPDt6X.js → SimpleTextDialog-DDIm5Znf.js} +26 -19
  280. package/dist/SimpleTextDialog-DDIm5Znf.js.map +1 -0
  281. package/dist/{SpacerWidget-BCA3gdap.js → SpacerWidget-Chy1NO28.js} +3 -3
  282. package/dist/{SpacerWidget-BCA3gdap.js.map → SpacerWidget-Chy1NO28.js.map} +1 -1
  283. package/dist/{SpacerWidget-BJpqoaeP.cjs → SpacerWidget-Cj-j_MsG.cjs} +2 -2
  284. package/dist/{SpacerWidget-BJpqoaeP.cjs.map → SpacerWidget-Cj-j_MsG.cjs.map} +1 -1
  285. package/dist/SparklineWidget-BE1LieLF.cjs +2 -0
  286. package/dist/SparklineWidget-BE1LieLF.cjs.map +1 -0
  287. package/dist/{SparklineWidget-D8mb4zLt.js → SparklineWidget-Bb-gCNNt.js} +11 -11
  288. package/dist/SparklineWidget-Bb-gCNNt.js.map +1 -0
  289. package/dist/TabbookWidget-FNbiZpjn.cjs +2 -0
  290. package/dist/TabbookWidget-FNbiZpjn.cjs.map +1 -0
  291. package/dist/TabbookWidget-a-LsBhBE.js +96 -0
  292. package/dist/TabbookWidget-a-LsBhBE.js.map +1 -0
  293. package/dist/TargetPacketItemChooser-BPRByyfB.cjs +2 -0
  294. package/dist/TargetPacketItemChooser-BPRByyfB.cjs.map +1 -0
  295. package/dist/{TargetPacketItemChooser-DGcXvdTX.js → TargetPacketItemChooser-DDqBQTWC.js} +232 -183
  296. package/dist/TargetPacketItemChooser-DDqBQTWC.js.map +1 -0
  297. package/dist/{TargetsTab-c-qMsGHh.js → TargetsTab-C7Pn5-19.js} +4 -4
  298. package/dist/{TargetsTab-c-qMsGHh.js.map → TargetsTab-C7Pn5-19.js.map} +1 -1
  299. package/dist/{TargetsTab-C4tQ1auc.cjs → TargetsTab-dndajwC_.cjs} +2 -2
  300. package/dist/{TargetsTab-C4tQ1auc.cjs.map → TargetsTab-dndajwC_.cjs.map} +1 -1
  301. package/dist/{TextBoxDialog-Xs-gitZd.js → TextBoxDialog-CJHrE2Sh.js} +29 -22
  302. package/dist/TextBoxDialog-CJHrE2Sh.js.map +1 -0
  303. package/dist/TextBoxDialog-DzCvdsJj.cjs +2 -0
  304. package/dist/TextBoxDialog-DzCvdsJj.cjs.map +1 -0
  305. package/dist/{TextboxWidget-CR05wO-t.js → TextboxWidget-DIHEOldN.js} +19 -19
  306. package/dist/{TextboxWidget-CR05wO-t.js.map → TextboxWidget-DIHEOldN.js.map} +1 -1
  307. package/dist/{TextboxWidget-BcRfHcF6.cjs → TextboxWidget-DYTNipbi.cjs} +2 -2
  308. package/dist/{TextboxWidget-BcRfHcF6.cjs.map → TextboxWidget-DYTNipbi.cjs.map} +1 -1
  309. package/dist/{TextfieldWidget-Ct1hZr2M.cjs → TextfieldWidget-BE-HpIKs.cjs} +2 -2
  310. package/dist/{TextfieldWidget-Ct1hZr2M.cjs.map → TextfieldWidget-BE-HpIKs.cjs.map} +1 -1
  311. package/dist/{TextfieldWidget-Be_Pz2bF.js → TextfieldWidget-CIBo7Dau.js} +5 -5
  312. package/dist/{TextfieldWidget-Be_Pz2bF.js.map → TextfieldWidget-CIBo7Dau.js.map} +1 -1
  313. package/dist/TimeWidget-CLuOYfPP.js +43 -0
  314. package/dist/TimeWidget-CLuOYfPP.js.map +1 -0
  315. package/dist/TimeWidget-RYL7zDoC.cjs +2 -0
  316. package/dist/TimeWidget-RYL7zDoC.cjs.map +1 -0
  317. package/dist/{TitleWidget-BcmxUDzM.js → TitleWidget-BTHKLAsb.js} +3 -3
  318. package/dist/{TitleWidget-BcmxUDzM.js.map → TitleWidget-BTHKLAsb.js.map} +1 -1
  319. package/dist/{TitleWidget-C1qzja9l.cjs → TitleWidget-DVWOhZqJ.cjs} +2 -2
  320. package/dist/{TitleWidget-C1qzja9l.cjs.map → TitleWidget-DVWOhZqJ.cjs.map} +1 -1
  321. package/dist/{ToolsTab-CbY2K86w.cjs → ToolsTab-D4LFT4tV.cjs} +2 -2
  322. package/dist/{ToolsTab-CbY2K86w.cjs.map → ToolsTab-D4LFT4tV.cjs.map} +1 -1
  323. package/dist/{ToolsTab-Buklih4C.js → ToolsTab-D5yhjVM0.js} +4 -4
  324. package/dist/{ToolsTab-Buklih4C.js.map → ToolsTab-D5yhjVM0.js.map} +1 -1
  325. package/dist/{TopBar-HxaiWynT.cjs → TopBar-DUdrFsMv.cjs} +2 -2
  326. package/dist/{TopBar-HxaiWynT.cjs.map → TopBar-DUdrFsMv.cjs.map} +1 -1
  327. package/dist/{TopBar-D4C9DJcu.js → TopBar-DzxJ69Tt.js} +3 -3
  328. package/dist/{TopBar-D4C9DJcu.js.map → TopBar-DzxJ69Tt.js.map} +1 -1
  329. package/dist/{UpgradeToEnterpriseDialog-D0AGxldj.js → UpgradeToEnterpriseDialog-Bf6rEOgp.js} +16 -13
  330. package/dist/UpgradeToEnterpriseDialog-Bf6rEOgp.js.map +1 -0
  331. package/dist/UpgradeToEnterpriseDialog-CujyHt2o.cjs +2 -0
  332. package/dist/UpgradeToEnterpriseDialog-CujyHt2o.cjs.map +1 -0
  333. package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-CP8T5W6m.cjs → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_dda5adfc_lang-Bjn8x8eE.cjs} +108 -108
  334. package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-CP8T5W6m.cjs.map → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_dda5adfc_lang-Bjn8x8eE.cjs.map} +1 -1
  335. package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-B8ikVCn7.js → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_dda5adfc_lang-NXWdTcR2.js} +5473 -5451
  336. package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-B8ikVCn7.js.map → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_dda5adfc_lang-NXWdTcR2.js.map} +1 -1
  337. package/dist/{VWidget-CBmUpKSV.js → VWidget-BcwkHuIT.js} +3 -3
  338. package/dist/{VWidget-CBmUpKSV.js.map → VWidget-BcwkHuIT.js.map} +1 -1
  339. package/dist/{VWidget-DhGLFGS2.cjs → VWidget-CbdjSkP3.cjs} +2 -2
  340. package/dist/{VWidget-DhGLFGS2.cjs.map → VWidget-CbdjSkP3.cjs.map} +1 -1
  341. package/dist/ValueWidget-BubIamVx.js +138 -0
  342. package/dist/ValueWidget-BubIamVx.js.map +1 -0
  343. package/dist/ValueWidget-CgAl2Av2.cjs +2 -0
  344. package/dist/ValueWidget-CgAl2Av2.cjs.map +1 -0
  345. package/dist/{ValuelimitsbarWidget-BdY02gqc.js → ValuelimitsbarWidget-DKTrV1RT.js} +11 -11
  346. package/dist/{ValuelimitsbarWidget-BdY02gqc.js.map → ValuelimitsbarWidget-DKTrV1RT.js.map} +1 -1
  347. package/dist/{ValuelimitsbarWidget-KsFz7ipK.cjs → ValuelimitsbarWidget-Dn_sS0zt.cjs} +2 -2
  348. package/dist/{ValuelimitsbarWidget-KsFz7ipK.cjs.map → ValuelimitsbarWidget-Dn_sS0zt.cjs.map} +1 -1
  349. package/dist/ValuelimitscolumnWidget-CGhifOZI.cjs +2 -0
  350. package/dist/ValuelimitscolumnWidget-CGhifOZI.cjs.map +1 -0
  351. package/dist/{ValuelimitscolumnWidget-CuJ6rqtC.js → ValuelimitscolumnWidget-D8JIK4Zi.js} +11 -11
  352. package/dist/ValuelimitscolumnWidget-D8JIK4Zi.js.map +1 -0
  353. package/dist/{ValuerangebarWidget-C5rolGDi.js → ValuerangebarWidget-D8hVKp0l.js} +6 -6
  354. package/dist/{ValuerangebarWidget-C5rolGDi.js.map → ValuerangebarWidget-D8hVKp0l.js.map} +1 -1
  355. package/dist/{ValuerangebarWidget-CDJeamPr.cjs → ValuerangebarWidget-DPtR-Dla.cjs} +2 -2
  356. package/dist/{ValuerangebarWidget-CDJeamPr.cjs.map → ValuerangebarWidget-DPtR-Dla.cjs.map} +1 -1
  357. package/dist/VerticalWidget-DMp3DXGa.js +68 -0
  358. package/dist/VerticalWidget-DMp3DXGa.js.map +1 -0
  359. package/dist/VerticalWidget-DScGTfwX.cjs +2 -0
  360. package/dist/VerticalWidget-DScGTfwX.cjs.map +1 -0
  361. package/dist/{VerticalboxWidget-D-3H1PYU.cjs → VerticalboxWidget-CIJ1c7WU.cjs} +2 -2
  362. package/dist/{VerticalboxWidget-D-3H1PYU.cjs.map → VerticalboxWidget-CIJ1c7WU.cjs.map} +1 -1
  363. package/dist/{VerticalboxWidget-CzDgveBl.js → VerticalboxWidget-CVf1d_3_.js} +6 -6
  364. package/dist/{VerticalboxWidget-CzDgveBl.js.map → VerticalboxWidget-CVf1d_3_.js.map} +1 -1
  365. package/dist/Widget-Btu2EoLT.cjs +2 -0
  366. package/dist/Widget-Btu2EoLT.cjs.map +1 -0
  367. package/dist/{Widget-VCl8Ts8s.js → Widget-D4rzBHnr.js} +27 -19
  368. package/dist/Widget-D4rzBHnr.js.map +1 -0
  369. package/dist/components.cjs +3 -3
  370. package/dist/components.cjs.map +1 -1
  371. package/dist/components.js +421 -248
  372. package/dist/components.js.map +1 -1
  373. package/dist/icons.cjs +1 -1
  374. package/dist/icons.cjs.map +1 -1
  375. package/dist/icons.js +6 -4
  376. package/dist/icons.js.map +1 -1
  377. package/dist/plugins.cjs +2 -2
  378. package/dist/plugins.cjs.map +1 -1
  379. package/dist/plugins.js +23 -17
  380. package/dist/plugins.js.map +1 -1
  381. package/dist/{settings-sg_XHXQ-.cjs → settings-B9vbjzwV.cjs} +2 -2
  382. package/dist/{settings-sg_XHXQ-.cjs.map → settings-B9vbjzwV.cjs.map} +1 -1
  383. package/dist/{settings-DlX9yvJJ.js → settings-Ctcx_wMT.js} +2 -2
  384. package/dist/{settings-DlX9yvJJ.js.map → settings-Ctcx_wMT.js.map} +1 -1
  385. package/dist/tools/admin.cjs +4 -5
  386. package/dist/tools/admin.cjs.map +1 -1
  387. package/dist/tools/admin.js +954 -833
  388. package/dist/tools/admin.js.map +1 -1
  389. package/dist/tools/base.cjs +1 -1
  390. package/dist/tools/base.cjs.map +1 -1
  391. package/dist/tools/base.js +38 -37
  392. package/dist/tools/base.js.map +1 -1
  393. package/dist/tools/calendar.cjs +1 -1
  394. package/dist/tools/calendar.js +1 -1
  395. package/dist/tools/scriptrunner.cjs +8 -8
  396. package/dist/tools/scriptrunner.cjs.map +1 -1
  397. package/dist/tools/scriptrunner.js +1121 -1134
  398. package/dist/tools/scriptrunner.js.map +1 -1
  399. package/dist/useContainerHeight-BAw05dIa.js.map +1 -1
  400. package/dist/useContainerHeight-BEd4f2Lr.cjs.map +1 -1
  401. package/dist/vue-common.css +1 -1
  402. package/dist/widgets.cjs +1 -1
  403. package/dist/widgets.js +118 -116
  404. package/dist/widgets.js.map +1 -1
  405. package/package.json +6 -6
  406. package/dist/BarColumn-BZSUr33b.cjs +0 -2
  407. package/dist/BarColumn-BZSUr33b.cjs.map +0 -1
  408. package/dist/BarColumn-XWs-3Cwb.js.map +0 -1
  409. package/dist/ButtonWidget-BBMDS_YF.cjs.map +0 -1
  410. package/dist/ButtonWidget-BaSvtElA.js.map +0 -1
  411. package/dist/CanvasimageWidget-Dk15uRRu.cjs +0 -2
  412. package/dist/CanvasimageWidget-Dk15uRRu.cjs.map +0 -1
  413. package/dist/CanvasimageWidget-YP1pCtvb.js.map +0 -1
  414. package/dist/CanvasimagevalueWidget-BQHjJCuq.cjs +0 -2
  415. package/dist/CanvasimagevalueWidget-BQHjJCuq.cjs.map +0 -1
  416. package/dist/CanvasimagevalueWidget-CjVHb2uj.js.map +0 -1
  417. package/dist/CanvaslabelvalueWidget-BYmsu9r_.cjs +0 -2
  418. package/dist/CanvaslabelvalueWidget-BYmsu9r_.cjs.map +0 -1
  419. package/dist/CanvaslabelvalueWidget-Dyo_ogHn.js.map +0 -1
  420. package/dist/CanvaslinevalueWidget-BOZyJuLE.js.map +0 -1
  421. package/dist/CanvaslinevalueWidget-DM5c-ciY.cjs +0 -2
  422. package/dist/CanvaslinevalueWidget-DM5c-ciY.cjs.map +0 -1
  423. package/dist/CheckbuttonWidget-BSvTWD3x.cjs +0 -2
  424. package/dist/ComboboxWidget-B_KAnIVB.cjs +0 -2
  425. package/dist/CriticalCmdDialog-BtzhxuZi.js.map +0 -1
  426. package/dist/CriticalCmdDialog-CeohXoAG.cjs +0 -2
  427. package/dist/CriticalCmdDialog-CeohXoAG.cjs.map +0 -1
  428. package/dist/CustomIcon-eie3rPKh.cjs +0 -2
  429. package/dist/DetailsDialog-Bc_VEG95.cjs +0 -2
  430. package/dist/DetailsDialog-Bc_VEG95.cjs.map +0 -1
  431. package/dist/DetailsDialog-Bq7SS7bc.js.map +0 -1
  432. package/dist/DynamicWidget-BNfJRfR5.cjs +0 -2
  433. package/dist/DynamicWidget-BNfJRfR5.cjs.map +0 -1
  434. package/dist/DynamicWidget-DHL7pbgW.js.map +0 -1
  435. package/dist/EventListDialog-Dycx70tY.cjs +0 -2
  436. package/dist/EventListDialog-Dycx70tY.cjs.map +0 -1
  437. package/dist/EventListDialog-jdNF3szO.js.map +0 -1
  438. package/dist/Graph-B7KPo9Ul.js.map +0 -1
  439. package/dist/Graph-C9FS6KR3.cjs +0 -2
  440. package/dist/Graph-C9FS6KR3.cjs.map +0 -1
  441. package/dist/HorizontalWidget-CN6goWHY.cjs +0 -2
  442. package/dist/HorizontalWidget-CN6goWHY.cjs.map +0 -1
  443. package/dist/HorizontalWidget-DbEQYjFC.js +0 -41
  444. package/dist/HorizontalWidget-DbEQYjFC.js.map +0 -1
  445. package/dist/ImageviewerWidget-6d6Kl3W_.js.map +0 -1
  446. package/dist/ImageviewerWidget-CULuNsiD.cjs +0 -2
  447. package/dist/ImageviewerWidget-CULuNsiD.cjs.map +0 -1
  448. package/dist/LabelsparklineWidget-Cbug97Ne.cjs +0 -2
  449. package/dist/LabelsparklineWidget-Cbug97Ne.cjs.map +0 -1
  450. package/dist/LabelsparklineWidget-CdZ_pM2B.js.map +0 -1
  451. package/dist/LabelvaluelimitsbarWidget-DTcYbEQS.js.map +0 -1
  452. package/dist/LabelvaluelimitsbarWidget-DbO_Q5ex.cjs.map +0 -1
  453. package/dist/LabelvaluelimitscolumnWidget-BMSwK1Ys.cjs +0 -2
  454. package/dist/LabelvaluelimitscolumnWidget-BMSwK1Ys.cjs.map +0 -1
  455. package/dist/LabelvaluelimitscolumnWidget-D0ltQ9Ta.js.map +0 -1
  456. package/dist/Layout-DDewLzbI.cjs +0 -2
  457. package/dist/Layout-DDewLzbI.cjs.map +0 -1
  458. package/dist/Layout-DW5yNlp7.js +0 -14
  459. package/dist/Layout-DW5yNlp7.js.map +0 -1
  460. package/dist/LedWidget-Cif7vC7q.cjs +0 -2
  461. package/dist/LedWidget-Cif7vC7q.cjs.map +0 -1
  462. package/dist/LedWidget-DUvJ2v8k.js.map +0 -1
  463. package/dist/LimitsbarWidget-BehZv0-k.js +0 -72
  464. package/dist/LimitsbarWidget-BehZv0-k.js.map +0 -1
  465. package/dist/LimitsbarWidget-BodNPbuH.cjs +0 -2
  466. package/dist/LimitsbarWidget-BodNPbuH.cjs.map +0 -1
  467. package/dist/LimitscolorWidget-DPhymKgB.cjs +0 -2
  468. package/dist/LimitscolorWidget-DPhymKgB.cjs.map +0 -1
  469. package/dist/LimitscolorWidget-FXT0ZPPH.js.map +0 -1
  470. package/dist/MatrixbycolumnsWidget-BLkwvpMk.cjs +0 -2
  471. package/dist/MatrixbycolumnsWidget-BLkwvpMk.cjs.map +0 -1
  472. package/dist/MatrixbycolumnsWidget-CCF7rCkV.js +0 -56
  473. package/dist/MatrixbycolumnsWidget-CCF7rCkV.js.map +0 -1
  474. package/dist/MicroservicesTab-rxOATXLO.js +0 -219
  475. package/dist/MicroservicesTab-rxOATXLO.js.map +0 -1
  476. package/dist/MicroservicesTab-uesXuuM4.cjs +0 -2
  477. package/dist/MicroservicesTab-uesXuuM4.cjs.map +0 -1
  478. package/dist/Openc3Screen-CzD9BB0M.cjs +0 -6
  479. package/dist/Openc3Screen-CzD9BB0M.cjs.map +0 -1
  480. package/dist/Openc3Screen-DcIIUO63.js.map +0 -1
  481. package/dist/OutputDialog-CNH74LpJ.js.map +0 -1
  482. package/dist/OutputDialog-QIabyvK1.cjs +0 -2
  483. package/dist/OutputDialog-QIabyvK1.cjs.map +0 -1
  484. package/dist/PluginsTab-B_Pf2A9c.js.map +0 -1
  485. package/dist/PluginsTab-DXf9zX0h.cjs.map +0 -1
  486. package/dist/ProgressbarWidget-B5WN658S.js.map +0 -1
  487. package/dist/ProgressbarWidget-D2NHSJny.cjs +0 -2
  488. package/dist/ProgressbarWidget-D2NHSJny.cjs.map +0 -1
  489. package/dist/RadiobuttonWidget-DkG9GtAy.cjs +0 -2
  490. package/dist/RangebarWidget-CJgtAk5z.cjs +0 -2
  491. package/dist/RangebarWidget-CJgtAk5z.cjs.map +0 -1
  492. package/dist/RangebarWidget-Dn0GASdi.js.map +0 -1
  493. package/dist/RollupWidget-B2pGGoET.cjs +0 -2
  494. package/dist/RollupWidget-B2pGGoET.cjs.map +0 -1
  495. package/dist/RollupWidget-b62qcG5K.js.map +0 -1
  496. package/dist/ScriptChooser-CtV7dDJS.cjs +0 -2
  497. package/dist/ScriptChooser-CtV7dDJS.cjs.map +0 -1
  498. package/dist/ScriptChooser-DMPY3m8a.js.map +0 -1
  499. package/dist/ScrollwindowWidget-ByJRy528.cjs +0 -2
  500. package/dist/ScrollwindowWidget-ByJRy528.cjs.map +0 -1
  501. package/dist/ScrollwindowWidget-Dn29gs-U.js +0 -45
  502. package/dist/ScrollwindowWidget-Dn29gs-U.js.map +0 -1
  503. package/dist/SettingsTab-8Zeg3G0C.cjs +0 -3
  504. package/dist/SettingsTab-8Zeg3G0C.cjs.map +0 -1
  505. package/dist/SettingsTab-L5xbCAW_.js.map +0 -1
  506. package/dist/SignalWidget-CEmQymzQ.cjs +0 -2
  507. package/dist/SignalWidget-CEmQymzQ.cjs.map +0 -1
  508. package/dist/SignalWidget-CLi6qask.js.map +0 -1
  509. package/dist/SimpleTextDialog-8vDPDt6X.js.map +0 -1
  510. package/dist/SimpleTextDialog-CJ8pLBGz.cjs +0 -2
  511. package/dist/SimpleTextDialog-CJ8pLBGz.cjs.map +0 -1
  512. package/dist/SparklineWidget-CIkMm4O-.cjs +0 -2
  513. package/dist/SparklineWidget-CIkMm4O-.cjs.map +0 -1
  514. package/dist/SparklineWidget-D8mb4zLt.js.map +0 -1
  515. package/dist/TabbookWidget-Bkt4g02d.js +0 -66
  516. package/dist/TabbookWidget-Bkt4g02d.js.map +0 -1
  517. package/dist/TabbookWidget-DqcScWwW.cjs +0 -2
  518. package/dist/TabbookWidget-DqcScWwW.cjs.map +0 -1
  519. package/dist/TargetPacketItemChooser-Cm6mQvhI.cjs +0 -2
  520. package/dist/TargetPacketItemChooser-Cm6mQvhI.cjs.map +0 -1
  521. package/dist/TargetPacketItemChooser-DGcXvdTX.js.map +0 -1
  522. package/dist/TextBoxDialog-DXG7H7kQ.cjs +0 -2
  523. package/dist/TextBoxDialog-DXG7H7kQ.cjs.map +0 -1
  524. package/dist/TextBoxDialog-Xs-gitZd.js.map +0 -1
  525. package/dist/TimeWidget-3M7CQ893.cjs +0 -2
  526. package/dist/TimeWidget-3M7CQ893.cjs.map +0 -1
  527. package/dist/TimeWidget-Dy8zpkC6.js +0 -40
  528. package/dist/TimeWidget-Dy8zpkC6.js.map +0 -1
  529. package/dist/UpgradeToEnterpriseDialog-D0AGxldj.js.map +0 -1
  530. package/dist/UpgradeToEnterpriseDialog-D8BkzmVD.cjs +0 -2
  531. package/dist/UpgradeToEnterpriseDialog-D8BkzmVD.cjs.map +0 -1
  532. package/dist/ValueWidget-BxWrHkYY.js +0 -118
  533. package/dist/ValueWidget-BxWrHkYY.js.map +0 -1
  534. package/dist/ValueWidget-yuZ8tPzG.cjs +0 -2
  535. package/dist/ValueWidget-yuZ8tPzG.cjs.map +0 -1
  536. package/dist/ValuelimitscolumnWidget-B0HGnyS5.cjs +0 -2
  537. package/dist/ValuelimitscolumnWidget-B0HGnyS5.cjs.map +0 -1
  538. package/dist/ValuelimitscolumnWidget-CuJ6rqtC.js.map +0 -1
  539. package/dist/VerticalWidget-DsnEzKZ2.js +0 -40
  540. package/dist/VerticalWidget-DsnEzKZ2.js.map +0 -1
  541. package/dist/VerticalWidget-wuRCrd7Q.cjs +0 -2
  542. package/dist/VerticalWidget-wuRCrd7Q.cjs.map +0 -1
  543. package/dist/Widget-CKianvfR.cjs +0 -2
  544. package/dist/Widget-CKianvfR.cjs.map +0 -1
  545. package/dist/Widget-VCl8Ts8s.js.map +0 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-CP8T5W6m.cjs"),e=require("vue"),y=require("./CustomIcon-eie3rPKh.cjs"),C={data(){return{redisCommandText:"",redisResponse:null,redisEndpoint:"/openc3-api/redis/exec",prettyPrint:!1,headers:[{text:"Redis",value:"redis",width:150},{text:"Command",value:"command"},{text:"Response",value:"response"}],commands:[]}},computed:{formattedResponse:function(){let o=this.redisResponse;if(this.redisResponse&&this.prettyPrint){if(typeof o=="string")try{o=JSON.parse(o)}catch{}if(Array.isArray(o)){for(let t=0;t<o.length;t++)if(typeof o[t]=="string")try{o[t]=JSON.parse(o[t])}catch{}}}return o=JSON.stringify(o,null,2),`Response: ${o}`}},methods:{commandKeydown:function(o){o.key==="Enter"&&this.executeRaw()},executeRaw:function(){this.redisResponse=null,f.fi.post(this.redisEndpoint,{data:this.redisCommandText,headers:{Accept:"application/json","Content-Type":"plain/text"}}).then(o=>{this.redisResponse=o.data.result;let t="Ephemeral";this.redisEndpoint==="/openc3-api/redis/exec"&&(t="Persistent"),this.commands.unshift({redis:t,command:this.redisCommandText,response:this.redisResponse})})}}},V=["textContent"],N={key:1,class:"monospace"};function R(o,t,l,g,n,r){const i=e.resolveComponent("v-card-title"),a=e.resolveComponent("v-card-subtitle"),c=e.resolveComponent("v-text-field"),p=e.resolveComponent("v-checkbox"),m=e.resolveComponent("v-card-text"),u=e.resolveComponent("v-btn"),d=e.resolveComponent("v-radio"),_=e.resolveComponent("v-radio-group"),v=e.resolveComponent("v-card-actions"),x=e.resolveComponent("v-data-table"),h=e.resolveComponent("v-card");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(h,null,{default:e.withCtx(()=>[e.createVNode(i,null,{default:e.withCtx(()=>[...t[3]||(t[3]=[e.createTextVNode(" Send Raw Redis Commands ",-1)])]),_:1}),e.createVNode(a,null,{default:e.withCtx(()=>[...t[4]||(t[4]=[e.createTextVNode(" THIS IS DANGEROUS. This allows you to interact directly with the underlying Redis database, making it easy to modify or delete data. ",-1),e.createElementVNode("br",null,null,-1),e.createElementVNode("br",null,null,-1),e.createTextVNode(" Enter commands like you would at the Redis cli prompt: ",-1),e.createElementVNode("code",null,"ping",-1),e.createTextVNode(" or ",-1),e.createElementVNode("code",null,"hget openc3__settings version",-1)])]),_:1}),e.createVNode(m,{class:"pb-0 ml-2"},{default:e.withCtx(()=>[e.createVNode(c,{modelValue:n.redisCommandText,"onUpdate:modelValue":t[0]||(t[0]=s=>n.redisCommandText=s),"hide-details":"",label:"Redis command",class:"monospace",onKeydown:r.commandKeydown},null,8,["modelValue","onKeydown"]),e.createVNode(p,{modelValue:n.prettyPrint,"onUpdate:modelValue":t[1]||(t[1]=s=>n.prettyPrint=s),label:"Pretty print",density:"compact","hide-details":"",class:"mb-2"},null,8,["modelValue"]),n.redisResponse?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[n.prettyPrint?(e.openBlock(),e.createElementBlock("pre",{key:0,textContent:e.toDisplayString(r.formattedResponse)},null,8,V)):(e.openBlock(),e.createElementBlock("span",N," Response: "+e.toDisplayString(n.redisResponse),1))],64)):e.createCommentVNode("",!0)]),_:1}),e.createVNode(v,{class:"px-2"},{default:e.withCtx(()=>[e.createVNode(u,{disabled:!n.redisCommandText.length,color:"success",variant:"text",onClick:r.executeRaw},{default:e.withCtx(()=>[...t[5]||(t[5]=[e.createTextVNode(" Execute ",-1)])]),_:1},8,["disabled","onClick"]),e.createVNode(_,{modelValue:n.redisEndpoint,"onUpdate:modelValue":t[2]||(t[2]=s=>n.redisEndpoint=s),inline:"","hide-details":"",class:"mt-0"},{default:e.withCtx(()=>[e.createVNode(d,{label:"Persistent",value:"/openc3-api/redis/exec","data-test":"persistent-radio"}),e.createVNode(d,{label:"Ephemeral",value:"/openc3-api/redis/exec?ephemeral=1","data-test":"ephemeral-radio"})]),_:1},8,["modelValue"])]),_:1}),e.createVNode(x,{headers:n.headers,items:n.commands,class:"monospace","items-per-page":-1,"hide-default-footer":"",density:"compact",height:"45vh"},null,8,["headers","items"])]),_:1})])}const b=y._export_sfc(C,[["render",R],["__scopeId","data-v-42ef013f"]]);exports.default=b;
2
- //# sourceMappingURL=RedisTab-C1yaDRSt.cjs.map
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_dda5adfc_lang-Bjn8x8eE.cjs"),e=require("vue"),y=require("./CustomIcon-CEc927h0.cjs"),C={data(){return{redisCommandText:"",redisResponse:null,redisEndpoint:"/openc3-api/redis/exec",prettyPrint:!1,headers:[{text:"Redis",value:"redis",width:150},{text:"Command",value:"command"},{text:"Response",value:"response"}],commands:[]}},computed:{formattedResponse:function(){let o=this.redisResponse;if(this.redisResponse&&this.prettyPrint){if(typeof o=="string")try{o=JSON.parse(o)}catch{}if(Array.isArray(o)){for(let t=0;t<o.length;t++)if(typeof o[t]=="string")try{o[t]=JSON.parse(o[t])}catch{}}}return o=JSON.stringify(o,null,2),`Response: ${o}`}},methods:{commandKeydown:function(o){o.key==="Enter"&&this.executeRaw()},executeRaw:function(){this.redisResponse=null,f.fi.post(this.redisEndpoint,{data:this.redisCommandText,headers:{Accept:"application/json","Content-Type":"plain/text"}}).then(o=>{this.redisResponse=o.data.result;let t="Ephemeral";this.redisEndpoint==="/openc3-api/redis/exec"&&(t="Persistent"),this.commands.unshift({redis:t,command:this.redisCommandText,response:this.redisResponse})})}}},V=["textContent"],N={key:1,class:"monospace"};function R(o,t,l,g,n,r){const i=e.resolveComponent("v-card-title"),a=e.resolveComponent("v-card-subtitle"),c=e.resolveComponent("v-text-field"),p=e.resolveComponent("v-checkbox"),m=e.resolveComponent("v-card-text"),u=e.resolveComponent("v-btn"),d=e.resolveComponent("v-radio"),_=e.resolveComponent("v-radio-group"),v=e.resolveComponent("v-card-actions"),x=e.resolveComponent("v-data-table"),h=e.resolveComponent("v-card");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(h,null,{default:e.withCtx(()=>[e.createVNode(i,null,{default:e.withCtx(()=>[...t[3]||(t[3]=[e.createTextVNode(" Send Raw Redis Commands ",-1)])]),_:1}),e.createVNode(a,null,{default:e.withCtx(()=>[...t[4]||(t[4]=[e.createTextVNode(" THIS IS DANGEROUS. This allows you to interact directly with the underlying Redis database, making it easy to modify or delete data. ",-1),e.createElementVNode("br",null,null,-1),e.createElementVNode("br",null,null,-1),e.createTextVNode(" Enter commands like you would at the Redis cli prompt: ",-1),e.createElementVNode("code",null,"ping",-1),e.createTextVNode(" or ",-1),e.createElementVNode("code",null,"hget openc3__settings version",-1)])]),_:1}),e.createVNode(m,{class:"pb-0 ml-2"},{default:e.withCtx(()=>[e.createVNode(c,{modelValue:n.redisCommandText,"onUpdate:modelValue":t[0]||(t[0]=s=>n.redisCommandText=s),"hide-details":"",label:"Redis command",class:"monospace",onKeydown:r.commandKeydown},null,8,["modelValue","onKeydown"]),e.createVNode(p,{modelValue:n.prettyPrint,"onUpdate:modelValue":t[1]||(t[1]=s=>n.prettyPrint=s),label:"Pretty print",density:"compact","hide-details":"",class:"mb-2"},null,8,["modelValue"]),n.redisResponse?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[n.prettyPrint?(e.openBlock(),e.createElementBlock("pre",{key:0,textContent:e.toDisplayString(r.formattedResponse)},null,8,V)):(e.openBlock(),e.createElementBlock("span",N," Response: "+e.toDisplayString(n.redisResponse),1))],64)):e.createCommentVNode("",!0)]),_:1}),e.createVNode(v,{class:"px-2"},{default:e.withCtx(()=>[e.createVNode(u,{disabled:!n.redisCommandText.length,color:"success",variant:"text",onClick:r.executeRaw},{default:e.withCtx(()=>[...t[5]||(t[5]=[e.createTextVNode(" Execute ",-1)])]),_:1},8,["disabled","onClick"]),e.createVNode(_,{modelValue:n.redisEndpoint,"onUpdate:modelValue":t[2]||(t[2]=s=>n.redisEndpoint=s),inline:"","hide-details":"",class:"mt-0"},{default:e.withCtx(()=>[e.createVNode(d,{label:"Persistent",value:"/openc3-api/redis/exec","data-test":"persistent-radio"}),e.createVNode(d,{label:"Ephemeral",value:"/openc3-api/redis/exec?ephemeral=1","data-test":"ephemeral-radio"})]),_:1},8,["modelValue"])]),_:1}),e.createVNode(x,{headers:n.headers,items:n.commands,class:"monospace","items-per-page":-1,"hide-default-footer":"",density:"compact",height:"45vh"},null,8,["headers","items"])]),_:1})])}const b=y._export_sfc(C,[["render",R],["__scopeId","data-v-42ef013f"]]);exports.default=b;
2
+ //# sourceMappingURL=RedisTab-DEKMLop2.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"RedisTab-C1yaDRSt.cjs","sources":["../src/tools/admin/tabs/RedisTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-card>\n <v-card-title> Send Raw Redis Commands </v-card-title>\n <v-card-subtitle>\n THIS IS DANGEROUS. This allows you to interact directly with the\n underlying Redis database, making it easy to modify or delete data.\n <br /><br />\n Enter commands like you would at the Redis cli prompt:\n <code>ping</code> or\n <code>hget openc3__settings version</code>\n </v-card-subtitle>\n <v-card-text class=\"pb-0 ml-2\">\n <v-text-field\n v-model=\"redisCommandText\"\n hide-details\n label=\"Redis command\"\n class=\"monospace\"\n @keydown=\"commandKeydown\"\n />\n <v-checkbox\n v-model=\"prettyPrint\"\n label=\"Pretty print\"\n density=\"compact\"\n hide-details\n class=\"mb-2\"\n />\n <template v-if=\"redisResponse\">\n <pre v-if=\"prettyPrint\" v-text=\"formattedResponse\" />\n <span v-else class=\"monospace\"> Response: {{ redisResponse }} </span>\n </template>\n </v-card-text>\n <v-card-actions class=\"px-2\">\n <v-btn\n :disabled=\"!redisCommandText.length\"\n color=\"success\"\n variant=\"text\"\n @click=\"executeRaw\"\n >\n Execute\n </v-btn>\n <v-radio-group v-model=\"redisEndpoint\" inline hide-details class=\"mt-0\">\n <v-radio\n label=\"Persistent\"\n value=\"/openc3-api/redis/exec\"\n data-test=\"persistent-radio\"\n />\n <v-radio\n label=\"Ephemeral\"\n value=\"/openc3-api/redis/exec?ephemeral=1\"\n data-test=\"ephemeral-radio\"\n />\n </v-radio-group>\n </v-card-actions>\n\n <v-data-table\n :headers=\"headers\"\n :items=\"commands\"\n class=\"monospace\"\n :items-per-page=\"-1\"\n hide-default-footer\n density=\"compact\"\n height=\"45vh\"\n >\n </v-data-table>\n </v-card>\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\n\nexport default {\n data() {\n return {\n redisCommandText: '',\n redisResponse: null,\n redisEndpoint: '/openc3-api/redis/exec',\n prettyPrint: false,\n headers: [\n { text: 'Redis', value: 'redis', width: 150 },\n { text: 'Command', value: 'command' },\n { text: 'Response', value: 'response' },\n ],\n commands: [],\n }\n },\n computed: {\n formattedResponse: function () {\n let result = this.redisResponse\n if (this.redisResponse && this.prettyPrint) {\n if (typeof result === 'string') {\n try {\n result = JSON.parse(result)\n } catch (e) {\n // Oh 🐋\n }\n }\n if (Array.isArray(result)) {\n for (let i = 0; i < result.length; i++) {\n if (typeof result[i] === 'string') {\n try {\n result[i] = JSON.parse(result[i])\n } catch (e) {\n // Oh 🐋\n }\n }\n }\n }\n }\n result = JSON.stringify(result, null, 2)\n return `Response: ${result}`\n },\n },\n methods: {\n commandKeydown: function ($event) {\n $event.key === 'Enter' && this.executeRaw()\n },\n executeRaw: function () {\n this.redisResponse = null\n Api.post(this.redisEndpoint, {\n data: this.redisCommandText,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'plain/text',\n },\n }).then((response) => {\n this.redisResponse = response.data.result\n let redis = 'Ephemeral'\n if (this.redisEndpoint === '/openc3-api/redis/exec') {\n redis = 'Persistent'\n }\n this.commands.unshift({\n redis: redis,\n command: this.redisCommandText,\n response: this.redisResponse,\n })\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.monospace {\n font-family: monospace;\n font-size: 14px;\n}\n</style>\n"],"names":["_sfc_main","result","i","$event","Api","response","redis","_createElementBlock","_createVNode","_component_v_card","_component_v_card_title","_cache","_component_v_card_subtitle","_createElementVNode","_component_v_card_text","_component_v_text_field","$data","$options","_component_v_checkbox","_Fragment","_toDisplayString","_openBlock","_hoisted_2","_component_v_card_actions","_component_v_btn","_component_v_radio_group","_component_v_radio","_component_v_data_table"],"mappings":"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"}
1
+ {"version":3,"file":"RedisTab-DEKMLop2.cjs","sources":["../src/tools/admin/tabs/RedisTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-card>\n <v-card-title> Send Raw Redis Commands </v-card-title>\n <v-card-subtitle>\n THIS IS DANGEROUS. This allows you to interact directly with the\n underlying Redis database, making it easy to modify or delete data.\n <br /><br />\n Enter commands like you would at the Redis cli prompt:\n <code>ping</code> or\n <code>hget openc3__settings version</code>\n </v-card-subtitle>\n <v-card-text class=\"pb-0 ml-2\">\n <v-text-field\n v-model=\"redisCommandText\"\n hide-details\n label=\"Redis command\"\n class=\"monospace\"\n @keydown=\"commandKeydown\"\n />\n <v-checkbox\n v-model=\"prettyPrint\"\n label=\"Pretty print\"\n density=\"compact\"\n hide-details\n class=\"mb-2\"\n />\n <template v-if=\"redisResponse\">\n <pre v-if=\"prettyPrint\" v-text=\"formattedResponse\" />\n <span v-else class=\"monospace\"> Response: {{ redisResponse }} </span>\n </template>\n </v-card-text>\n <v-card-actions class=\"px-2\">\n <v-btn\n :disabled=\"!redisCommandText.length\"\n color=\"success\"\n variant=\"text\"\n @click=\"executeRaw\"\n >\n Execute\n </v-btn>\n <v-radio-group v-model=\"redisEndpoint\" inline hide-details class=\"mt-0\">\n <v-radio\n label=\"Persistent\"\n value=\"/openc3-api/redis/exec\"\n data-test=\"persistent-radio\"\n />\n <v-radio\n label=\"Ephemeral\"\n value=\"/openc3-api/redis/exec?ephemeral=1\"\n data-test=\"ephemeral-radio\"\n />\n </v-radio-group>\n </v-card-actions>\n\n <v-data-table\n :headers=\"headers\"\n :items=\"commands\"\n class=\"monospace\"\n :items-per-page=\"-1\"\n hide-default-footer\n density=\"compact\"\n height=\"45vh\"\n >\n </v-data-table>\n </v-card>\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\n\nexport default {\n data() {\n return {\n redisCommandText: '',\n redisResponse: null,\n redisEndpoint: '/openc3-api/redis/exec',\n prettyPrint: false,\n headers: [\n { text: 'Redis', value: 'redis', width: 150 },\n { text: 'Command', value: 'command' },\n { text: 'Response', value: 'response' },\n ],\n commands: [],\n }\n },\n computed: {\n formattedResponse: function () {\n let result = this.redisResponse\n if (this.redisResponse && this.prettyPrint) {\n if (typeof result === 'string') {\n try {\n result = JSON.parse(result)\n } catch (e) {\n // Oh 🐋\n }\n }\n if (Array.isArray(result)) {\n for (let i = 0; i < result.length; i++) {\n if (typeof result[i] === 'string') {\n try {\n result[i] = JSON.parse(result[i])\n } catch (e) {\n // Oh 🐋\n }\n }\n }\n }\n }\n result = JSON.stringify(result, null, 2)\n return `Response: ${result}`\n },\n },\n methods: {\n commandKeydown: function ($event) {\n $event.key === 'Enter' && this.executeRaw()\n },\n executeRaw: function () {\n this.redisResponse = null\n Api.post(this.redisEndpoint, {\n data: this.redisCommandText,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'plain/text',\n },\n }).then((response) => {\n this.redisResponse = response.data.result\n let redis = 'Ephemeral'\n if (this.redisEndpoint === '/openc3-api/redis/exec') {\n redis = 'Persistent'\n }\n this.commands.unshift({\n redis: redis,\n command: this.redisCommandText,\n response: this.redisResponse,\n })\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.monospace {\n font-family: monospace;\n font-size: 14px;\n}\n</style>\n"],"names":["_sfc_main","result","i","$event","Api","response","redis","_createElementBlock","_createVNode","_component_v_card","_component_v_card_title","_cache","_component_v_card_subtitle","_createElementVNode","_component_v_card_text","_component_v_text_field","$data","$options","_component_v_checkbox","_Fragment","_toDisplayString","_openBlock","_hoisted_2","_component_v_card_actions","_component_v_btn","_component_v_radio_group","_component_v_radio","_component_v_data_table"],"mappings":"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"}
@@ -1,13 +1,15 @@
1
- import { W as a } from "./Widget-VCl8Ts8s.js";
1
+ import { W as a } from "./Widget-D4rzBHnr.js";
2
2
  import { resolveComponent as l, createBlock as n, openBlock as c, normalizeStyle as o } from "vue";
3
- import { _ as u } from "./CustomIcon-DTfsnDJn.js";
3
+ import { _ as u } from "./CustomIcon-B9m73Gqm.js";
4
4
  const m = {
5
5
  mixins: [a],
6
6
  props: {
7
7
  value: {
8
+ type: [Number, String],
8
9
  default: null
9
10
  }
10
11
  },
12
+ emits: ["addItem", "deleteItem", "open"],
11
13
  data: function() {
12
14
  return {
13
15
  valueId: null,
@@ -22,8 +24,8 @@ const m = {
22
24
  computed: {
23
25
  status: function() {
24
26
  let e = "off";
25
- for (const s of this.items) {
26
- let t = this.screenValues[s][1];
27
+ for (const i of this.items) {
28
+ let t = this.screenValues[i][1];
27
29
  t && ((t.includes("BLUE") || t.includes("GREEN")) && e != "caution" && e != "critical" && (e = "normal"), t.includes("YELLOW") && e != "critical" && (e = "caution"), t.includes("RED") && (e = "critical"));
28
30
  }
29
31
  return e;
@@ -45,9 +47,9 @@ const m = {
45
47
  break;
46
48
  // Create the list of rollup telemetry
47
49
  case "TLM":
48
- let s = "CONVERTED";
49
- e[4] && (s = e[4]);
50
- let t = `${e[1]}__${e[2]}__${e[3]}__${s}`;
50
+ let i = "CONVERTED";
51
+ e[4] && (i = e[4]);
52
+ let t = `${e[1]}__${e[2]}__${e[3]}__${i}`;
51
53
  this.items.push(t), this.$emit("addItem", t);
52
54
  break;
53
55
  }
@@ -64,20 +66,20 @@ const m = {
64
66
  }
65
67
  }
66
68
  };
67
- function h(e, s, t, f, p, i) {
69
+ function p(e, i, t, d, h, s) {
68
70
  const r = l("rux-monitoring-icon");
69
71
  return c(), n(r, {
70
72
  class: "rux-icon",
71
- style: o([i.pointerStyle, e.computedStyle]),
73
+ style: o([s.pointerStyle, e.computedStyle]),
72
74
  icon: e.icon,
73
- status: i.status,
75
+ status: s.status,
74
76
  label: e.label,
75
77
  sublabel: e.subLabel,
76
- onClick: i.clickHandler
78
+ onClick: s.clickHandler
77
79
  }, null, 8, ["style", "icon", "status", "label", "sublabel", "onClick"]);
78
80
  }
79
- const E = /* @__PURE__ */ u(m, [["render", h]]);
81
+ const E = /* @__PURE__ */ u(m, [["render", p]]);
80
82
  export {
81
83
  E as default
82
84
  };
83
- //# sourceMappingURL=RollupWidget-b62qcG5K.js.map
85
+ //# sourceMappingURL=RollupWidget-CMU1-HwL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RollupWidget-CMU1-HwL.js","sources":["../src/widgets/RollupWidget.vue"],"sourcesContent":["<!--\n# Copyright 2024 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <rux-monitoring-icon\n class=\"rux-icon\"\n :style=\"[pointerStyle, computedStyle]\"\n :icon=\"icon\"\n :status=\"status\"\n :label=\"label\"\n :sublabel=\"subLabel\"\n @click=\"clickHandler\"\n ></rux-monitoring-icon>\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n props: {\n value: {\n type: [Number, String],\n default: null,\n },\n },\n emits: ['addItem', 'deleteItem', 'open'],\n data: function () {\n return {\n valueId: null,\n icon: '',\n label: '',\n subLabel: '',\n items: [],\n screenTarget: null,\n screenName: null,\n }\n },\n computed: {\n status: function () {\n let state = 'off'\n // Calculate the overall state of all the items we care about\n for (const item of this.items) {\n let limitsState = this.screenValues[item][1]\n if (limitsState) {\n if (\n (limitsState.includes('BLUE') || limitsState.includes('GREEN')) &&\n state != 'caution' &&\n state != 'critical'\n ) {\n state = 'normal'\n }\n if (limitsState.includes('YELLOW') && state != 'critical') {\n state = 'caution'\n }\n if (limitsState.includes('RED')) {\n state = 'critical'\n }\n }\n }\n return state\n },\n pointerStyle() {\n if (this.screenTarget && this.screenName) {\n return {\n cursor: 'pointer',\n }\n } else {\n return {\n cursor: 'default',\n }\n }\n },\n },\n created: function () {\n this.icon = this.parameters[0]\n this.label = this.parameters[1]\n this.subLabel = this.parameters[2]\n\n // This was an attempt at dynamically importing the rux icon they requested.\n // However, webpack looks at the import line and tries to process all the files.\n // Good discussion here: https://github.com/webpack/webpack/issues/6680\n // and here: https://github.com/webpack/webpack/issues/4175\n // Perhaps there's a way to ignore stuff but we'd still be importing ALL\n // the files which is a LOT. Instead we just import all the icons we need in\n // openc3-cosmos-init/plugins/openc3-tool-base/src/plugins/vuetify.js\n\n // import(\n // `@astrouxds/astro-web-components/dist/components/rux-icon-${this.icon}`\n // ).then((module) => {\n // // First key of the module is the name of the class\n // let name = Object.keys(module)[0]\n // try {\n // customElements.define(`rux-icon-${this.icon}`, module[name])\n // } catch (e) {\n // // Catch the fact that the icon probably already exists and move on\n // }\n // })\n\n this.appliedSettings.forEach((setting) => {\n switch (setting[0].toUpperCase()) {\n // Create a link to an existing screen\n case 'SCREEN':\n this.screenTarget = setting[1]\n this.screenName = setting[2]\n break\n\n // Create the list of rollup telemetry\n case 'TLM':\n let type = 'CONVERTED'\n if (setting[4]) {\n type = setting[4]\n }\n let item = `${setting[1]}__${setting[2]}__${setting[3]}__${type}`\n this.items.push(item)\n this.$emit('addItem', item)\n break\n }\n })\n },\n unmounted: function () {\n this.items.forEach((item) => {\n this.$emit('deleteItem', item)\n })\n },\n methods: {\n clickHandler() {\n if (this.screenTarget && this.screenName) {\n this.$emit('open', this.screenTarget, this.screenName)\n }\n },\n },\n}\n</script>\n"],"names":["_sfc_main","Widget","state","item","limitsState","setting","type","_createBlock","_component_rux_monitoring_icon","_normalizeStyle","$options","_ctx"],"mappings":";;;AAiCA,MAAKA,IAAU;AAAA,EACb,QAAQ,CAACC,CAAM;AAAA,EACf,OAAO;AAAA,IACL,OAAO;AAAA,MACL,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,SAAS;AAAA;;EAGb,OAAO,CAAC,WAAW,cAAc,MAAM;AAAA,EACvC,MAAM,WAAY;AAChB,WAAO;AAAA,MACL,SAAS;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,OAAO,CAAA;AAAA,MACP,cAAc;AAAA,MACd,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,QAAQ,WAAY;AAClB,UAAIC,IAAQ;AAEZ,iBAAWC,KAAQ,KAAK,OAAO;AAC7B,YAAIC,IAAc,KAAK,aAAaD,CAAI,EAAE,CAAC;AAC3C,QAAIC,OAECA,EAAY,SAAS,MAAM,KAAKA,EAAY,SAAS,OAAO,MAC7DF,KAAS,aACTA,KAAS,eAETA,IAAQ,WAENE,EAAY,SAAS,QAAQ,KAAKF,KAAS,eAC7CA,IAAQ,YAENE,EAAY,SAAS,KAAK,MAC5BF,IAAQ;AAAA,MAGd;AACA,aAAOA;AAAA,IACT;AAAA,IACA,eAAe;AACb,aAAI,KAAK,gBAAgB,KAAK,aACrB;AAAA,QACL,QAAQ;AAAA,MACV,IAEO;AAAA,QACL,QAAQ;AAAA,MACV;AAAA,IAEJ;AAAA;EAEF,SAAS,WAAY;AACnB,SAAK,OAAO,KAAK,WAAW,CAAC,GAC7B,KAAK,QAAQ,KAAK,WAAW,CAAC,GAC9B,KAAK,WAAW,KAAK,WAAW,CAAC,GAsBjC,KAAK,gBAAgB,QAAQ,CAACG,MAAY;AACxC,cAAQA,EAAQ,CAAC,EAAE,YAAW,GAAE;AAAA;AAAA,QAE9B,KAAK;AACH,eAAK,eAAeA,EAAQ,CAAC,GAC7B,KAAK,aAAaA,EAAQ,CAAC;AAC3B;AAAA;AAAA,QAGF,KAAK;AACH,cAAIC,IAAO;AACX,UAAID,EAAQ,CAAC,MACXC,IAAOD,EAAQ,CAAC;AAElB,cAAIF,IAAO,GAAGE,EAAQ,CAAC,CAAC,KAAKA,EAAQ,CAAC,CAAC,KAAKA,EAAQ,CAAC,CAAC,KAAKC,CAAI;AAC/D,eAAK,MAAM,KAAKH,CAAI,GACpB,KAAK,MAAM,WAAWA,CAAI;AAC1B;AAAA,MACJ;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,WAAW,WAAY;AACrB,SAAK,MAAM,QAAQ,CAACA,MAAS;AAC3B,WAAK,MAAM,cAAcA,CAAI;AAAA,IAC/B,CAAC;AAAA,EACH;AAAA,EACA,SAAS;AAAA,IACP,eAAe;AACb,MAAI,KAAK,gBAAgB,KAAK,cAC5B,KAAK,MAAM,QAAQ,KAAK,cAAc,KAAK,UAAU;AAAA,IAEzD;AAAA;AAEJ;;;cAhIEI,EAQuBC,GAAA;AAAA,IAPrB,OAAM;AAAA,IACL,OAAKC,EAAA,CAAGC,EAAA,cAAcC,EAAA,aAAa,CAAA;AAAA,IACnC,MAAMA,EAAA;AAAA,IACN,QAAQD,EAAA;AAAA,IACR,OAAOC,EAAA;AAAA,IACP,UAAUA,EAAA;AAAA,IACV,SAAOD,EAAA;AAAA;;;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("./Widget-Btu2EoLT.cjs"),s=require("vue"),c=require("./CustomIcon-CEc927h0.cjs"),a={mixins:[l.Widget],props:{value:{type:[Number,String],default:null}},emits:["addItem","deleteItem","open"],data:function(){return{valueId:null,icon:"",label:"",subLabel:"",items:[],screenTarget:null,screenName:null}},computed:{status:function(){let e="off";for(const i of this.items){let t=this.screenValues[i][1];t&&((t.includes("BLUE")||t.includes("GREEN"))&&e!="caution"&&e!="critical"&&(e="normal"),t.includes("YELLOW")&&e!="critical"&&(e="caution"),t.includes("RED")&&(e="critical"))}return e},pointerStyle(){return this.screenTarget&&this.screenName?{cursor:"pointer"}:{cursor:"default"}}},created:function(){this.icon=this.parameters[0],this.label=this.parameters[1],this.subLabel=this.parameters[2],this.appliedSettings.forEach(e=>{switch(e[0].toUpperCase()){case"SCREEN":this.screenTarget=e[1],this.screenName=e[2];break;case"TLM":let i="CONVERTED";e[4]&&(i=e[4]);let t=`${e[1]}__${e[2]}__${e[3]}__${i}`;this.items.push(t),this.$emit("addItem",t);break}})},unmounted:function(){this.items.forEach(e=>{this.$emit("deleteItem",e)})},methods:{clickHandler(){this.screenTarget&&this.screenName&&this.$emit("open",this.screenTarget,this.screenName)}}};function o(e,i,t,m,d,r){const n=s.resolveComponent("rux-monitoring-icon");return s.openBlock(),s.createBlock(n,{class:"rux-icon",style:s.normalizeStyle([r.pointerStyle,e.computedStyle]),icon:e.icon,status:r.status,label:e.label,sublabel:e.subLabel,onClick:r.clickHandler},null,8,["style","icon","status","label","sublabel","onClick"])}const u=c._export_sfc(a,[["render",o]]);exports.default=u;
2
+ //# sourceMappingURL=RollupWidget-sXTyo7zH.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RollupWidget-sXTyo7zH.cjs","sources":["../src/widgets/RollupWidget.vue"],"sourcesContent":["<!--\n# Copyright 2024 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <rux-monitoring-icon\n class=\"rux-icon\"\n :style=\"[pointerStyle, computedStyle]\"\n :icon=\"icon\"\n :status=\"status\"\n :label=\"label\"\n :sublabel=\"subLabel\"\n @click=\"clickHandler\"\n ></rux-monitoring-icon>\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n props: {\n value: {\n type: [Number, String],\n default: null,\n },\n },\n emits: ['addItem', 'deleteItem', 'open'],\n data: function () {\n return {\n valueId: null,\n icon: '',\n label: '',\n subLabel: '',\n items: [],\n screenTarget: null,\n screenName: null,\n }\n },\n computed: {\n status: function () {\n let state = 'off'\n // Calculate the overall state of all the items we care about\n for (const item of this.items) {\n let limitsState = this.screenValues[item][1]\n if (limitsState) {\n if (\n (limitsState.includes('BLUE') || limitsState.includes('GREEN')) &&\n state != 'caution' &&\n state != 'critical'\n ) {\n state = 'normal'\n }\n if (limitsState.includes('YELLOW') && state != 'critical') {\n state = 'caution'\n }\n if (limitsState.includes('RED')) {\n state = 'critical'\n }\n }\n }\n return state\n },\n pointerStyle() {\n if (this.screenTarget && this.screenName) {\n return {\n cursor: 'pointer',\n }\n } else {\n return {\n cursor: 'default',\n }\n }\n },\n },\n created: function () {\n this.icon = this.parameters[0]\n this.label = this.parameters[1]\n this.subLabel = this.parameters[2]\n\n // This was an attempt at dynamically importing the rux icon they requested.\n // However, webpack looks at the import line and tries to process all the files.\n // Good discussion here: https://github.com/webpack/webpack/issues/6680\n // and here: https://github.com/webpack/webpack/issues/4175\n // Perhaps there's a way to ignore stuff but we'd still be importing ALL\n // the files which is a LOT. Instead we just import all the icons we need in\n // openc3-cosmos-init/plugins/openc3-tool-base/src/plugins/vuetify.js\n\n // import(\n // `@astrouxds/astro-web-components/dist/components/rux-icon-${this.icon}`\n // ).then((module) => {\n // // First key of the module is the name of the class\n // let name = Object.keys(module)[0]\n // try {\n // customElements.define(`rux-icon-${this.icon}`, module[name])\n // } catch (e) {\n // // Catch the fact that the icon probably already exists and move on\n // }\n // })\n\n this.appliedSettings.forEach((setting) => {\n switch (setting[0].toUpperCase()) {\n // Create a link to an existing screen\n case 'SCREEN':\n this.screenTarget = setting[1]\n this.screenName = setting[2]\n break\n\n // Create the list of rollup telemetry\n case 'TLM':\n let type = 'CONVERTED'\n if (setting[4]) {\n type = setting[4]\n }\n let item = `${setting[1]}__${setting[2]}__${setting[3]}__${type}`\n this.items.push(item)\n this.$emit('addItem', item)\n break\n }\n })\n },\n unmounted: function () {\n this.items.forEach((item) => {\n this.$emit('deleteItem', item)\n })\n },\n methods: {\n clickHandler() {\n if (this.screenTarget && this.screenName) {\n this.$emit('open', this.screenTarget, this.screenName)\n }\n },\n },\n}\n</script>\n"],"names":["_sfc_main","Widget","state","item","limitsState","setting","type","_createBlock","_component_rux_monitoring_icon","_normalizeStyle","$options","_ctx"],"mappings":"iLAiCKA,EAAU,CACb,OAAQ,CAACC,EAAAA,MAAM,EACf,MAAO,CACL,MAAO,CACL,KAAM,CAAC,OAAQ,MAAM,EACrB,QAAS,OAGb,MAAO,CAAC,UAAW,aAAc,MAAM,EACvC,KAAM,UAAY,CAChB,MAAO,CACL,QAAS,KACT,KAAM,GACN,MAAO,GACP,SAAU,GACV,MAAO,CAAA,EACP,aAAc,KACd,WAAY,IACd,CACF,EACA,SAAU,CACR,OAAQ,UAAY,CAClB,IAAIC,EAAQ,MAEZ,UAAWC,KAAQ,KAAK,MAAO,CAC7B,IAAIC,EAAc,KAAK,aAAaD,CAAI,EAAE,CAAC,EACvCC,KAECA,EAAY,SAAS,MAAM,GAAKA,EAAY,SAAS,OAAO,IAC7DF,GAAS,WACTA,GAAS,aAETA,EAAQ,UAENE,EAAY,SAAS,QAAQ,GAAKF,GAAS,aAC7CA,EAAQ,WAENE,EAAY,SAAS,KAAK,IAC5BF,EAAQ,YAGd,CACA,OAAOA,CACT,EACA,cAAe,CACb,OAAI,KAAK,cAAgB,KAAK,WACrB,CACL,OAAQ,SACV,EAEO,CACL,OAAQ,SACV,CAEJ,GAEF,QAAS,UAAY,CACnB,KAAK,KAAO,KAAK,WAAW,CAAC,EAC7B,KAAK,MAAQ,KAAK,WAAW,CAAC,EAC9B,KAAK,SAAW,KAAK,WAAW,CAAC,EAsBjC,KAAK,gBAAgB,QAASG,GAAY,CACxC,OAAQA,EAAQ,CAAC,EAAE,YAAW,EAAE,CAE9B,IAAK,SACH,KAAK,aAAeA,EAAQ,CAAC,EAC7B,KAAK,WAAaA,EAAQ,CAAC,EAC3B,MAGF,IAAK,MACH,IAAIC,EAAO,YACPD,EAAQ,CAAC,IACXC,EAAOD,EAAQ,CAAC,GAElB,IAAIF,EAAO,GAAGE,EAAQ,CAAC,CAAC,KAAKA,EAAQ,CAAC,CAAC,KAAKA,EAAQ,CAAC,CAAC,KAAKC,CAAI,GAC/D,KAAK,MAAM,KAAKH,CAAI,EACpB,KAAK,MAAM,UAAWA,CAAI,EAC1B,KACJ,CACF,CAAC,CACH,EACA,UAAW,UAAY,CACrB,KAAK,MAAM,QAASA,GAAS,CAC3B,KAAK,MAAM,aAAcA,CAAI,CAC/B,CAAC,CACH,EACA,QAAS,CACP,cAAe,CACT,KAAK,cAAgB,KAAK,YAC5B,KAAK,MAAM,OAAQ,KAAK,aAAc,KAAK,UAAU,CAEzD,EAEJ,iGAhIEI,EAAAA,YAQuBC,EAAA,CAPrB,MAAM,WACL,MAAKC,EAAAA,eAAA,CAAGC,EAAA,aAAcC,EAAA,aAAa,CAAA,EACnC,KAAMA,EAAA,KACN,OAAQD,EAAA,OACR,MAAOC,EAAA,MACP,SAAUA,EAAA,SACV,QAAOD,EAAA"}
@@ -1,8 +1,8 @@
1
- import { f as c } from "./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-B8ikVCn7.js";
1
+ import { f as c } from "./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_dda5adfc_lang-NXWdTcR2.js";
2
2
  import { resolveComponent as o, createElementBlock as r, openBlock as s, createVNode as n, createBlock as f, createCommentVNode as w, withCtx as a, Fragment as C, renderList as b, createTextVNode as k, toDisplayString as D } from "vue";
3
- import { _ as x } from "./CustomIcon-DTfsnDJn.js";
3
+ import { _ as x } from "./CustomIcon-B9m73Gqm.js";
4
4
  import "single-spa";
5
- import { O as y } from "./OutputDialog-CNH74LpJ.js";
5
+ import { O as y } from "./OutputDialog-x4QZFAWe.js";
6
6
  const V = {
7
7
  components: { OutputDialog: y },
8
8
  data() {
@@ -82,4 +82,4 @@ const F = /* @__PURE__ */ x(V, [["render", R], ["__scopeId", "data-v-400627ab"]]
82
82
  export {
83
83
  F as default
84
84
  };
85
- //# sourceMappingURL=RoutersTab-EHz4wDCn.js.map
85
+ //# sourceMappingURL=RoutersTab-DaWde6np.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RoutersTab-EHz4wDCn.js","sources":["../src/tools/admin/tabs/RoutersTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2024, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-list class=\"list\" data-test=\"routerList\">\n <div v-for=\"(router, index) in routers\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ router }}</v-list-item-title>\n\n <template #append>\n <v-btn\n aria-label=\"Show Router Details\"\n icon=\"mdi-eye\"\n variant=\"text\"\n @click=\"showRouter(router)\"\n />\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <output-dialog\n v-if=\"showDialog\"\n v-model=\"showDialog\"\n :content=\"jsonContent\"\n type=\"Router\"\n :name=\"dialogTitle\"\n @submit=\"dialogCallback\"\n />\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport { OutputDialog } from '@/components'\n\nexport default {\n components: { OutputDialog },\n data() {\n return {\n routers: [],\n jsonContent: '',\n dialogTitle: '',\n showDialog: false,\n }\n },\n mounted() {\n this.update()\n },\n methods: {\n update() {\n Api.get('/openc3-api/routers').then((response) => {\n this.routers = response.data\n })\n },\n add() {},\n showRouter(name) {\n Api.get(`/openc3-api/routers/${name}`).then((response) => {\n this.jsonContent = JSON.stringify(response.data, null, '\\t')\n this.dialogTitle = name\n this.showDialog = true\n })\n },\n dialogCallback(content) {\n this.showDialog = false\n },\n },\n}\n</script>\n\n<style scoped>\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n.v-theme--cosmosDark.v-list div:nth-child(odd) .v-list-item {\n background-color: var(--color-background-base-selected) !important;\n}\n</style>\n"],"names":["_sfc_main","OutputDialog","Api","response","name","content","_createElementBlock","_createVNode","_component_v_list","_openBlock","_Fragment","_renderList","$data","router","index","_component_v_list_item","_component_v_btn","$event","$options","_component_v_list_item_title","_component_v_divider","_createBlock","_component_output_dialog"],"mappings":";;;;;AAwDA,MAAKA,IAAU;AAAA,EACb,YAAY,EAAE,cAAAC,EAAW;AAAA,EACzB,OAAO;AACL,WAAO;AAAA,MACL,SAAS,CAAA;AAAA,MACT,aAAa;AAAA,MACb,aAAa;AAAA,MACb,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EACA,UAAU;AACR,SAAK,OAAM;AAAA,EACb;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AACPC,MAAAA,EAAI,IAAI,qBAAqB,EAAE,KAAK,CAACC,MAAa;AAChD,aAAK,UAAUA,EAAS;AAAA,MAC1B,CAAC;AAAA,IACH;AAAA,IACA,MAAM;AAAA,IAAC;AAAA,IACP,WAAWC,GAAM;AACfF,MAAAA,EAAI,IAAI,uBAAuBE,CAAI,EAAE,EAAE,KAAK,CAACD,MAAa;AACxD,aAAK,cAAc,KAAK,UAAUA,EAAS,MAAM,MAAM,GAAI,GAC3D,KAAK,cAAcC,GACnB,KAAK,aAAa;AAAA,MACpB,CAAC;AAAA,IACH;AAAA,IACA,eAAeC,GAAS;AACtB,WAAK,aAAa;AAAA,IACpB;AAAA;AAEJ;;;cAhEEC,EA0BM,OAAA,MAAA;AAAA,IAzBJC,EAgBSC,GAAA;AAAA,MAhBD,OAAM;AAAA,MAAO,aAAU;AAAA;iBACxB,MAAkC;AAAA,SAAvCC,EAAA,EAAA,GAAAH,EAcMI,GAAA,MAAAC,EAdyBC,EAAA,SAAO,CAAzBC,GAAQC,YAArBR,EAcM,OAAA,EAdmC,KAAKQ,KAAK;AAAA,UACjDP,EAWcQ,GAAA,MAAA;AAAA,YARD,UACT,MAKE;AAAA,cALFR,EAKES,GAAA;AAAA,gBAJA,cAAW;AAAA,gBACX,MAAK;AAAA,gBACL,SAAQ;AAAA,gBACP,SAAK,CAAAC,MAAEC,EAAA,WAAWL,CAAM;AAAA;;uBAP7B,MAAmD;AAAA,cAAnDN,EAAmDY,GAAA,MAAA;AAAA,2BAAhC,MAAY;AAAA,sBAATN,CAAM,GAAA,CAAA;AAAA;;;;;;UAW9BN,EAAaa,CAAA;AAAA;;;;IAITR,EAAA,mBADRS,EAOEC,GAAA;AAAA;kBALSV,EAAA;AAAA,oDAAAA,EAAA,aAAUK;AAAA,MAClB,SAASL,EAAA;AAAA,MACV,MAAK;AAAA,MACJ,MAAMA,EAAA;AAAA,MACN,UAAQM,EAAA;AAAA;;;;"}
1
+ {"version":3,"file":"RoutersTab-DaWde6np.js","sources":["../src/tools/admin/tabs/RoutersTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2024, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-list class=\"list\" data-test=\"routerList\">\n <div v-for=\"(router, index) in routers\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ router }}</v-list-item-title>\n\n <template #append>\n <v-btn\n aria-label=\"Show Router Details\"\n icon=\"mdi-eye\"\n variant=\"text\"\n @click=\"showRouter(router)\"\n />\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <output-dialog\n v-if=\"showDialog\"\n v-model=\"showDialog\"\n :content=\"jsonContent\"\n type=\"Router\"\n :name=\"dialogTitle\"\n @submit=\"dialogCallback\"\n />\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport { OutputDialog } from '@/components'\n\nexport default {\n components: { OutputDialog },\n data() {\n return {\n routers: [],\n jsonContent: '',\n dialogTitle: '',\n showDialog: false,\n }\n },\n mounted() {\n this.update()\n },\n methods: {\n update() {\n Api.get('/openc3-api/routers').then((response) => {\n this.routers = response.data\n })\n },\n add() {},\n showRouter(name) {\n Api.get(`/openc3-api/routers/${name}`).then((response) => {\n this.jsonContent = JSON.stringify(response.data, null, '\\t')\n this.dialogTitle = name\n this.showDialog = true\n })\n },\n dialogCallback(content) {\n this.showDialog = false\n },\n },\n}\n</script>\n\n<style scoped>\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n.v-theme--cosmosDark.v-list div:nth-child(odd) .v-list-item {\n background-color: var(--color-background-base-selected) !important;\n}\n</style>\n"],"names":["_sfc_main","OutputDialog","Api","response","name","content","_createElementBlock","_createVNode","_component_v_list","_openBlock","_Fragment","_renderList","$data","router","index","_component_v_list_item","_component_v_btn","$event","$options","_component_v_list_item_title","_component_v_divider","_createBlock","_component_output_dialog"],"mappings":";;;;;AAwDA,MAAKA,IAAU;AAAA,EACb,YAAY,EAAE,cAAAC,EAAW;AAAA,EACzB,OAAO;AACL,WAAO;AAAA,MACL,SAAS,CAAA;AAAA,MACT,aAAa;AAAA,MACb,aAAa;AAAA,MACb,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EACA,UAAU;AACR,SAAK,OAAM;AAAA,EACb;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AACPC,MAAAA,EAAI,IAAI,qBAAqB,EAAE,KAAK,CAACC,MAAa;AAChD,aAAK,UAAUA,EAAS;AAAA,MAC1B,CAAC;AAAA,IACH;AAAA,IACA,MAAM;AAAA,IAAC;AAAA,IACP,WAAWC,GAAM;AACfF,MAAAA,EAAI,IAAI,uBAAuBE,CAAI,EAAE,EAAE,KAAK,CAACD,MAAa;AACxD,aAAK,cAAc,KAAK,UAAUA,EAAS,MAAM,MAAM,GAAI,GAC3D,KAAK,cAAcC,GACnB,KAAK,aAAa;AAAA,MACpB,CAAC;AAAA,IACH;AAAA,IACA,eAAeC,GAAS;AACtB,WAAK,aAAa;AAAA,IACpB;AAAA;AAEJ;;;cAhEEC,EA0BM,OAAA,MAAA;AAAA,IAzBJC,EAgBSC,GAAA;AAAA,MAhBD,OAAM;AAAA,MAAO,aAAU;AAAA;iBACxB,MAAkC;AAAA,SAAvCC,EAAA,EAAA,GAAAH,EAcMI,GAAA,MAAAC,EAdyBC,EAAA,SAAO,CAAzBC,GAAQC,YAArBR,EAcM,OAAA,EAdmC,KAAKQ,KAAK;AAAA,UACjDP,EAWcQ,GAAA,MAAA;AAAA,YARD,UACT,MAKE;AAAA,cALFR,EAKES,GAAA;AAAA,gBAJA,cAAW;AAAA,gBACX,MAAK;AAAA,gBACL,SAAQ;AAAA,gBACP,SAAK,CAAAC,MAAEC,EAAA,WAAWL,CAAM;AAAA;;uBAP7B,MAAmD;AAAA,cAAnDN,EAAmDY,GAAA,MAAA;AAAA,2BAAhC,MAAY;AAAA,sBAATN,CAAM,GAAA,CAAA;AAAA;;;;;;UAW9BN,EAAaa,CAAA;AAAA;;;;IAITR,EAAA,mBADRS,EAOEC,GAAA;AAAA;kBALSV,EAAA;AAAA,oDAAAA,EAAA,aAAUK;AAAA,MAClB,SAASL,EAAA;AAAA,MACV,MAAK;AAAA,MACJ,MAAMA,EAAA;AAAA,MACN,UAAQM,EAAA;AAAA;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-CP8T5W6m.cjs"),e=require("vue"),m=require("./CustomIcon-eie3rPKh.cjs");require("single-spa");const v=require("./OutputDialog-QIabyvK1.cjs"),g={components:{OutputDialog:v.OutputDialog},data(){return{routers:[],jsonContent:"",dialogTitle:"",showDialog:!1}},mounted(){this.update()},methods:{update(){r.fi.get("/openc3-api/routers").then(t=>{this.routers=t.data})},add(){},showRouter(t){r.fi.get(`/openc3-api/routers/${t}`).then(n=>{this.jsonContent=JSON.stringify(n.data,null," "),this.dialogTitle=t,this.showDialog=!0})},dialogCallback(t){this.showDialog=!1}}};function h(t,n,f,k,o,i){const s=e.resolveComponent("v-list-item-title"),a=e.resolveComponent("v-btn"),u=e.resolveComponent("v-list-item"),c=e.resolveComponent("v-divider"),d=e.resolveComponent("v-list"),p=e.resolveComponent("output-dialog");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(d,{class:"list","data-test":"routerList"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.routers,(l,_)=>(e.openBlock(),e.createElementBlock("div",{key:_},[e.createVNode(u,null,{append:e.withCtx(()=>[e.createVNode(a,{"aria-label":"Show Router Details",icon:"mdi-eye",variant:"text",onClick:w=>i.showRouter(l)},null,8,["onClick"])]),default:e.withCtx(()=>[e.createVNode(s,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l),1)]),_:2},1024)]),_:2},1024),e.createVNode(c)]))),128))]),_:1}),o.showDialog?(e.openBlock(),e.createBlock(p,{key:0,modelValue:o.showDialog,"onUpdate:modelValue":n[0]||(n[0]=l=>o.showDialog=l),content:o.jsonContent,type:"Router",name:o.dialogTitle,onSubmit:i.dialogCallback},null,8,["modelValue","content","name","onSubmit"])):e.createCommentVNode("",!0)])}const C=m._export_sfc(g,[["render",h],["__scopeId","data-v-400627ab"]]);exports.default=C;
2
- //# sourceMappingURL=RoutersTab-8wGbiPCk.cjs.map
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_dda5adfc_lang-Bjn8x8eE.cjs"),e=require("vue"),m=require("./CustomIcon-CEc927h0.cjs");require("single-spa");const v=require("./OutputDialog-BwEWPQW9.cjs"),g={components:{OutputDialog:v.OutputDialog},data(){return{routers:[],jsonContent:"",dialogTitle:"",showDialog:!1}},mounted(){this.update()},methods:{update(){r.fi.get("/openc3-api/routers").then(t=>{this.routers=t.data})},add(){},showRouter(t){r.fi.get(`/openc3-api/routers/${t}`).then(n=>{this.jsonContent=JSON.stringify(n.data,null," "),this.dialogTitle=t,this.showDialog=!0})},dialogCallback(t){this.showDialog=!1}}};function h(t,n,f,k,o,i){const s=e.resolveComponent("v-list-item-title"),a=e.resolveComponent("v-btn"),u=e.resolveComponent("v-list-item"),c=e.resolveComponent("v-divider"),d=e.resolveComponent("v-list"),p=e.resolveComponent("output-dialog");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(d,{class:"list","data-test":"routerList"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.routers,(l,_)=>(e.openBlock(),e.createElementBlock("div",{key:_},[e.createVNode(u,null,{append:e.withCtx(()=>[e.createVNode(a,{"aria-label":"Show Router Details",icon:"mdi-eye",variant:"text",onClick:w=>i.showRouter(l)},null,8,["onClick"])]),default:e.withCtx(()=>[e.createVNode(s,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l),1)]),_:2},1024)]),_:2},1024),e.createVNode(c)]))),128))]),_:1}),o.showDialog?(e.openBlock(),e.createBlock(p,{key:0,modelValue:o.showDialog,"onUpdate:modelValue":n[0]||(n[0]=l=>o.showDialog=l),content:o.jsonContent,type:"Router",name:o.dialogTitle,onSubmit:i.dialogCallback},null,8,["modelValue","content","name","onSubmit"])):e.createCommentVNode("",!0)])}const C=m._export_sfc(g,[["render",h],["__scopeId","data-v-400627ab"]]);exports.default=C;
2
+ //# sourceMappingURL=RoutersTab-IKuEHQeO.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"RoutersTab-8wGbiPCk.cjs","sources":["../src/tools/admin/tabs/RoutersTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2024, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-list class=\"list\" data-test=\"routerList\">\n <div v-for=\"(router, index) in routers\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ router }}</v-list-item-title>\n\n <template #append>\n <v-btn\n aria-label=\"Show Router Details\"\n icon=\"mdi-eye\"\n variant=\"text\"\n @click=\"showRouter(router)\"\n />\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <output-dialog\n v-if=\"showDialog\"\n v-model=\"showDialog\"\n :content=\"jsonContent\"\n type=\"Router\"\n :name=\"dialogTitle\"\n @submit=\"dialogCallback\"\n />\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport { OutputDialog } from '@/components'\n\nexport default {\n components: { OutputDialog },\n data() {\n return {\n routers: [],\n jsonContent: '',\n dialogTitle: '',\n showDialog: false,\n }\n },\n mounted() {\n this.update()\n },\n methods: {\n update() {\n Api.get('/openc3-api/routers').then((response) => {\n this.routers = response.data\n })\n },\n add() {},\n showRouter(name) {\n Api.get(`/openc3-api/routers/${name}`).then((response) => {\n this.jsonContent = JSON.stringify(response.data, null, '\\t')\n this.dialogTitle = name\n this.showDialog = true\n })\n },\n dialogCallback(content) {\n this.showDialog = false\n },\n },\n}\n</script>\n\n<style scoped>\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n.v-theme--cosmosDark.v-list div:nth-child(odd) .v-list-item {\n background-color: var(--color-background-base-selected) !important;\n}\n</style>\n"],"names":["_sfc_main","OutputDialog","Api","response","name","content","_createElementBlock","_createVNode","_component_v_list","_openBlock","_Fragment","_renderList","$data","router","index","_component_v_list_item","_component_v_btn","$event","$options","_component_v_list_item_title","_component_v_divider","_createBlock","_component_output_dialog"],"mappings":"yTAwDKA,EAAU,CACb,WAAY,CAAA,aAAEC,EAAAA,YAAW,EACzB,MAAO,CACL,MAAO,CACL,QAAS,CAAA,EACT,YAAa,GACb,YAAa,GACb,WAAY,EACd,CACF,EACA,SAAU,CACR,KAAK,OAAM,CACb,EACA,QAAS,CACP,QAAS,CACPC,EAAAA,GAAI,IAAI,qBAAqB,EAAE,KAAMC,GAAa,CAChD,KAAK,QAAUA,EAAS,IAC1B,CAAC,CACH,EACA,KAAM,CAAC,EACP,WAAWC,EAAM,CACfF,KAAI,IAAI,uBAAuBE,CAAI,EAAE,EAAE,KAAMD,GAAa,CACxD,KAAK,YAAc,KAAK,UAAUA,EAAS,KAAM,KAAM,GAAI,EAC3D,KAAK,YAAcC,EACnB,KAAK,WAAa,EACpB,CAAC,CACH,EACA,eAAeC,EAAS,CACtB,KAAK,WAAa,EACpB,EAEJ,wQAhEEC,qBA0BM,MAAA,KAAA,CAzBJC,EAAAA,YAgBSC,EAAA,CAhBD,MAAM,OAAO,YAAU,iCACxB,IAAkC,EAAvCC,EAAAA,UAAA,EAAA,EAAAH,EAAAA,mBAcMI,WAAA,KAAAC,EAAAA,WAdyBC,EAAA,QAAO,CAAzBC,EAAQC,mBAArBR,EAAAA,mBAcM,MAAA,CAdmC,IAAKQ,GAAK,CACjDP,EAAAA,YAWcQ,EAAA,KAAA,CARD,iBACT,IAKE,CALFR,EAAAA,YAKES,EAAA,CAJA,aAAW,sBACX,KAAK,UACL,QAAQ,OACP,QAAKC,GAAEC,EAAA,WAAWL,CAAM,2CAP7B,IAAmD,CAAnDN,EAAAA,YAAmDY,EAAA,KAAA,mBAAhC,IAAY,qCAATN,CAAM,EAAA,CAAA,4BAW9BN,EAAAA,YAAaa,CAAA,oBAITR,EAAA,0BADRS,EAAAA,YAOEC,EAAA,kBALSV,EAAA,gDAAAA,EAAA,WAAUK,GAClB,QAASL,EAAA,YACV,KAAK,SACJ,KAAMA,EAAA,YACN,SAAQM,EAAA"}
1
+ {"version":3,"file":"RoutersTab-IKuEHQeO.cjs","sources":["../src/tools/admin/tabs/RoutersTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2024, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-list class=\"list\" data-test=\"routerList\">\n <div v-for=\"(router, index) in routers\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ router }}</v-list-item-title>\n\n <template #append>\n <v-btn\n aria-label=\"Show Router Details\"\n icon=\"mdi-eye\"\n variant=\"text\"\n @click=\"showRouter(router)\"\n />\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <output-dialog\n v-if=\"showDialog\"\n v-model=\"showDialog\"\n :content=\"jsonContent\"\n type=\"Router\"\n :name=\"dialogTitle\"\n @submit=\"dialogCallback\"\n />\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport { OutputDialog } from '@/components'\n\nexport default {\n components: { OutputDialog },\n data() {\n return {\n routers: [],\n jsonContent: '',\n dialogTitle: '',\n showDialog: false,\n }\n },\n mounted() {\n this.update()\n },\n methods: {\n update() {\n Api.get('/openc3-api/routers').then((response) => {\n this.routers = response.data\n })\n },\n add() {},\n showRouter(name) {\n Api.get(`/openc3-api/routers/${name}`).then((response) => {\n this.jsonContent = JSON.stringify(response.data, null, '\\t')\n this.dialogTitle = name\n this.showDialog = true\n })\n },\n dialogCallback(content) {\n this.showDialog = false\n },\n },\n}\n</script>\n\n<style scoped>\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n.v-theme--cosmosDark.v-list div:nth-child(odd) .v-list-item {\n background-color: var(--color-background-base-selected) !important;\n}\n</style>\n"],"names":["_sfc_main","OutputDialog","Api","response","name","content","_createElementBlock","_createVNode","_component_v_list","_openBlock","_Fragment","_renderList","$data","router","index","_component_v_list_item","_component_v_btn","$event","$options","_component_v_list_item_title","_component_v_divider","_createBlock","_component_output_dialog"],"mappings":"yTAwDKA,EAAU,CACb,WAAY,CAAA,aAAEC,EAAAA,YAAW,EACzB,MAAO,CACL,MAAO,CACL,QAAS,CAAA,EACT,YAAa,GACb,YAAa,GACb,WAAY,EACd,CACF,EACA,SAAU,CACR,KAAK,OAAM,CACb,EACA,QAAS,CACP,QAAS,CACPC,EAAAA,GAAI,IAAI,qBAAqB,EAAE,KAAMC,GAAa,CAChD,KAAK,QAAUA,EAAS,IAC1B,CAAC,CACH,EACA,KAAM,CAAC,EACP,WAAWC,EAAM,CACfF,KAAI,IAAI,uBAAuBE,CAAI,EAAE,EAAE,KAAMD,GAAa,CACxD,KAAK,YAAc,KAAK,UAAUA,EAAS,KAAM,KAAM,GAAI,EAC3D,KAAK,YAAcC,EACnB,KAAK,WAAa,EACpB,CAAC,CACH,EACA,eAAeC,EAAS,CACtB,KAAK,WAAa,EACpB,EAEJ,wQAhEEC,qBA0BM,MAAA,KAAA,CAzBJC,EAAAA,YAgBSC,EAAA,CAhBD,MAAM,OAAO,YAAU,iCACxB,IAAkC,EAAvCC,EAAAA,UAAA,EAAA,EAAAH,EAAAA,mBAcMI,WAAA,KAAAC,EAAAA,WAdyBC,EAAA,QAAO,CAAzBC,EAAQC,mBAArBR,EAAAA,mBAcM,MAAA,CAdmC,IAAKQ,GAAK,CACjDP,EAAAA,YAWcQ,EAAA,KAAA,CARD,iBACT,IAKE,CALFR,EAAAA,YAKES,EAAA,CAJA,aAAW,sBACX,KAAK,UACL,QAAQ,OACP,QAAKC,GAAEC,EAAA,WAAWL,CAAM,2CAP7B,IAAmD,CAAnDN,EAAAA,YAAmDY,EAAA,KAAA,mBAAhC,IAAY,qCAATN,CAAM,EAAA,CAAA,4BAW9BN,EAAAA,YAAaa,CAAA,oBAITR,EAAA,0BADRS,EAAAA,YAOEC,EAAA,kBALSV,EAAA,gDAAAA,EAAA,WAAUK,GAClB,QAASL,EAAA,YACV,KAAK,SACJ,KAAMA,EAAA,YACN,SAAQM,EAAA"}
@@ -0,0 +1,2 @@
1
+ "use strict";const _=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_dda5adfc_lang-Bjn8x8eE.cjs"),E=require("./TargetPacketItemChooser-BPRByyfB.cjs"),v=require("./cmdUtilities-N30xDV6q.cjs"),t=require("vue"),g=require("./CustomIcon-CEc927h0.cjs"),w=require("./DetailsDialog-lJG8eclU.cjs"),S={name:"CommandParameterEditor",mixins:[v.CmdUtilities],props:{modelValue:{type:[String,Number],default:void 0},states:{type:Object,default:()=>null},statesInHex:{type:Boolean,default:!1}},emits:["update:modelValue","hazardous-change"],computed:{textFieldValue(){return this.convertToString(this.modelValue)},stateValue(){return this.statesInHex?"0x"+this.modelValue.toString(16):this.modelValue},selectValue(){return this.modelValue===""?null:this.modelValue},stateOptions(){return this.states?Object.keys(this.states).map(a=>({label:a,...this.states[a]})):null},hazardous(){var a,e;return((e=(a=Object.entries(this.states).find(([n,r])=>r.value===this.modelValue))==null?void 0:a.at(1))==null?void 0:e.hazardous)!==void 0},stateClass(){return this.hazardous?"hazardous mr-4":"mr-4"}},watch:{hazardous:{immediate:!0,handler(a){this.$emit("hazardous-change",a)}}},methods:{handleChange(a){this.$emit("update:modelValue",a)}}},P={key:1,class:"d-flex align-center"};function b(a,e,n,r,s,o){const m=t.resolveComponent("v-text-field"),c=t.resolveComponent("v-select");return t.openBlock(),t.createElementBlock("div",null,[n.states?(t.openBlock(),t.createElementBlock("div",P,[t.createVNode(c,{items:o.stateOptions,"model-value":o.selectValue,"item-title":"label",class:t.normalizeClass(o.stateClass),"hide-details":"",density:"compact",variant:"outlined",placeholder:"Select...","min-width":"120px","data-test":"cmd-param-select","onUpdate:modelValue":o.handleChange},null,8,["items","model-value","class","onUpdate:modelValue"]),t.createVNode(m,{"model-value":o.stateValue,disabled:"","hide-details":"",density:"compact",variant:"outlined","min-width":"60px","data-test":"cmd-param-value"},null,8,["model-value"])])):(t.openBlock(),t.createBlock(m,{key:0,"model-value":o.textFieldValue,"hide-details":"",density:"compact",variant:"filled","data-test":"cmd-param-value","onUpdate:modelValue":o.handleChange},null,8,["model-value","onUpdate:modelValue"]))])}const C=g._export_sfc(S,[["render",b],["__scopeId","data-v-862882af"]]),B={name:"CommandEditor",components:{TargetPacketItemChooser:E.TargetPacketItemChooser,CommandParameterEditor:C,DetailsDialog:w.DetailsDialog},mixins:[v.CmdUtilities],props:{initialTargetName:{type:String,default:null},initialPacketName:{type:String,default:null},cmdString:{type:String,default:null},sendDisabled:{type:Boolean,default:!1},statesInHex:{type:Boolean,default:!1},showIgnoredParams:{type:Boolean,default:!1},cmdRaw:{type:Boolean,default:!1},showCommandButton:{type:Boolean,default:!0},showQueueSelect:{type:Boolean,default:!0}},emits:["command-changed","build-cmd"],data(){return{search:"",headers:[{title:"Name",value:"parameter_name"},{title:"Value or State",value:"val"},{title:"Units",value:"units"},{title:"Range",value:"range"},{title:"Description",value:"description"}],api:null,targetName:"",commandName:"",commandDescription:"",ignoredParams:[],computedRows:[],reservedItemNames:["PACKET_TIMESECONDS","PACKET_TIMEFORMATTED","RECEIVED_TIMESECONDS","RECEIVED_TIMEFORMATTED","RECEIVED_COUNT"],contextMenuShown:!1,viewDetails:!1,parameterName:"",hazardousParameters:{},x:0,y:0,contextMenuOptions:[{title:"Details",action:()=>{this.contextMenuShown=!1,this.viewDetails=!0}}]}},computed:{hasHazardousParameter(){return Object.values(this.hazardousParameters).some(a=>a===!0)}},created(){this.api=new _.yi,this.cmdString?this.processCmdString():(this.targetName=this.initialTargetName,this.commandName=this.initialPacketName,this.updateCmdParams())},methods:{onParameterHazardousChange(a,e){this.hazardousParameters[a.parameter_name]=e},commandChanged(a){(this.targetName!==a.targetName||this.commandName!==a.packetName)&&(this.targetName=a.targetName,this.commandName=a.packetName,this.updateCmdParams()),this.$emit("command-changed",a)},buildCmd(a){this.$emit("build-cmd",a)},showContextMenu(a,e){a.preventDefault(),this.parameterName=e.item.parameter_name,this.contextMenuShown=!1,this.x=a.clientX,this.y=a.clientY,this.$nextTick(()=>{this.contextMenuShown=!0})},updateCmdParams(){this.ignoredParams=[],this.computedRows=[],this.hazardousParameters={},this.targetName&&this.commandName&&this.api.get_target(this.targetName).then(a=>(this.ignoredParams=a.ignored_parameters,this.api.get_cmd(this.targetName,this.commandName)),a=>{console.error("Error getting ignored parameters:",a)}).then(a=>{a&&(a.items.forEach(e=>{if(!this.reservedItemNames.includes(e.name)&&!e.hidden&&(!this.ignoredParams.includes(e.name)||this.showIgnoredParams)){let n=e.default;!e.states&&e.data_type==="STRING"&&typeof e.default=="string"&&(n=`'${n}'`),e.required&&(n=null),e.format_string&&e.default&&(n=sprintf(e.format_string,e.default)),Object.prototype.toString.call(n).slice(8,-1)==="Object"&&(n=this.convertToString(n));let r="N/A";e.minimum!=null&&e.maximum!=null&&(e.data_type==="FLOAT"&&(e.minimum<-1e6&&(e.minimum=e.minimum.toExponential(3)),e.maximum>1e6&&(e.maximum=e.maximum.toExponential(3))),r=`${e.minimum}..${e.maximum}`),this.computedRows.push({parameter_name:e.name,val:n,states:e.states,description:e.description,range:r,units:e.units,type:e.data_type})}}),this.commandDescription=a.description,this.populateParametersFromParsed())},a=>{console.error("Error getting command parameters:",a)})},triggerUpdateCmdParams(){this.updateCmdParams()},getRows(){return this.computedRows},getCmdString(){let a=`${this.targetName} ${this.commandName}`;if(this.computedRows.length===0)return a;a+=" with";for(const e of this.computedRows){if(e.val===null)throw new Error(`Required parameter ${e.parameter_name} not set`);if(e.val!==null&&e.val!==void 0&&e.val!==""){if(e.states){const r=Object.entries(e.states).find(([,s])=>s.value===e.val);if(r){a+=` ${e.parameter_name} '${r[0]}',`;continue}}let n=this.convertToString(e.val);n.includes(" ")&&!this.isArray(n)?a+=` ${e.parameter_name} '${n}',`:a+=` ${e.parameter_name} ${n},`}}return a.slice(0,-1)},parseCmdString(a){const e=a.split(" ");if(e.length<2)return{target:"",command:"",params:{}};if(e.length===2)return{target:e[0],command:e[1],params:{}};if(e[2]!=="with")return{target:"",command:"",params:{}};const n=e[0],r=e[1];let s={};const o=a.split(" with ")[1];let m=[],c=0,d="";for(let l of o)l==="["?(c++,d+=l):l==="]"?(c--,d+=l):l===","&&c===0?(m.push(d.trim()),d=""):d+=l;d.trim()!==""&&m.push(d.trim());for(let l of m){let u=l.indexOf(" ");if(u>0){let p=l.substring(0,u).trim(),f=l.substring(u+1).trim();s[p]=f}}return{target:n,command:r,params:s}},processCmdString(){const a=this.parseCmdString(this.cmdString);a.target&&a.command&&(this.targetName=a.target,this.commandName=a.command,this.parsedParameters=a.params,this.updateCmdParams())},populateParametersFromParsed(){!this.parsedParameters||Object.keys(this.parsedParameters).length===0||this.$nextTick(()=>{setTimeout(()=>{this.computedRows.forEach(a=>{if(this.parsedParameters.hasOwnProperty(a.parameter_name)){const e=this.parsedParameters[a.parameter_name];if(a.states&&typeof e=="string"){const n=Object.keys(a.states).find(r=>r===e||r.toLowerCase()===e.toLowerCase());n?a.val=a.states[n].value:a.val=e}else a.type==="STRING"&&typeof e=="string"?a.val=e.startsWith("'")||e.startsWith('"')?e:`'${e}'`:a.val=e}})},100)})}}},T={style:{padding:"10px"}};function D(a,e,n,r,s,o){const m=t.resolveComponent("target-packet-item-chooser"),c=t.resolveComponent("v-spacer"),d=t.resolveComponent("v-text-field"),l=t.resolveComponent("v-card-title"),u=t.resolveComponent("command-parameter-editor"),p=t.resolveComponent("v-data-table"),f=t.resolveComponent("v-card"),V=t.resolveComponent("v-list-item-title"),x=t.resolveComponent("v-list-item"),y=t.resolveComponent("v-list"),N=t.resolveComponent("v-menu"),k=t.resolveComponent("details-dialog");return t.openBlock(),t.createBlock(f,null,{default:t.withCtx(()=>[t.createElementVNode("div",T,[t.createVNode(m,{ref:"targetPacketChooser","initial-target-name":s.targetName,"initial-packet-name":s.commandName,disabled:n.sendDisabled,"button-text":n.showCommandButton?"Send":null,"show-queue-select":n.showQueueSelect,"parameter-hazardous":o.hasHazardousParameter,mode:"cmd",onOnSet:e[0]||(e[0]=i=>o.commandChanged(i)),onAddItem:e[1]||(e[1]=i=>o.buildCmd(i))},null,8,["initial-target-name","initial-packet-name","disabled","button-text","show-queue-select","parameter-hazardous"])]),s.computedRows.length!==0?(t.openBlock(),t.createBlock(f,{key:0},{default:t.withCtx(()=>[t.createVNode(l,{class:"d-flex align-center justify-content-space-between"},{default:t.withCtx(()=>[e[5]||(e[5]=t.createTextVNode(" Parameters ",-1)),t.createVNode(c),t.createVNode(d,{modelValue:s.search,"onUpdate:modelValue":e[2]||(e[2]=i=>s.search=i),label:"Search","prepend-inner-icon":"mdi-magnify",clearable:"",variant:"outlined",density:"compact","single-line":"","hide-details":"",class:"search"},null,8,["modelValue"])]),_:1}),t.createVNode(p,{headers:s.headers,items:s.computedRows,search:s.search,"items-per-page":-1,"hide-default-footer":"","multi-sort":"",density:"compact","onContextmenu:row":o.showContextMenu},{"item.val":t.withCtx(({item:i})=>[t.renderSlot(a.$slots,"parameter-editor",{item:i,statesInHex:n.statesInHex},()=>[t.createVNode(u,{modelValue:i.val,"onUpdate:modelValue":h=>i.val=h,states:i.states,"states-in-hex":n.statesInHex,onHazardousChange:h=>o.onParameterHazardousChange(i,h)},null,8,["modelValue","onUpdate:modelValue","states","states-in-hex","onHazardousChange"])])]),_:3},8,["headers","items","search","onContextmenu:row"])]),_:3})):t.createCommentVNode("",!0),t.createVNode(N,{modelValue:s.contextMenuShown,"onUpdate:modelValue":e[3]||(e[3]=i=>s.contextMenuShown=i),target:[s.x,s.y]},{default:t.withCtx(()=>[t.createVNode(y,null,{default:t.withCtx(()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(s.contextMenuOptions,(i,h)=>(t.openBlock(),t.createBlock(x,{key:h,onClick:t.withModifiers(i.action,["stop"])},{default:t.withCtx(()=>[t.createVNode(V,null,{default:t.withCtx(()=>[t.createTextVNode(t.toDisplayString(i.title),1)]),_:2},1024)]),_:2},1032,["onClick"]))),128))]),_:1})]),_:1},8,["modelValue","target"]),t.createVNode(k,{modelValue:s.viewDetails,"onUpdate:modelValue":e[4]||(e[4]=i=>s.viewDetails=i),"target-name":s.targetName,"packet-name":s.commandName,"item-name":s.parameterName,type:"cmd"},null,8,["modelValue","target-name","packet-name","item-name"])]),_:3})}const I=g._export_sfc(B,[["render",D]]),O={props:{modelValue:{type:Array,required:!0}},emits:["update:modelValue"],computed:{selected:{get(){return this.modelValue},set(a){this.$emit("update:modelValue",a)}}},methods:{addEnvVar:function(){this.selected.push({key:"",value:""})},delEnvVar:function(a){this.selected.splice(a,1)}}},U={scope:"col",class:"text-right",width:"52px"};function z(a,e,n,r,s,o){const m=t.resolveComponent("v-btn"),c=t.resolveComponent("v-text-field"),d=t.resolveComponent("v-table");return t.openBlock(),t.createElementBlock("div",null,[e[2]||(e[2]=t.createElementVNode("span",null," Add environment variables (optional)",-1)),t.createVNode(d,{density:"compact"},{default:t.withCtx(()=>[t.createElementVNode("tbody",null,[t.createElementVNode("tr",null,[e[0]||(e[0]=t.createElementVNode("th",{scope:"col",class:"text-left"},"Key",-1)),e[1]||(e[1]=t.createElementVNode("th",{scope:"col",class:"text-left"},"Value",-1)),t.createElementVNode("th",U,[t.createVNode(m,{icon:"mdi-plus",variant:"text","data-test":"new-metadata-icon",onClick:o.addEnvVar},null,8,["onClick"])])]),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(o.selected,(l,u)=>(t.openBlock(),t.createElementBlock("tr",{key:`tr-${u}`},[t.createElementVNode("td",null,[t.createVNode(c,{modelValue:l.key,"onUpdate:modelValue":p=>l.key=p,density:"compact",type:"text","hide-details":"",readonly:l.readonly,"data-test":`key-${u}`},null,8,["modelValue","onUpdate:modelValue","readonly","data-test"])]),t.createElementVNode("td",null,[t.createVNode(c,{modelValue:l.value,"onUpdate:modelValue":p=>l.value=p,density:"compact",type:"text","hide-details":"",readonly:l.readonly,"data-test":`value-${u}`},null,8,["modelValue","onUpdate:modelValue","readonly","data-test"])]),t.createElementVNode("td",null,[t.createVNode(m,{icon:"mdi-delete",variant:"text","data-test":`remove-env-icon-${u}`,onClick:p=>o.delEnvVar(u)},null,8,["data-test","onClick"])])]))),128))])]),_:1})])}const R=g._export_sfc(O,[["render",z]]),M={props:{modelValue:{type:String,default:null}},emits:["file","error"],data(){return{loading:!1,search:"",selected:this.modelValue,scripts:[],items:[]}},watch:{selected(a,e){a!==e&&(a&&a.slice(-1)==="*"?this.$emit("file",a.substring(0,a.length-1)):this.$emit("file",a))},search(a){a&&a!==this.selected&&this.querySelections(a)}},created(){this.loading=!0,_.fi.get("/script-api/scripts").then(a=>{this.scripts=a.data.filter(e=>e.includes(".rb")||e.includes(".py")),this.items=this.scripts}).catch(a=>{this.$emit("error",{type:"error",text:`Failed to connect to OpenC3. ${a}`,error:a})}),this.selected=this.modelValue?this.modelValue:null,this.loading=!1},methods:{querySelections:function(a){this.loading=!0,setTimeout(()=>{this.items=this.scripts.filter(e=>(e||"").toLowerCase().indexOf((a||"").toLowerCase())>-1),this.loading=!1},500)}}};function q(a,e,n,r,s,o){const m=t.resolveComponent("v-autocomplete"),c=t.resolveComponent("v-row");return t.openBlock(),t.createElementBlock("div",null,[t.createVNode(c,null,{default:t.withCtx(()=>[t.createVNode(m,{modelValue:s.selected,"onUpdate:modelValue":e[0]||(e[0]=d=>s.selected=d),search:s.search,"onUpdate:search":e[1]||(e[1]=d=>s.search=d),density:"compact",variant:"outlined","hide-no-data":"","hide-details":"",class:"mb-5",label:"Select script",loading:s.loading,items:s.items,"data-test":"select-script"},null,8,["modelValue","search","loading","items"])]),_:1})])}const H=g._export_sfc(M,[["render",q]]);exports.CommandEditor=I;exports.CommandParameterEditor=C;exports.EnvironmentChooser=R;exports.ScriptChooser=H;
2
+ //# sourceMappingURL=ScriptChooser-BmyV6QQD.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScriptChooser-BmyV6QQD.cjs","sources":["../src/components/CommandParameterEditor.vue","../src/components/CommandEditor.vue","../src/components/EnvironmentChooser.vue","../src/components/ScriptChooser.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2025, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-text-field\n v-if=\"!states\"\n :model-value=\"textFieldValue\"\n hide-details\n density=\"compact\"\n variant=\"filled\"\n data-test=\"cmd-param-value\"\n @update:model-value=\"handleChange\"\n />\n <div v-else class=\"d-flex align-center\">\n <v-select\n :items=\"stateOptions\"\n :model-value=\"selectValue\"\n item-title=\"label\"\n :class=\"stateClass\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n placeholder=\"Select...\"\n min-width=\"120px\"\n data-test=\"cmd-param-select\"\n @update:model-value=\"handleChange\"\n />\n <v-text-field\n :model-value=\"stateValue\"\n disabled\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n min-width=\"60px\"\n data-test=\"cmd-param-value\"\n />\n </div>\n </div>\n</template>\n\n<script>\nimport { CmdUtilities } from '../util'\nexport default {\n name: 'CommandParameterEditor',\n mixins: [CmdUtilities],\n props: {\n modelValue: {\n type: [String, Number],\n default: undefined,\n },\n states: {\n type: Object,\n default: () => null,\n },\n statesInHex: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['update:modelValue', 'hazardous-change'],\n computed: {\n textFieldValue() {\n return this.convertToString(this.modelValue)\n },\n stateValue() {\n if (this.statesInHex) {\n return '0x' + this.modelValue.toString(16)\n } else {\n return this.modelValue\n }\n },\n selectValue() {\n // this makes the placeholder prop work\n return this.modelValue === '' ? null : this.modelValue\n },\n stateOptions() {\n if (!this.states) {\n return null\n }\n return Object.keys(this.states).map((label) => {\n return {\n label,\n ...this.states[label],\n }\n })\n },\n hazardous() {\n return (\n Object.entries(this.states)\n .find(([label, state]) => state.value === this.modelValue)\n ?.at(1)?.hazardous !== undefined\n )\n },\n stateClass() {\n return this.hazardous ? 'hazardous mr-4' : 'mr-4'\n },\n },\n watch: {\n hazardous: {\n immediate: true,\n handler(newVal) {\n this.$emit('hazardous-change', newVal)\n },\n },\n },\n methods: {\n handleChange(value) {\n this.$emit('update:modelValue', value)\n },\n },\n}\n</script>\n<style scoped>\n/* This allows Value or State selection to be wider and show state names */\n.container :deep(.v-select__selections) {\n width: auto;\n}\n.v-overflow-btn {\n margin-top: 0px;\n}\n.container {\n padding: 0px;\n}\n.hazardous :deep(.v-select__selection-text) {\n color: rgb(255, 220, 0) !important;\n}\n</style>\n","<!--\n# Copyright 2025, OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-card>\n <div style=\"padding: 10px\">\n <target-packet-item-chooser\n ref=\"targetPacketChooser\"\n :initial-target-name=\"targetName\"\n :initial-packet-name=\"commandName\"\n :disabled=\"sendDisabled\"\n :button-text=\"showCommandButton ? 'Send' : null\"\n :show-queue-select=\"showQueueSelect\"\n :parameter-hazardous=\"hasHazardousParameter\"\n mode=\"cmd\"\n @on-set=\"commandChanged($event)\"\n @add-item=\"buildCmd($event)\"\n />\n </div>\n\n <v-card v-if=\"computedRows.length !== 0\">\n <v-card-title class=\"d-flex align-center justify-content-space-between\">\n Parameters\n <v-spacer />\n <v-text-field\n v-model=\"search\"\n label=\"Search\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n variant=\"outlined\"\n density=\"compact\"\n single-line\n hide-details\n class=\"search\"\n />\n </v-card-title>\n <v-data-table\n :headers=\"headers\"\n :items=\"computedRows\"\n :search=\"search\"\n :items-per-page=\"-1\"\n hide-default-footer\n multi-sort\n density=\"compact\"\n @contextmenu:row=\"showContextMenu\"\n >\n <template #item.val=\"{ item }\">\n <slot\n name=\"parameter-editor\"\n :item=\"item\"\n :states-in-hex=\"statesInHex\"\n >\n <!-- Default parameter editor if slot not provided -->\n <command-parameter-editor\n v-model=\"item.val\"\n :states=\"item.states\"\n :states-in-hex=\"statesInHex\"\n @hazardous-change=\"onParameterHazardousChange(item, $event)\"\n />\n </slot>\n </template>\n </v-data-table>\n </v-card>\n\n <v-menu v-model=\"contextMenuShown\" :target=\"[x, y]\">\n <v-list>\n <v-list-item\n v-for=\"(item, index) in contextMenuOptions\"\n :key=\"index\"\n @click.stop=\"item.action\"\n >\n <v-list-item-title>{{ item.title }}</v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n\n <details-dialog\n v-model=\"viewDetails\"\n :target-name=\"targetName\"\n :packet-name=\"commandName\"\n :item-name=\"parameterName\"\n :type=\"'cmd'\"\n />\n </v-card>\n</template>\n\n<script>\nimport 'sprintf-js'\nimport { OpenC3Api } from '@openc3/js-common/services'\nimport TargetPacketItemChooser from './TargetPacketItemChooser.vue'\nimport CommandParameterEditor from './CommandParameterEditor.vue'\nimport DetailsDialog from './DetailsDialog.vue'\nimport { CmdUtilities } from '../util'\n\nexport default {\n name: 'CommandEditor',\n components: {\n TargetPacketItemChooser,\n CommandParameterEditor,\n DetailsDialog,\n },\n mixins: [CmdUtilities],\n props: {\n initialTargetName: {\n type: String,\n default: null,\n },\n initialPacketName: {\n type: String,\n default: null,\n },\n cmdString: {\n type: String,\n default: null,\n },\n sendDisabled: {\n type: Boolean,\n default: false,\n },\n statesInHex: {\n type: Boolean,\n default: false,\n },\n showIgnoredParams: {\n type: Boolean,\n default: false,\n },\n cmdRaw: {\n type: Boolean,\n default: false,\n },\n showCommandButton: {\n type: Boolean,\n default: true,\n },\n showQueueSelect: {\n type: Boolean,\n default: true,\n },\n },\n emits: ['command-changed', 'build-cmd'],\n data() {\n return {\n search: '',\n headers: [\n { title: 'Name', value: 'parameter_name' },\n { title: 'Value or State', value: 'val' },\n { title: 'Units', value: 'units' },\n { title: 'Range', value: 'range' },\n { title: 'Description', value: 'description' },\n ],\n api: null,\n targetName: '',\n commandName: '',\n commandDescription: '',\n ignoredParams: [],\n computedRows: [],\n reservedItemNames: [\n 'PACKET_TIMESECONDS',\n 'PACKET_TIMEFORMATTED',\n 'RECEIVED_TIMESECONDS',\n 'RECEIVED_TIMEFORMATTED',\n 'RECEIVED_COUNT',\n ],\n contextMenuShown: false,\n viewDetails: false,\n parameterName: '',\n hazardousParameters: {},\n x: 0,\n y: 0,\n contextMenuOptions: [\n {\n title: 'Details',\n action: () => {\n this.contextMenuShown = false\n this.viewDetails = true\n },\n },\n ],\n }\n },\n computed: {\n hasHazardousParameter() {\n return Object.values(this.hazardousParameters).some((v) => v === true)\n },\n },\n created() {\n this.api = new OpenC3Api()\n if (this.cmdString) {\n this.processCmdString()\n } else {\n this.targetName = this.initialTargetName\n this.commandName = this.initialPacketName\n this.updateCmdParams()\n }\n },\n methods: {\n onParameterHazardousChange(item, isHazardous) {\n this.hazardousParameters[item.parameter_name] = isHazardous\n },\n commandChanged(event) {\n if (\n this.targetName !== event.targetName ||\n this.commandName !== event.packetName\n ) {\n this.targetName = event.targetName\n this.commandName = event.packetName\n this.updateCmdParams()\n }\n this.$emit('command-changed', event)\n },\n buildCmd(event) {\n this.$emit('build-cmd', event)\n },\n showContextMenu(event, row) {\n event.preventDefault()\n this.parameterName = row.item.parameter_name\n this.contextMenuShown = false\n this.x = event.clientX\n this.y = event.clientY\n this.$nextTick(() => {\n this.contextMenuShown = true\n })\n },\n updateCmdParams() {\n this.ignoredParams = []\n this.computedRows = []\n this.hazardousParameters = {}\n if (this.targetName && this.commandName) {\n this.api\n .get_target(this.targetName)\n .then(\n (target) => {\n this.ignoredParams = target.ignored_parameters\n return this.api.get_cmd(this.targetName, this.commandName)\n },\n (error) => {\n // eslint-disable-next-line no-console\n console.error('Error getting ignored parameters:', error)\n },\n )\n .then(\n (command) => {\n if (command) {\n command.items.forEach((parameter) => {\n if (this.reservedItemNames.includes(parameter.name)) return\n if (\n !parameter.hidden &&\n (!this.ignoredParams.includes(parameter.name) ||\n this.showIgnoredParams)\n ) {\n let val = parameter.default\n if (\n !parameter.states &&\n parameter.data_type === 'STRING' &&\n typeof parameter.default === 'string'\n ) {\n val = `'${val}'`\n }\n if (parameter.required) {\n val = null // Special marker for required parameters\n }\n if (parameter.format_string && parameter.default) {\n val = sprintf(parameter.format_string, parameter.default)\n }\n if (\n Object.prototype.toString.call(val).slice(8, -1) ===\n 'Object'\n ) {\n val = this.convertToString(val)\n }\n let range = 'N/A'\n if (\n parameter.minimum != null &&\n parameter.maximum != null\n ) {\n if (parameter.data_type === 'FLOAT') {\n if (parameter.minimum < -1e6) {\n parameter.minimum = parameter.minimum.toExponential(3)\n }\n if (parameter.maximum > 1e6) {\n parameter.maximum = parameter.maximum.toExponential(3)\n }\n }\n range = `${parameter.minimum}..${parameter.maximum}`\n }\n this.computedRows.push({\n parameter_name: parameter.name,\n val: val,\n states: parameter.states,\n description: parameter.description,\n range: range,\n units: parameter.units,\n type: parameter.data_type,\n })\n }\n })\n this.commandDescription = command.description\n\n // Populate with parsed parameters if available\n this.populateParametersFromParsed()\n }\n },\n (error) => {\n // eslint-disable-next-line no-console\n console.error('Error getting command parameters:', error)\n },\n )\n }\n },\n triggerUpdateCmdParams() {\n this.updateCmdParams()\n },\n getRows() {\n return this.computedRows\n },\n getCmdString() {\n let cmd = `${this.targetName} ${this.commandName}`\n if (this.computedRows.length === 0) return cmd\n cmd += ' with'\n for (const row of this.computedRows) {\n // null value indicates required parameter not set, see updateCmdParams\n if (row.val === null) {\n throw new Error(`Required parameter ${row.parameter_name} not set`)\n }\n if (row.val !== null && row.val !== undefined && row.val !== '') {\n if (row.states) {\n // If states exist, find the state name for the value\n const stateEntry = Object.entries(row.states).find(\n ([, state]) => state.value === row.val,\n )\n if (stateEntry) {\n // Although not always necessary, always quote states\n cmd += ` ${row.parameter_name} '${stateEntry[0]}',`\n continue\n }\n }\n // We only put the param value in quotes if it is a string with spaces\n // Check for array syntax because we do NOT quote arrays\n let value = this.convertToString(row.val)\n if (value.includes(' ') && !this.isArray(value)) {\n cmd += ` ${row.parameter_name} '${value}',`\n } else {\n cmd += ` ${row.parameter_name} ${value},`\n }\n }\n }\n // Remove trailing comma\n return cmd.slice(0, -1)\n },\n parseCmdString(cmdString) {\n // Parse commands in format: \"TARGET COMMAND with PARAM1 value1, PARAM2 value2\"\n const parts = cmdString.split(' ')\n if (parts.length < 2) return { target: '', command: '', params: {} }\n if (parts.length === 2) {\n return { target: parts[0], command: parts[1], params: {} }\n }\n // Check for a malformed command string that doesn't have 'with'\n if (parts[2] !== 'with') return { target: '', command: '', params: {} }\n\n const target = parts[0]\n const command = parts[1]\n let params = {}\n\n const paramsString = cmdString.split(' with ')[1]\n let paramPairs = []\n let bracketLevel = 0\n let current = ''\n // Parse the params char by char to handle commas inside brackets\n for (let char of paramsString) {\n if (char === '[') {\n bracketLevel++\n current += char\n } else if (char === ']') {\n bracketLevel--\n current += char\n } else if (char === ',' && bracketLevel === 0) {\n paramPairs.push(current.trim())\n current = ''\n } else {\n current += char\n }\n }\n if (current.trim() !== '') {\n paramPairs.push(current.trim())\n }\n\n for (let pair of paramPairs) {\n let firstSpace = pair.indexOf(' ')\n if (firstSpace > 0) {\n let key = pair.substring(0, firstSpace).trim()\n let value = pair.substring(firstSpace + 1).trim()\n params[key] = value\n }\n }\n return { target: target, command: command, params: params }\n },\n processCmdString() {\n const parsed = this.parseCmdString(this.cmdString)\n if (parsed.target && parsed.command) {\n this.targetName = parsed.target\n this.commandName = parsed.command\n this.parsedParameters = parsed.params\n this.updateCmdParams()\n }\n },\n populateParametersFromParsed() {\n // Populate parameters after command parameters are loaded\n if (\n !this.parsedParameters ||\n Object.keys(this.parsedParameters).length === 0\n ) {\n return\n }\n\n this.$nextTick(() => {\n // Give time for parameters to load\n setTimeout(() => {\n this.computedRows.forEach((row) => {\n if (this.parsedParameters.hasOwnProperty(row.parameter_name)) {\n const value = this.parsedParameters[row.parameter_name]\n // Set the value based on parameter type\n if (row.states && typeof value === 'string') {\n // For state parameters, try to match the state name\n const stateKey = Object.keys(row.states).find(\n (key) =>\n key === value || key.toLowerCase() === value.toLowerCase(),\n )\n if (stateKey) {\n row.val = row.states[stateKey].value\n } else {\n row.val = value\n }\n } else if (row.type === 'STRING' && typeof value === 'string') {\n // For string parameters, add quotes if not present\n row.val =\n value.startsWith(\"'\") || value.startsWith('\"')\n ? value\n : `'${value}'`\n } else {\n row.val = value\n }\n }\n })\n }, 100) // Shorter delay since we're already in the component\n })\n },\n },\n}\n</script>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <span> Add environment variables (optional)</span>\n <v-table density=\"compact\">\n <tbody>\n <tr>\n <th scope=\"col\" class=\"text-left\">Key</th>\n <th scope=\"col\" class=\"text-left\">Value</th>\n <th scope=\"col\" class=\"text-right\" width=\"52px\">\n <v-btn\n icon=\"mdi-plus\"\n variant=\"text\"\n data-test=\"new-metadata-icon\"\n @click=\"addEnvVar\"\n />\n </th>\n </tr>\n <tr v-for=\"(env, i) in selected\" :key=\"`tr-${i}`\">\n <td>\n <v-text-field\n v-model=\"env.key\"\n density=\"compact\"\n type=\"text\"\n hide-details\n :readonly=\"env.readonly\"\n :data-test=\"`key-${i}`\"\n />\n </td>\n <td>\n <v-text-field\n v-model=\"env.value\"\n density=\"compact\"\n type=\"text\"\n hide-details\n :readonly=\"env.readonly\"\n :data-test=\"`value-${i}`\"\n />\n </td>\n <td>\n <v-btn\n icon=\"mdi-delete\"\n variant=\"text\"\n :data-test=\"`remove-env-icon-${i}`\"\n @click=\"delEnvVar(i)\"\n />\n </td>\n </tr>\n </tbody>\n </v-table>\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n modelValue: {\n type: Array,\n required: true,\n },\n },\n emits: ['update:modelValue'],\n computed: {\n selected: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n },\n methods: {\n addEnvVar: function () {\n this.selected.push({\n key: '',\n value: '',\n })\n },\n delEnvVar: function (index) {\n this.selected.splice(index, 1)\n },\n },\n}\n</script>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-row>\n <v-autocomplete\n v-model=\"selected\"\n v-model:search=\"search\"\n density=\"compact\"\n variant=\"outlined\"\n hide-no-data\n hide-details\n class=\"mb-5\"\n label=\"Select script\"\n :loading=\"loading\"\n :items=\"items\"\n data-test=\"select-script\"\n />\n </v-row>\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\n\nexport default {\n // TODO: cache items\n // this was previously handled by Vuetify and the `cache-items` prop on `v-autocomplete`, but that feature was\n // dropped in Vuetify 3\n props: {\n modelValue: {\n type: String,\n default: null,\n }, // modelValue is the default prop when using v-model\n },\n emits: ['file', 'error'],\n data() {\n return {\n loading: false,\n search: '',\n selected: this.modelValue,\n scripts: [],\n items: [],\n }\n },\n watch: {\n selected(newVal, oldVal) {\n if (newVal !== oldVal) {\n if (newVal && newVal.slice(-1) === '*') {\n // Remove the * before returning\n this.$emit('file', newVal.substring(0, newVal.length - 1))\n } else {\n this.$emit('file', newVal)\n }\n }\n },\n search(val) {\n val && val !== this.selected && this.querySelections(val)\n },\n },\n created() {\n this.loading = true\n Api.get('/script-api/scripts')\n .then((response) => {\n this.scripts = response.data.filter((filename) => {\n return filename.includes('.rb') || filename.includes('.py')\n })\n this.items = this.scripts\n })\n .catch((error) => {\n this.$emit('error', {\n type: 'error',\n text: `Failed to connect to OpenC3. ${error}`,\n error: error,\n })\n })\n this.selected = this.modelValue ? this.modelValue : null\n this.loading = false\n },\n methods: {\n querySelections: function (v) {\n this.loading = true\n // Simulated ajax query\n setTimeout(() => {\n this.items = this.scripts.filter((e) => {\n return (e || '').toLowerCase().indexOf((v || '').toLowerCase()) > -1\n })\n this.loading = false\n }, 500)\n },\n },\n}\n</script>\n"],"names":["_sfc_main","CmdUtilities","label","_b","_a","state","newVal","value","_createElementBlock","$props","_openBlock","_hoisted_1","_createVNode","_component_v_select","$options","_component_v_text_field","_createBlock","TargetPacketItemChooser","CommandParameterEditor","DetailsDialog","v","OpenC3Api","item","isHazardous","event","row","target","error","command","parameter","val","range","cmd","stateEntry","cmdString","parts","params","paramsString","paramPairs","bracketLevel","current","char","pair","firstSpace","key","parsed","stateKey","_component_v_card","_createElementVNode","_component_target_packet_item_chooser","$data","_cache","$event","_component_v_card_title","_component_v_spacer","_component_v_data_table","_withCtx","_renderSlot","_ctx","_component_command_parameter_editor","_component_v_menu","_component_v_list","_Fragment","_renderList","index","_component_v_list_item","_withModifiers","_component_v_list_item_title","_createTextVNode","_toDisplayString","_component_details_dialog","_component_v_table","_component_v_btn","env","i","oldVal","Api","response","filename","_component_v_row","_component_v_autocomplete"],"mappings":"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"}