@openc3/vue-common 6.9.2 → 6.10.1

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 (410) hide show
  1. package/dist/{ArrayWidget-DUTccTH3.js → ArrayWidget-DQRQ7dPa.js} +4 -4
  2. package/dist/{ArrayWidget-DUTccTH3.js.map → ArrayWidget-DQRQ7dPa.js.map} +1 -1
  3. package/dist/{ArrayWidget-Barb7cCJ.cjs → ArrayWidget-DvCX-1Om.cjs} +2 -2
  4. package/dist/{ArrayWidget-Barb7cCJ.cjs.map → ArrayWidget-DvCX-1Om.cjs.map} +1 -1
  5. package/dist/{ArrayplotWidget-BeNF76NM.js → ArrayplotWidget-BeSfz3MR.js} +3 -3
  6. package/dist/{ArrayplotWidget-BeNF76NM.js.map → ArrayplotWidget-BeSfz3MR.js.map} +1 -1
  7. package/dist/{ArrayplotWidget-CQRRIpFr.cjs → ArrayplotWidget-DA4SCxEg.cjs} +2 -2
  8. package/dist/{ArrayplotWidget-CQRRIpFr.cjs.map → ArrayplotWidget-DA4SCxEg.cjs.map} +1 -1
  9. package/dist/{BarColumn-Dn6MDJoo.js → BarColumn-BdIaQfOz.js} +3 -3
  10. package/dist/{BarColumn-Dn6MDJoo.js.map → BarColumn-BdIaQfOz.js.map} +1 -1
  11. package/dist/{BarColumn-ooUZaRUq.cjs → BarColumn-C5VfAEOx.cjs} +2 -2
  12. package/dist/{BarColumn-ooUZaRUq.cjs.map → BarColumn-C5VfAEOx.cjs.map} +1 -1
  13. package/dist/{BlockWidget-BDkZljH8.cjs → BlockWidget-C33RBqR2.cjs} +2 -2
  14. package/dist/{BlockWidget-BDkZljH8.cjs.map → BlockWidget-C33RBqR2.cjs.map} +1 -1
  15. package/dist/{BlockWidget-BXQlPVQI.js → BlockWidget-DSFKrUxl.js} +4 -4
  16. package/dist/{BlockWidget-BXQlPVQI.js.map → BlockWidget-DSFKrUxl.js.map} +1 -1
  17. package/dist/{ButtonWidget-D8ncnhlr.js → ButtonWidget-CFbjdxSr.js} +10 -10
  18. package/dist/{ButtonWidget-D8ncnhlr.js.map → ButtonWidget-CFbjdxSr.js.map} +1 -1
  19. package/dist/{ButtonWidget-5ybX-zVD.cjs → ButtonWidget-DV33-G5z.cjs} +3 -3
  20. package/dist/{ButtonWidget-5ybX-zVD.cjs.map → ButtonWidget-DV33-G5z.cjs.map} +1 -1
  21. package/dist/{CanvasWidget-IkZPgKME.js → CanvasWidget-BloYxuKE.js} +2 -2
  22. package/dist/{CanvasWidget-IkZPgKME.js.map → CanvasWidget-BloYxuKE.js.map} +1 -1
  23. package/dist/{CanvasWidget-D4ZHOTxU.cjs → CanvasWidget-CO5Ql5FM.cjs} +2 -2
  24. package/dist/{CanvasWidget-D4ZHOTxU.cjs.map → CanvasWidget-CO5Ql5FM.cjs.map} +1 -1
  25. package/dist/{CanvasdotWidget-Ceu6X0ma.js → CanvasdotWidget-CZxUOPRd.js} +2 -2
  26. package/dist/{CanvasdotWidget-Ceu6X0ma.js.map → CanvasdotWidget-CZxUOPRd.js.map} +1 -1
  27. package/dist/{CanvasdotWidget-C_M5yCv9.cjs → CanvasdotWidget-v73CXaR2.cjs} +2 -2
  28. package/dist/{CanvasdotWidget-C_M5yCv9.cjs.map → CanvasdotWidget-v73CXaR2.cjs.map} +1 -1
  29. package/dist/{CanvasimageWidget-BiWHp93X.cjs → CanvasimageWidget-CCwRuLep.cjs} +2 -2
  30. package/dist/{CanvasimageWidget-BiWHp93X.cjs.map → CanvasimageWidget-CCwRuLep.cjs.map} +1 -1
  31. package/dist/{CanvasimageWidget-Bnx5rUVW.js → CanvasimageWidget-ULQq3nqZ.js} +3 -3
  32. package/dist/{CanvasimageWidget-Bnx5rUVW.js.map → CanvasimageWidget-ULQq3nqZ.js.map} +1 -1
  33. package/dist/{CanvasimagevalueWidget-CVdY8iLq.cjs → CanvasimagevalueWidget-NZYl_3mA.cjs} +2 -2
  34. package/dist/{CanvasimagevalueWidget-CVdY8iLq.cjs.map → CanvasimagevalueWidget-NZYl_3mA.cjs.map} +1 -1
  35. package/dist/{CanvasimagevalueWidget-CFO-XDML.js → CanvasimagevalueWidget-jFCVXYhi.js} +3 -3
  36. package/dist/{CanvasimagevalueWidget-CFO-XDML.js.map → CanvasimagevalueWidget-jFCVXYhi.js.map} +1 -1
  37. package/dist/{CanvaslabelWidget-C5wyN8dS.js → CanvaslabelWidget-DQhBI1vZ.js} +2 -2
  38. package/dist/{CanvaslabelWidget-C5wyN8dS.js.map → CanvaslabelWidget-DQhBI1vZ.js.map} +1 -1
  39. package/dist/{CanvaslabelWidget-U4P4GDpI.cjs → CanvaslabelWidget-XfEANCQ-.cjs} +2 -2
  40. package/dist/{CanvaslabelWidget-U4P4GDpI.cjs.map → CanvaslabelWidget-XfEANCQ-.cjs.map} +1 -1
  41. package/dist/{CanvaslabelvalueWidget-CXr6zhdn.js → CanvaslabelvalueWidget-C4REgztL.js} +2 -2
  42. package/dist/{CanvaslabelvalueWidget-CXr6zhdn.js.map → CanvaslabelvalueWidget-C4REgztL.js.map} +1 -1
  43. package/dist/{CanvaslabelvalueWidget-C60wTi40.cjs → CanvaslabelvalueWidget-CJCZdHId.cjs} +2 -2
  44. package/dist/{CanvaslabelvalueWidget-C60wTi40.cjs.map → CanvaslabelvalueWidget-CJCZdHId.cjs.map} +1 -1
  45. package/dist/{CanvaslineWidget-CzOtvkcR.cjs → CanvaslineWidget-DycxDsyJ.cjs} +2 -2
  46. package/dist/{CanvaslineWidget-CzOtvkcR.cjs.map → CanvaslineWidget-DycxDsyJ.cjs.map} +1 -1
  47. package/dist/{CanvaslineWidget-DW2l3EAG.js → CanvaslineWidget-S4PCEvZM.js} +2 -2
  48. package/dist/{CanvaslineWidget-DW2l3EAG.js.map → CanvaslineWidget-S4PCEvZM.js.map} +1 -1
  49. package/dist/{CanvaslinevalueWidget-UJ0xa8-8.js → CanvaslinevalueWidget-597khOSA.js} +2 -2
  50. package/dist/{CanvaslinevalueWidget-UJ0xa8-8.js.map → CanvaslinevalueWidget-597khOSA.js.map} +1 -1
  51. package/dist/{CanvaslinevalueWidget-D20bbhm_.cjs → CanvaslinevalueWidget-bChpy38C.cjs} +2 -2
  52. package/dist/{CanvaslinevalueWidget-D20bbhm_.cjs.map → CanvaslinevalueWidget-bChpy38C.cjs.map} +1 -1
  53. package/dist/{CheckbuttonWidget-BF5cvQHd.js → CheckbuttonWidget-BcblKat3.js} +2 -2
  54. package/dist/{CheckbuttonWidget-BF5cvQHd.js.map → CheckbuttonWidget-BcblKat3.js.map} +1 -1
  55. package/dist/{CheckbuttonWidget-dStQF0Yp.cjs → CheckbuttonWidget-BwDttJTf.cjs} +2 -2
  56. package/dist/{CheckbuttonWidget-dStQF0Yp.cjs.map → CheckbuttonWidget-BwDttJTf.cjs.map} +1 -1
  57. package/dist/{ClassificationBanners-CTChOmRf.cjs → ClassificationBanners-CEzDn5cM.cjs} +2 -2
  58. package/dist/{ClassificationBanners-CTChOmRf.cjs.map → ClassificationBanners-CEzDn5cM.cjs.map} +1 -1
  59. package/dist/{ClassificationBanners-CDc_06x9.js → ClassificationBanners-CS4GUeYv.js} +2 -2
  60. package/dist/{ClassificationBanners-CDc_06x9.js.map → ClassificationBanners-CS4GUeYv.js.map} +1 -1
  61. package/dist/{ComboboxWidget-Di1O9VBF.js → ComboboxWidget-BMcHS4g5.js} +2 -2
  62. package/dist/{ComboboxWidget-Di1O9VBF.js.map → ComboboxWidget-BMcHS4g5.js.map} +1 -1
  63. package/dist/{ComboboxWidget-D4h-0V0x.cjs → ComboboxWidget-DkBtLQ41.cjs} +2 -2
  64. package/dist/{ComboboxWidget-D4h-0V0x.cjs.map → ComboboxWidget-DkBtLQ41.cjs.map} +1 -1
  65. package/dist/{CriticalCmdDialog-EvK998xs.cjs → CriticalCmdDialog-C4DRtDnA.cjs} +2 -2
  66. package/dist/CriticalCmdDialog-C4DRtDnA.cjs.map +1 -0
  67. package/dist/{CriticalCmdDialog-CZHVDFjK.js → CriticalCmdDialog-CVLyYtng.js} +16 -16
  68. package/dist/CriticalCmdDialog-CVLyYtng.js.map +1 -0
  69. package/dist/{DateWidget-GiUOvEZO.js → DateWidget-BpnMzSBn.js} +2 -2
  70. package/dist/{DateWidget-GiUOvEZO.js.map → DateWidget-BpnMzSBn.js.map} +1 -1
  71. package/dist/{DateWidget-BAFINBB6.cjs → DateWidget-CRFiLyxD.cjs} +2 -2
  72. package/dist/{DateWidget-BAFINBB6.cjs.map → DateWidget-CRFiLyxD.cjs.map} +1 -1
  73. package/dist/DetailsDialog-Brv3nVs3.cjs +2 -0
  74. package/dist/DetailsDialog-Brv3nVs3.cjs.map +1 -0
  75. package/dist/{DetailsDialog-Ji0jA6sd.js → DetailsDialog-q9piPmHq.js} +76 -73
  76. package/dist/DetailsDialog-q9piPmHq.js.map +1 -0
  77. package/dist/{EventListDialog-BLLIQyah.js → EventListDialog-BlcxcO8a.js} +3 -3
  78. package/dist/{EventListDialog-BLLIQyah.js.map → EventListDialog-BlcxcO8a.js.map} +1 -1
  79. package/dist/{EventListDialog-CEDNXaKw.cjs → EventListDialog-DXIYmkWb.cjs} +2 -2
  80. package/dist/{EventListDialog-CEDNXaKw.cjs.map → EventListDialog-DXIYmkWb.cjs.map} +1 -1
  81. package/dist/{FormatvalueWidget-DJkp_gM_.cjs → FormatvalueWidget-AXH-VW-A.cjs} +2 -2
  82. package/dist/{FormatvalueWidget-DJkp_gM_.cjs.map → FormatvalueWidget-AXH-VW-A.cjs.map} +1 -1
  83. package/dist/{FormatvalueWidget-JVEG-72b.js → FormatvalueWidget-Cm-HmAmw.js} +3 -3
  84. package/dist/{FormatvalueWidget-JVEG-72b.js.map → FormatvalueWidget-Cm-HmAmw.js.map} +1 -1
  85. package/dist/{Graph-B3v4RJRC.js → Graph-BEodMaxQ.js} +3 -3
  86. package/dist/{Graph-B3v4RJRC.js.map → Graph-BEodMaxQ.js.map} +1 -1
  87. package/dist/{Graph-BOZlkDbl.cjs → Graph-wDFY6Kd7.cjs} +2 -2
  88. package/dist/{Graph-BOZlkDbl.cjs.map → Graph-wDFY6Kd7.cjs.map} +1 -1
  89. package/dist/{GraphWidget-DD7SIV2k.cjs → GraphWidget-B878ArE1.cjs} +2 -2
  90. package/dist/{GraphWidget-DD7SIV2k.cjs.map → GraphWidget-B878ArE1.cjs.map} +1 -1
  91. package/dist/{GraphWidget-DGe0TweO.js → GraphWidget-CAADBFV-.js} +2 -2
  92. package/dist/{GraphWidget-DGe0TweO.js.map → GraphWidget-CAADBFV-.js.map} +1 -1
  93. package/dist/{HorizontalWidget-CIDUx-Qp.cjs → HorizontalWidget-D2lXnQqQ.cjs} +2 -2
  94. package/dist/{HorizontalWidget-CIDUx-Qp.cjs.map → HorizontalWidget-D2lXnQqQ.cjs.map} +1 -1
  95. package/dist/{HorizontalWidget-B_JnT2Q0.js → HorizontalWidget-NcXIXxh7.js} +2 -2
  96. package/dist/{HorizontalWidget-B_JnT2Q0.js.map → HorizontalWidget-NcXIXxh7.js.map} +1 -1
  97. package/dist/{HorizontalboxWidget-BQYyunr-.cjs → HorizontalboxWidget-BGzl7-Rt.cjs} +2 -2
  98. package/dist/{HorizontalboxWidget-BQYyunr-.cjs.map → HorizontalboxWidget-BGzl7-Rt.cjs.map} +1 -1
  99. package/dist/{HorizontalboxWidget-D_1bF3p-.js → HorizontalboxWidget-CW9XX4uH.js} +5 -5
  100. package/dist/{HorizontalboxWidget-D_1bF3p-.js.map → HorizontalboxWidget-CW9XX4uH.js.map} +1 -1
  101. package/dist/{HorizontallineWidget-Bqb82J2C.js → HorizontallineWidget-Cu2dDt7k.js} +2 -2
  102. package/dist/{HorizontallineWidget-Bqb82J2C.js.map → HorizontallineWidget-Cu2dDt7k.js.map} +1 -1
  103. package/dist/{HorizontallineWidget-dYDzYNW1.cjs → HorizontallineWidget-x2u6MQNz.cjs} +2 -2
  104. package/dist/{HorizontallineWidget-dYDzYNW1.cjs.map → HorizontallineWidget-x2u6MQNz.cjs.map} +1 -1
  105. package/dist/{IframeWidget-92T3yaK4.cjs → IframeWidget-B5simCWn.cjs} +2 -2
  106. package/dist/{IframeWidget-92T3yaK4.cjs.map → IframeWidget-B5simCWn.cjs.map} +1 -1
  107. package/dist/{IframeWidget-BUOO2Zav.js → IframeWidget-BBU3MkSq.js} +2 -2
  108. package/dist/{IframeWidget-BUOO2Zav.js.map → IframeWidget-BBU3MkSq.js.map} +1 -1
  109. package/dist/{ImageLoader-Dq0Qs61n.cjs → ImageLoader-Dj3MZVq9.cjs} +2 -2
  110. package/dist/{ImageLoader-Dq0Qs61n.cjs.map → ImageLoader-Dj3MZVq9.cjs.map} +1 -1
  111. package/dist/{ImageLoader-C6RNmpHN.js → ImageLoader-XAGgjKkq.js} +2 -2
  112. package/dist/{ImageLoader-C6RNmpHN.js.map → ImageLoader-XAGgjKkq.js.map} +1 -1
  113. package/dist/{ImageviewerWidget-Y6xx7zZX.cjs → ImageviewerWidget-BtuiORhN.cjs} +2 -2
  114. package/dist/{ImageviewerWidget-Y6xx7zZX.cjs.map → ImageviewerWidget-BtuiORhN.cjs.map} +1 -1
  115. package/dist/{ImageviewerWidget-Fd7r9VTx.js → ImageviewerWidget-UByjeO63.js} +2 -2
  116. package/dist/{ImageviewerWidget-Fd7r9VTx.js.map → ImageviewerWidget-UByjeO63.js.map} +1 -1
  117. package/dist/{InterfacesTab-dig9pzGg.js → InterfacesTab-6hli9fcg.js} +7 -7
  118. package/dist/{InterfacesTab-dig9pzGg.js.map → InterfacesTab-6hli9fcg.js.map} +1 -1
  119. package/dist/{InterfacesTab-DgLHHNke.cjs → InterfacesTab-B1CwBWFu.cjs} +2 -2
  120. package/dist/{InterfacesTab-DgLHHNke.cjs.map → InterfacesTab-B1CwBWFu.cjs.map} +1 -1
  121. package/dist/{LabelWidget-BVxcrEXf.js → LabelWidget-BsOpolUL.js} +2 -2
  122. package/dist/{LabelWidget-BVxcrEXf.js.map → LabelWidget-BsOpolUL.js.map} +1 -1
  123. package/dist/{LabelWidget-BqN6Noag.cjs → LabelWidget-X4cBbl5N.cjs} +2 -2
  124. package/dist/{LabelWidget-BqN6Noag.cjs.map → LabelWidget-X4cBbl5N.cjs.map} +1 -1
  125. package/dist/{LabelledWidget-ZZJPwPpI.js → LabelledWidget-DVOGpgZ-.js} +4 -4
  126. package/dist/{LabelledWidget-ZZJPwPpI.js.map → LabelledWidget-DVOGpgZ-.js.map} +1 -1
  127. package/dist/{LabelledWidget-eR2Dar84.cjs → LabelledWidget-DaHqSURc.cjs} +2 -2
  128. package/dist/{LabelledWidget-eR2Dar84.cjs.map → LabelledWidget-DaHqSURc.cjs.map} +1 -1
  129. package/dist/{LabelprogressbarWidget-C2vkWITx.js → LabelprogressbarWidget-BeE9fDs6.js} +4 -4
  130. package/dist/{LabelprogressbarWidget-C2vkWITx.js.map → LabelprogressbarWidget-BeE9fDs6.js.map} +1 -1
  131. package/dist/{LabelprogressbarWidget-D-Oxgeeg.cjs → LabelprogressbarWidget-Cz3nXacL.cjs} +2 -2
  132. package/dist/{LabelprogressbarWidget-D-Oxgeeg.cjs.map → LabelprogressbarWidget-Cz3nXacL.cjs.map} +1 -1
  133. package/dist/{LabelsparklineWidget-CSlvTtVj.js → LabelsparklineWidget-Bj7trKML.js} +4 -4
  134. package/dist/{LabelsparklineWidget-CSlvTtVj.js.map → LabelsparklineWidget-Bj7trKML.js.map} +1 -1
  135. package/dist/{LabelsparklineWidget-B0q6o8ro.cjs → LabelsparklineWidget-Bns8kwBj.cjs} +2 -2
  136. package/dist/{LabelsparklineWidget-B0q6o8ro.cjs.map → LabelsparklineWidget-Bns8kwBj.cjs.map} +1 -1
  137. package/dist/{LabelvalueWidget-DbCpaJBW.cjs → LabelvalueWidget-D-sncwem.cjs} +2 -2
  138. package/dist/{LabelvalueWidget-DbCpaJBW.cjs.map → LabelvalueWidget-D-sncwem.cjs.map} +1 -1
  139. package/dist/{LabelvalueWidget-6MxCpBTc.js → LabelvalueWidget-Dwqsh5o2.js} +4 -4
  140. package/dist/{LabelvalueWidget-6MxCpBTc.js.map → LabelvalueWidget-Dwqsh5o2.js.map} +1 -1
  141. package/dist/{LabelvaluedescWidget-8mNs15uI.js → LabelvaluedescWidget-Cfu2vuja.js} +5 -5
  142. package/dist/{LabelvaluedescWidget-8mNs15uI.js.map → LabelvaluedescWidget-Cfu2vuja.js.map} +1 -1
  143. package/dist/{LabelvaluedescWidget-BzcfT8oZ.cjs → LabelvaluedescWidget-DmqG8dzJ.cjs} +2 -2
  144. package/dist/{LabelvaluedescWidget-BzcfT8oZ.cjs.map → LabelvaluedescWidget-DmqG8dzJ.cjs.map} +1 -1
  145. package/dist/{LabelvaluelimitsbarWidget-jeDT8JjR.js → LabelvaluelimitsbarWidget-DYV68AJ_.js} +4 -4
  146. package/dist/{LabelvaluelimitsbarWidget-jeDT8JjR.js.map → LabelvaluelimitsbarWidget-DYV68AJ_.js.map} +1 -1
  147. package/dist/{LabelvaluelimitsbarWidget-Cc7NNKOt.cjs → LabelvaluelimitsbarWidget-_l7xjrX9.cjs} +2 -2
  148. package/dist/{LabelvaluelimitsbarWidget-Cc7NNKOt.cjs.map → LabelvaluelimitsbarWidget-_l7xjrX9.cjs.map} +1 -1
  149. package/dist/{LabelvaluelimitscolumnWidget-DfO5Yb79.js → LabelvaluelimitscolumnWidget-CtaoTixt.js} +5 -5
  150. package/dist/{LabelvaluelimitscolumnWidget-DfO5Yb79.js.map → LabelvaluelimitscolumnWidget-CtaoTixt.js.map} +1 -1
  151. package/dist/{LabelvaluelimitscolumnWidget-CNqHPGpL.cjs → LabelvaluelimitscolumnWidget-D0WEVZMc.cjs} +2 -2
  152. package/dist/{LabelvaluelimitscolumnWidget-CNqHPGpL.cjs.map → LabelvaluelimitscolumnWidget-D0WEVZMc.cjs.map} +1 -1
  153. package/dist/{LabelvaluerangebarWidget-D23BEk-N.js → LabelvaluerangebarWidget-3EaUB6E6.js} +4 -4
  154. package/dist/{LabelvaluerangebarWidget-D23BEk-N.js.map → LabelvaluerangebarWidget-3EaUB6E6.js.map} +1 -1
  155. package/dist/{LabelvaluerangebarWidget-CnDgjH-G.cjs → LabelvaluerangebarWidget-BZTEfPQh.cjs} +2 -2
  156. package/dist/{LabelvaluerangebarWidget-CnDgjH-G.cjs.map → LabelvaluerangebarWidget-BZTEfPQh.cjs.map} +1 -1
  157. package/dist/{Layout-DuiUWxWc.js → Layout-DNR3xnku.js} +2 -2
  158. package/dist/{Layout-DuiUWxWc.js.map → Layout-DNR3xnku.js.map} +1 -1
  159. package/dist/Layout-U0MXDxLO.cjs +2 -0
  160. package/dist/{Layout-Dd5e3p-K.cjs.map → Layout-U0MXDxLO.cjs.map} +1 -1
  161. package/dist/{LedWidget-9IAav1IH.js → LedWidget-Gi6GXtrW.js} +4 -4
  162. package/dist/{LedWidget-9IAav1IH.js.map → LedWidget-Gi6GXtrW.js.map} +1 -1
  163. package/dist/{LedWidget-CQkF1v5x.cjs → LedWidget-MAyRDM2n.cjs} +2 -2
  164. package/dist/{LedWidget-CQkF1v5x.cjs.map → LedWidget-MAyRDM2n.cjs.map} +1 -1
  165. package/dist/{LimitsbarWidget-DqaTaWO1.js → LimitsbarWidget-BTZQY9XQ.js} +2 -2
  166. package/dist/{LimitsbarWidget-DqaTaWO1.js.map → LimitsbarWidget-BTZQY9XQ.js.map} +1 -1
  167. package/dist/{LimitsbarWidget-C4jNTGa9.cjs → LimitsbarWidget-ytyfCphX.cjs} +2 -2
  168. package/dist/{LimitsbarWidget-C4jNTGa9.cjs.map → LimitsbarWidget-ytyfCphX.cjs.map} +1 -1
  169. package/dist/{LimitscolorWidget-4g3UVzsW.js → LimitscolorWidget-CFnmvlrA.js} +2 -2
  170. package/dist/{LimitscolorWidget-4g3UVzsW.js.map → LimitscolorWidget-CFnmvlrA.js.map} +1 -1
  171. package/dist/{LimitscolorWidget-BjlXWw_j.cjs → LimitscolorWidget-CeZYYSQn.cjs} +2 -2
  172. package/dist/{LimitscolorWidget-BjlXWw_j.cjs.map → LimitscolorWidget-CeZYYSQn.cjs.map} +1 -1
  173. package/dist/{LimitscolumnWidget-BLZE1Zfh.cjs → LimitscolumnWidget-CXzLYznR.cjs} +2 -2
  174. package/dist/{LimitscolumnWidget-BLZE1Zfh.cjs.map → LimitscolumnWidget-CXzLYznR.cjs.map} +1 -1
  175. package/dist/{LimitscolumnWidget-pR-tLgFG.js → LimitscolumnWidget-DSsz36tT.js} +2 -2
  176. package/dist/{LimitscolumnWidget-pR-tLgFG.js.map → LimitscolumnWidget-DSsz36tT.js.map} +1 -1
  177. package/dist/{LinegraphWidget-DMcegwyu.js → LinegraphWidget-CeBijgDo.js} +4 -4
  178. package/dist/{LinegraphWidget-DMcegwyu.js.map → LinegraphWidget-CeBijgDo.js.map} +1 -1
  179. package/dist/{LinegraphWidget-adpA8cjD.cjs → LinegraphWidget-WVSJOuTE.cjs} +2 -2
  180. package/dist/{LinegraphWidget-adpA8cjD.cjs.map → LinegraphWidget-WVSJOuTE.cjs.map} +1 -1
  181. package/dist/{MatrixbycolumnsWidget-2lqTNOqb.cjs → MatrixbycolumnsWidget-COWMt_-r.cjs} +2 -2
  182. package/dist/{MatrixbycolumnsWidget-2lqTNOqb.cjs.map → MatrixbycolumnsWidget-COWMt_-r.cjs.map} +1 -1
  183. package/dist/{MatrixbycolumnsWidget--31rW1Mx.js → MatrixbycolumnsWidget-DX9uhjAv.js} +3 -3
  184. package/dist/{MatrixbycolumnsWidget--31rW1Mx.js.map → MatrixbycolumnsWidget-DX9uhjAv.js.map} +1 -1
  185. package/dist/{MicroservicesTab-DhisErku.js → MicroservicesTab-BSSCh5Ss.js} +3 -3
  186. package/dist/{MicroservicesTab-DhisErku.js.map → MicroservicesTab-BSSCh5Ss.js.map} +1 -1
  187. package/dist/{MicroservicesTab-BDkTm3LD.cjs → MicroservicesTab-Btw8r_9N.cjs} +2 -2
  188. package/dist/{MicroservicesTab-BDkTm3LD.cjs.map → MicroservicesTab-Btw8r_9N.cjs.map} +1 -1
  189. package/dist/{Openc3Screen-B_8bygux.cjs → Openc3Screen-DIN4KVsw.cjs} +5 -5
  190. package/dist/Openc3Screen-DIN4KVsw.cjs.map +1 -0
  191. package/dist/{Openc3Screen-zVSKWUkb.js → Openc3Screen-iW_gaikc.js} +120 -112
  192. package/dist/Openc3Screen-iW_gaikc.js.map +1 -0
  193. package/dist/{OutputDialog-D3zlQlpE.js → OutputDialog-BMzp6wy3.js} +2 -2
  194. package/dist/{OutputDialog-D3zlQlpE.js.map → OutputDialog-BMzp6wy3.js.map} +1 -1
  195. package/dist/{OutputDialog-DxEYVYA3.cjs → OutputDialog-CKObLICh.cjs} +2 -2
  196. package/dist/{OutputDialog-DxEYVYA3.cjs.map → OutputDialog-CKObLICh.cjs.map} +1 -1
  197. package/dist/{PackagesTab-Bjy3y4fK.js → PackagesTab-BascLTCK.js} +3 -3
  198. package/dist/{PackagesTab-Bjy3y4fK.js.map → PackagesTab-BascLTCK.js.map} +1 -1
  199. package/dist/{PackagesTab-CVytftqm.cjs → PackagesTab-D_1kbMkk.cjs} +2 -2
  200. package/dist/{PackagesTab-CVytftqm.cjs.map → PackagesTab-D_1kbMkk.cjs.map} +1 -1
  201. package/dist/{PluginsTab-BvwrAskE.cjs → PluginsTab-CjYoMrbj.cjs} +4 -4
  202. package/dist/PluginsTab-CjYoMrbj.cjs.map +1 -0
  203. package/dist/{PluginsTab-Di5nXctJ.js → PluginsTab-Yz9HZqpp.js} +6 -5
  204. package/dist/PluginsTab-Yz9HZqpp.js.map +1 -0
  205. package/dist/{ProgressbarWidget-COa_sGKn.cjs → ProgressbarWidget-BUSOhcZ3.cjs} +2 -2
  206. package/dist/{ProgressbarWidget-COa_sGKn.cjs.map → ProgressbarWidget-BUSOhcZ3.cjs.map} +1 -1
  207. package/dist/{ProgressbarWidget-DGAYHWEj.js → ProgressbarWidget-DJepvOip.js} +2 -2
  208. package/dist/{ProgressbarWidget-DGAYHWEj.js.map → ProgressbarWidget-DJepvOip.js.map} +1 -1
  209. package/dist/{RadiobuttonWidget-Cbx15iyl.js → RadiobuttonWidget-4e8ROIfg.js} +2 -2
  210. package/dist/{RadiobuttonWidget-Cbx15iyl.js.map → RadiobuttonWidget-4e8ROIfg.js.map} +1 -1
  211. package/dist/{RadiobuttonWidget-CQPXrm0x.cjs → RadiobuttonWidget-D4Fka1eN.cjs} +2 -2
  212. package/dist/{RadiobuttonWidget-CQPXrm0x.cjs.map → RadiobuttonWidget-D4Fka1eN.cjs.map} +1 -1
  213. package/dist/{RadiogroupWidget-DW3nTccf.js → RadiogroupWidget-CUucj6aT.js} +2 -2
  214. package/dist/{RadiogroupWidget-DW3nTccf.js.map → RadiogroupWidget-CUucj6aT.js.map} +1 -1
  215. package/dist/{RadiogroupWidget-C15ugChT.cjs → RadiogroupWidget-DU9G6qLq.cjs} +2 -2
  216. package/dist/{RadiogroupWidget-C15ugChT.cjs.map → RadiogroupWidget-DU9G6qLq.cjs.map} +1 -1
  217. package/dist/{RangebarWidget-BZba6dPt.js → RangebarWidget-Bu4rqlrx.js} +2 -2
  218. package/dist/{RangebarWidget-BZba6dPt.js.map → RangebarWidget-Bu4rqlrx.js.map} +1 -1
  219. package/dist/{RangebarWidget-5ekc5Lyp.cjs → RangebarWidget-DlMJo2o3.cjs} +2 -2
  220. package/dist/{RangebarWidget-5ekc5Lyp.cjs.map → RangebarWidget-DlMJo2o3.cjs.map} +1 -1
  221. package/dist/{RedisTab-Dnqd_dRk.js → RedisTab-C00rFmdl.js} +13 -13
  222. package/dist/{RedisTab-Dnqd_dRk.js.map → RedisTab-C00rFmdl.js.map} +1 -1
  223. package/dist/{RedisTab-C89xySPI.cjs → RedisTab-Dz4m_JfV.cjs} +2 -2
  224. package/dist/{RedisTab-C89xySPI.cjs.map → RedisTab-Dz4m_JfV.cjs.map} +1 -1
  225. package/dist/{RollupWidget-Mley0KZv.js → RollupWidget-ByLvEEau.js} +2 -2
  226. package/dist/{RollupWidget-Mley0KZv.js.map → RollupWidget-ByLvEEau.js.map} +1 -1
  227. package/dist/{RollupWidget-ILwSCjGa.cjs → RollupWidget-D-Dx6Dkx.cjs} +2 -2
  228. package/dist/{RollupWidget-ILwSCjGa.cjs.map → RollupWidget-D-Dx6Dkx.cjs.map} +1 -1
  229. package/dist/{RoutersTab-Dg3i3h0M.js → RoutersTab-CEe4oS0x.js} +3 -3
  230. package/dist/{RoutersTab-Dg3i3h0M.js.map → RoutersTab-CEe4oS0x.js.map} +1 -1
  231. package/dist/{RoutersTab-CokDnWfK.cjs → RoutersTab-CyjPaVVb.cjs} +2 -2
  232. package/dist/{RoutersTab-CokDnWfK.cjs.map → RoutersTab-CyjPaVVb.cjs.map} +1 -1
  233. package/dist/ScriptChooser-B83Pgq2H.cjs +2 -0
  234. package/dist/ScriptChooser-B83Pgq2H.cjs.map +1 -0
  235. package/dist/{ScriptChooser-DL8ct71n.js → ScriptChooser-CbVbI0x-.js} +33 -33
  236. package/dist/ScriptChooser-CbVbI0x-.js.map +1 -0
  237. package/dist/{ScrollwindowWidget-B4dv7icF.cjs → ScrollwindowWidget-0UcfntpY.cjs} +2 -2
  238. package/dist/{ScrollwindowWidget-B4dv7icF.cjs.map → ScrollwindowWidget-0UcfntpY.cjs.map} +1 -1
  239. package/dist/{ScrollwindowWidget-DvsnpEcJ.js → ScrollwindowWidget-CXJ9QGN1.js} +3 -3
  240. package/dist/{ScrollwindowWidget-DvsnpEcJ.js.map → ScrollwindowWidget-CXJ9QGN1.js.map} +1 -1
  241. package/dist/{SecretsTab-Dudp9OiZ.cjs → SecretsTab-B07A5MeK.cjs} +2 -2
  242. package/dist/{SecretsTab-Dudp9OiZ.cjs.map → SecretsTab-B07A5MeK.cjs.map} +1 -1
  243. package/dist/{SecretsTab-CIrHz_ni.js → SecretsTab-DFrxV8Q8.js} +2 -2
  244. package/dist/{SecretsTab-CIrHz_ni.js.map → SecretsTab-DFrxV8Q8.js.map} +1 -1
  245. package/dist/{SettingsTab-MipB-sIq.cjs → SettingsTab-CDaG6VS1.cjs} +2 -2
  246. package/dist/{SettingsTab-MipB-sIq.cjs.map → SettingsTab-CDaG6VS1.cjs.map} +1 -1
  247. package/dist/{SettingsTab-DztpIQm7.js → SettingsTab-CpLxrjTc.js} +4 -4
  248. package/dist/{SettingsTab-DztpIQm7.js.map → SettingsTab-CpLxrjTc.js.map} +1 -1
  249. package/dist/{SignalWidget-CQqD33Lg.cjs → SignalWidget-DhS8nGJu.cjs} +2 -2
  250. package/dist/{SignalWidget-CQqD33Lg.cjs.map → SignalWidget-DhS8nGJu.cjs.map} +1 -1
  251. package/dist/{SignalWidget-BE-MGigb.js → SignalWidget-qvL2YZJA.js} +2 -2
  252. package/dist/{SignalWidget-BE-MGigb.js.map → SignalWidget-qvL2YZJA.js.map} +1 -1
  253. package/dist/{SimpleTextDialog-BkUovtW9.js → SimpleTextDialog--iSWgPgq.js} +2 -2
  254. package/dist/{SimpleTextDialog-BkUovtW9.js.map → SimpleTextDialog--iSWgPgq.js.map} +1 -1
  255. package/dist/{SimpleTextDialog-NSW_V3iT.cjs → SimpleTextDialog-tZ7qO1zq.cjs} +2 -2
  256. package/dist/{SimpleTextDialog-NSW_V3iT.cjs.map → SimpleTextDialog-tZ7qO1zq.cjs.map} +1 -1
  257. package/dist/{SpacerWidget-QlVjOsLl.cjs → SpacerWidget-CUrYZDLP.cjs} +2 -2
  258. package/dist/{SpacerWidget-QlVjOsLl.cjs.map → SpacerWidget-CUrYZDLP.cjs.map} +1 -1
  259. package/dist/{SpacerWidget-DXayYLSi.js → SpacerWidget-CaWx41K7.js} +2 -2
  260. package/dist/{SpacerWidget-DXayYLSi.js.map → SpacerWidget-CaWx41K7.js.map} +1 -1
  261. package/dist/{SparklineWidget-mi0idVbP.cjs → SparklineWidget-BOnHnJOh.cjs} +2 -2
  262. package/dist/{SparklineWidget-mi0idVbP.cjs.map → SparklineWidget-BOnHnJOh.cjs.map} +1 -1
  263. package/dist/{SparklineWidget-BNYHhnFk.js → SparklineWidget-BkNSRypJ.js} +4 -4
  264. package/dist/{SparklineWidget-BNYHhnFk.js.map → SparklineWidget-BkNSRypJ.js.map} +1 -1
  265. package/dist/{TabbookWidget-BMaDTham.cjs → TabbookWidget-BTvyYn7i.cjs} +2 -2
  266. package/dist/{TabbookWidget-BMaDTham.cjs.map → TabbookWidget-BTvyYn7i.cjs.map} +1 -1
  267. package/dist/{TabbookWidget-BbnCFFoI.js → TabbookWidget-MsrRG1vn.js} +2 -2
  268. package/dist/{TabbookWidget-BbnCFFoI.js.map → TabbookWidget-MsrRG1vn.js.map} +1 -1
  269. package/dist/TargetPacketItemChooser-CmjEcxN3.cjs +2 -0
  270. package/dist/TargetPacketItemChooser-CmjEcxN3.cjs.map +1 -0
  271. package/dist/{TargetPacketItemChooser-Z0Tn5eXv.js → TargetPacketItemChooser-oSQHf8Ht.js} +107 -112
  272. package/dist/TargetPacketItemChooser-oSQHf8Ht.js.map +1 -0
  273. package/dist/{TargetsTab-CDd9F7X3.js → TargetsTab-B6tf2hKl.js} +12 -12
  274. package/dist/{TargetsTab-CDd9F7X3.js.map → TargetsTab-B6tf2hKl.js.map} +1 -1
  275. package/dist/{TargetsTab-D32K2JiE.cjs → TargetsTab-DwFb3_1K.cjs} +2 -2
  276. package/dist/{TargetsTab-D32K2JiE.cjs.map → TargetsTab-DwFb3_1K.cjs.map} +1 -1
  277. package/dist/{TextboxWidget-D1pZXnLn.cjs → TextboxWidget-CPmQEhMm.cjs} +2 -2
  278. package/dist/{TextboxWidget-D1pZXnLn.cjs.map → TextboxWidget-CPmQEhMm.cjs.map} +1 -1
  279. package/dist/{TextboxWidget-BmANrs4B.js → TextboxWidget-DbwpPVGB.js} +4 -4
  280. package/dist/{TextboxWidget-BmANrs4B.js.map → TextboxWidget-DbwpPVGB.js.map} +1 -1
  281. package/dist/{TextfieldWidget-CTIX-cUX.cjs → TextfieldWidget-BzaNs7J4.cjs} +2 -2
  282. package/dist/{TextfieldWidget-CTIX-cUX.cjs.map → TextfieldWidget-BzaNs7J4.cjs.map} +1 -1
  283. package/dist/{TextfieldWidget-SJaLN05z.js → TextfieldWidget-DzMlTMYW.js} +2 -2
  284. package/dist/{TextfieldWidget-SJaLN05z.js.map → TextfieldWidget-DzMlTMYW.js.map} +1 -1
  285. package/dist/{TimeWidget-jB9OkZz4.js → TimeWidget-BHybAfg8.js} +2 -2
  286. package/dist/{TimeWidget-jB9OkZz4.js.map → TimeWidget-BHybAfg8.js.map} +1 -1
  287. package/dist/{TimeWidget-Dytou9_B.cjs → TimeWidget-DksEVe5c.cjs} +2 -2
  288. package/dist/{TimeWidget-Dytou9_B.cjs.map → TimeWidget-DksEVe5c.cjs.map} +1 -1
  289. package/dist/{TitleWidget-CjgUoNOz.cjs → TitleWidget-C7_pj0lU.cjs} +2 -2
  290. package/dist/{TitleWidget-CjgUoNOz.cjs.map → TitleWidget-C7_pj0lU.cjs.map} +1 -1
  291. package/dist/{TitleWidget-mcKJD8dB.js → TitleWidget-DL_sE5YE.js} +2 -2
  292. package/dist/{TitleWidget-mcKJD8dB.js.map → TitleWidget-DL_sE5YE.js.map} +1 -1
  293. package/dist/{ToolsTab-BbUbC7aQ.js → ToolsTab-CXoxIck8.js} +3 -3
  294. package/dist/{ToolsTab-BbUbC7aQ.js.map → ToolsTab-CXoxIck8.js.map} +1 -1
  295. package/dist/{ToolsTab-DIjQdiL-.cjs → ToolsTab-DTL8ujgd.cjs} +3 -3
  296. package/dist/{ToolsTab-DIjQdiL-.cjs.map → ToolsTab-DTL8ujgd.cjs.map} +1 -1
  297. package/dist/TopBar-B8LJESUg.js +324 -0
  298. package/dist/TopBar-B8LJESUg.js.map +1 -0
  299. package/dist/TopBar-CGSMcenK.cjs +2 -0
  300. package/dist/TopBar-CGSMcenK.cjs.map +1 -0
  301. package/dist/{UpgradeToEnterpriseDialog-XVvb43ME.js → UpgradeToEnterpriseDialog-CqnhQ8So.js} +2 -2
  302. package/dist/{UpgradeToEnterpriseDialog-XVvb43ME.js.map → UpgradeToEnterpriseDialog-CqnhQ8So.js.map} +1 -1
  303. package/dist/{UpgradeToEnterpriseDialog-BDYrclMq.cjs → UpgradeToEnterpriseDialog-Dv_egyCM.cjs} +2 -2
  304. package/dist/{UpgradeToEnterpriseDialog-BDYrclMq.cjs.map → UpgradeToEnterpriseDialog-Dv_egyCM.cjs.map} +1 -1
  305. package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-ByJi6BSv.js → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-C3WTK6F-.js} +2256 -2238
  306. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-C3WTK6F-.js.map +1 -0
  307. package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-B-k6legU.cjs → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-RGlL9jUF.cjs} +77 -77
  308. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-RGlL9jUF.cjs.map +1 -0
  309. package/dist/VWidget-CTcOKw09.cjs +2 -0
  310. package/dist/VWidget-CTcOKw09.cjs.map +1 -0
  311. package/dist/{VWidget-D8c5Lci7.js → VWidget-D06LY-Yc.js} +7 -7
  312. package/dist/VWidget-D06LY-Yc.js.map +1 -0
  313. package/dist/{ValueWidget-CyN11MWT.cjs → ValueWidget-C2qn7lVq.cjs} +2 -2
  314. package/dist/{ValueWidget-CyN11MWT.cjs.map → ValueWidget-C2qn7lVq.cjs.map} +1 -1
  315. package/dist/{ValueWidget-SNDW9Het.js → ValueWidget-CGT0LV_n.js} +4 -4
  316. package/dist/{ValueWidget-SNDW9Het.js.map → ValueWidget-CGT0LV_n.js.map} +1 -1
  317. package/dist/{ValuelimitsbarWidget-Zw91SPeP.js → ValuelimitsbarWidget-CmpyPO-1.js} +4 -4
  318. package/dist/{ValuelimitsbarWidget-Zw91SPeP.js.map → ValuelimitsbarWidget-CmpyPO-1.js.map} +1 -1
  319. package/dist/{ValuelimitsbarWidget-B86GYsdL.cjs → ValuelimitsbarWidget-_lEKCmQl.cjs} +2 -2
  320. package/dist/{ValuelimitsbarWidget-B86GYsdL.cjs.map → ValuelimitsbarWidget-_lEKCmQl.cjs.map} +1 -1
  321. package/dist/{ValuelimitscolumnWidget-DPh3TEH4.cjs → ValuelimitscolumnWidget-0urjo-hR.cjs} +2 -2
  322. package/dist/{ValuelimitscolumnWidget-DPh3TEH4.cjs.map → ValuelimitscolumnWidget-0urjo-hR.cjs.map} +1 -1
  323. package/dist/{ValuelimitscolumnWidget-B9unbzmn.js → ValuelimitscolumnWidget-jzxrQd-f.js} +4 -4
  324. package/dist/{ValuelimitscolumnWidget-B9unbzmn.js.map → ValuelimitscolumnWidget-jzxrQd-f.js.map} +1 -1
  325. package/dist/{ValuerangebarWidget-DwNzPUzz.js → ValuerangebarWidget-C8ckuAeh.js} +4 -4
  326. package/dist/{ValuerangebarWidget-DwNzPUzz.js.map → ValuerangebarWidget-C8ckuAeh.js.map} +1 -1
  327. package/dist/{ValuerangebarWidget-Dm0754rv.cjs → ValuerangebarWidget-lXHRe4YZ.cjs} +2 -2
  328. package/dist/{ValuerangebarWidget-Dm0754rv.cjs.map → ValuerangebarWidget-lXHRe4YZ.cjs.map} +1 -1
  329. package/dist/{VerticalWidget-BAH0R-Tj.cjs → VerticalWidget-XBSrdA2c.cjs} +2 -2
  330. package/dist/{VerticalWidget-BAH0R-Tj.cjs.map → VerticalWidget-XBSrdA2c.cjs.map} +1 -1
  331. package/dist/{VerticalWidget-gv7hWDKU.js → VerticalWidget-qN82km_m.js} +2 -2
  332. package/dist/{VerticalWidget-gv7hWDKU.js.map → VerticalWidget-qN82km_m.js.map} +1 -1
  333. package/dist/{VerticalboxWidget-F9StIQ_8.cjs → VerticalboxWidget-1FHkgmf0.cjs} +2 -2
  334. package/dist/{VerticalboxWidget-F9StIQ_8.cjs.map → VerticalboxWidget-1FHkgmf0.cjs.map} +1 -1
  335. package/dist/{VerticalboxWidget-CZb5ebV7.js → VerticalboxWidget-CiJZDlHJ.js} +5 -5
  336. package/dist/{VerticalboxWidget-CZb5ebV7.js.map → VerticalboxWidget-CiJZDlHJ.js.map} +1 -1
  337. package/dist/{Widget-DghDRiv6.cjs → Widget-BwvnfXRa.cjs} +2 -2
  338. package/dist/{Widget-DghDRiv6.cjs.map → Widget-BwvnfXRa.cjs.map} +1 -1
  339. package/dist/{Widget-DNBZcUQg.js → Widget-DXvVFSH5.js} +2 -2
  340. package/dist/{Widget-DNBZcUQg.js.map → Widget-DXvVFSH5.js.map} +1 -1
  341. package/dist/{cmdUtilities-C5lf-N2L.js → cmdUtilities--4ZqS2At.js} +2 -2
  342. package/dist/{cmdUtilities-C5lf-N2L.js.map → cmdUtilities--4ZqS2At.js.map} +1 -1
  343. package/dist/cmdUtilities-N30xDV6q.cjs +2 -0
  344. package/dist/{cmdUtilities-DDCksp2R.cjs.map → cmdUtilities-N30xDV6q.cjs.map} +1 -1
  345. package/dist/components.cjs +1 -1
  346. package/dist/components.js +25 -25
  347. package/dist/composables.cjs +2 -0
  348. package/dist/composables.cjs.map +1 -0
  349. package/dist/composables.js +5 -0
  350. package/dist/composables.js.map +1 -0
  351. package/dist/{index-BUPRVmV-.js → index-3k1IXN1T.js} +136 -118
  352. package/dist/index-3k1IXN1T.js.map +1 -0
  353. package/dist/{index-BWTUBIkL.cjs → index-DlWUR7vt.cjs} +6 -6
  354. package/dist/index-DlWUR7vt.cjs.map +1 -0
  355. package/dist/plugins.cjs +1 -1
  356. package/dist/plugins.cjs.map +1 -1
  357. package/dist/plugins.js +6 -6
  358. package/dist/plugins.js.map +1 -1
  359. package/dist/{settings-BC-CN37t.js → settings-DRNFiuf0.js} +2 -2
  360. package/dist/{settings-BC-CN37t.js.map → settings-DRNFiuf0.js.map} +1 -1
  361. package/dist/{settings-DHUu0bEd.cjs → settings-s8NuYKD-.cjs} +2 -2
  362. package/dist/{settings-DHUu0bEd.cjs.map → settings-s8NuYKD-.cjs.map} +1 -1
  363. package/dist/tools/admin.cjs +1 -1
  364. package/dist/tools/admin.js +56 -56
  365. package/dist/tools/base.cjs +1 -1
  366. package/dist/tools/base.js +4 -4
  367. package/dist/tools/calendar.cjs +1 -1
  368. package/dist/tools/calendar.js +1 -1
  369. package/dist/tools/scriptrunner.cjs +8 -8
  370. package/dist/tools/scriptrunner.cjs.map +1 -1
  371. package/dist/tools/scriptrunner.js +233 -220
  372. package/dist/tools/scriptrunner.js.map +1 -1
  373. package/dist/useContainerHeight-BAw05dIa.js +11 -0
  374. package/dist/useContainerHeight-BAw05dIa.js.map +1 -0
  375. package/dist/useContainerHeight-BEd4f2Lr.cjs +2 -0
  376. package/dist/useContainerHeight-BEd4f2Lr.cjs.map +1 -0
  377. package/dist/util.cjs +1 -1
  378. package/dist/util.js +1 -1
  379. package/dist/vue-common.css +1 -1
  380. package/dist/widgets.cjs +1 -1
  381. package/dist/widgets.js +63 -63
  382. package/package.json +11 -7
  383. package/dist/CriticalCmdDialog-CZHVDFjK.js.map +0 -1
  384. package/dist/CriticalCmdDialog-EvK998xs.cjs.map +0 -1
  385. package/dist/DetailsDialog-DbRPJzDG.cjs +0 -2
  386. package/dist/DetailsDialog-DbRPJzDG.cjs.map +0 -1
  387. package/dist/DetailsDialog-Ji0jA6sd.js.map +0 -1
  388. package/dist/Layout-Dd5e3p-K.cjs +0 -2
  389. package/dist/Openc3Screen-B_8bygux.cjs.map +0 -1
  390. package/dist/Openc3Screen-zVSKWUkb.js.map +0 -1
  391. package/dist/PluginsTab-BvwrAskE.cjs.map +0 -1
  392. package/dist/PluginsTab-Di5nXctJ.js.map +0 -1
  393. package/dist/ScriptChooser-BzQcgW8g.cjs +0 -2
  394. package/dist/ScriptChooser-BzQcgW8g.cjs.map +0 -1
  395. package/dist/ScriptChooser-DL8ct71n.js.map +0 -1
  396. package/dist/TargetPacketItemChooser-DezS0jS3.cjs +0 -2
  397. package/dist/TargetPacketItemChooser-DezS0jS3.cjs.map +0 -1
  398. package/dist/TargetPacketItemChooser-Z0Tn5eXv.js.map +0 -1
  399. package/dist/TopBar-Bn4u3OQj.cjs +0 -2
  400. package/dist/TopBar-Bn4u3OQj.cjs.map +0 -1
  401. package/dist/TopBar-LuMoAqrA.js +0 -296
  402. package/dist/TopBar-LuMoAqrA.js.map +0 -1
  403. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-B-k6legU.cjs.map +0 -1
  404. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-ByJi6BSv.js.map +0 -1
  405. package/dist/VWidget-B22Re761.cjs +0 -2
  406. package/dist/VWidget-B22Re761.cjs.map +0 -1
  407. package/dist/VWidget-D8c5Lci7.js.map +0 -1
  408. package/dist/cmdUtilities-DDCksp2R.cjs +0 -2
  409. package/dist/index-BUPRVmV-.js.map +0 -1
  410. package/dist/index-BWTUBIkL.cjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScriptChooser-B83Pgq2H.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'],\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 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 :initial-target-name=\"targetName\"\n :initial-packet-name=\"commandName\"\n :disabled=\"sendDisabled\"\n :button-text=\"showCommandButton ? 'Send' : null\"\n :show-queue-select=\"showQueueSelect\"\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 />\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 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 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 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 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 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: String, // modelValue is the default prop when using v-model\n },\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","value","_createElementBlock","$props","_openBlock","_hoisted_1","_createVNode","_component_v_select","$options","_component_v_text_field","_createBlock","TargetPacketItemChooser","CommandParameterEditor","DetailsDialog","OpenC3Api","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","item","_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","newVal","oldVal","Api","response","filename","v","_component_v_row","_component_v_autocomplete"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
- import { b as D, d as O } from "./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-ByJi6BSv.js";
2
- import { T as R } from "./TargetPacketItemChooser-Z0Tn5eXv.js";
3
- import { C as S } from "./cmdUtilities-C5lf-N2L.js";
4
- import { resolveComponent as i, createElementBlock as v, openBlock as h, createBlock as y, createVNode as l, normalizeClass as U, withCtx as g, createElementVNode as f, createCommentVNode as M, createTextVNode as N, renderSlot as B, Fragment as b, renderList as w, withModifiers as A, toDisplayString as $ } from "vue";
1
+ import { y as D, f as I } from "./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-C3WTK6F-.js";
2
+ import { T as R } from "./TargetPacketItemChooser-oSQHf8Ht.js";
3
+ import { C as S } from "./cmdUtilities--4ZqS2At.js";
4
+ import { resolveComponent as i, createElementBlock as v, openBlock as h, createBlock as x, createVNode as l, normalizeClass as U, withCtx as g, createElementVNode as f, createCommentVNode as M, createTextVNode as N, renderSlot as B, Fragment as w, renderList as b, withModifiers as A, toDisplayString as $ } from "vue";
5
5
  import { _ as C } from "./CustomIcon-DTfsnDJn.js";
6
- import { D as F } from "./DetailsDialog-Ji0jA6sd.js";
7
- const j = {
6
+ import { D as j } from "./DetailsDialog-q9piPmHq.js";
7
+ const F = {
8
8
  name: "CommandParameterEditor",
9
9
  mixins: [S],
10
10
  props: {
@@ -81,7 +81,7 @@ function L(t, e, s, m, a, o) {
81
81
  "min-width": "60px",
82
82
  "data-test": "cmd-param-value"
83
83
  }, null, 8, ["model-value"])
84
- ])) : (h(), y(u, {
84
+ ])) : (h(), x(u, {
85
85
  key: 0,
86
86
  "model-value": o.textFieldValue,
87
87
  "hide-details": "",
@@ -92,12 +92,12 @@ function L(t, e, s, m, a, o) {
92
92
  }, null, 8, ["model-value", "onUpdate:modelValue"]))
93
93
  ]);
94
94
  }
95
- const H = /* @__PURE__ */ C(j, [["render", L], ["__scopeId", "data-v-b38d5e7f"]]), z = {
95
+ const H = /* @__PURE__ */ C(F, [["render", L], ["__scopeId", "data-v-b38d5e7f"]]), z = {
96
96
  name: "CommandEditor",
97
97
  components: {
98
98
  TargetPacketItemChooser: R,
99
99
  CommandParameterEditor: H,
100
- DetailsDialog: F
100
+ DetailsDialog: j
101
101
  },
102
102
  mixins: [S],
103
103
  props: {
@@ -201,11 +201,11 @@ const H = /* @__PURE__ */ C(j, [["render", L], ["__scopeId", "data-v-b38d5e7f"]]
201
201
  ).then(
202
202
  (t) => {
203
203
  t && (t.items.forEach((e) => {
204
- if (!this.reservedItemNames.includes(e.name) && (!this.ignoredParams.includes(e.name) || this.showIgnoredParams)) {
204
+ if (!this.reservedItemNames.includes(e.name) && !e.hidden && (!this.ignoredParams.includes(e.name) || this.showIgnoredParams)) {
205
205
  let s = e.default;
206
- !e.states && e.data_type === "STRING" && typeof e.default == "string" && (s = `'${s}'`), e.required && (s = null), e.format_string && e.default && (s = sprintf(e.format_string, e.default));
206
+ !e.states && e.data_type === "STRING" && typeof e.default == "string" && (s = `'${s}'`), e.required && (s = null), e.format_string && e.default && (s = sprintf(e.format_string, e.default)), Object.prototype.toString.call(s).slice(8, -1) === "Object" && (s = this.convertToString(s));
207
207
  let m = "N/A";
208
- e.minimum != null && e.maximum != null && (e.data_type === "FLOAT" && (e.minimum < -1e6 && Number.isSafeInteger(e.minimum) && (e.minimum = e.minimum.toExponential(3)), e.maximum > 1e6 && Number.isSafeInteger(e.maximum) && (e.maximum = e.maximum.toExponential(3))), m = `${e.minimum}..${e.maximum}`), this.computedRows.push({
208
+ 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))), m = `${e.minimum}..${e.maximum}`), this.computedRows.push({
209
209
  parameter_name: e.name,
210
210
  val: s,
211
211
  states: e.states,
@@ -267,8 +267,8 @@ const H = /* @__PURE__ */ C(j, [["render", L], ["__scopeId", "data-v-b38d5e7f"]]
267
267
  for (let n of u) {
268
268
  let p = n.indexOf(" ");
269
269
  if (p > 0) {
270
- let _ = n.substring(0, p).trim(), x = n.substring(p + 1).trim();
271
- a[_] = x;
270
+ let _ = n.substring(0, p).trim(), y = n.substring(p + 1).trim();
271
+ a[_] = y;
272
272
  }
273
273
  }
274
274
  return { target: s, command: m, params: a };
@@ -297,8 +297,8 @@ const H = /* @__PURE__ */ C(j, [["render", L], ["__scopeId", "data-v-b38d5e7f"]]
297
297
  }
298
298
  }, K = { style: { padding: "10px" } };
299
299
  function G(t, e, s, m, a, o) {
300
- const u = i("target-packet-item-chooser"), c = i("v-spacer"), d = i("v-text-field"), n = i("v-card-title"), p = i("command-parameter-editor"), _ = i("v-data-table"), x = i("v-card"), E = i("v-list-item-title"), k = i("v-list-item"), P = i("v-list"), T = i("v-menu"), I = i("details-dialog");
301
- return h(), y(x, null, {
300
+ const u = i("target-packet-item-chooser"), c = i("v-spacer"), d = i("v-text-field"), n = i("v-card-title"), p = i("command-parameter-editor"), _ = i("v-data-table"), y = i("v-card"), E = i("v-list-item-title"), k = i("v-list-item"), P = i("v-list"), T = i("v-menu"), O = i("details-dialog");
301
+ return h(), x(y, null, {
302
302
  default: g(() => [
303
303
  f("div", K, [
304
304
  l(u, {
@@ -312,7 +312,7 @@ function G(t, e, s, m, a, o) {
312
312
  onAddItem: e[1] || (e[1] = (r) => o.buildCmd(r))
313
313
  }, null, 8, ["initial-target-name", "initial-packet-name", "disabled", "button-text", "show-queue-select"])
314
314
  ]),
315
- a.computedRows.length !== 0 ? (h(), y(x, { key: 0 }, {
315
+ a.computedRows.length !== 0 ? (h(), x(y, { key: 0 }, {
316
316
  default: g(() => [
317
317
  l(n, { class: "d-flex align-center justify-content-space-between" }, {
318
318
  default: g(() => [
@@ -369,7 +369,7 @@ function G(t, e, s, m, a, o) {
369
369
  default: g(() => [
370
370
  l(P, null, {
371
371
  default: g(() => [
372
- (h(!0), v(b, null, w(a.contextMenuOptions, (r, V) => (h(), y(k, {
372
+ (h(!0), v(w, null, b(a.contextMenuOptions, (r, V) => (h(), x(k, {
373
373
  key: V,
374
374
  onClick: A(r.action, ["stop"])
375
375
  }, {
@@ -389,7 +389,7 @@ function G(t, e, s, m, a, o) {
389
389
  ]),
390
390
  _: 1
391
391
  }, 8, ["modelValue", "target"]),
392
- l(I, {
392
+ l(O, {
393
393
  modelValue: a.viewDetails,
394
394
  "onUpdate:modelValue": e[4] || (e[4] = (r) => a.viewDetails = r),
395
395
  "target-name": a.targetName,
@@ -459,7 +459,7 @@ function X(t, e, s, m, a, o) {
459
459
  }, null, 8, ["onClick"])
460
460
  ])
461
461
  ]),
462
- (h(!0), v(b, null, w(o.selected, (n, p) => (h(), v("tr", {
462
+ (h(!0), v(w, null, b(o.selected, (n, p) => (h(), v("tr", {
463
463
  key: `tr-${p}`
464
464
  }, [
465
465
  f("td", null, [
@@ -516,8 +516,16 @@ const le = /* @__PURE__ */ C(Q, [["render", X]]), Y = {
516
516
  items: []
517
517
  };
518
518
  },
519
+ watch: {
520
+ selected(t, e) {
521
+ t !== e && (t && t.slice(-1) === "*" ? this.$emit("file", t.substring(0, t.length - 1)) : this.$emit("file", t));
522
+ },
523
+ search(t) {
524
+ t && t !== this.selected && this.querySelections(t);
525
+ }
526
+ },
519
527
  created() {
520
- this.loading = !0, O.get("/script-api/scripts").then((t) => {
528
+ this.loading = !0, I.get("/script-api/scripts").then((t) => {
521
529
  this.scripts = t.data.filter((e) => e.includes(".rb") || e.includes(".py")), this.items = this.scripts;
522
530
  }).catch((t) => {
523
531
  this.$emit("error", {
@@ -527,14 +535,6 @@ const le = /* @__PURE__ */ C(Q, [["render", X]]), Y = {
527
535
  });
528
536
  }), this.selected = this.modelValue ? this.modelValue : null, this.loading = !1;
529
537
  },
530
- watch: {
531
- selected(t, e) {
532
- t !== e && (t && t.slice(-1) === "*" ? this.$emit("file", t.substring(0, t.length - 1)) : this.$emit("file", t));
533
- },
534
- search(t) {
535
- t && t !== this.selected && this.querySelections(t);
536
- }
537
- },
538
538
  methods: {
539
539
  querySelections: function(t) {
540
540
  this.loading = !0, setTimeout(() => {
@@ -551,6 +551,8 @@ function J(t, e, s, m, a, o) {
551
551
  l(u, {
552
552
  modelValue: a.selected,
553
553
  "onUpdate:modelValue": e[0] || (e[0] = (d) => a.selected = d),
554
+ search: a.search,
555
+ "onUpdate:search": e[1] || (e[1] = (d) => a.search = d),
554
556
  density: "compact",
555
557
  variant: "outlined",
556
558
  "hide-no-data": "",
@@ -559,10 +561,8 @@ function J(t, e, s, m, a, o) {
559
561
  label: "Select script",
560
562
  loading: a.loading,
561
563
  items: a.items,
562
- search: a.search,
563
- "onUpdate:search": e[1] || (e[1] = (d) => a.search = d),
564
564
  "data-test": "select-script"
565
- }, null, 8, ["modelValue", "loading", "items", "search"])
565
+ }, null, 8, ["modelValue", "search", "loading", "items"])
566
566
  ]),
567
567
  _: 1
568
568
  })
@@ -575,4 +575,4 @@ export {
575
575
  oe as S,
576
576
  H as a
577
577
  };
578
- //# sourceMappingURL=ScriptChooser-DL8ct71n.js.map
578
+ //# sourceMappingURL=ScriptChooser-CbVbI0x-.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScriptChooser-CbVbI0x-.js","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'],\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 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 :initial-target-name=\"targetName\"\n :initial-packet-name=\"commandName\"\n :disabled=\"sendDisabled\"\n :button-text=\"showCommandButton ? 'Send' : null\"\n :show-queue-select=\"showQueueSelect\"\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 />\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 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 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 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 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 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: String, // modelValue is the default prop when using v-model\n },\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","value","_createElementBlock","$props","_openBlock","_hoisted_1","_createVNode","_component_v_select","$options","_component_v_text_field","_createBlock","TargetPacketItemChooser","CommandParameterEditor","DetailsDialog","OpenC3Api","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","item","_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","newVal","oldVal","Api","response","filename","v","_component_v_row","_component_v_autocomplete"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./Layout-Dd5e3p-K.cjs"),l=require("./VerticalWidget-BAH0R-Tj.cjs"),e=require("vue"),c=require("./CustomIcon-eie3rPKh.cjs"),u={components:{VerticalWidget:l.default},mixins:[i.Layout],created:function(){if(this.setHeight(this.parameters[0],"px",200),this.parameters[1]){let r=this.parameters[1];this.widgets.forEach(s=>{s.settings.find(n=>n[0]==="MARGIN"||n[0].startsWith("RAW")&&n[1].toUpperCase().includes("MARGIN"))===void 0&&s.settings.push(["MARGIN",r])})}}};function m(r,s,o,n,f,d){return e.openBlock(),e.createElementBlock("div",{ref:"container",style:e.normalizeStyle(r.computedStyle),class:"overflow-y-auto"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.widgets,(t,a)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.type),e.mergeProps({ref_for:!0},r.listeners,{key:a,target:t.target,parameters:t.parameters,settings:t.settings,"screen-values":r.screenValues,"screen-time-zone":r.screenTimeZone,widgets:t.widgets,name:t.name,line:t.line,"line-number":t.lineNumber}),null,16,["target","parameters","settings","screen-values","screen-time-zone","widgets","name","line","line-number"]))),128))],4)}const p=c._export_sfc(u,[["render",m]]);exports.default=p;
2
- //# sourceMappingURL=ScrollwindowWidget-B4dv7icF.cjs.map
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./Layout-U0MXDxLO.cjs"),l=require("./VerticalWidget-XBSrdA2c.cjs"),e=require("vue"),c=require("./CustomIcon-eie3rPKh.cjs"),u={components:{VerticalWidget:l.default},mixins:[i.Layout],created:function(){if(this.setHeight(this.parameters[0],"px",200),this.parameters[1]){let r=this.parameters[1];this.widgets.forEach(s=>{s.settings.find(n=>n[0]==="MARGIN"||n[0].startsWith("RAW")&&n[1].toUpperCase().includes("MARGIN"))===void 0&&s.settings.push(["MARGIN",r])})}}};function m(r,s,o,n,f,d){return e.openBlock(),e.createElementBlock("div",{ref:"container",style:e.normalizeStyle(r.computedStyle),class:"overflow-y-auto"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.widgets,(t,a)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.type),e.mergeProps({ref_for:!0},r.listeners,{key:a,target:t.target,parameters:t.parameters,settings:t.settings,"screen-values":r.screenValues,"screen-time-zone":r.screenTimeZone,widgets:t.widgets,name:t.name,line:t.line,"line-number":t.lineNumber}),null,16,["target","parameters","settings","screen-values","screen-time-zone","widgets","name","line","line-number"]))),128))],4)}const p=c._export_sfc(u,[["render",m]]);exports.default=p;
2
+ //# sourceMappingURL=ScrollwindowWidget-0UcfntpY.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollwindowWidget-B4dv7icF.cjs","sources":["../src/widgets/ScrollwindowWidget.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 ref=\"container\" :style=\"computedStyle\" class=\"overflow-y-auto\">\n <component\n v-bind=\"listeners\"\n :is=\"widget.type\"\n v-for=\"(widget, index) in widgets\"\n :key=\"index\"\n :target=\"widget.target\"\n :parameters=\"widget.parameters\"\n :settings=\"widget.settings\"\n :screen-values=\"screenValues\"\n :screen-time-zone=\"screenTimeZone\"\n :widgets=\"widget.widgets\"\n :name=\"widget.name\"\n :line=\"widget.line\"\n :line-number=\"widget.lineNumber\"\n />\n </div>\n</template>\n\n<script>\nimport Layout from './Layout'\nimport VerticalWidget from './VerticalWidget.vue'\n\nexport default {\n components: {\n VerticalWidget,\n },\n mixins: [Layout],\n created: function () {\n this.setHeight(this.parameters[0], 'px', 200)\n if (this.parameters[1]) {\n let margin = this.parameters[1]\n this.widgets.forEach((widget) => {\n // Don't push MARGIN on a widget that's already defined it\n const found = widget.settings.find(\n (setting) =>\n setting[0] === 'MARGIN' ||\n (setting[0].startsWith('RAW') &&\n setting[1].toUpperCase().includes('MARGIN')),\n )\n if (found === undefined) {\n widget.settings.push(['MARGIN', margin])\n }\n })\n }\n },\n}\n</script>\n"],"names":["_sfc_main","VerticalWidget","Layout","margin","widget","setting","_createElementBlock","_ctx","_openBlock","_Fragment","_renderList","index","_createBlock","_resolveDynamicComponent","_mergeProps"],"mappings":"4NA8CKA,EAAU,CACb,WAAY,CACV,eAAAC,EAAAA,SAEF,OAAQ,CAACC,EAAAA,MAAM,EACf,QAAS,UAAY,CAEnB,GADA,KAAK,UAAU,KAAK,WAAW,CAAC,EAAG,KAAM,GAAG,EACxC,KAAK,WAAW,CAAC,EAAG,CACtB,IAAIC,EAAS,KAAK,WAAW,CAAC,EAC9B,KAAK,QAAQ,QAASC,GAAW,CAEjBA,EAAO,SAAS,KAC3BC,GACCA,EAAQ,CAAC,IAAM,UACdA,EAAQ,CAAC,EAAE,WAAW,KAAK,GAC1BA,EAAQ,CAAC,EAAE,YAAW,EAAG,SAAS,QAAQ,CAChD,IACc,QACZD,EAAO,SAAS,KAAK,CAAC,SAAUD,CAAM,CAAC,CAE3C,CAAC,CACH,CACF,CACF,+CA9CEG,EAAAA,mBAgBM,MAAA,CAhBD,IAAI,YAAa,uBAAOC,EAAA,aAAa,EAAE,MAAM,qBAChDC,EAAAA,UAAA,EAAA,EAAAF,EAAAA,mBAcEG,WAAA,KAAAC,EAAAA,WAX0BH,EAAA,QAAO,CAAzBH,EAAQO,KAHlBH,EAAAA,UAAA,EAAAI,EAAAA,YAcEC,EAAAA,wBAZKT,EAAO,IAAI,EAFlBU,EAAAA,WAcE,aAbQP,EAAA,UAAS,CAGhB,IAAKI,EACL,OAAQP,EAAO,OACf,WAAYA,EAAO,WACnB,SAAUA,EAAO,SACjB,gBAAeG,EAAA,aACf,mBAAkBA,EAAA,eAClB,QAASH,EAAO,QAChB,KAAMA,EAAO,KACb,KAAMA,EAAO,KACb,cAAaA,EAAO"}
1
+ {"version":3,"file":"ScrollwindowWidget-0UcfntpY.cjs","sources":["../src/widgets/ScrollwindowWidget.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 ref=\"container\" :style=\"computedStyle\" class=\"overflow-y-auto\">\n <component\n v-bind=\"listeners\"\n :is=\"widget.type\"\n v-for=\"(widget, index) in widgets\"\n :key=\"index\"\n :target=\"widget.target\"\n :parameters=\"widget.parameters\"\n :settings=\"widget.settings\"\n :screen-values=\"screenValues\"\n :screen-time-zone=\"screenTimeZone\"\n :widgets=\"widget.widgets\"\n :name=\"widget.name\"\n :line=\"widget.line\"\n :line-number=\"widget.lineNumber\"\n />\n </div>\n</template>\n\n<script>\nimport Layout from './Layout'\nimport VerticalWidget from './VerticalWidget.vue'\n\nexport default {\n components: {\n VerticalWidget,\n },\n mixins: [Layout],\n created: function () {\n this.setHeight(this.parameters[0], 'px', 200)\n if (this.parameters[1]) {\n let margin = this.parameters[1]\n this.widgets.forEach((widget) => {\n // Don't push MARGIN on a widget that's already defined it\n const found = widget.settings.find(\n (setting) =>\n setting[0] === 'MARGIN' ||\n (setting[0].startsWith('RAW') &&\n setting[1].toUpperCase().includes('MARGIN')),\n )\n if (found === undefined) {\n widget.settings.push(['MARGIN', margin])\n }\n })\n }\n },\n}\n</script>\n"],"names":["_sfc_main","VerticalWidget","Layout","margin","widget","setting","_createElementBlock","_ctx","_openBlock","_Fragment","_renderList","index","_createBlock","_resolveDynamicComponent","_mergeProps"],"mappings":"4NA8CKA,EAAU,CACb,WAAY,CACV,eAAAC,EAAAA,SAEF,OAAQ,CAACC,EAAAA,MAAM,EACf,QAAS,UAAY,CAEnB,GADA,KAAK,UAAU,KAAK,WAAW,CAAC,EAAG,KAAM,GAAG,EACxC,KAAK,WAAW,CAAC,EAAG,CACtB,IAAIC,EAAS,KAAK,WAAW,CAAC,EAC9B,KAAK,QAAQ,QAASC,GAAW,CAEjBA,EAAO,SAAS,KAC3BC,GACCA,EAAQ,CAAC,IAAM,UACdA,EAAQ,CAAC,EAAE,WAAW,KAAK,GAC1BA,EAAQ,CAAC,EAAE,YAAW,EAAG,SAAS,QAAQ,CAChD,IACc,QACZD,EAAO,SAAS,KAAK,CAAC,SAAUD,CAAM,CAAC,CAE3C,CAAC,CACH,CACF,CACF,+CA9CEG,EAAAA,mBAgBM,MAAA,CAhBD,IAAI,YAAa,uBAAOC,EAAA,aAAa,EAAE,MAAM,qBAChDC,EAAAA,UAAA,EAAA,EAAAF,EAAAA,mBAcEG,WAAA,KAAAC,EAAAA,WAX0BH,EAAA,QAAO,CAAzBH,EAAQO,KAHlBH,EAAAA,UAAA,EAAAI,EAAAA,YAcEC,EAAAA,wBAZKT,EAAO,IAAI,EAFlBU,EAAAA,WAcE,aAbQP,EAAA,UAAS,CAGhB,IAAKI,EACL,OAAQP,EAAO,OACf,WAAYA,EAAO,WACnB,SAAUA,EAAO,SACjB,gBAAeG,EAAA,aACf,mBAAkBA,EAAA,eAClB,QAASH,EAAO,QAChB,KAAMA,EAAO,KACb,KAAMA,EAAO,KACb,cAAaA,EAAO"}
@@ -1,5 +1,5 @@
1
- import { L as m } from "./Layout-DuiUWxWc.js";
2
- import l from "./VerticalWidget-gv7hWDKU.js";
1
+ import { L as m } from "./Layout-DNR3xnku.js";
2
+ import l from "./VerticalWidget-qN82km_m.js";
3
3
  import { createElementBlock as o, openBlock as n, normalizeStyle as c, Fragment as p, renderList as u, createBlock as f, resolveDynamicComponent as d, mergeProps as h } from "vue";
4
4
  import { _ as g } from "./CustomIcon-DTfsnDJn.js";
5
5
  const y = {
@@ -42,4 +42,4 @@ const $ = /* @__PURE__ */ g(y, [["render", v]]);
42
42
  export {
43
43
  $ as default
44
44
  };
45
- //# sourceMappingURL=ScrollwindowWidget-DvsnpEcJ.js.map
45
+ //# sourceMappingURL=ScrollwindowWidget-CXJ9QGN1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollwindowWidget-DvsnpEcJ.js","sources":["../src/widgets/ScrollwindowWidget.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 ref=\"container\" :style=\"computedStyle\" class=\"overflow-y-auto\">\n <component\n v-bind=\"listeners\"\n :is=\"widget.type\"\n v-for=\"(widget, index) in widgets\"\n :key=\"index\"\n :target=\"widget.target\"\n :parameters=\"widget.parameters\"\n :settings=\"widget.settings\"\n :screen-values=\"screenValues\"\n :screen-time-zone=\"screenTimeZone\"\n :widgets=\"widget.widgets\"\n :name=\"widget.name\"\n :line=\"widget.line\"\n :line-number=\"widget.lineNumber\"\n />\n </div>\n</template>\n\n<script>\nimport Layout from './Layout'\nimport VerticalWidget from './VerticalWidget.vue'\n\nexport default {\n components: {\n VerticalWidget,\n },\n mixins: [Layout],\n created: function () {\n this.setHeight(this.parameters[0], 'px', 200)\n if (this.parameters[1]) {\n let margin = this.parameters[1]\n this.widgets.forEach((widget) => {\n // Don't push MARGIN on a widget that's already defined it\n const found = widget.settings.find(\n (setting) =>\n setting[0] === 'MARGIN' ||\n (setting[0].startsWith('RAW') &&\n setting[1].toUpperCase().includes('MARGIN')),\n )\n if (found === undefined) {\n widget.settings.push(['MARGIN', margin])\n }\n })\n }\n },\n}\n</script>\n"],"names":["_sfc_main","VerticalWidget","Layout","margin","widget","setting","_createElementBlock","_ctx","_openBlock","_Fragment","_renderList","index","_createBlock","_resolveDynamicComponent","_mergeProps"],"mappings":";;;;AA8CA,MAAKA,IAAU;AAAA,EACb,YAAY;AAAA,IACV,gBAAAC;AAAA;EAEF,QAAQ,CAACC,CAAM;AAAA,EACf,SAAS,WAAY;AAEnB,QADA,KAAK,UAAU,KAAK,WAAW,CAAC,GAAG,MAAM,GAAG,GACxC,KAAK,WAAW,CAAC,GAAG;AACtB,UAAIC,IAAS,KAAK,WAAW,CAAC;AAC9B,WAAK,QAAQ,QAAQ,CAACC,MAAW;AAQ/B,QANcA,EAAO,SAAS;AAAA,UAC5B,CAACC,MACCA,EAAQ,CAAC,MAAM,YACdA,EAAQ,CAAC,EAAE,WAAW,KAAK,KAC1BA,EAAQ,CAAC,EAAE,YAAW,EAAG,SAAS,QAAQ;AAAA,QAChD,MACc,UACZD,EAAO,SAAS,KAAK,CAAC,UAAUD,CAAM,CAAC;AAAA,MAE3C,CAAC;AAAA,IACH;AAAA,EACF;AACF;;cA9CEG,EAgBM,OAAA;AAAA,IAhBD,KAAI;AAAA,IAAa,SAAOC,EAAA,aAAa;AAAA,IAAE,OAAM;AAAA;KAChDC,EAAA,EAAA,GAAAF,EAcEG,GAAA,MAAAC,EAX0BH,EAAA,SAAO,CAAzBH,GAAQO,OAHlBH,EAAA,GAAAI,EAcEC,EAZKT,EAAO,IAAI,GAFlBU,EAcE,iBAbQP,EAAA,WAAS;AAAA,MAGhB,KAAKI;AAAA,MACL,QAAQP,EAAO;AAAA,MACf,YAAYA,EAAO;AAAA,MACnB,UAAUA,EAAO;AAAA,MACjB,iBAAeG,EAAA;AAAA,MACf,oBAAkBA,EAAA;AAAA,MAClB,SAASH,EAAO;AAAA,MAChB,MAAMA,EAAO;AAAA,MACb,MAAMA,EAAO;AAAA,MACb,eAAaA,EAAO;AAAA;;;;"}
1
+ {"version":3,"file":"ScrollwindowWidget-CXJ9QGN1.js","sources":["../src/widgets/ScrollwindowWidget.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 ref=\"container\" :style=\"computedStyle\" class=\"overflow-y-auto\">\n <component\n v-bind=\"listeners\"\n :is=\"widget.type\"\n v-for=\"(widget, index) in widgets\"\n :key=\"index\"\n :target=\"widget.target\"\n :parameters=\"widget.parameters\"\n :settings=\"widget.settings\"\n :screen-values=\"screenValues\"\n :screen-time-zone=\"screenTimeZone\"\n :widgets=\"widget.widgets\"\n :name=\"widget.name\"\n :line=\"widget.line\"\n :line-number=\"widget.lineNumber\"\n />\n </div>\n</template>\n\n<script>\nimport Layout from './Layout'\nimport VerticalWidget from './VerticalWidget.vue'\n\nexport default {\n components: {\n VerticalWidget,\n },\n mixins: [Layout],\n created: function () {\n this.setHeight(this.parameters[0], 'px', 200)\n if (this.parameters[1]) {\n let margin = this.parameters[1]\n this.widgets.forEach((widget) => {\n // Don't push MARGIN on a widget that's already defined it\n const found = widget.settings.find(\n (setting) =>\n setting[0] === 'MARGIN' ||\n (setting[0].startsWith('RAW') &&\n setting[1].toUpperCase().includes('MARGIN')),\n )\n if (found === undefined) {\n widget.settings.push(['MARGIN', margin])\n }\n })\n }\n },\n}\n</script>\n"],"names":["_sfc_main","VerticalWidget","Layout","margin","widget","setting","_createElementBlock","_ctx","_openBlock","_Fragment","_renderList","index","_createBlock","_resolveDynamicComponent","_mergeProps"],"mappings":";;;;AA8CA,MAAKA,IAAU;AAAA,EACb,YAAY;AAAA,IACV,gBAAAC;AAAA;EAEF,QAAQ,CAACC,CAAM;AAAA,EACf,SAAS,WAAY;AAEnB,QADA,KAAK,UAAU,KAAK,WAAW,CAAC,GAAG,MAAM,GAAG,GACxC,KAAK,WAAW,CAAC,GAAG;AACtB,UAAIC,IAAS,KAAK,WAAW,CAAC;AAC9B,WAAK,QAAQ,QAAQ,CAACC,MAAW;AAQ/B,QANcA,EAAO,SAAS;AAAA,UAC5B,CAACC,MACCA,EAAQ,CAAC,MAAM,YACdA,EAAQ,CAAC,EAAE,WAAW,KAAK,KAC1BA,EAAQ,CAAC,EAAE,YAAW,EAAG,SAAS,QAAQ;AAAA,QAChD,MACc,UACZD,EAAO,SAAS,KAAK,CAAC,UAAUD,CAAM,CAAC;AAAA,MAE3C,CAAC;AAAA,IACH;AAAA,EACF;AACF;;cA9CEG,EAgBM,OAAA;AAAA,IAhBD,KAAI;AAAA,IAAa,SAAOC,EAAA,aAAa;AAAA,IAAE,OAAM;AAAA;KAChDC,EAAA,EAAA,GAAAF,EAcEG,GAAA,MAAAC,EAX0BH,EAAA,SAAO,CAAzBH,GAAQO,OAHlBH,EAAA,GAAAI,EAcEC,EAZKT,EAAO,IAAI,GAFlBU,EAcE,iBAbQP,EAAA,WAAS;AAAA,MAGhB,KAAKI;AAAA,MACL,QAAQP,EAAO;AAAA,MACf,YAAYA,EAAO;AAAA,MACnB,UAAUA,EAAO;AAAA,MACjB,iBAAeG,EAAA;AAAA,MACf,oBAAkBA,EAAA;AAAA,MAClB,SAASH,EAAO;AAAA,MAChB,MAAMA,EAAO;AAAA,MACb,MAAMA,EAAO;AAAA,MACb,eAAaA,EAAO;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-B-k6legU.cjs"),e=require("vue"),C=require("./CustomIcon-eie3rPKh.cjs"),N={data(){return{file:null,loadingSecret:!1,secrets:[],secretName:"",secretValue:"",alert:"",alertType:"success",showAlert:!1}},mounted(){this.update()},methods:{update(){r.di.get("/openc3-api/secrets").then(n=>{this.secrets=n.data})},upload:function(){this.loadingSecret=!0;let n=null;if(this.file){const t=new FormData;t.append("file",this.file,this.file.name),n=r.di.post(`/openc3-api/secrets/${this.secretName}`,{data:t,headers:{"Content-Type":"multipart/form-data"}})}else n=r.di.post(`/openc3-api/secrets/${this.secretName}`,{data:{value:this.secretValue}});n.then(t=>{this.loadingSecret=!1,this.file=null,this.secretName="",this.secretValue="",this.update()}).catch(t=>{this.loadingSecret=!1})},deleteSecret:function(n){this.$dialog.confirm(`Are you sure you want to remove: ${n}`,{okText:"Delete",cancelText:"Cancel"}).then(function(t){return r.di.delete(`/openc3-api/secrets/${n}`)}).then(t=>{this.alert=`Removed secret ${n}`,this.alertType="success",this.showAlert=!0,setTimeout(()=>{this.showAlert=!1},5e3),this.update()})}}};function x(n,t,w,y,l,a){const p=e.resolveComponent("v-file-input"),s=e.resolveComponent("v-col"),c=e.resolveComponent("v-row"),d=e.resolveComponent("v-text-field"),m=e.resolveComponent("v-icon"),u=e.resolveComponent("v-btn"),_=e.resolveComponent("v-alert"),f=e.resolveComponent("v-list-item-title"),v=e.resolveComponent("v-list-item"),V=e.resolveComponent("v-divider"),h=e.resolveComponent("v-list");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(c,{"no-gutters":""},{default:e.withCtx(()=>[e.createVNode(s,null,{default:e.withCtx(()=>[e.createVNode(p,{ref:"fileInput",modelValue:l.file,"onUpdate:modelValue":t[0]||(t[0]=o=>l.file=o),"show-size":"",accept:"*",class:"mx-2",label:"Click to select a file to create a secret from or enter a secret value"},null,8,["modelValue"])]),_:1})]),_:1}),e.createVNode(c,{"no-gutters":"",align:"center",style:{"padding-left":"10px"}},{default:e.withCtx(()=>[e.createVNode(s,{cols:"3"},{default:e.withCtx(()=>[e.createVNode(d,{modelValue:l.secretName,"onUpdate:modelValue":t[1]||(t[1]=o=>l.secretName=o),label:"Secret Name",class:"px-2"},null,8,["modelValue"])]),_:1}),e.createVNode(s,{cols:"3",class:"px-2"},{default:e.withCtx(()=>[e.createVNode(d,{modelValue:l.secretValue,"onUpdate:modelValue":t[2]||(t[2]=o=>l.secretValue=o),disabled:l.file,label:"Secret Value"},null,8,["modelValue","disabled"])]),_:1}),e.createVNode(s,{cols:"3",class:"px-2"},{default:e.withCtx(()=>[e.createVNode(u,{class:"mx-2",color:"primary","data-test":"secretUpload",disabled:l.secretName===""||l.file==null&&l.secretValue==="",loading:l.loadingSecret,onClick:t[3]||(t[3]=o=>a.upload())},{loader:e.withCtx(()=>[...t[6]||(t[6]=[e.createElementVNode("span",null,"Loading...",-1)])]),default:e.withCtx(()=>[e.createVNode(m,{start:"",theme:"dark"},{default:e.withCtx(()=>[...t[5]||(t[5]=[e.createTextVNode("mdi-cloud-upload",-1)])]),_:1}),t[7]||(t[7]=e.createElementVNode("span",null," Set ",-1))]),_:1},8,["disabled","loading"])]),_:1})]),_:1}),e.createVNode(_,{modelValue:l.showAlert,"onUpdate:modelValue":t[4]||(t[4]=o=>l.showAlert=o),closable:"",type:l.alertType},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l.alert),1)]),_:1},8,["modelValue","type"]),e.createVNode(h,{"data-test":"secretList"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.secrets,(o,i)=>(e.openBlock(),e.createElementBlock("div",{key:i},[e.createVNode(v,null,{append:e.withCtx(()=>[e.createVNode(u,{icon:"mdi-delete",variant:"text","aria-label":"Delete Secret",onClick:k=>a.deleteSecret(o)},null,8,["onClick"])]),default:e.withCtx(()=>[e.createVNode(f,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o),1)]),_:2},1024)]),_:2},1024),i<l.secrets.length-1?(e.openBlock(),e.createBlock(V,{key:i})):e.createCommentVNode("",!0)]))),128))]),_:1})])}const g=C._export_sfc(N,[["render",x]]);exports.default=g;
2
- //# sourceMappingURL=SecretsTab-Dudp9OiZ.cjs.map
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-RGlL9jUF.cjs"),e=require("vue"),C=require("./CustomIcon-eie3rPKh.cjs"),N={data(){return{file:null,loadingSecret:!1,secrets:[],secretName:"",secretValue:"",alert:"",alertType:"success",showAlert:!1}},mounted(){this.update()},methods:{update(){r.fi.get("/openc3-api/secrets").then(n=>{this.secrets=n.data})},upload:function(){this.loadingSecret=!0;let n=null;if(this.file){const t=new FormData;t.append("file",this.file,this.file.name),n=r.fi.post(`/openc3-api/secrets/${this.secretName}`,{data:t,headers:{"Content-Type":"multipart/form-data"}})}else n=r.fi.post(`/openc3-api/secrets/${this.secretName}`,{data:{value:this.secretValue}});n.then(t=>{this.loadingSecret=!1,this.file=null,this.secretName="",this.secretValue="",this.update()}).catch(t=>{this.loadingSecret=!1})},deleteSecret:function(n){this.$dialog.confirm(`Are you sure you want to remove: ${n}`,{okText:"Delete",cancelText:"Cancel"}).then(function(t){return r.fi.delete(`/openc3-api/secrets/${n}`)}).then(t=>{this.alert=`Removed secret ${n}`,this.alertType="success",this.showAlert=!0,setTimeout(()=>{this.showAlert=!1},5e3),this.update()})}}};function x(n,t,w,y,l,a){const p=e.resolveComponent("v-file-input"),s=e.resolveComponent("v-col"),c=e.resolveComponent("v-row"),d=e.resolveComponent("v-text-field"),m=e.resolveComponent("v-icon"),u=e.resolveComponent("v-btn"),f=e.resolveComponent("v-alert"),_=e.resolveComponent("v-list-item-title"),v=e.resolveComponent("v-list-item"),V=e.resolveComponent("v-divider"),h=e.resolveComponent("v-list");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(c,{"no-gutters":""},{default:e.withCtx(()=>[e.createVNode(s,null,{default:e.withCtx(()=>[e.createVNode(p,{ref:"fileInput",modelValue:l.file,"onUpdate:modelValue":t[0]||(t[0]=o=>l.file=o),"show-size":"",accept:"*",class:"mx-2",label:"Click to select a file to create a secret from or enter a secret value"},null,8,["modelValue"])]),_:1})]),_:1}),e.createVNode(c,{"no-gutters":"",align:"center",style:{"padding-left":"10px"}},{default:e.withCtx(()=>[e.createVNode(s,{cols:"3"},{default:e.withCtx(()=>[e.createVNode(d,{modelValue:l.secretName,"onUpdate:modelValue":t[1]||(t[1]=o=>l.secretName=o),label:"Secret Name",class:"px-2"},null,8,["modelValue"])]),_:1}),e.createVNode(s,{cols:"3",class:"px-2"},{default:e.withCtx(()=>[e.createVNode(d,{modelValue:l.secretValue,"onUpdate:modelValue":t[2]||(t[2]=o=>l.secretValue=o),disabled:l.file,label:"Secret Value"},null,8,["modelValue","disabled"])]),_:1}),e.createVNode(s,{cols:"3",class:"px-2"},{default:e.withCtx(()=>[e.createVNode(u,{class:"mx-2",color:"primary","data-test":"secretUpload",disabled:l.secretName===""||l.file==null&&l.secretValue==="",loading:l.loadingSecret,onClick:t[3]||(t[3]=o=>a.upload())},{loader:e.withCtx(()=>[...t[6]||(t[6]=[e.createElementVNode("span",null,"Loading...",-1)])]),default:e.withCtx(()=>[e.createVNode(m,{start:"",theme:"dark"},{default:e.withCtx(()=>[...t[5]||(t[5]=[e.createTextVNode("mdi-cloud-upload",-1)])]),_:1}),t[7]||(t[7]=e.createElementVNode("span",null," Set ",-1))]),_:1},8,["disabled","loading"])]),_:1})]),_:1}),e.createVNode(f,{modelValue:l.showAlert,"onUpdate:modelValue":t[4]||(t[4]=o=>l.showAlert=o),closable:"",type:l.alertType},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l.alert),1)]),_:1},8,["modelValue","type"]),e.createVNode(h,{"data-test":"secretList"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.secrets,(o,i)=>(e.openBlock(),e.createElementBlock("div",{key:i},[e.createVNode(v,null,{append:e.withCtx(()=>[e.createVNode(u,{icon:"mdi-delete",variant:"text","aria-label":"Delete Secret",onClick:k=>a.deleteSecret(o)},null,8,["onClick"])]),default:e.withCtx(()=>[e.createVNode(_,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o),1)]),_:2},1024)]),_:2},1024),i<l.secrets.length-1?(e.openBlock(),e.createBlock(V,{key:i})):e.createCommentVNode("",!0)]))),128))]),_:1})])}const g=C._export_sfc(N,[["render",x]]);exports.default=g;
2
+ //# sourceMappingURL=SecretsTab-B07A5MeK.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"SecretsTab-Dudp9OiZ.cjs","sources":["../src/tools/admin/tabs/SecretsTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 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 <div>\n <v-row no-gutters>\n <v-col>\n <v-file-input\n ref=\"fileInput\"\n v-model=\"file\"\n show-size\n accept=\"*\"\n class=\"mx-2\"\n label=\"Click to select a file to create a secret from or enter a secret value\"\n />\n </v-col>\n </v-row>\n <v-row no-gutters align=\"center\" style=\"padding-left: 10px\">\n <v-col cols=\"3\">\n <v-text-field v-model=\"secretName\" label=\"Secret Name\" class=\"px-2\" />\n </v-col>\n <v-col cols=\"3\" class=\"px-2\">\n <!-- Intentional double equals -->\n <v-text-field\n v-model=\"secretValue\"\n :disabled=\"file\"\n label=\"Secret Value\"\n />\n </v-col>\n <v-col cols=\"3\" class=\"px-2\">\n <!-- Intentional double equals -->\n <v-btn\n class=\"mx-2\"\n color=\"primary\"\n data-test=\"secretUpload\"\n :disabled=\"secretName === '' || (file == null && secretValue === '')\"\n :loading=\"loadingSecret\"\n @click=\"upload()\"\n >\n <v-icon start theme=\"dark\">mdi-cloud-upload</v-icon>\n <span> Set </span>\n <template #loader>\n <span>Loading...</span>\n </template>\n </v-btn>\n </v-col>\n </v-row>\n <v-alert v-model=\"showAlert\" closable :type=\"alertType\">\n {{ alert }}\n </v-alert>\n <v-list data-test=\"secretList\">\n <div v-for=\"(secret, index) in secrets\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ secret }}</v-list-item-title>\n\n <template #append>\n <v-btn\n icon=\"mdi-delete\"\n variant=\"text\"\n aria-label=\"Delete Secret\"\n @click=\"deleteSecret(secret)\"\n />\n </template>\n </v-list-item>\n <v-divider v-if=\"index < secrets.length - 1\" :key=\"index\" />\n </div>\n </v-list>\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\n\nexport default {\n data() {\n return {\n file: null,\n loadingSecret: false,\n secrets: [],\n secretName: '',\n secretValue: '',\n alert: '',\n alertType: 'success',\n showAlert: false,\n }\n },\n mounted() {\n this.update()\n },\n methods: {\n update() {\n Api.get('/openc3-api/secrets').then((response) => {\n this.secrets = response.data\n })\n },\n upload: function () {\n this.loadingSecret = true\n let promise = null\n if (this.file) {\n const formData = new FormData()\n formData.append('file', this.file, this.file.name)\n promise = Api.post(`/openc3-api/secrets/${this.secretName}`, {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n })\n } else {\n promise = Api.post(`/openc3-api/secrets/${this.secretName}`, {\n data: { value: this.secretValue },\n })\n }\n promise\n .then((response) => {\n this.loadingSecret = false\n this.file = null\n this.secretName = ''\n this.secretValue = ''\n this.update()\n })\n .catch((error) => {\n this.loadingSecret = false\n })\n },\n deleteSecret: function (secret) {\n this.$dialog\n .confirm(`Are you sure you want to remove: ${secret}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then(function (dialog) {\n return Api.delete(`/openc3-api/secrets/${secret}`)\n })\n .then((response) => {\n this.alert = `Removed secret ${secret}`\n this.alertType = 'success'\n this.showAlert = true\n setTimeout(() => {\n this.showAlert = false\n }, 5000)\n this.update()\n })\n },\n },\n}\n</script>\n"],"names":["_sfc_main","Api","response","promise","formData","error","secret","dialog","_createElementBlock","_createVNode","_component_v_row","_component_v_col","_component_v_file_input","$data","$event","_component_v_text_field","_component_v_btn","$options","_cache","_createElementVNode","_component_v_icon","_component_v_alert","_component_v_list","_openBlock","_Fragment","_renderList","index","_component_v_list_item","_component_v_list_item_title","_createBlock","_component_v_divider"],"mappings":"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"}
1
+ {"version":3,"file":"SecretsTab-B07A5MeK.cjs","sources":["../src/tools/admin/tabs/SecretsTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 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 <div>\n <v-row no-gutters>\n <v-col>\n <v-file-input\n ref=\"fileInput\"\n v-model=\"file\"\n show-size\n accept=\"*\"\n class=\"mx-2\"\n label=\"Click to select a file to create a secret from or enter a secret value\"\n />\n </v-col>\n </v-row>\n <v-row no-gutters align=\"center\" style=\"padding-left: 10px\">\n <v-col cols=\"3\">\n <v-text-field v-model=\"secretName\" label=\"Secret Name\" class=\"px-2\" />\n </v-col>\n <v-col cols=\"3\" class=\"px-2\">\n <!-- Intentional double equals -->\n <v-text-field\n v-model=\"secretValue\"\n :disabled=\"file\"\n label=\"Secret Value\"\n />\n </v-col>\n <v-col cols=\"3\" class=\"px-2\">\n <!-- Intentional double equals -->\n <v-btn\n class=\"mx-2\"\n color=\"primary\"\n data-test=\"secretUpload\"\n :disabled=\"secretName === '' || (file == null && secretValue === '')\"\n :loading=\"loadingSecret\"\n @click=\"upload()\"\n >\n <v-icon start theme=\"dark\">mdi-cloud-upload</v-icon>\n <span> Set </span>\n <template #loader>\n <span>Loading...</span>\n </template>\n </v-btn>\n </v-col>\n </v-row>\n <v-alert v-model=\"showAlert\" closable :type=\"alertType\">\n {{ alert }}\n </v-alert>\n <v-list data-test=\"secretList\">\n <div v-for=\"(secret, index) in secrets\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ secret }}</v-list-item-title>\n\n <template #append>\n <v-btn\n icon=\"mdi-delete\"\n variant=\"text\"\n aria-label=\"Delete Secret\"\n @click=\"deleteSecret(secret)\"\n />\n </template>\n </v-list-item>\n <v-divider v-if=\"index < secrets.length - 1\" :key=\"index\" />\n </div>\n </v-list>\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\n\nexport default {\n data() {\n return {\n file: null,\n loadingSecret: false,\n secrets: [],\n secretName: '',\n secretValue: '',\n alert: '',\n alertType: 'success',\n showAlert: false,\n }\n },\n mounted() {\n this.update()\n },\n methods: {\n update() {\n Api.get('/openc3-api/secrets').then((response) => {\n this.secrets = response.data\n })\n },\n upload: function () {\n this.loadingSecret = true\n let promise = null\n if (this.file) {\n const formData = new FormData()\n formData.append('file', this.file, this.file.name)\n promise = Api.post(`/openc3-api/secrets/${this.secretName}`, {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n })\n } else {\n promise = Api.post(`/openc3-api/secrets/${this.secretName}`, {\n data: { value: this.secretValue },\n })\n }\n promise\n .then((response) => {\n this.loadingSecret = false\n this.file = null\n this.secretName = ''\n this.secretValue = ''\n this.update()\n })\n .catch((error) => {\n this.loadingSecret = false\n })\n },\n deleteSecret: function (secret) {\n this.$dialog\n .confirm(`Are you sure you want to remove: ${secret}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then(function (dialog) {\n return Api.delete(`/openc3-api/secrets/${secret}`)\n })\n .then((response) => {\n this.alert = `Removed secret ${secret}`\n this.alertType = 'success'\n this.showAlert = true\n setTimeout(() => {\n this.showAlert = false\n }, 5000)\n this.update()\n })\n },\n },\n}\n</script>\n"],"names":["_sfc_main","Api","response","promise","formData","error","secret","dialog","_createElementBlock","_createVNode","_component_v_row","_component_v_col","_component_v_file_input","$data","$event","_component_v_text_field","_component_v_btn","$options","_cache","_createElementVNode","_component_v_icon","_component_v_alert","_component_v_list","_openBlock","_Fragment","_renderList","index","_component_v_list_item","_component_v_list_item_title","_createBlock","_component_v_divider"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { d as a } from "./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-ByJi6BSv.js";
1
+ import { f as a } from "./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-C3WTK6F-.js";
2
2
  import { resolveComponent as n, createElementBlock as d, openBlock as c, createVNode as l, withCtx as o, createElementVNode as V, createTextVNode as p, toDisplayString as h, Fragment as w, renderList as C, createBlock as T, createCommentVNode as A } from "vue";
3
3
  import { _ as D } from "./CustomIcon-DTfsnDJn.js";
4
4
  const U = {
@@ -189,4 +189,4 @@ const j = /* @__PURE__ */ D(U, [["render", B]]);
189
189
  export {
190
190
  j as default
191
191
  };
192
- //# sourceMappingURL=SecretsTab-CIrHz_ni.js.map
192
+ //# sourceMappingURL=SecretsTab-DFrxV8Q8.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SecretsTab-CIrHz_ni.js","sources":["../src/tools/admin/tabs/SecretsTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 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 <div>\n <v-row no-gutters>\n <v-col>\n <v-file-input\n ref=\"fileInput\"\n v-model=\"file\"\n show-size\n accept=\"*\"\n class=\"mx-2\"\n label=\"Click to select a file to create a secret from or enter a secret value\"\n />\n </v-col>\n </v-row>\n <v-row no-gutters align=\"center\" style=\"padding-left: 10px\">\n <v-col cols=\"3\">\n <v-text-field v-model=\"secretName\" label=\"Secret Name\" class=\"px-2\" />\n </v-col>\n <v-col cols=\"3\" class=\"px-2\">\n <!-- Intentional double equals -->\n <v-text-field\n v-model=\"secretValue\"\n :disabled=\"file\"\n label=\"Secret Value\"\n />\n </v-col>\n <v-col cols=\"3\" class=\"px-2\">\n <!-- Intentional double equals -->\n <v-btn\n class=\"mx-2\"\n color=\"primary\"\n data-test=\"secretUpload\"\n :disabled=\"secretName === '' || (file == null && secretValue === '')\"\n :loading=\"loadingSecret\"\n @click=\"upload()\"\n >\n <v-icon start theme=\"dark\">mdi-cloud-upload</v-icon>\n <span> Set </span>\n <template #loader>\n <span>Loading...</span>\n </template>\n </v-btn>\n </v-col>\n </v-row>\n <v-alert v-model=\"showAlert\" closable :type=\"alertType\">\n {{ alert }}\n </v-alert>\n <v-list data-test=\"secretList\">\n <div v-for=\"(secret, index) in secrets\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ secret }}</v-list-item-title>\n\n <template #append>\n <v-btn\n icon=\"mdi-delete\"\n variant=\"text\"\n aria-label=\"Delete Secret\"\n @click=\"deleteSecret(secret)\"\n />\n </template>\n </v-list-item>\n <v-divider v-if=\"index < secrets.length - 1\" :key=\"index\" />\n </div>\n </v-list>\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\n\nexport default {\n data() {\n return {\n file: null,\n loadingSecret: false,\n secrets: [],\n secretName: '',\n secretValue: '',\n alert: '',\n alertType: 'success',\n showAlert: false,\n }\n },\n mounted() {\n this.update()\n },\n methods: {\n update() {\n Api.get('/openc3-api/secrets').then((response) => {\n this.secrets = response.data\n })\n },\n upload: function () {\n this.loadingSecret = true\n let promise = null\n if (this.file) {\n const formData = new FormData()\n formData.append('file', this.file, this.file.name)\n promise = Api.post(`/openc3-api/secrets/${this.secretName}`, {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n })\n } else {\n promise = Api.post(`/openc3-api/secrets/${this.secretName}`, {\n data: { value: this.secretValue },\n })\n }\n promise\n .then((response) => {\n this.loadingSecret = false\n this.file = null\n this.secretName = ''\n this.secretValue = ''\n this.update()\n })\n .catch((error) => {\n this.loadingSecret = false\n })\n },\n deleteSecret: function (secret) {\n this.$dialog\n .confirm(`Are you sure you want to remove: ${secret}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then(function (dialog) {\n return Api.delete(`/openc3-api/secrets/${secret}`)\n })\n .then((response) => {\n this.alert = `Removed secret ${secret}`\n this.alertType = 'success'\n this.showAlert = true\n setTimeout(() => {\n this.showAlert = false\n }, 5000)\n this.update()\n })\n },\n },\n}\n</script>\n"],"names":["_sfc_main","Api","response","promise","formData","error","secret","dialog","_createElementBlock","_createVNode","_component_v_row","_component_v_col","_component_v_file_input","$data","$event","_component_v_text_field","_component_v_btn","$options","_cache","_createElementVNode","_component_v_icon","_component_v_alert","_component_v_list","_openBlock","_Fragment","_renderList","index","_component_v_list_item","_component_v_list_item_title","_createBlock","_component_v_divider"],"mappings":"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"}
1
+ {"version":3,"file":"SecretsTab-DFrxV8Q8.js","sources":["../src/tools/admin/tabs/SecretsTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 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 <div>\n <v-row no-gutters>\n <v-col>\n <v-file-input\n ref=\"fileInput\"\n v-model=\"file\"\n show-size\n accept=\"*\"\n class=\"mx-2\"\n label=\"Click to select a file to create a secret from or enter a secret value\"\n />\n </v-col>\n </v-row>\n <v-row no-gutters align=\"center\" style=\"padding-left: 10px\">\n <v-col cols=\"3\">\n <v-text-field v-model=\"secretName\" label=\"Secret Name\" class=\"px-2\" />\n </v-col>\n <v-col cols=\"3\" class=\"px-2\">\n <!-- Intentional double equals -->\n <v-text-field\n v-model=\"secretValue\"\n :disabled=\"file\"\n label=\"Secret Value\"\n />\n </v-col>\n <v-col cols=\"3\" class=\"px-2\">\n <!-- Intentional double equals -->\n <v-btn\n class=\"mx-2\"\n color=\"primary\"\n data-test=\"secretUpload\"\n :disabled=\"secretName === '' || (file == null && secretValue === '')\"\n :loading=\"loadingSecret\"\n @click=\"upload()\"\n >\n <v-icon start theme=\"dark\">mdi-cloud-upload</v-icon>\n <span> Set </span>\n <template #loader>\n <span>Loading...</span>\n </template>\n </v-btn>\n </v-col>\n </v-row>\n <v-alert v-model=\"showAlert\" closable :type=\"alertType\">\n {{ alert }}\n </v-alert>\n <v-list data-test=\"secretList\">\n <div v-for=\"(secret, index) in secrets\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ secret }}</v-list-item-title>\n\n <template #append>\n <v-btn\n icon=\"mdi-delete\"\n variant=\"text\"\n aria-label=\"Delete Secret\"\n @click=\"deleteSecret(secret)\"\n />\n </template>\n </v-list-item>\n <v-divider v-if=\"index < secrets.length - 1\" :key=\"index\" />\n </div>\n </v-list>\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\n\nexport default {\n data() {\n return {\n file: null,\n loadingSecret: false,\n secrets: [],\n secretName: '',\n secretValue: '',\n alert: '',\n alertType: 'success',\n showAlert: false,\n }\n },\n mounted() {\n this.update()\n },\n methods: {\n update() {\n Api.get('/openc3-api/secrets').then((response) => {\n this.secrets = response.data\n })\n },\n upload: function () {\n this.loadingSecret = true\n let promise = null\n if (this.file) {\n const formData = new FormData()\n formData.append('file', this.file, this.file.name)\n promise = Api.post(`/openc3-api/secrets/${this.secretName}`, {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n })\n } else {\n promise = Api.post(`/openc3-api/secrets/${this.secretName}`, {\n data: { value: this.secretValue },\n })\n }\n promise\n .then((response) => {\n this.loadingSecret = false\n this.file = null\n this.secretName = ''\n this.secretValue = ''\n this.update()\n })\n .catch((error) => {\n this.loadingSecret = false\n })\n },\n deleteSecret: function (secret) {\n this.$dialog\n .confirm(`Are you sure you want to remove: ${secret}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then(function (dialog) {\n return Api.delete(`/openc3-api/secrets/${secret}`)\n })\n .then((response) => {\n this.alert = `Removed secret ${secret}`\n this.alertType = 'success'\n this.showAlert = true\n setTimeout(() => {\n this.showAlert = false\n }, 5000)\n this.update()\n })\n },\n },\n}\n</script>\n"],"names":["_sfc_main","Api","response","promise","formData","error","secret","dialog","_createElementBlock","_createVNode","_component_v_row","_component_v_col","_component_v_file_input","$data","$event","_component_v_text_field","_component_v_btn","$options","_cache","_createElementVNode","_component_v_icon","_component_v_alert","_component_v_list","_openBlock","_Fragment","_renderList","index","_component_v_list_item","_component_v_list_item_title","_createBlock","_component_v_divider"],"mappings":"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"}