@openc3/vue-common 7.0.0-rc3 → 7.0.0

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 (409) hide show
  1. package/dist/{ArrayWidget-B2-n1K3r.cjs → ArrayWidget-BsAUsmBz.cjs} +2 -2
  2. package/dist/{ArrayWidget-B2-n1K3r.cjs.map → ArrayWidget-BsAUsmBz.cjs.map} +1 -1
  3. package/dist/{ArrayWidget-dQWDMMrn.js → ArrayWidget-D2UrA5Db.js} +4 -4
  4. package/dist/{ArrayWidget-dQWDMMrn.js.map → ArrayWidget-D2UrA5Db.js.map} +1 -1
  5. package/dist/{ArrayplotWidget-DCnbK37q.js → ArrayplotWidget-CDNRxI2F.js} +3 -3
  6. package/dist/{ArrayplotWidget-DCnbK37q.js.map → ArrayplotWidget-CDNRxI2F.js.map} +1 -1
  7. package/dist/{ArrayplotWidget-BmBcPGUR.cjs → ArrayplotWidget-ChHMy5_L.cjs} +2 -2
  8. package/dist/{ArrayplotWidget-BmBcPGUR.cjs.map → ArrayplotWidget-ChHMy5_L.cjs.map} +1 -1
  9. package/dist/{BarColumn-CkecDAzn.cjs → BarColumn-e-sSkSvE.cjs} +2 -2
  10. package/dist/{BarColumn-CkecDAzn.cjs.map → BarColumn-e-sSkSvE.cjs.map} +1 -1
  11. package/dist/{BarColumn-DmOxuCa9.js → BarColumn-nSFR2LZF.js} +3 -3
  12. package/dist/{BarColumn-DmOxuCa9.js.map → BarColumn-nSFR2LZF.js.map} +1 -1
  13. package/dist/{BlockWidget-UejKxAxY.js → BlockWidget-C-WB0Q2m.js} +4 -4
  14. package/dist/{BlockWidget-UejKxAxY.js.map → BlockWidget-C-WB0Q2m.js.map} +1 -1
  15. package/dist/{BlockWidget-BZXHLTJt.cjs → BlockWidget-DJpyQiec.cjs} +2 -2
  16. package/dist/{BlockWidget-BZXHLTJt.cjs.map → BlockWidget-DJpyQiec.cjs.map} +1 -1
  17. package/dist/{ButtonWidget-DtAkhzCN.js → ButtonWidget-rS7sVb7m.js} +4 -4
  18. package/dist/{ButtonWidget-DtAkhzCN.js.map → ButtonWidget-rS7sVb7m.js.map} +1 -1
  19. package/dist/{ButtonWidget-CzRyY1N5.cjs → ButtonWidget-rkOE5b8G.cjs} +2 -2
  20. package/dist/{ButtonWidget-CzRyY1N5.cjs.map → ButtonWidget-rkOE5b8G.cjs.map} +1 -1
  21. package/dist/{CanvasWidget-YXQ8TLqA.js → CanvasWidget-DuWolVCW.js} +2 -2
  22. package/dist/{CanvasWidget-YXQ8TLqA.js.map → CanvasWidget-DuWolVCW.js.map} +1 -1
  23. package/dist/{CanvasWidget-cQqNxspP.cjs → CanvasWidget-Dv7_QUJY.cjs} +2 -2
  24. package/dist/{CanvasWidget-cQqNxspP.cjs.map → CanvasWidget-Dv7_QUJY.cjs.map} +1 -1
  25. package/dist/{CanvasdotWidget-BbmhHQV_.js → CanvasdotWidget-B42YizA1.js} +2 -2
  26. package/dist/{CanvasdotWidget-BbmhHQV_.js.map → CanvasdotWidget-B42YizA1.js.map} +1 -1
  27. package/dist/{CanvasdotWidget-CMIw-ga4.cjs → CanvasdotWidget-E1OgFBVZ.cjs} +2 -2
  28. package/dist/{CanvasdotWidget-CMIw-ga4.cjs.map → CanvasdotWidget-E1OgFBVZ.cjs.map} +1 -1
  29. package/dist/{CanvasimageWidget-CJf5NYEj.js → CanvasimageWidget-DMHdDTSs.js} +3 -3
  30. package/dist/{CanvasimageWidget-CJf5NYEj.js.map → CanvasimageWidget-DMHdDTSs.js.map} +1 -1
  31. package/dist/{CanvasimageWidget-DXxtYjGG.cjs → CanvasimageWidget-ysw78z4C.cjs} +2 -2
  32. package/dist/{CanvasimageWidget-DXxtYjGG.cjs.map → CanvasimageWidget-ysw78z4C.cjs.map} +1 -1
  33. package/dist/{CanvasimagevalueWidget-VPKlJrxM.cjs → CanvasimagevalueWidget-Bc-VYXe7.cjs} +2 -2
  34. package/dist/{CanvasimagevalueWidget-VPKlJrxM.cjs.map → CanvasimagevalueWidget-Bc-VYXe7.cjs.map} +1 -1
  35. package/dist/{CanvasimagevalueWidget-D86eJXbs.js → CanvasimagevalueWidget-ns-5S1HA.js} +3 -3
  36. package/dist/{CanvasimagevalueWidget-D86eJXbs.js.map → CanvasimagevalueWidget-ns-5S1HA.js.map} +1 -1
  37. package/dist/{CanvaslabelWidget-BgGRS0NS.cjs → CanvaslabelWidget-6h59qJY8.cjs} +2 -2
  38. package/dist/{CanvaslabelWidget-BgGRS0NS.cjs.map → CanvaslabelWidget-6h59qJY8.cjs.map} +1 -1
  39. package/dist/{CanvaslabelWidget-TkrVd-Dg.js → CanvaslabelWidget-DElES3gU.js} +2 -2
  40. package/dist/{CanvaslabelWidget-TkrVd-Dg.js.map → CanvaslabelWidget-DElES3gU.js.map} +1 -1
  41. package/dist/{CanvaslabelvalueWidget-BwsIN_MT.js → CanvaslabelvalueWidget-B2B5KlUm.js} +2 -2
  42. package/dist/{CanvaslabelvalueWidget-BwsIN_MT.js.map → CanvaslabelvalueWidget-B2B5KlUm.js.map} +1 -1
  43. package/dist/{CanvaslabelvalueWidget-W2QzOkQw.cjs → CanvaslabelvalueWidget-BLIgF8xi.cjs} +2 -2
  44. package/dist/{CanvaslabelvalueWidget-W2QzOkQw.cjs.map → CanvaslabelvalueWidget-BLIgF8xi.cjs.map} +1 -1
  45. package/dist/{CanvaslineWidget-yT7FUWs8.cjs → CanvaslineWidget-CxZGCwVF.cjs} +2 -2
  46. package/dist/{CanvaslineWidget-yT7FUWs8.cjs.map → CanvaslineWidget-CxZGCwVF.cjs.map} +1 -1
  47. package/dist/{CanvaslineWidget-BjBvF-vY.js → CanvaslineWidget-DaHxgGyM.js} +2 -2
  48. package/dist/{CanvaslineWidget-BjBvF-vY.js.map → CanvaslineWidget-DaHxgGyM.js.map} +1 -1
  49. package/dist/{CanvaslinevalueWidget-Dj4tsTBp.cjs → CanvaslinevalueWidget-BljeuN4S.cjs} +2 -2
  50. package/dist/{CanvaslinevalueWidget-Dj4tsTBp.cjs.map → CanvaslinevalueWidget-BljeuN4S.cjs.map} +1 -1
  51. package/dist/{CanvaslinevalueWidget-krBLp9yB.js → CanvaslinevalueWidget-CrtDsSOP.js} +2 -2
  52. package/dist/{CanvaslinevalueWidget-krBLp9yB.js.map → CanvaslinevalueWidget-CrtDsSOP.js.map} +1 -1
  53. package/dist/{CheckbuttonWidget-IMrIK9q4.js → CheckbuttonWidget-BK4SgIu7.js} +2 -2
  54. package/dist/{CheckbuttonWidget-IMrIK9q4.js.map → CheckbuttonWidget-BK4SgIu7.js.map} +1 -1
  55. package/dist/{CheckbuttonWidget-CT28NPNo.cjs → CheckbuttonWidget-By46VH2e.cjs} +2 -2
  56. package/dist/{CheckbuttonWidget-CT28NPNo.cjs.map → CheckbuttonWidget-By46VH2e.cjs.map} +1 -1
  57. package/dist/{ClassificationBanners-DC__VXBX.cjs → ClassificationBanners-CHQX3t7t.cjs} +2 -2
  58. package/dist/{ClassificationBanners-DC__VXBX.cjs.map → ClassificationBanners-CHQX3t7t.cjs.map} +1 -1
  59. package/dist/{ClassificationBanners-DiIkXqna.js → ClassificationBanners-DGl2HUKd.js} +2 -2
  60. package/dist/{ClassificationBanners-DiIkXqna.js.map → ClassificationBanners-DGl2HUKd.js.map} +1 -1
  61. package/dist/{ComboboxWidget-hFBSBFwy.cjs → ComboboxWidget-CHFTOmhZ.cjs} +2 -2
  62. package/dist/{ComboboxWidget-hFBSBFwy.cjs.map → ComboboxWidget-CHFTOmhZ.cjs.map} +1 -1
  63. package/dist/{ComboboxWidget-C9Zlc2Hy.js → ComboboxWidget-CciRWuKq.js} +2 -2
  64. package/dist/{ComboboxWidget-C9Zlc2Hy.js.map → ComboboxWidget-CciRWuKq.js.map} +1 -1
  65. package/dist/{CriticalCmdDialog-CCaStsM-.cjs → CriticalCmdDialog-BWrwpTNK.cjs} +2 -2
  66. package/dist/{CriticalCmdDialog-CCaStsM-.cjs.map → CriticalCmdDialog-BWrwpTNK.cjs.map} +1 -1
  67. package/dist/{CriticalCmdDialog-Cp-ykpQb.js → CriticalCmdDialog-C5EZDRSZ.js} +2 -2
  68. package/dist/{CriticalCmdDialog-Cp-ykpQb.js.map → CriticalCmdDialog-C5EZDRSZ.js.map} +1 -1
  69. package/dist/{DateWidget-C_QpCTxN.cjs → DateWidget-Bb6juAYs.cjs} +2 -2
  70. package/dist/{DateWidget-C_QpCTxN.cjs.map → DateWidget-Bb6juAYs.cjs.map} +1 -1
  71. package/dist/{DateWidget-Y6WAFGGt.js → DateWidget-DwgQ3Jik.js} +2 -2
  72. package/dist/{DateWidget-Y6WAFGGt.js.map → DateWidget-DwgQ3Jik.js.map} +1 -1
  73. package/dist/{DetailsDialog-DznGAE6i.js → DetailsDialog-CspQjoR5.js} +3 -3
  74. package/dist/{DetailsDialog-DznGAE6i.js.map → DetailsDialog-CspQjoR5.js.map} +1 -1
  75. package/dist/{DetailsDialog-Bq9BPuoe.cjs → DetailsDialog-D_my0nhs.cjs} +2 -2
  76. package/dist/{DetailsDialog-Bq9BPuoe.cjs.map → DetailsDialog-D_my0nhs.cjs.map} +1 -1
  77. package/dist/{EventListDialog-CktWO2jn.js → EventListDialog-DL2HHNQG.js} +9 -6
  78. package/dist/EventListDialog-DL2HHNQG.js.map +1 -0
  79. package/dist/EventListDialog-DO32zY2U.cjs +2 -0
  80. package/dist/EventListDialog-DO32zY2U.cjs.map +1 -0
  81. package/dist/{FilechecksumWidget-VbLODmHh.js → FilechecksumWidget-BS281Q0h.js} +3 -3
  82. package/dist/{FilechecksumWidget-VbLODmHh.js.map → FilechecksumWidget-BS281Q0h.js.map} +1 -1
  83. package/dist/{FilechecksumWidget-BZdmiTbb.cjs → FilechecksumWidget-DMpuLZJ5.cjs} +2 -2
  84. package/dist/{FilechecksumWidget-BZdmiTbb.cjs.map → FilechecksumWidget-DMpuLZJ5.cjs.map} +1 -1
  85. package/dist/{FiledisplayWidget-BI7GAQ4d.cjs → FiledisplayWidget-BoD7LuLP.cjs} +2 -2
  86. package/dist/{FiledisplayWidget-BI7GAQ4d.cjs.map → FiledisplayWidget-BoD7LuLP.cjs.map} +1 -1
  87. package/dist/{FiledisplayWidget-kixqcLtx.js → FiledisplayWidget-C9YdXDdv.js} +3 -3
  88. package/dist/{FiledisplayWidget-kixqcLtx.js.map → FiledisplayWidget-C9YdXDdv.js.map} +1 -1
  89. package/dist/{FormatvalueWidget-I1y_kf9t.cjs → FormatvalueWidget-DfvTVSs-.cjs} +2 -2
  90. package/dist/{FormatvalueWidget-I1y_kf9t.cjs.map → FormatvalueWidget-DfvTVSs-.cjs.map} +1 -1
  91. package/dist/{FormatvalueWidget--djAS0BE.js → FormatvalueWidget-dfmQfrNA.js} +3 -3
  92. package/dist/{FormatvalueWidget--djAS0BE.js.map → FormatvalueWidget-dfmQfrNA.js.map} +1 -1
  93. package/dist/{Graph-GhpiUBKI.js → Graph-BTtGIbYG.js} +10 -6
  94. package/dist/Graph-BTtGIbYG.js.map +1 -0
  95. package/dist/Graph-Cy2LrwoK.cjs +2 -0
  96. package/dist/Graph-Cy2LrwoK.cjs.map +1 -0
  97. package/dist/{GraphWidget-8T08osON.js → GraphWidget-CWJ4Yb26.js} +2 -2
  98. package/dist/{GraphWidget-8T08osON.js.map → GraphWidget-CWJ4Yb26.js.map} +1 -1
  99. package/dist/{GraphWidget-Bzo-klWV.cjs → GraphWidget-XjxjI3og.cjs} +2 -2
  100. package/dist/{GraphWidget-Bzo-klWV.cjs.map → GraphWidget-XjxjI3og.cjs.map} +1 -1
  101. package/dist/{HorizontalWidget-CAf9I0CU.cjs → HorizontalWidget-BeW4b13V.cjs} +2 -2
  102. package/dist/{HorizontalWidget-CAf9I0CU.cjs.map → HorizontalWidget-BeW4b13V.cjs.map} +1 -1
  103. package/dist/{HorizontalWidget-CusI1RiA.js → HorizontalWidget-DFAqF95S.js} +2 -2
  104. package/dist/{HorizontalWidget-CusI1RiA.js.map → HorizontalWidget-DFAqF95S.js.map} +1 -1
  105. package/dist/{HorizontalboxWidget-D5fIhINf.js → HorizontalboxWidget-CL1xEhDj.js} +5 -5
  106. package/dist/{HorizontalboxWidget-D5fIhINf.js.map → HorizontalboxWidget-CL1xEhDj.js.map} +1 -1
  107. package/dist/{HorizontalboxWidget-B7E5GEPu.cjs → HorizontalboxWidget-DdPv_6qb.cjs} +2 -2
  108. package/dist/{HorizontalboxWidget-B7E5GEPu.cjs.map → HorizontalboxWidget-DdPv_6qb.cjs.map} +1 -1
  109. package/dist/{HorizontallineWidget-DqLKGhdz.cjs → HorizontallineWidget-BdWOnioI.cjs} +2 -2
  110. package/dist/{HorizontallineWidget-DqLKGhdz.cjs.map → HorizontallineWidget-BdWOnioI.cjs.map} +1 -1
  111. package/dist/{HorizontallineWidget-CnRlq7hi.js → HorizontallineWidget-DPiADCAy.js} +2 -2
  112. package/dist/{HorizontallineWidget-CnRlq7hi.js.map → HorizontallineWidget-DPiADCAy.js.map} +1 -1
  113. package/dist/{IframeWidget-DtF44NYM.js → IframeWidget-BsDu4b17.js} +2 -2
  114. package/dist/{IframeWidget-DtF44NYM.js.map → IframeWidget-BsDu4b17.js.map} +1 -1
  115. package/dist/{IframeWidget-BMtv8io0.cjs → IframeWidget-Z12pG6JT.cjs} +2 -2
  116. package/dist/{IframeWidget-BMtv8io0.cjs.map → IframeWidget-Z12pG6JT.cjs.map} +1 -1
  117. package/dist/{ImageLoader-B5rGuJ_H.js → ImageLoader-CT4rnwWn.js} +2 -2
  118. package/dist/{ImageLoader-B5rGuJ_H.js.map → ImageLoader-CT4rnwWn.js.map} +1 -1
  119. package/dist/{ImageLoader-jcIDHdUq.cjs → ImageLoader-CZ0Wx_Ua.cjs} +2 -2
  120. package/dist/{ImageLoader-jcIDHdUq.cjs.map → ImageLoader-CZ0Wx_Ua.cjs.map} +1 -1
  121. package/dist/{ImageviewerWidget-Ciu80vaC.js → ImageviewerWidget-BQbrz2WL.js} +2 -2
  122. package/dist/{ImageviewerWidget-Ciu80vaC.js.map → ImageviewerWidget-BQbrz2WL.js.map} +1 -1
  123. package/dist/{ImageviewerWidget-ox5FNYVP.cjs → ImageviewerWidget-CtJzQn0e.cjs} +2 -2
  124. package/dist/{ImageviewerWidget-ox5FNYVP.cjs.map → ImageviewerWidget-CtJzQn0e.cjs.map} +1 -1
  125. package/dist/{InterfacesTab-CUM5GGWs.cjs → InterfacesTab-A0g0y1n1.cjs} +2 -2
  126. package/dist/{InterfacesTab-CUM5GGWs.cjs.map → InterfacesTab-A0g0y1n1.cjs.map} +1 -1
  127. package/dist/{InterfacesTab-C14LErLZ.js → InterfacesTab-COKNyeUu.js} +3 -3
  128. package/dist/{InterfacesTab-C14LErLZ.js.map → InterfacesTab-COKNyeUu.js.map} +1 -1
  129. package/dist/{LabelWidget-78VnL1xc.js → LabelWidget-D5-IFUYW.js} +2 -2
  130. package/dist/{LabelWidget-78VnL1xc.js.map → LabelWidget-D5-IFUYW.js.map} +1 -1
  131. package/dist/{LabelWidget-B9J1Whh0.cjs → LabelWidget-rH3SsItK.cjs} +2 -2
  132. package/dist/{LabelWidget-B9J1Whh0.cjs.map → LabelWidget-rH3SsItK.cjs.map} +1 -1
  133. package/dist/{LabelledWidget-BMtqUP-E.cjs → LabelledWidget-Bca_qNSP.cjs} +2 -2
  134. package/dist/{LabelledWidget-BMtqUP-E.cjs.map → LabelledWidget-Bca_qNSP.cjs.map} +1 -1
  135. package/dist/{LabelledWidget-Cx2PI85E.js → LabelledWidget-Dt9miRtB.js} +4 -4
  136. package/dist/{LabelledWidget-Cx2PI85E.js.map → LabelledWidget-Dt9miRtB.js.map} +1 -1
  137. package/dist/{LabelprogressbarWidget-eC7VC7lY.js → LabelprogressbarWidget-BNFgTq4D.js} +4 -4
  138. package/dist/{LabelprogressbarWidget-eC7VC7lY.js.map → LabelprogressbarWidget-BNFgTq4D.js.map} +1 -1
  139. package/dist/{LabelprogressbarWidget-Ce3PRzaA.cjs → LabelprogressbarWidget-hyK9Vqsl.cjs} +2 -2
  140. package/dist/{LabelprogressbarWidget-Ce3PRzaA.cjs.map → LabelprogressbarWidget-hyK9Vqsl.cjs.map} +1 -1
  141. package/dist/{LabelsparklineWidget-CP5rD4ob.js → LabelsparklineWidget-BByxev6X.js} +4 -4
  142. package/dist/{LabelsparklineWidget-CP5rD4ob.js.map → LabelsparklineWidget-BByxev6X.js.map} +1 -1
  143. package/dist/{LabelsparklineWidget-DuCA67yl.cjs → LabelsparklineWidget-BxkxEVwQ.cjs} +2 -2
  144. package/dist/{LabelsparklineWidget-DuCA67yl.cjs.map → LabelsparklineWidget-BxkxEVwQ.cjs.map} +1 -1
  145. package/dist/{LabelvalueWidget-PM8DFnDm.js → LabelvalueWidget-BM6L9bVw.js} +4 -4
  146. package/dist/{LabelvalueWidget-PM8DFnDm.js.map → LabelvalueWidget-BM6L9bVw.js.map} +1 -1
  147. package/dist/{LabelvalueWidget-DxEvAoHT.cjs → LabelvalueWidget-DEGmbKMG.cjs} +2 -2
  148. package/dist/{LabelvalueWidget-DxEvAoHT.cjs.map → LabelvalueWidget-DEGmbKMG.cjs.map} +1 -1
  149. package/dist/{LabelvaluedescWidget-Dy3_fdkx.cjs → LabelvaluedescWidget-B7bGqqeO.cjs} +2 -2
  150. package/dist/{LabelvaluedescWidget-Dy3_fdkx.cjs.map → LabelvaluedescWidget-B7bGqqeO.cjs.map} +1 -1
  151. package/dist/{LabelvaluedescWidget-C8OmKnu-.js → LabelvaluedescWidget-DeBRjYXs.js} +5 -5
  152. package/dist/{LabelvaluedescWidget-C8OmKnu-.js.map → LabelvaluedescWidget-DeBRjYXs.js.map} +1 -1
  153. package/dist/{LabelvaluelimitsbarWidget-DIsTQqkO.js → LabelvaluelimitsbarWidget-CqV0-c3G.js} +4 -4
  154. package/dist/{LabelvaluelimitsbarWidget-DIsTQqkO.js.map → LabelvaluelimitsbarWidget-CqV0-c3G.js.map} +1 -1
  155. package/dist/{LabelvaluelimitsbarWidget-DWvSVvXl.cjs → LabelvaluelimitsbarWidget-DzEc9ZZr.cjs} +2 -2
  156. package/dist/{LabelvaluelimitsbarWidget-DWvSVvXl.cjs.map → LabelvaluelimitsbarWidget-DzEc9ZZr.cjs.map} +1 -1
  157. package/dist/{LabelvaluelimitscolumnWidget-ld556rRi.js → LabelvaluelimitscolumnWidget-Bz0PKTIV.js} +5 -5
  158. package/dist/{LabelvaluelimitscolumnWidget-ld556rRi.js.map → LabelvaluelimitscolumnWidget-Bz0PKTIV.js.map} +1 -1
  159. package/dist/{LabelvaluelimitscolumnWidget-CyPuEz7E.cjs → LabelvaluelimitscolumnWidget-C0-v0q7a.cjs} +2 -2
  160. package/dist/{LabelvaluelimitscolumnWidget-CyPuEz7E.cjs.map → LabelvaluelimitscolumnWidget-C0-v0q7a.cjs.map} +1 -1
  161. package/dist/{LabelvaluerangebarWidget-DdqgjjUc.cjs → LabelvaluerangebarWidget-CWhsb5gm.cjs} +2 -2
  162. package/dist/{LabelvaluerangebarWidget-DdqgjjUc.cjs.map → LabelvaluerangebarWidget-CWhsb5gm.cjs.map} +1 -1
  163. package/dist/{LabelvaluerangebarWidget-nCeoujui.js → LabelvaluerangebarWidget-DKuAJHLm.js} +4 -4
  164. package/dist/{LabelvaluerangebarWidget-nCeoujui.js.map → LabelvaluerangebarWidget-DKuAJHLm.js.map} +1 -1
  165. package/dist/{Layout-BcytiBn4.js → Layout-LSeXBY_W.js} +2 -2
  166. package/dist/{Layout-BcytiBn4.js.map → Layout-LSeXBY_W.js.map} +1 -1
  167. package/dist/{Layout-JCk8r88e.cjs → Layout-QcVHlWPp.cjs} +2 -2
  168. package/dist/{Layout-JCk8r88e.cjs.map → Layout-QcVHlWPp.cjs.map} +1 -1
  169. package/dist/{LedWidget-3pWKnZsD.js → LedWidget-CH4Il9R7.js} +4 -4
  170. package/dist/{LedWidget-3pWKnZsD.js.map → LedWidget-CH4Il9R7.js.map} +1 -1
  171. package/dist/{LedWidget-BEP-sFTh.cjs → LedWidget-CJwBssHl.cjs} +2 -2
  172. package/dist/{LedWidget-BEP-sFTh.cjs.map → LedWidget-CJwBssHl.cjs.map} +1 -1
  173. package/dist/{LimitsBar-BJ_cERjE.cjs → LimitsBar-B0O6RMrG.cjs} +2 -2
  174. package/dist/{LimitsBar-BJ_cERjE.cjs.map → LimitsBar-B0O6RMrG.cjs.map} +1 -1
  175. package/dist/{LimitsBar-DCco6Rwp.js → LimitsBar-BelAQFD0.js} +2 -2
  176. package/dist/{LimitsBar-DCco6Rwp.js.map → LimitsBar-BelAQFD0.js.map} +1 -1
  177. package/dist/{LimitsbarWidget-DiAnkXID.cjs → LimitsbarWidget--AwjBbtb.cjs} +2 -2
  178. package/dist/{LimitsbarWidget-DiAnkXID.cjs.map → LimitsbarWidget--AwjBbtb.cjs.map} +1 -1
  179. package/dist/{LimitsbarWidget-_BMzxWBm.js → LimitsbarWidget-PkPqlyxL.js} +3 -3
  180. package/dist/{LimitsbarWidget-_BMzxWBm.js.map → LimitsbarWidget-PkPqlyxL.js.map} +1 -1
  181. package/dist/{LimitscolorWidget-ByfzIE_O.cjs → LimitscolorWidget-1D2myv8a.cjs} +2 -2
  182. package/dist/{LimitscolorWidget-ByfzIE_O.cjs.map → LimitscolorWidget-1D2myv8a.cjs.map} +1 -1
  183. package/dist/{LimitscolorWidget-C2gZyqtI.js → LimitscolorWidget-BlA15g4A.js} +4 -4
  184. package/dist/{LimitscolorWidget-C2gZyqtI.js.map → LimitscolorWidget-BlA15g4A.js.map} +1 -1
  185. package/dist/{LimitscolumnWidget-Cv-6FXU3.js → LimitscolumnWidget-PT917BA0.js} +2 -2
  186. package/dist/{LimitscolumnWidget-Cv-6FXU3.js.map → LimitscolumnWidget-PT917BA0.js.map} +1 -1
  187. package/dist/{LimitscolumnWidget-CZwcXbLS.cjs → LimitscolumnWidget-_QPf3cUQ.cjs} +2 -2
  188. package/dist/{LimitscolumnWidget-CZwcXbLS.cjs.map → LimitscolumnWidget-_QPf3cUQ.cjs.map} +1 -1
  189. package/dist/{LinegraphWidget-BahyhwSt.js → LinegraphWidget-BW7kS_6G.js} +4 -4
  190. package/dist/{LinegraphWidget-BahyhwSt.js.map → LinegraphWidget-BW7kS_6G.js.map} +1 -1
  191. package/dist/{LinegraphWidget-so5ohfWF.cjs → LinegraphWidget-DfXd3959.cjs} +2 -2
  192. package/dist/{LinegraphWidget-so5ohfWF.cjs.map → LinegraphWidget-DfXd3959.cjs.map} +1 -1
  193. package/dist/{MatrixbycolumnsWidget-B1Hy9but.js → MatrixbycolumnsWidget-BGNsZvjv.js} +3 -3
  194. package/dist/{MatrixbycolumnsWidget-B1Hy9but.js.map → MatrixbycolumnsWidget-BGNsZvjv.js.map} +1 -1
  195. package/dist/{MatrixbycolumnsWidget-Dma8IsO-.cjs → MatrixbycolumnsWidget-oRYGFSEt.cjs} +2 -2
  196. package/dist/{MatrixbycolumnsWidget-Dma8IsO-.cjs.map → MatrixbycolumnsWidget-oRYGFSEt.cjs.map} +1 -1
  197. package/dist/{MicroservicesTab-BSXNA_Si.js → MicroservicesTab-CiEGGavF.js} +3 -3
  198. package/dist/{MicroservicesTab-BSXNA_Si.js.map → MicroservicesTab-CiEGGavF.js.map} +1 -1
  199. package/dist/{MicroservicesTab-ARGtrfOb.cjs → MicroservicesTab-DvDK2hPW.cjs} +2 -2
  200. package/dist/{MicroservicesTab-ARGtrfOb.cjs.map → MicroservicesTab-DvDK2hPW.cjs.map} +1 -1
  201. package/dist/{OpenC3TimePicker-LN9R7V31.js → OpenC3TimePicker-CkaALgy9.js} +2 -2
  202. package/dist/{OpenC3TimePicker-LN9R7V31.js.map → OpenC3TimePicker-CkaALgy9.js.map} +1 -1
  203. package/dist/{OpenC3TimePicker-BHX9fnlR.cjs → OpenC3TimePicker-bbdbKTv_.cjs} +2 -2
  204. package/dist/{OpenC3TimePicker-BHX9fnlR.cjs.map → OpenC3TimePicker-bbdbKTv_.cjs.map} +1 -1
  205. package/dist/{Openc3Screen-BP7Ho9XC.js → Openc3Screen-BnM1bNOB.js} +11 -12
  206. package/dist/{Openc3Screen-BP7Ho9XC.js.map → Openc3Screen-BnM1bNOB.js.map} +1 -1
  207. package/dist/{Openc3Screen-CJOTF-lu.cjs → Openc3Screen-DoOAFAlJ.cjs} +4 -4
  208. package/dist/{Openc3Screen-CJOTF-lu.cjs.map → Openc3Screen-DoOAFAlJ.cjs.map} +1 -1
  209. package/dist/{OutputDialog-JdAxzpPD.js → OutputDialog-BY-TZNRl.js} +2 -2
  210. package/dist/{OutputDialog-JdAxzpPD.js.map → OutputDialog-BY-TZNRl.js.map} +1 -1
  211. package/dist/{OutputDialog-Dx5mkq19.cjs → OutputDialog-R3Xj3_yw.cjs} +2 -2
  212. package/dist/{OutputDialog-Dx5mkq19.cjs.map → OutputDialog-R3Xj3_yw.cjs.map} +1 -1
  213. package/dist/{PackagesTab-HPNAXhzf.cjs → PackagesTab-2Mu7yvxU.cjs} +2 -2
  214. package/dist/{PackagesTab-HPNAXhzf.cjs.map → PackagesTab-2Mu7yvxU.cjs.map} +1 -1
  215. package/dist/{PackagesTab-ByfVH001.js → PackagesTab-DGrqIo_Z.js} +4 -4
  216. package/dist/{PackagesTab-ByfVH001.js.map → PackagesTab-DGrqIo_Z.js.map} +1 -1
  217. package/dist/{PluginsTab-D7zpmf8s.js → PluginsTab-BXjVe_81.js} +427 -390
  218. package/dist/PluginsTab-BXjVe_81.js.map +1 -0
  219. package/dist/PluginsTab-R6i60Pih.cjs +6 -0
  220. package/dist/PluginsTab-R6i60Pih.cjs.map +1 -0
  221. package/dist/{ProgressbarWidget-mAVHKeok.js → ProgressbarWidget-Cy_ad8mb.js} +2 -2
  222. package/dist/{ProgressbarWidget-mAVHKeok.js.map → ProgressbarWidget-Cy_ad8mb.js.map} +1 -1
  223. package/dist/{ProgressbarWidget-BINuoD9p.cjs → ProgressbarWidget-XAy4iHgC.cjs} +2 -2
  224. package/dist/{ProgressbarWidget-BINuoD9p.cjs.map → ProgressbarWidget-XAy4iHgC.cjs.map} +1 -1
  225. package/dist/{RadiobuttonWidget-CL3QjTnZ.js → RadiobuttonWidget-aJBIz45y.js} +2 -2
  226. package/dist/{RadiobuttonWidget-CL3QjTnZ.js.map → RadiobuttonWidget-aJBIz45y.js.map} +1 -1
  227. package/dist/{RadiobuttonWidget-DDmgt0su.cjs → RadiobuttonWidget-fAqkUUTb.cjs} +2 -2
  228. package/dist/{RadiobuttonWidget-DDmgt0su.cjs.map → RadiobuttonWidget-fAqkUUTb.cjs.map} +1 -1
  229. package/dist/{RadiogroupWidget-q7h1v-ko.cjs → RadiogroupWidget-BuYMyBQd.cjs} +2 -2
  230. package/dist/{RadiogroupWidget-q7h1v-ko.cjs.map → RadiogroupWidget-BuYMyBQd.cjs.map} +1 -1
  231. package/dist/{RadiogroupWidget-RUwgtUTC.js → RadiogroupWidget-DNRlJnPE.js} +2 -2
  232. package/dist/{RadiogroupWidget-RUwgtUTC.js.map → RadiogroupWidget-DNRlJnPE.js.map} +1 -1
  233. package/dist/{RangebarWidget-BbPMpwMs.cjs → RangebarWidget-gcukfXnM.cjs} +2 -2
  234. package/dist/{RangebarWidget-BbPMpwMs.cjs.map → RangebarWidget-gcukfXnM.cjs.map} +1 -1
  235. package/dist/{RangebarWidget-CfDsKLZc.js → RangebarWidget-h4YItqPF.js} +2 -2
  236. package/dist/{RangebarWidget-CfDsKLZc.js.map → RangebarWidget-h4YItqPF.js.map} +1 -1
  237. package/dist/{RedisTab-dZE6KvLS.cjs → RedisTab-0V8f-hs1.cjs} +2 -2
  238. package/dist/{RedisTab-dZE6KvLS.cjs.map → RedisTab-0V8f-hs1.cjs.map} +1 -1
  239. package/dist/{RedisTab-YrX-5A3T.js → RedisTab-BmZWA0OG.js} +2 -2
  240. package/dist/{RedisTab-YrX-5A3T.js.map → RedisTab-BmZWA0OG.js.map} +1 -1
  241. package/dist/{RollupWidget-DCMoQUeJ.js → RollupWidget-CnxDQRQ0.js} +2 -2
  242. package/dist/{RollupWidget-DCMoQUeJ.js.map → RollupWidget-CnxDQRQ0.js.map} +1 -1
  243. package/dist/{RollupWidget-BmgRFIOo.cjs → RollupWidget-ZerASRD3.cjs} +2 -2
  244. package/dist/{RollupWidget-BmgRFIOo.cjs.map → RollupWidget-ZerASRD3.cjs.map} +1 -1
  245. package/dist/{RoutersTab-C6vejQrw.cjs → RoutersTab-CY-SmZd4.cjs} +2 -2
  246. package/dist/{RoutersTab-C6vejQrw.cjs.map → RoutersTab-CY-SmZd4.cjs.map} +1 -1
  247. package/dist/{RoutersTab-MA9KW_gu.js → RoutersTab-Db28gKLP.js} +3 -3
  248. package/dist/{RoutersTab-MA9KW_gu.js.map → RoutersTab-Db28gKLP.js.map} +1 -1
  249. package/dist/{ScriptChooser-DGbs03IW.js → ScriptChooser-Bl0wisob.js} +4 -4
  250. package/dist/{ScriptChooser-DGbs03IW.js.map → ScriptChooser-Bl0wisob.js.map} +1 -1
  251. package/dist/{ScriptChooser-Cm_HEyBf.cjs → ScriptChooser-CI4lAYZ1.cjs} +2 -2
  252. package/dist/{ScriptChooser-Cm_HEyBf.cjs.map → ScriptChooser-CI4lAYZ1.cjs.map} +1 -1
  253. package/dist/{ScrollwindowWidget-BbASNNcM.cjs → ScrollwindowWidget-BJkQ5uX_.cjs} +2 -2
  254. package/dist/{ScrollwindowWidget-BbASNNcM.cjs.map → ScrollwindowWidget-BJkQ5uX_.cjs.map} +1 -1
  255. package/dist/{ScrollwindowWidget-DarXe7-1.js → ScrollwindowWidget-DFkTJ2Ue.js} +2 -2
  256. package/dist/{ScrollwindowWidget-DarXe7-1.js.map → ScrollwindowWidget-DFkTJ2Ue.js.map} +1 -1
  257. package/dist/{SecretsTab-DwE3KJNI.cjs → SecretsTab-B8YTrfQ2.cjs} +2 -2
  258. package/dist/{SecretsTab-DwE3KJNI.cjs.map → SecretsTab-B8YTrfQ2.cjs.map} +1 -1
  259. package/dist/{SecretsTab-DTaPAHv3.js → SecretsTab-DTdVLi0I.js} +2 -2
  260. package/dist/{SecretsTab-DTaPAHv3.js.map → SecretsTab-DTdVLi0I.js.map} +1 -1
  261. package/dist/{SettingsTab-BhT5sui9.js → SettingsTab-CnybxvVj.js} +4 -4
  262. package/dist/{SettingsTab-BhT5sui9.js.map → SettingsTab-CnybxvVj.js.map} +1 -1
  263. package/dist/{SettingsTab-o9tfAuE4.cjs → SettingsTab-_SJLhuk0.cjs} +2 -2
  264. package/dist/{SettingsTab-o9tfAuE4.cjs.map → SettingsTab-_SJLhuk0.cjs.map} +1 -1
  265. package/dist/{SignalWidget-CO3UaFok.cjs → SignalWidget-DC7-NIOj.cjs} +2 -2
  266. package/dist/{SignalWidget-CO3UaFok.cjs.map → SignalWidget-DC7-NIOj.cjs.map} +1 -1
  267. package/dist/{SignalWidget-C-iEC5KL.js → SignalWidget-jYpXSIfD.js} +2 -2
  268. package/dist/{SignalWidget-C-iEC5KL.js.map → SignalWidget-jYpXSIfD.js.map} +1 -1
  269. package/dist/{SimpleTextDialog-B9ZurpdS.cjs → SimpleTextDialog-DLdHGmmb.cjs} +2 -2
  270. package/dist/{SimpleTextDialog-B9ZurpdS.cjs.map → SimpleTextDialog-DLdHGmmb.cjs.map} +1 -1
  271. package/dist/{SimpleTextDialog-Bqh3eT2B.js → SimpleTextDialog-Dd3BoNG-.js} +2 -2
  272. package/dist/{SimpleTextDialog-Bqh3eT2B.js.map → SimpleTextDialog-Dd3BoNG-.js.map} +1 -1
  273. package/dist/{SpacerWidget-CQh-LB4u.cjs → SpacerWidget-BwwxG8k3.cjs} +2 -2
  274. package/dist/{SpacerWidget-CQh-LB4u.cjs.map → SpacerWidget-BwwxG8k3.cjs.map} +1 -1
  275. package/dist/{SpacerWidget-FHxUhs1G.js → SpacerWidget-CUqvml6o.js} +2 -2
  276. package/dist/{SpacerWidget-FHxUhs1G.js.map → SpacerWidget-CUqvml6o.js.map} +1 -1
  277. package/dist/{SparklineWidget-BsMIozYC.cjs → SparklineWidget-05TlKC-x.cjs} +2 -2
  278. package/dist/{SparklineWidget-BsMIozYC.cjs.map → SparklineWidget-05TlKC-x.cjs.map} +1 -1
  279. package/dist/{SparklineWidget-ClT5Umm2.js → SparklineWidget-CVf1TtjV.js} +4 -4
  280. package/dist/{SparklineWidget-ClT5Umm2.js.map → SparklineWidget-CVf1TtjV.js.map} +1 -1
  281. package/dist/{TabbookWidget-D-b0v0oo.js → TabbookWidget-CTUEpDnn.js} +2 -2
  282. package/dist/{TabbookWidget-D-b0v0oo.js.map → TabbookWidget-CTUEpDnn.js.map} +1 -1
  283. package/dist/{TabbookWidget-So-oaWd4.cjs → TabbookWidget-oZre4A6Y.cjs} +2 -2
  284. package/dist/{TabbookWidget-So-oaWd4.cjs.map → TabbookWidget-oZre4A6Y.cjs.map} +1 -1
  285. package/dist/TargetPacketItemChooser-BvXBVNLj.cjs +2 -0
  286. package/dist/TargetPacketItemChooser-BvXBVNLj.cjs.map +1 -0
  287. package/dist/{TargetPacketItemChooser-DD7JgCD9.js → TargetPacketItemChooser-CS2Vvi2U.js} +22 -22
  288. package/dist/TargetPacketItemChooser-CS2Vvi2U.js.map +1 -0
  289. package/dist/{TargetsTab-BD0JGvAl.cjs → TargetsTab-Bc7-iav6.cjs} +2 -2
  290. package/dist/{TargetsTab-BD0JGvAl.cjs.map → TargetsTab-Bc7-iav6.cjs.map} +1 -1
  291. package/dist/{TargetsTab-hTLe_rba.js → TargetsTab-CGv0GwAF.js} +3 -3
  292. package/dist/{TargetsTab-hTLe_rba.js.map → TargetsTab-CGv0GwAF.js.map} +1 -1
  293. package/dist/{TextboxWidget-WM3eFUR_.js → TextboxWidget-B0Y1W7GP.js} +4 -4
  294. package/dist/{TextboxWidget-WM3eFUR_.js.map → TextboxWidget-B0Y1W7GP.js.map} +1 -1
  295. package/dist/{TextboxWidget-CF4iq315.cjs → TextboxWidget-qSbx4xxD.cjs} +2 -2
  296. package/dist/{TextboxWidget-CF4iq315.cjs.map → TextboxWidget-qSbx4xxD.cjs.map} +1 -1
  297. package/dist/{TextfieldWidget-lfc1Vg51.js → TextfieldWidget-B8TAf9oU.js} +2 -2
  298. package/dist/{TextfieldWidget-lfc1Vg51.js.map → TextfieldWidget-B8TAf9oU.js.map} +1 -1
  299. package/dist/{TextfieldWidget-D9BINKRU.cjs → TextfieldWidget-cCG7BQ25.cjs} +2 -2
  300. package/dist/{TextfieldWidget-D9BINKRU.cjs.map → TextfieldWidget-cCG7BQ25.cjs.map} +1 -1
  301. package/dist/{TimeWidget-CgtJbnnC.cjs → TimeWidget-DNkhFoZO.cjs} +2 -2
  302. package/dist/{TimeWidget-CgtJbnnC.cjs.map → TimeWidget-DNkhFoZO.cjs.map} +1 -1
  303. package/dist/{TimeWidget-B13aIVqG.js → TimeWidget-DewVXks0.js} +3 -3
  304. package/dist/{TimeWidget-B13aIVqG.js.map → TimeWidget-DewVXks0.js.map} +1 -1
  305. package/dist/{TitleWidget-CTAMgzU4.js → TitleWidget-BAq2LGJF.js} +2 -2
  306. package/dist/{TitleWidget-CTAMgzU4.js.map → TitleWidget-BAq2LGJF.js.map} +1 -1
  307. package/dist/{TitleWidget-BV2sDP_-.cjs → TitleWidget-ChGb6BJW.cjs} +2 -2
  308. package/dist/{TitleWidget-BV2sDP_-.cjs.map → TitleWidget-ChGb6BJW.cjs.map} +1 -1
  309. package/dist/{ToolsTab-DXK-L-kx.cjs → ToolsTab-CB_6hFQF.cjs} +2 -2
  310. package/dist/{ToolsTab-DXK-L-kx.cjs.map → ToolsTab-CB_6hFQF.cjs.map} +1 -1
  311. package/dist/{ToolsTab-CmhRtClS.js → ToolsTab-USmbUvDq.js} +3 -3
  312. package/dist/{ToolsTab-CmhRtClS.js.map → ToolsTab-USmbUvDq.js.map} +1 -1
  313. package/dist/{TopBar-D-lJHb6d.js → TopBar-B4RDkLs-.js} +2 -2
  314. package/dist/{TopBar-D-lJHb6d.js.map → TopBar-B4RDkLs-.js.map} +1 -1
  315. package/dist/{TopBar-BiE7GgIN.cjs → TopBar-DzL3L4ih.cjs} +2 -2
  316. package/dist/{TopBar-BiE7GgIN.cjs.map → TopBar-DzL3L4ih.cjs.map} +1 -1
  317. package/dist/TsdbTab-0aYlysh5.js +125 -0
  318. package/dist/TsdbTab-0aYlysh5.js.map +1 -0
  319. package/dist/TsdbTab-H64XGfOO.cjs +2 -0
  320. package/dist/TsdbTab-H64XGfOO.cjs.map +1 -0
  321. package/dist/{UpgradeToEnterpriseDialog-D1_viCAx.cjs → UpgradeToEnterpriseDialog-BBRXrLrL.cjs} +2 -2
  322. package/dist/{UpgradeToEnterpriseDialog-D1_viCAx.cjs.map → UpgradeToEnterpriseDialog-BBRXrLrL.cjs.map} +1 -1
  323. package/dist/{UpgradeToEnterpriseDialog-et3RrozN.js → UpgradeToEnterpriseDialog-DTmnp8xy.js} +2 -2
  324. package/dist/{UpgradeToEnterpriseDialog-et3RrozN.js.map → UpgradeToEnterpriseDialog-DTmnp8xy.js.map} +1 -1
  325. package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-D0cYHPwr.js → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-CDTSzdb-.js} +2 -2
  326. package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-D0cYHPwr.js.map → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-CDTSzdb-.js.map} +1 -1
  327. package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-DtL207xP.cjs → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-MfH160rD.cjs} +2 -2
  328. package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-DtL207xP.cjs.map → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-MfH160rD.cjs.map} +1 -1
  329. package/dist/{VWidget-0kkhOxhV.js → VWidget-0KwtSssI.js} +3 -3
  330. package/dist/{VWidget-0kkhOxhV.js.map → VWidget-0KwtSssI.js.map} +1 -1
  331. package/dist/{VWidget-Dkji3VZ0.cjs → VWidget-SWmlQP30.cjs} +2 -2
  332. package/dist/{VWidget-Dkji3VZ0.cjs.map → VWidget-SWmlQP30.cjs.map} +1 -1
  333. package/dist/{ValueWidget-BoQfnx8U.js → ValueWidget-BGNqaaRs.js} +4 -4
  334. package/dist/{ValueWidget-BoQfnx8U.js.map → ValueWidget-BGNqaaRs.js.map} +1 -1
  335. package/dist/{ValueWidget-mkXMZvdK.cjs → ValueWidget-BfxZq1LD.cjs} +2 -2
  336. package/dist/{ValueWidget-mkXMZvdK.cjs.map → ValueWidget-BfxZq1LD.cjs.map} +1 -1
  337. package/dist/{ValuelimitsbarWidget-ZfgwDNqX.js → ValuelimitsbarWidget-B6mH4PdF.js} +4 -4
  338. package/dist/{ValuelimitsbarWidget-ZfgwDNqX.js.map → ValuelimitsbarWidget-B6mH4PdF.js.map} +1 -1
  339. package/dist/{ValuelimitsbarWidget-B8IUYgYx.cjs → ValuelimitsbarWidget-m5fBewLy.cjs} +2 -2
  340. package/dist/{ValuelimitsbarWidget-B8IUYgYx.cjs.map → ValuelimitsbarWidget-m5fBewLy.cjs.map} +1 -1
  341. package/dist/{ValuelimitscolumnWidget-B7DigaiC.cjs → ValuelimitscolumnWidget-D_5XZhiD.cjs} +2 -2
  342. package/dist/{ValuelimitscolumnWidget-B7DigaiC.cjs.map → ValuelimitscolumnWidget-D_5XZhiD.cjs.map} +1 -1
  343. package/dist/{ValuelimitscolumnWidget-B3x9DknL.js → ValuelimitscolumnWidget-DlX90_-6.js} +4 -4
  344. package/dist/{ValuelimitscolumnWidget-B3x9DknL.js.map → ValuelimitscolumnWidget-DlX90_-6.js.map} +1 -1
  345. package/dist/{ValuerangebarWidget-DA4X0MuO.cjs → ValuerangebarWidget-C3XFFRhf.cjs} +2 -2
  346. package/dist/{ValuerangebarWidget-DA4X0MuO.cjs.map → ValuerangebarWidget-C3XFFRhf.cjs.map} +1 -1
  347. package/dist/{ValuerangebarWidget-40InNHft.js → ValuerangebarWidget-C9xyLOJO.js} +4 -4
  348. package/dist/{ValuerangebarWidget-40InNHft.js.map → ValuerangebarWidget-C9xyLOJO.js.map} +1 -1
  349. package/dist/{VerticalWidget-abr1X6L7.js → VerticalWidget-0UbbE2g3.js} +2 -2
  350. package/dist/{VerticalWidget-abr1X6L7.js.map → VerticalWidget-0UbbE2g3.js.map} +1 -1
  351. package/dist/{VerticalWidget-BiFa3xbs.cjs → VerticalWidget-D-U8cue6.cjs} +2 -2
  352. package/dist/{VerticalWidget-BiFa3xbs.cjs.map → VerticalWidget-D-U8cue6.cjs.map} +1 -1
  353. package/dist/{VerticalboxWidget-Cx30rcqe.cjs → VerticalboxWidget-C4nkJhEd.cjs} +2 -2
  354. package/dist/{VerticalboxWidget-Cx30rcqe.cjs.map → VerticalboxWidget-C4nkJhEd.cjs.map} +1 -1
  355. package/dist/{VerticalboxWidget-DsbB17o-.js → VerticalboxWidget-efbeOAKE.js} +5 -5
  356. package/dist/{VerticalboxWidget-DsbB17o-.js.map → VerticalboxWidget-efbeOAKE.js.map} +1 -1
  357. package/dist/{Widget-DksaxMdD.js → Widget-CGePksBA.js} +2 -2
  358. package/dist/{Widget-DksaxMdD.js.map → Widget-CGePksBA.js.map} +1 -1
  359. package/dist/{Widget-VL9FlMQp.cjs → Widget-D0drYWOT.cjs} +2 -2
  360. package/dist/{Widget-VL9FlMQp.cjs.map → Widget-D0drYWOT.cjs.map} +1 -1
  361. package/dist/components.cjs +1 -1
  362. package/dist/components.js +16 -16
  363. package/dist/{index-BRc4sKEF.js → index-BJrYCoCB.js} +19 -13
  364. package/dist/index-BJrYCoCB.js.map +1 -0
  365. package/dist/{index-Qy49-kGB.cjs → index-Cmp6oZpm.cjs} +2 -2
  366. package/dist/index-Cmp6oZpm.cjs.map +1 -0
  367. package/dist/plugins.cjs +1 -1
  368. package/dist/plugins.cjs.map +1 -1
  369. package/dist/plugins.js +1 -1
  370. package/dist/plugins.js.map +1 -1
  371. package/dist/purify.es-4pyphLiB.cjs +3 -0
  372. package/dist/purify.es-4pyphLiB.cjs.map +1 -0
  373. package/dist/{purify.es-DcWaZU6I.js → purify.es-BPDBzHtc.js} +115 -115
  374. package/dist/purify.es-BPDBzHtc.js.map +1 -0
  375. package/dist/{settings-BDlsBCNk.js → settings-CjmDHCpE.js} +2 -2
  376. package/dist/{settings-BDlsBCNk.js.map → settings-CjmDHCpE.js.map} +1 -1
  377. package/dist/{settings-D3MxiRHY.cjs → settings-l1j_GGzu.cjs} +2 -2
  378. package/dist/{settings-D3MxiRHY.cjs.map → settings-l1j_GGzu.cjs.map} +1 -1
  379. package/dist/tools/admin.cjs +1 -1
  380. package/dist/tools/admin.js +1 -1
  381. package/dist/tools/base.cjs +1 -1
  382. package/dist/tools/base.js +4 -4
  383. package/dist/tools/calendar.cjs +1 -1
  384. package/dist/tools/calendar.js +1 -1
  385. package/dist/tools/scriptrunner.cjs +8 -8
  386. package/dist/tools/scriptrunner.cjs.map +1 -1
  387. package/dist/tools/scriptrunner.js +1477 -1067
  388. package/dist/tools/scriptrunner.js.map +1 -1
  389. package/dist/vue-common.css +1 -1
  390. package/dist/widgets.cjs +1 -1
  391. package/dist/widgets.js +64 -64
  392. package/package.json +7 -7
  393. package/dist/EventListDialog-CktWO2jn.js.map +0 -1
  394. package/dist/EventListDialog-EAGLDaHc.cjs +0 -2
  395. package/dist/EventListDialog-EAGLDaHc.cjs.map +0 -1
  396. package/dist/Graph-9_EZ9aQx.cjs +0 -2
  397. package/dist/Graph-9_EZ9aQx.cjs.map +0 -1
  398. package/dist/Graph-GhpiUBKI.js.map +0 -1
  399. package/dist/PluginsTab-D7zpmf8s.js.map +0 -1
  400. package/dist/PluginsTab-DfmpvAYa.cjs +0 -6
  401. package/dist/PluginsTab-DfmpvAYa.cjs.map +0 -1
  402. package/dist/TargetPacketItemChooser-DD7JgCD9.js.map +0 -1
  403. package/dist/TargetPacketItemChooser-PqyXKRlT.cjs +0 -2
  404. package/dist/TargetPacketItemChooser-PqyXKRlT.cjs.map +0 -1
  405. package/dist/index-BRc4sKEF.js.map +0 -1
  406. package/dist/index-Qy49-kGB.cjs.map +0 -1
  407. package/dist/purify.es-B336bjAn.cjs +0 -3
  408. package/dist/purify.es-B336bjAn.cjs.map +0 -1
  409. package/dist/purify.es-DcWaZU6I.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"RedisTab-YrX-5A3T.js","sources":["../src/tools/admin/tabs/RedisTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\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.\n# See LICENSE.md for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-card>\n <v-card-title> Send Raw Redis Commands </v-card-title>\n <v-card-subtitle>\n THIS IS DANGEROUS. This allows you to interact directly with the\n underlying Redis database, making it easy to modify or delete data.\n <br /><br />\n Enter commands like you would at the Redis cli prompt:\n <code>ping</code> or\n <code>hget openc3__settings version</code>\n </v-card-subtitle>\n <v-card-text class=\"pb-0 ml-2\">\n <v-text-field\n v-model=\"redisCommandText\"\n hide-details\n label=\"Redis command\"\n class=\"monospace\"\n @keydown=\"commandKeydown\"\n />\n <v-checkbox\n v-model=\"prettyPrint\"\n label=\"Pretty print\"\n density=\"compact\"\n hide-details\n class=\"mb-2\"\n />\n <template v-if=\"redisResponse\">\n <pre v-if=\"prettyPrint\" v-text=\"formattedResponse\" />\n <span v-else class=\"monospace\"> Response: {{ redisResponse }} </span>\n </template>\n </v-card-text>\n <v-card-actions class=\"px-2\">\n <v-btn\n :disabled=\"!redisCommandText.length\"\n color=\"success\"\n variant=\"text\"\n @click=\"executeRaw\"\n >\n Execute\n </v-btn>\n <v-radio-group v-model=\"redisEndpoint\" inline hide-details class=\"mt-0\">\n <v-radio\n label=\"Persistent\"\n value=\"/openc3-api/redis/exec\"\n data-test=\"persistent-radio\"\n />\n <v-radio\n label=\"Ephemeral\"\n value=\"/openc3-api/redis/exec?ephemeral=1\"\n data-test=\"ephemeral-radio\"\n />\n </v-radio-group>\n </v-card-actions>\n\n <v-data-table\n :headers=\"headers\"\n :items=\"commands\"\n class=\"monospace\"\n :items-per-page=\"-1\"\n hide-default-footer\n density=\"compact\"\n height=\"45vh\"\n >\n </v-data-table>\n </v-card>\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\n\nexport default {\n data() {\n return {\n redisCommandText: '',\n redisResponse: null,\n redisEndpoint: '/openc3-api/redis/exec',\n prettyPrint: false,\n headers: [\n { text: 'Redis', value: 'redis', width: 150 },\n { text: 'Command', value: 'command' },\n { text: 'Response', value: 'response' },\n ],\n commands: [],\n }\n },\n computed: {\n formattedResponse: function () {\n let result = this.redisResponse\n if (this.redisResponse && this.prettyPrint) {\n if (typeof result === 'string') {\n try {\n result = JSON.parse(result)\n } catch (e) {\n // Oh 🐋\n }\n }\n if (Array.isArray(result)) {\n for (let i = 0; i < result.length; i++) {\n if (typeof result[i] === 'string') {\n try {\n result[i] = JSON.parse(result[i])\n } catch (e) {\n // Oh 🐋\n }\n }\n }\n }\n }\n result = JSON.stringify(result, null, 2)\n return `Response: ${result}`\n },\n },\n methods: {\n commandKeydown: function ($event) {\n $event.key === 'Enter' && this.executeRaw()\n },\n executeRaw: function () {\n this.redisResponse = null\n Api.post(this.redisEndpoint, {\n data: this.redisCommandText,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'plain/text',\n },\n }).then((response) => {\n this.redisResponse = response.data.result\n let redis = 'Ephemeral'\n if (this.redisEndpoint === '/openc3-api/redis/exec') {\n redis = 'Persistent'\n }\n this.commands.unshift({\n redis: redis,\n command: this.redisCommandText,\n response: this.redisResponse,\n })\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.monospace {\n font-family: monospace;\n font-size: 14px;\n}\n</style>\n"],"names":["_sfc_main","result","i","$event","Api","response","redis","_createElementBlock","_createVNode","_component_v_card","_component_v_card_title","_cache","_component_v_card_subtitle","_createElementVNode","_component_v_card_text","_component_v_text_field","$data","$options","_component_v_checkbox","_Fragment","_toDisplayString","_openBlock","_hoisted_2","_component_v_card_actions","_component_v_btn","_component_v_radio_group","_component_v_radio","_component_v_data_table"],"mappings":"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"}
1
+ {"version":3,"file":"RedisTab-BmZWA0OG.js","sources":["../src/tools/admin/tabs/RedisTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\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.\n# See LICENSE.md for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-card>\n <v-card-title> Send Raw Redis Commands </v-card-title>\n <v-card-subtitle>\n THIS IS DANGEROUS. This allows you to interact directly with the\n underlying Redis database, making it easy to modify or delete data.\n <br /><br />\n Enter commands like you would at the Redis cli prompt:\n <code>ping</code> or\n <code>hget openc3__settings version</code>\n </v-card-subtitle>\n <v-card-text class=\"pb-0 ml-2\">\n <v-text-field\n v-model=\"redisCommandText\"\n hide-details\n label=\"Redis command\"\n class=\"monospace\"\n @keydown=\"commandKeydown\"\n />\n <v-checkbox\n v-model=\"prettyPrint\"\n label=\"Pretty print\"\n density=\"compact\"\n hide-details\n class=\"mb-2\"\n />\n <template v-if=\"redisResponse\">\n <pre v-if=\"prettyPrint\" v-text=\"formattedResponse\" />\n <span v-else class=\"monospace\"> Response: {{ redisResponse }} </span>\n </template>\n </v-card-text>\n <v-card-actions class=\"px-2\">\n <v-btn\n :disabled=\"!redisCommandText.length\"\n color=\"success\"\n variant=\"text\"\n @click=\"executeRaw\"\n >\n Execute\n </v-btn>\n <v-radio-group v-model=\"redisEndpoint\" inline hide-details class=\"mt-0\">\n <v-radio\n label=\"Persistent\"\n value=\"/openc3-api/redis/exec\"\n data-test=\"persistent-radio\"\n />\n <v-radio\n label=\"Ephemeral\"\n value=\"/openc3-api/redis/exec?ephemeral=1\"\n data-test=\"ephemeral-radio\"\n />\n </v-radio-group>\n </v-card-actions>\n\n <v-data-table\n :headers=\"headers\"\n :items=\"commands\"\n class=\"monospace\"\n :items-per-page=\"-1\"\n hide-default-footer\n density=\"compact\"\n height=\"45vh\"\n >\n </v-data-table>\n </v-card>\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\n\nexport default {\n data() {\n return {\n redisCommandText: '',\n redisResponse: null,\n redisEndpoint: '/openc3-api/redis/exec',\n prettyPrint: false,\n headers: [\n { text: 'Redis', value: 'redis', width: 150 },\n { text: 'Command', value: 'command' },\n { text: 'Response', value: 'response' },\n ],\n commands: [],\n }\n },\n computed: {\n formattedResponse: function () {\n let result = this.redisResponse\n if (this.redisResponse && this.prettyPrint) {\n if (typeof result === 'string') {\n try {\n result = JSON.parse(result)\n } catch (e) {\n // Oh 🐋\n }\n }\n if (Array.isArray(result)) {\n for (let i = 0; i < result.length; i++) {\n if (typeof result[i] === 'string') {\n try {\n result[i] = JSON.parse(result[i])\n } catch (e) {\n // Oh 🐋\n }\n }\n }\n }\n }\n result = JSON.stringify(result, null, 2)\n return `Response: ${result}`\n },\n },\n methods: {\n commandKeydown: function ($event) {\n $event.key === 'Enter' && this.executeRaw()\n },\n executeRaw: function () {\n this.redisResponse = null\n Api.post(this.redisEndpoint, {\n data: this.redisCommandText,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'plain/text',\n },\n }).then((response) => {\n this.redisResponse = response.data.result\n let redis = 'Ephemeral'\n if (this.redisEndpoint === '/openc3-api/redis/exec') {\n redis = 'Persistent'\n }\n this.commands.unshift({\n redis: redis,\n command: this.redisCommandText,\n response: this.redisResponse,\n })\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.monospace {\n font-family: monospace;\n font-size: 14px;\n}\n</style>\n"],"names":["_sfc_main","result","i","$event","Api","response","redis","_createElementBlock","_createVNode","_component_v_card","_component_v_card_title","_cache","_component_v_card_subtitle","_createElementVNode","_component_v_card_text","_component_v_text_field","$data","$options","_component_v_checkbox","_Fragment","_toDisplayString","_openBlock","_hoisted_2","_component_v_card_actions","_component_v_btn","_component_v_radio_group","_component_v_radio","_component_v_data_table"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { W as a } from "./Widget-DksaxMdD.js";
1
+ import { W as a } from "./Widget-CGePksBA.js";
2
2
  import { resolveComponent as l, createBlock as n, openBlock as c, normalizeStyle as o } from "vue";
3
3
  import { _ as u } from "./CustomIcon-Cg3jCA_l.js";
4
4
  const m = {
@@ -82,4 +82,4 @@ const E = /* @__PURE__ */ u(m, [["render", p]]);
82
82
  export {
83
83
  E as default
84
84
  };
85
- //# sourceMappingURL=RollupWidget-DCMoQUeJ.js.map
85
+ //# sourceMappingURL=RollupWidget-CnxDQRQ0.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RollupWidget-DCMoQUeJ.js","sources":["../src/widgets/RollupWidget.vue"],"sourcesContent":["<!--\n# Copyright 2024 OpenC3, Inc.\n# All Rights Reserved.\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.\n# See LICENSE.md for more details.\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <rux-monitoring-icon\n class=\"rux-icon\"\n :style=\"[pointerStyle, computedStyle]\"\n :icon=\"icon\"\n :status=\"status\"\n :label=\"label\"\n :sublabel=\"subLabel\"\n @click=\"clickHandler\"\n ></rux-monitoring-icon>\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n props: {\n value: {\n type: [Number, String],\n default: null,\n },\n },\n emits: ['addItem', 'deleteItem', 'open'],\n data: function () {\n return {\n valueId: null,\n icon: '',\n label: '',\n subLabel: '',\n items: [],\n screenTarget: null,\n screenName: null,\n }\n },\n computed: {\n status: function () {\n let state = 'off'\n // Calculate the overall state of all the items we care about\n for (const item of this.items) {\n let limitsState = this.screenValues[item][1]\n if (limitsState) {\n if (\n (limitsState.includes('BLUE') || limitsState.includes('GREEN')) &&\n state != 'caution' &&\n state != 'critical'\n ) {\n state = 'normal'\n }\n if (limitsState.includes('YELLOW') && state != 'critical') {\n state = 'caution'\n }\n if (limitsState.includes('RED')) {\n state = 'critical'\n }\n }\n }\n return state\n },\n pointerStyle() {\n if (this.screenTarget && this.screenName) {\n return {\n cursor: 'pointer',\n }\n } else {\n return {\n cursor: 'default',\n }\n }\n },\n },\n created: function () {\n this.icon = this.parameters[0]\n this.label = this.parameters[1]\n this.subLabel = this.parameters[2]\n\n // This was an attempt at dynamically importing the rux icon they requested.\n // However, webpack looks at the import line and tries to process all the files.\n // Good discussion here: https://github.com/webpack/webpack/issues/6680\n // and here: https://github.com/webpack/webpack/issues/4175\n // Perhaps there's a way to ignore stuff but we'd still be importing ALL\n // the files which is a LOT. Instead we just import all the icons we need in\n // openc3-cosmos-init/plugins/openc3-tool-base/src/plugins/vuetify.js\n\n // import(\n // `@astrouxds/astro-web-components/dist/components/rux-icon-${this.icon}`\n // ).then((module) => {\n // // First key of the module is the name of the class\n // let name = Object.keys(module)[0]\n // try {\n // customElements.define(`rux-icon-${this.icon}`, module[name])\n // } catch (e) {\n // // Catch the fact that the icon probably already exists and move on\n // }\n // })\n\n this.appliedSettings.forEach((setting) => {\n switch (setting[0].toUpperCase()) {\n // Create a link to an existing screen\n case 'SCREEN':\n this.screenTarget = setting[1]\n this.screenName = setting[2]\n break\n\n // Create the list of rollup telemetry\n case 'TLM':\n let type = 'CONVERTED'\n if (setting[4]) {\n type = setting[4]\n }\n let item = `${setting[1]}__${setting[2]}__${setting[3]}__${type}`\n this.items.push(item)\n this.$emit('addItem', item)\n break\n }\n })\n },\n unmounted: function () {\n this.items.forEach((item) => {\n this.$emit('deleteItem', item)\n })\n },\n methods: {\n clickHandler() {\n if (this.screenTarget && this.screenName) {\n this.$emit('open', this.screenTarget, this.screenName)\n }\n },\n },\n}\n</script>\n"],"names":["_sfc_main","Widget","state","item","limitsState","setting","type","_createBlock","_component_rux_monitoring_icon","_normalizeStyle","$options","_ctx"],"mappings":";;;AA4BA,MAAKA,IAAU;AAAA,EACb,QAAQ,CAACC,CAAM;AAAA,EACf,OAAO;AAAA,IACL,OAAO;AAAA,MACL,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,SAAS;AAAA;;EAGb,OAAO,CAAC,WAAW,cAAc,MAAM;AAAA,EACvC,MAAM,WAAY;AAChB,WAAO;AAAA,MACL,SAAS;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,OAAO,CAAA;AAAA,MACP,cAAc;AAAA,MACd,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,QAAQ,WAAY;AAClB,UAAIC,IAAQ;AAEZ,iBAAWC,KAAQ,KAAK,OAAO;AAC7B,YAAIC,IAAc,KAAK,aAAaD,CAAI,EAAE,CAAC;AAC3C,QAAIC,OAECA,EAAY,SAAS,MAAM,KAAKA,EAAY,SAAS,OAAO,MAC7DF,KAAS,aACTA,KAAS,eAETA,IAAQ,WAENE,EAAY,SAAS,QAAQ,KAAKF,KAAS,eAC7CA,IAAQ,YAENE,EAAY,SAAS,KAAK,MAC5BF,IAAQ;AAAA,MAGd;AACA,aAAOA;AAAA,IACT;AAAA,IACA,eAAe;AACb,aAAI,KAAK,gBAAgB,KAAK,aACrB;AAAA,QACL,QAAQ;AAAA,MACV,IAEO;AAAA,QACL,QAAQ;AAAA,MACV;AAAA,IAEJ;AAAA;EAEF,SAAS,WAAY;AACnB,SAAK,OAAO,KAAK,WAAW,CAAC,GAC7B,KAAK,QAAQ,KAAK,WAAW,CAAC,GAC9B,KAAK,WAAW,KAAK,WAAW,CAAC,GAsBjC,KAAK,gBAAgB,QAAQ,CAACG,MAAY;AACxC,cAAQA,EAAQ,CAAC,EAAE,YAAW,GAAE;AAAA;AAAA,QAE9B,KAAK;AACH,eAAK,eAAeA,EAAQ,CAAC,GAC7B,KAAK,aAAaA,EAAQ,CAAC;AAC3B;AAAA;AAAA,QAGF,KAAK;AACH,cAAIC,IAAO;AACX,UAAID,EAAQ,CAAC,MACXC,IAAOD,EAAQ,CAAC;AAElB,cAAIF,IAAO,GAAGE,EAAQ,CAAC,CAAC,KAAKA,EAAQ,CAAC,CAAC,KAAKA,EAAQ,CAAC,CAAC,KAAKC,CAAI;AAC/D,eAAK,MAAM,KAAKH,CAAI,GACpB,KAAK,MAAM,WAAWA,CAAI;AAC1B;AAAA,MACJ;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,WAAW,WAAY;AACrB,SAAK,MAAM,QAAQ,CAACA,MAAS;AAC3B,WAAK,MAAM,cAAcA,CAAI;AAAA,IAC/B,CAAC;AAAA,EACH;AAAA,EACA,SAAS;AAAA,IACP,eAAe;AACb,MAAI,KAAK,gBAAgB,KAAK,cAC5B,KAAK,MAAM,QAAQ,KAAK,cAAc,KAAK,UAAU;AAAA,IAEzD;AAAA;AAEJ;;;cAhIEI,EAQuBC,GAAA;AAAA,IAPrB,OAAM;AAAA,IACL,OAAKC,EAAA,CAAGC,EAAA,cAAcC,EAAA,aAAa,CAAA;AAAA,IACnC,MAAMA,EAAA;AAAA,IACN,QAAQD,EAAA;AAAA,IACR,OAAOC,EAAA;AAAA,IACP,UAAUA,EAAA;AAAA,IACV,SAAOD,EAAA;AAAA;;;"}
1
+ {"version":3,"file":"RollupWidget-CnxDQRQ0.js","sources":["../src/widgets/RollupWidget.vue"],"sourcesContent":["<!--\n# Copyright 2024 OpenC3, Inc.\n# All Rights Reserved.\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.\n# See LICENSE.md for more details.\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <rux-monitoring-icon\n class=\"rux-icon\"\n :style=\"[pointerStyle, computedStyle]\"\n :icon=\"icon\"\n :status=\"status\"\n :label=\"label\"\n :sublabel=\"subLabel\"\n @click=\"clickHandler\"\n ></rux-monitoring-icon>\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n props: {\n value: {\n type: [Number, String],\n default: null,\n },\n },\n emits: ['addItem', 'deleteItem', 'open'],\n data: function () {\n return {\n valueId: null,\n icon: '',\n label: '',\n subLabel: '',\n items: [],\n screenTarget: null,\n screenName: null,\n }\n },\n computed: {\n status: function () {\n let state = 'off'\n // Calculate the overall state of all the items we care about\n for (const item of this.items) {\n let limitsState = this.screenValues[item][1]\n if (limitsState) {\n if (\n (limitsState.includes('BLUE') || limitsState.includes('GREEN')) &&\n state != 'caution' &&\n state != 'critical'\n ) {\n state = 'normal'\n }\n if (limitsState.includes('YELLOW') && state != 'critical') {\n state = 'caution'\n }\n if (limitsState.includes('RED')) {\n state = 'critical'\n }\n }\n }\n return state\n },\n pointerStyle() {\n if (this.screenTarget && this.screenName) {\n return {\n cursor: 'pointer',\n }\n } else {\n return {\n cursor: 'default',\n }\n }\n },\n },\n created: function () {\n this.icon = this.parameters[0]\n this.label = this.parameters[1]\n this.subLabel = this.parameters[2]\n\n // This was an attempt at dynamically importing the rux icon they requested.\n // However, webpack looks at the import line and tries to process all the files.\n // Good discussion here: https://github.com/webpack/webpack/issues/6680\n // and here: https://github.com/webpack/webpack/issues/4175\n // Perhaps there's a way to ignore stuff but we'd still be importing ALL\n // the files which is a LOT. Instead we just import all the icons we need in\n // openc3-cosmos-init/plugins/openc3-tool-base/src/plugins/vuetify.js\n\n // import(\n // `@astrouxds/astro-web-components/dist/components/rux-icon-${this.icon}`\n // ).then((module) => {\n // // First key of the module is the name of the class\n // let name = Object.keys(module)[0]\n // try {\n // customElements.define(`rux-icon-${this.icon}`, module[name])\n // } catch (e) {\n // // Catch the fact that the icon probably already exists and move on\n // }\n // })\n\n this.appliedSettings.forEach((setting) => {\n switch (setting[0].toUpperCase()) {\n // Create a link to an existing screen\n case 'SCREEN':\n this.screenTarget = setting[1]\n this.screenName = setting[2]\n break\n\n // Create the list of rollup telemetry\n case 'TLM':\n let type = 'CONVERTED'\n if (setting[4]) {\n type = setting[4]\n }\n let item = `${setting[1]}__${setting[2]}__${setting[3]}__${type}`\n this.items.push(item)\n this.$emit('addItem', item)\n break\n }\n })\n },\n unmounted: function () {\n this.items.forEach((item) => {\n this.$emit('deleteItem', item)\n })\n },\n methods: {\n clickHandler() {\n if (this.screenTarget && this.screenName) {\n this.$emit('open', this.screenTarget, this.screenName)\n }\n },\n },\n}\n</script>\n"],"names":["_sfc_main","Widget","state","item","limitsState","setting","type","_createBlock","_component_rux_monitoring_icon","_normalizeStyle","$options","_ctx"],"mappings":";;;AA4BA,MAAKA,IAAU;AAAA,EACb,QAAQ,CAACC,CAAM;AAAA,EACf,OAAO;AAAA,IACL,OAAO;AAAA,MACL,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,SAAS;AAAA;;EAGb,OAAO,CAAC,WAAW,cAAc,MAAM;AAAA,EACvC,MAAM,WAAY;AAChB,WAAO;AAAA,MACL,SAAS;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,OAAO,CAAA;AAAA,MACP,cAAc;AAAA,MACd,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,QAAQ,WAAY;AAClB,UAAIC,IAAQ;AAEZ,iBAAWC,KAAQ,KAAK,OAAO;AAC7B,YAAIC,IAAc,KAAK,aAAaD,CAAI,EAAE,CAAC;AAC3C,QAAIC,OAECA,EAAY,SAAS,MAAM,KAAKA,EAAY,SAAS,OAAO,MAC7DF,KAAS,aACTA,KAAS,eAETA,IAAQ,WAENE,EAAY,SAAS,QAAQ,KAAKF,KAAS,eAC7CA,IAAQ,YAENE,EAAY,SAAS,KAAK,MAC5BF,IAAQ;AAAA,MAGd;AACA,aAAOA;AAAA,IACT;AAAA,IACA,eAAe;AACb,aAAI,KAAK,gBAAgB,KAAK,aACrB;AAAA,QACL,QAAQ;AAAA,MACV,IAEO;AAAA,QACL,QAAQ;AAAA,MACV;AAAA,IAEJ;AAAA;EAEF,SAAS,WAAY;AACnB,SAAK,OAAO,KAAK,WAAW,CAAC,GAC7B,KAAK,QAAQ,KAAK,WAAW,CAAC,GAC9B,KAAK,WAAW,KAAK,WAAW,CAAC,GAsBjC,KAAK,gBAAgB,QAAQ,CAACG,MAAY;AACxC,cAAQA,EAAQ,CAAC,EAAE,YAAW,GAAE;AAAA;AAAA,QAE9B,KAAK;AACH,eAAK,eAAeA,EAAQ,CAAC,GAC7B,KAAK,aAAaA,EAAQ,CAAC;AAC3B;AAAA;AAAA,QAGF,KAAK;AACH,cAAIC,IAAO;AACX,UAAID,EAAQ,CAAC,MACXC,IAAOD,EAAQ,CAAC;AAElB,cAAIF,IAAO,GAAGE,EAAQ,CAAC,CAAC,KAAKA,EAAQ,CAAC,CAAC,KAAKA,EAAQ,CAAC,CAAC,KAAKC,CAAI;AAC/D,eAAK,MAAM,KAAKH,CAAI,GACpB,KAAK,MAAM,WAAWA,CAAI;AAC1B;AAAA,MACJ;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,WAAW,WAAY;AACrB,SAAK,MAAM,QAAQ,CAACA,MAAS;AAC3B,WAAK,MAAM,cAAcA,CAAI;AAAA,IAC/B,CAAC;AAAA,EACH;AAAA,EACA,SAAS;AAAA,IACP,eAAe;AACb,MAAI,KAAK,gBAAgB,KAAK,cAC5B,KAAK,MAAM,QAAQ,KAAK,cAAc,KAAK,UAAU;AAAA,IAEzD;AAAA;AAEJ;;;cAhIEI,EAQuBC,GAAA;AAAA,IAPrB,OAAM;AAAA,IACL,OAAKC,EAAA,CAAGC,EAAA,cAAcC,EAAA,aAAa,CAAA;AAAA,IACnC,MAAMA,EAAA;AAAA,IACN,QAAQD,EAAA;AAAA,IACR,OAAOC,EAAA;AAAA,IACP,UAAUA,EAAA;AAAA,IACV,SAAOD,EAAA;AAAA;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("./Widget-VL9FlMQp.cjs"),s=require("vue"),c=require("./CustomIcon-8F08upeg.cjs"),a={mixins:[l.Widget],props:{value:{type:[Number,String],default:null}},emits:["addItem","deleteItem","open"],data:function(){return{valueId:null,icon:"",label:"",subLabel:"",items:[],screenTarget:null,screenName:null}},computed:{status:function(){let e="off";for(const i of this.items){let t=this.screenValues[i][1];t&&((t.includes("BLUE")||t.includes("GREEN"))&&e!="caution"&&e!="critical"&&(e="normal"),t.includes("YELLOW")&&e!="critical"&&(e="caution"),t.includes("RED")&&(e="critical"))}return e},pointerStyle(){return this.screenTarget&&this.screenName?{cursor:"pointer"}:{cursor:"default"}}},created:function(){this.icon=this.parameters[0],this.label=this.parameters[1],this.subLabel=this.parameters[2],this.appliedSettings.forEach(e=>{switch(e[0].toUpperCase()){case"SCREEN":this.screenTarget=e[1],this.screenName=e[2];break;case"TLM":let i="CONVERTED";e[4]&&(i=e[4]);let t=`${e[1]}__${e[2]}__${e[3]}__${i}`;this.items.push(t),this.$emit("addItem",t);break}})},unmounted:function(){this.items.forEach(e=>{this.$emit("deleteItem",e)})},methods:{clickHandler(){this.screenTarget&&this.screenName&&this.$emit("open",this.screenTarget,this.screenName)}}};function o(e,i,t,m,d,r){const n=s.resolveComponent("rux-monitoring-icon");return s.openBlock(),s.createBlock(n,{class:"rux-icon",style:s.normalizeStyle([r.pointerStyle,e.computedStyle]),icon:e.icon,status:r.status,label:e.label,sublabel:e.subLabel,onClick:r.clickHandler},null,8,["style","icon","status","label","sublabel","onClick"])}const u=c._export_sfc(a,[["render",o]]);exports.default=u;
2
- //# sourceMappingURL=RollupWidget-BmgRFIOo.cjs.map
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("./Widget-D0drYWOT.cjs"),s=require("vue"),c=require("./CustomIcon-8F08upeg.cjs"),a={mixins:[l.Widget],props:{value:{type:[Number,String],default:null}},emits:["addItem","deleteItem","open"],data:function(){return{valueId:null,icon:"",label:"",subLabel:"",items:[],screenTarget:null,screenName:null}},computed:{status:function(){let e="off";for(const i of this.items){let t=this.screenValues[i][1];t&&((t.includes("BLUE")||t.includes("GREEN"))&&e!="caution"&&e!="critical"&&(e="normal"),t.includes("YELLOW")&&e!="critical"&&(e="caution"),t.includes("RED")&&(e="critical"))}return e},pointerStyle(){return this.screenTarget&&this.screenName?{cursor:"pointer"}:{cursor:"default"}}},created:function(){this.icon=this.parameters[0],this.label=this.parameters[1],this.subLabel=this.parameters[2],this.appliedSettings.forEach(e=>{switch(e[0].toUpperCase()){case"SCREEN":this.screenTarget=e[1],this.screenName=e[2];break;case"TLM":let i="CONVERTED";e[4]&&(i=e[4]);let t=`${e[1]}__${e[2]}__${e[3]}__${i}`;this.items.push(t),this.$emit("addItem",t);break}})},unmounted:function(){this.items.forEach(e=>{this.$emit("deleteItem",e)})},methods:{clickHandler(){this.screenTarget&&this.screenName&&this.$emit("open",this.screenTarget,this.screenName)}}};function o(e,i,t,m,d,r){const n=s.resolveComponent("rux-monitoring-icon");return s.openBlock(),s.createBlock(n,{class:"rux-icon",style:s.normalizeStyle([r.pointerStyle,e.computedStyle]),icon:e.icon,status:r.status,label:e.label,sublabel:e.subLabel,onClick:r.clickHandler},null,8,["style","icon","status","label","sublabel","onClick"])}const u=c._export_sfc(a,[["render",o]]);exports.default=u;
2
+ //# sourceMappingURL=RollupWidget-ZerASRD3.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"RollupWidget-BmgRFIOo.cjs","sources":["../src/widgets/RollupWidget.vue"],"sourcesContent":["<!--\n# Copyright 2024 OpenC3, Inc.\n# All Rights Reserved.\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.\n# See LICENSE.md for more details.\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <rux-monitoring-icon\n class=\"rux-icon\"\n :style=\"[pointerStyle, computedStyle]\"\n :icon=\"icon\"\n :status=\"status\"\n :label=\"label\"\n :sublabel=\"subLabel\"\n @click=\"clickHandler\"\n ></rux-monitoring-icon>\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n props: {\n value: {\n type: [Number, String],\n default: null,\n },\n },\n emits: ['addItem', 'deleteItem', 'open'],\n data: function () {\n return {\n valueId: null,\n icon: '',\n label: '',\n subLabel: '',\n items: [],\n screenTarget: null,\n screenName: null,\n }\n },\n computed: {\n status: function () {\n let state = 'off'\n // Calculate the overall state of all the items we care about\n for (const item of this.items) {\n let limitsState = this.screenValues[item][1]\n if (limitsState) {\n if (\n (limitsState.includes('BLUE') || limitsState.includes('GREEN')) &&\n state != 'caution' &&\n state != 'critical'\n ) {\n state = 'normal'\n }\n if (limitsState.includes('YELLOW') && state != 'critical') {\n state = 'caution'\n }\n if (limitsState.includes('RED')) {\n state = 'critical'\n }\n }\n }\n return state\n },\n pointerStyle() {\n if (this.screenTarget && this.screenName) {\n return {\n cursor: 'pointer',\n }\n } else {\n return {\n cursor: 'default',\n }\n }\n },\n },\n created: function () {\n this.icon = this.parameters[0]\n this.label = this.parameters[1]\n this.subLabel = this.parameters[2]\n\n // This was an attempt at dynamically importing the rux icon they requested.\n // However, webpack looks at the import line and tries to process all the files.\n // Good discussion here: https://github.com/webpack/webpack/issues/6680\n // and here: https://github.com/webpack/webpack/issues/4175\n // Perhaps there's a way to ignore stuff but we'd still be importing ALL\n // the files which is a LOT. Instead we just import all the icons we need in\n // openc3-cosmos-init/plugins/openc3-tool-base/src/plugins/vuetify.js\n\n // import(\n // `@astrouxds/astro-web-components/dist/components/rux-icon-${this.icon}`\n // ).then((module) => {\n // // First key of the module is the name of the class\n // let name = Object.keys(module)[0]\n // try {\n // customElements.define(`rux-icon-${this.icon}`, module[name])\n // } catch (e) {\n // // Catch the fact that the icon probably already exists and move on\n // }\n // })\n\n this.appliedSettings.forEach((setting) => {\n switch (setting[0].toUpperCase()) {\n // Create a link to an existing screen\n case 'SCREEN':\n this.screenTarget = setting[1]\n this.screenName = setting[2]\n break\n\n // Create the list of rollup telemetry\n case 'TLM':\n let type = 'CONVERTED'\n if (setting[4]) {\n type = setting[4]\n }\n let item = `${setting[1]}__${setting[2]}__${setting[3]}__${type}`\n this.items.push(item)\n this.$emit('addItem', item)\n break\n }\n })\n },\n unmounted: function () {\n this.items.forEach((item) => {\n this.$emit('deleteItem', item)\n })\n },\n methods: {\n clickHandler() {\n if (this.screenTarget && this.screenName) {\n this.$emit('open', this.screenTarget, this.screenName)\n }\n },\n },\n}\n</script>\n"],"names":["_sfc_main","Widget","state","item","limitsState","setting","type","_createBlock","_component_rux_monitoring_icon","_normalizeStyle","$options","_ctx"],"mappings":"iLA4BKA,EAAU,CACb,OAAQ,CAACC,EAAAA,MAAM,EACf,MAAO,CACL,MAAO,CACL,KAAM,CAAC,OAAQ,MAAM,EACrB,QAAS,OAGb,MAAO,CAAC,UAAW,aAAc,MAAM,EACvC,KAAM,UAAY,CAChB,MAAO,CACL,QAAS,KACT,KAAM,GACN,MAAO,GACP,SAAU,GACV,MAAO,CAAA,EACP,aAAc,KACd,WAAY,IACd,CACF,EACA,SAAU,CACR,OAAQ,UAAY,CAClB,IAAIC,EAAQ,MAEZ,UAAWC,KAAQ,KAAK,MAAO,CAC7B,IAAIC,EAAc,KAAK,aAAaD,CAAI,EAAE,CAAC,EACvCC,KAECA,EAAY,SAAS,MAAM,GAAKA,EAAY,SAAS,OAAO,IAC7DF,GAAS,WACTA,GAAS,aAETA,EAAQ,UAENE,EAAY,SAAS,QAAQ,GAAKF,GAAS,aAC7CA,EAAQ,WAENE,EAAY,SAAS,KAAK,IAC5BF,EAAQ,YAGd,CACA,OAAOA,CACT,EACA,cAAe,CACb,OAAI,KAAK,cAAgB,KAAK,WACrB,CACL,OAAQ,SACV,EAEO,CACL,OAAQ,SACV,CAEJ,GAEF,QAAS,UAAY,CACnB,KAAK,KAAO,KAAK,WAAW,CAAC,EAC7B,KAAK,MAAQ,KAAK,WAAW,CAAC,EAC9B,KAAK,SAAW,KAAK,WAAW,CAAC,EAsBjC,KAAK,gBAAgB,QAASG,GAAY,CACxC,OAAQA,EAAQ,CAAC,EAAE,YAAW,EAAE,CAE9B,IAAK,SACH,KAAK,aAAeA,EAAQ,CAAC,EAC7B,KAAK,WAAaA,EAAQ,CAAC,EAC3B,MAGF,IAAK,MACH,IAAIC,EAAO,YACPD,EAAQ,CAAC,IACXC,EAAOD,EAAQ,CAAC,GAElB,IAAIF,EAAO,GAAGE,EAAQ,CAAC,CAAC,KAAKA,EAAQ,CAAC,CAAC,KAAKA,EAAQ,CAAC,CAAC,KAAKC,CAAI,GAC/D,KAAK,MAAM,KAAKH,CAAI,EACpB,KAAK,MAAM,UAAWA,CAAI,EAC1B,KACJ,CACF,CAAC,CACH,EACA,UAAW,UAAY,CACrB,KAAK,MAAM,QAASA,GAAS,CAC3B,KAAK,MAAM,aAAcA,CAAI,CAC/B,CAAC,CACH,EACA,QAAS,CACP,cAAe,CACT,KAAK,cAAgB,KAAK,YAC5B,KAAK,MAAM,OAAQ,KAAK,aAAc,KAAK,UAAU,CAEzD,EAEJ,iGAhIEI,EAAAA,YAQuBC,EAAA,CAPrB,MAAM,WACL,MAAKC,EAAAA,eAAA,CAAGC,EAAA,aAAcC,EAAA,aAAa,CAAA,EACnC,KAAMA,EAAA,KACN,OAAQD,EAAA,OACR,MAAOC,EAAA,MACP,SAAUA,EAAA,SACV,QAAOD,EAAA"}
1
+ {"version":3,"file":"RollupWidget-ZerASRD3.cjs","sources":["../src/widgets/RollupWidget.vue"],"sourcesContent":["<!--\n# Copyright 2024 OpenC3, Inc.\n# All Rights Reserved.\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.\n# See LICENSE.md for more details.\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <rux-monitoring-icon\n class=\"rux-icon\"\n :style=\"[pointerStyle, computedStyle]\"\n :icon=\"icon\"\n :status=\"status\"\n :label=\"label\"\n :sublabel=\"subLabel\"\n @click=\"clickHandler\"\n ></rux-monitoring-icon>\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n props: {\n value: {\n type: [Number, String],\n default: null,\n },\n },\n emits: ['addItem', 'deleteItem', 'open'],\n data: function () {\n return {\n valueId: null,\n icon: '',\n label: '',\n subLabel: '',\n items: [],\n screenTarget: null,\n screenName: null,\n }\n },\n computed: {\n status: function () {\n let state = 'off'\n // Calculate the overall state of all the items we care about\n for (const item of this.items) {\n let limitsState = this.screenValues[item][1]\n if (limitsState) {\n if (\n (limitsState.includes('BLUE') || limitsState.includes('GREEN')) &&\n state != 'caution' &&\n state != 'critical'\n ) {\n state = 'normal'\n }\n if (limitsState.includes('YELLOW') && state != 'critical') {\n state = 'caution'\n }\n if (limitsState.includes('RED')) {\n state = 'critical'\n }\n }\n }\n return state\n },\n pointerStyle() {\n if (this.screenTarget && this.screenName) {\n return {\n cursor: 'pointer',\n }\n } else {\n return {\n cursor: 'default',\n }\n }\n },\n },\n created: function () {\n this.icon = this.parameters[0]\n this.label = this.parameters[1]\n this.subLabel = this.parameters[2]\n\n // This was an attempt at dynamically importing the rux icon they requested.\n // However, webpack looks at the import line and tries to process all the files.\n // Good discussion here: https://github.com/webpack/webpack/issues/6680\n // and here: https://github.com/webpack/webpack/issues/4175\n // Perhaps there's a way to ignore stuff but we'd still be importing ALL\n // the files which is a LOT. Instead we just import all the icons we need in\n // openc3-cosmos-init/plugins/openc3-tool-base/src/plugins/vuetify.js\n\n // import(\n // `@astrouxds/astro-web-components/dist/components/rux-icon-${this.icon}`\n // ).then((module) => {\n // // First key of the module is the name of the class\n // let name = Object.keys(module)[0]\n // try {\n // customElements.define(`rux-icon-${this.icon}`, module[name])\n // } catch (e) {\n // // Catch the fact that the icon probably already exists and move on\n // }\n // })\n\n this.appliedSettings.forEach((setting) => {\n switch (setting[0].toUpperCase()) {\n // Create a link to an existing screen\n case 'SCREEN':\n this.screenTarget = setting[1]\n this.screenName = setting[2]\n break\n\n // Create the list of rollup telemetry\n case 'TLM':\n let type = 'CONVERTED'\n if (setting[4]) {\n type = setting[4]\n }\n let item = `${setting[1]}__${setting[2]}__${setting[3]}__${type}`\n this.items.push(item)\n this.$emit('addItem', item)\n break\n }\n })\n },\n unmounted: function () {\n this.items.forEach((item) => {\n this.$emit('deleteItem', item)\n })\n },\n methods: {\n clickHandler() {\n if (this.screenTarget && this.screenName) {\n this.$emit('open', this.screenTarget, this.screenName)\n }\n },\n },\n}\n</script>\n"],"names":["_sfc_main","Widget","state","item","limitsState","setting","type","_createBlock","_component_rux_monitoring_icon","_normalizeStyle","$options","_ctx"],"mappings":"iLA4BKA,EAAU,CACb,OAAQ,CAACC,EAAAA,MAAM,EACf,MAAO,CACL,MAAO,CACL,KAAM,CAAC,OAAQ,MAAM,EACrB,QAAS,OAGb,MAAO,CAAC,UAAW,aAAc,MAAM,EACvC,KAAM,UAAY,CAChB,MAAO,CACL,QAAS,KACT,KAAM,GACN,MAAO,GACP,SAAU,GACV,MAAO,CAAA,EACP,aAAc,KACd,WAAY,IACd,CACF,EACA,SAAU,CACR,OAAQ,UAAY,CAClB,IAAIC,EAAQ,MAEZ,UAAWC,KAAQ,KAAK,MAAO,CAC7B,IAAIC,EAAc,KAAK,aAAaD,CAAI,EAAE,CAAC,EACvCC,KAECA,EAAY,SAAS,MAAM,GAAKA,EAAY,SAAS,OAAO,IAC7DF,GAAS,WACTA,GAAS,aAETA,EAAQ,UAENE,EAAY,SAAS,QAAQ,GAAKF,GAAS,aAC7CA,EAAQ,WAENE,EAAY,SAAS,KAAK,IAC5BF,EAAQ,YAGd,CACA,OAAOA,CACT,EACA,cAAe,CACb,OAAI,KAAK,cAAgB,KAAK,WACrB,CACL,OAAQ,SACV,EAEO,CACL,OAAQ,SACV,CAEJ,GAEF,QAAS,UAAY,CACnB,KAAK,KAAO,KAAK,WAAW,CAAC,EAC7B,KAAK,MAAQ,KAAK,WAAW,CAAC,EAC9B,KAAK,SAAW,KAAK,WAAW,CAAC,EAsBjC,KAAK,gBAAgB,QAASG,GAAY,CACxC,OAAQA,EAAQ,CAAC,EAAE,YAAW,EAAE,CAE9B,IAAK,SACH,KAAK,aAAeA,EAAQ,CAAC,EAC7B,KAAK,WAAaA,EAAQ,CAAC,EAC3B,MAGF,IAAK,MACH,IAAIC,EAAO,YACPD,EAAQ,CAAC,IACXC,EAAOD,EAAQ,CAAC,GAElB,IAAIF,EAAO,GAAGE,EAAQ,CAAC,CAAC,KAAKA,EAAQ,CAAC,CAAC,KAAKA,EAAQ,CAAC,CAAC,KAAKC,CAAI,GAC/D,KAAK,MAAM,KAAKH,CAAI,EACpB,KAAK,MAAM,UAAWA,CAAI,EAC1B,KACJ,CACF,CAAC,CACH,EACA,UAAW,UAAY,CACrB,KAAK,MAAM,QAASA,GAAS,CAC3B,KAAK,MAAM,aAAcA,CAAI,CAC/B,CAAC,CACH,EACA,QAAS,CACP,cAAe,CACT,KAAK,cAAgB,KAAK,YAC5B,KAAK,MAAM,OAAQ,KAAK,aAAc,KAAK,UAAU,CAEzD,EAEJ,iGAhIEI,EAAAA,YAQuBC,EAAA,CAPrB,MAAM,WACL,MAAKC,EAAAA,eAAA,CAAGC,EAAA,aAAcC,EAAA,aAAa,CAAA,EACnC,KAAMA,EAAA,KACN,OAAQD,EAAA,OACR,MAAOC,EAAA,MACP,SAAUA,EAAA,SACV,QAAOD,EAAA"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-DtL207xP.cjs"),e=require("vue"),m=require("./CustomIcon-8F08upeg.cjs");require("./store-CiS35N-w.cjs");require("single-spa");const v=require("./OutputDialog-Dx5mkq19.cjs"),g={components:{OutputDialog:v.OutputDialog},data(){return{routers:[],jsonContent:"",dialogTitle:"",showDialog:!1}},mounted(){this.update()},methods:{update(){r.Fr.get("/openc3-api/routers").then(t=>{this.routers=t.data})},add(){},showRouter(t){r.Fr.get(`/openc3-api/routers/${t}`).then(n=>{this.jsonContent=JSON.stringify(n.data,null," "),this.dialogTitle=t,this.showDialog=!0})},dialogCallback(t){this.showDialog=!1}}};function h(t,n,f,k,o,i){const s=e.resolveComponent("v-list-item-title"),a=e.resolveComponent("v-btn"),u=e.resolveComponent("v-list-item"),c=e.resolveComponent("v-divider"),d=e.resolveComponent("v-list"),p=e.resolveComponent("output-dialog");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(d,{class:"list","data-test":"routerList"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.routers,(l,_)=>(e.openBlock(),e.createElementBlock("div",{key:_},[e.createVNode(u,null,{append:e.withCtx(()=>[e.createVNode(a,{"aria-label":"Show Router Details",icon:"mdi-eye",variant:"text",onClick:w=>i.showRouter(l)},null,8,["onClick"])]),default:e.withCtx(()=>[e.createVNode(s,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l),1)]),_:2},1024)]),_:2},1024),e.createVNode(c)]))),128))]),_:1}),o.showDialog?(e.openBlock(),e.createBlock(p,{key:0,modelValue:o.showDialog,"onUpdate:modelValue":n[0]||(n[0]=l=>o.showDialog=l),content:o.jsonContent,type:"Router",name:o.dialogTitle,onSubmit:i.dialogCallback},null,8,["modelValue","content","name","onSubmit"])):e.createCommentVNode("",!0)])}const C=m._export_sfc(g,[["render",h],["__scopeId","data-v-ead3d1f6"]]);exports.default=C;
2
- //# sourceMappingURL=RoutersTab-C6vejQrw.cjs.map
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-MfH160rD.cjs"),e=require("vue"),m=require("./CustomIcon-8F08upeg.cjs");require("./store-CiS35N-w.cjs");require("single-spa");const v=require("./OutputDialog-R3Xj3_yw.cjs"),g={components:{OutputDialog:v.OutputDialog},data(){return{routers:[],jsonContent:"",dialogTitle:"",showDialog:!1}},mounted(){this.update()},methods:{update(){r.Fr.get("/openc3-api/routers").then(t=>{this.routers=t.data})},add(){},showRouter(t){r.Fr.get(`/openc3-api/routers/${t}`).then(n=>{this.jsonContent=JSON.stringify(n.data,null," "),this.dialogTitle=t,this.showDialog=!0})},dialogCallback(t){this.showDialog=!1}}};function h(t,n,f,k,o,i){const s=e.resolveComponent("v-list-item-title"),a=e.resolveComponent("v-btn"),u=e.resolveComponent("v-list-item"),c=e.resolveComponent("v-divider"),d=e.resolveComponent("v-list"),p=e.resolveComponent("output-dialog");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(d,{class:"list","data-test":"routerList"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.routers,(l,_)=>(e.openBlock(),e.createElementBlock("div",{key:_},[e.createVNode(u,null,{append:e.withCtx(()=>[e.createVNode(a,{"aria-label":"Show Router Details",icon:"mdi-eye",variant:"text",onClick:w=>i.showRouter(l)},null,8,["onClick"])]),default:e.withCtx(()=>[e.createVNode(s,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l),1)]),_:2},1024)]),_:2},1024),e.createVNode(c)]))),128))]),_:1}),o.showDialog?(e.openBlock(),e.createBlock(p,{key:0,modelValue:o.showDialog,"onUpdate:modelValue":n[0]||(n[0]=l=>o.showDialog=l),content:o.jsonContent,type:"Router",name:o.dialogTitle,onSubmit:i.dialogCallback},null,8,["modelValue","content","name","onSubmit"])):e.createCommentVNode("",!0)])}const C=m._export_sfc(g,[["render",h],["__scopeId","data-v-ead3d1f6"]]);exports.default=C;
2
+ //# sourceMappingURL=RoutersTab-CY-SmZd4.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"RoutersTab-C6vejQrw.cjs","sources":["../src/tools/admin/tabs/RoutersTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is 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.\n# See LICENSE.md for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2026, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-list class=\"list\" data-test=\"routerList\">\n <div v-for=\"(router, index) in routers\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ router }}</v-list-item-title>\n\n <template #append>\n <v-btn\n aria-label=\"Show Router Details\"\n icon=\"mdi-eye\"\n variant=\"text\"\n @click=\"showRouter(router)\"\n />\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <output-dialog\n v-if=\"showDialog\"\n v-model=\"showDialog\"\n :content=\"jsonContent\"\n type=\"Router\"\n :name=\"dialogTitle\"\n @submit=\"dialogCallback\"\n />\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport { OutputDialog } from '@/components'\n\nexport default {\n components: { OutputDialog },\n data() {\n return {\n routers: [],\n jsonContent: '',\n dialogTitle: '',\n showDialog: false,\n }\n },\n mounted() {\n this.update()\n },\n methods: {\n update() {\n Api.get('/openc3-api/routers').then((response) => {\n this.routers = response.data\n })\n },\n add() {},\n showRouter(name) {\n Api.get(`/openc3-api/routers/${name}`).then((response) => {\n this.jsonContent = JSON.stringify(response.data, null, '\\t')\n this.dialogTitle = name\n this.showDialog = true\n })\n },\n dialogCallback(content) {\n this.showDialog = false\n },\n },\n}\n</script>\n\n<style scoped>\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n</style>\n"],"names":["_sfc_main","OutputDialog","Api","response","name","content","_createElementBlock","_createVNode","_component_v_list","_openBlock","_Fragment","_renderList","$data","router","index","_component_v_list_item","_component_v_btn","$event","$options","_component_v_list_item_title","_component_v_divider","_createBlock","_component_output_dialog"],"mappings":"yVAmDKA,EAAU,CACb,WAAY,CAAA,aAAEC,EAAAA,YAAW,EACzB,MAAO,CACL,MAAO,CACL,QAAS,CAAA,EACT,YAAa,GACb,YAAa,GACb,WAAY,EACd,CACF,EACA,SAAU,CACR,KAAK,OAAM,CACb,EACA,QAAS,CACP,QAAS,CACPC,EAAAA,GAAI,IAAI,qBAAqB,EAAE,KAAMC,GAAa,CAChD,KAAK,QAAUA,EAAS,IAC1B,CAAC,CACH,EACA,KAAM,CAAC,EACP,WAAWC,EAAM,CACfF,KAAI,IAAI,uBAAuBE,CAAI,EAAE,EAAE,KAAMD,GAAa,CACxD,KAAK,YAAc,KAAK,UAAUA,EAAS,KAAM,KAAM,GAAI,EAC3D,KAAK,YAAcC,EACnB,KAAK,WAAa,EACpB,CAAC,CACH,EACA,eAAeC,EAAS,CACtB,KAAK,WAAa,EACpB,EAEJ,wQAhEEC,qBA0BM,MAAA,KAAA,CAzBJC,EAAAA,YAgBSC,EAAA,CAhBD,MAAM,OAAO,YAAU,iCACxB,IAAkC,EAAvCC,EAAAA,UAAA,EAAA,EAAAH,EAAAA,mBAcMI,WAAA,KAAAC,EAAAA,WAdyBC,EAAA,QAAO,CAAzBC,EAAQC,mBAArBR,EAAAA,mBAcM,MAAA,CAdmC,IAAKQ,GAAK,CACjDP,EAAAA,YAWcQ,EAAA,KAAA,CARD,iBACT,IAKE,CALFR,EAAAA,YAKES,EAAA,CAJA,aAAW,sBACX,KAAK,UACL,QAAQ,OACP,QAAKC,GAAEC,EAAA,WAAWL,CAAM,2CAP7B,IAAmD,CAAnDN,EAAAA,YAAmDY,EAAA,KAAA,mBAAhC,IAAY,qCAATN,CAAM,EAAA,CAAA,4BAW9BN,EAAAA,YAAaa,CAAA,oBAITR,EAAA,0BADRS,EAAAA,YAOEC,EAAA,kBALSV,EAAA,gDAAAA,EAAA,WAAUK,GAClB,QAASL,EAAA,YACV,KAAK,SACJ,KAAMA,EAAA,YACN,SAAQM,EAAA"}
1
+ {"version":3,"file":"RoutersTab-CY-SmZd4.cjs","sources":["../src/tools/admin/tabs/RoutersTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is 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.\n# See LICENSE.md for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2026, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-list class=\"list\" data-test=\"routerList\">\n <div v-for=\"(router, index) in routers\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ router }}</v-list-item-title>\n\n <template #append>\n <v-btn\n aria-label=\"Show Router Details\"\n icon=\"mdi-eye\"\n variant=\"text\"\n @click=\"showRouter(router)\"\n />\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <output-dialog\n v-if=\"showDialog\"\n v-model=\"showDialog\"\n :content=\"jsonContent\"\n type=\"Router\"\n :name=\"dialogTitle\"\n @submit=\"dialogCallback\"\n />\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport { OutputDialog } from '@/components'\n\nexport default {\n components: { OutputDialog },\n data() {\n return {\n routers: [],\n jsonContent: '',\n dialogTitle: '',\n showDialog: false,\n }\n },\n mounted() {\n this.update()\n },\n methods: {\n update() {\n Api.get('/openc3-api/routers').then((response) => {\n this.routers = response.data\n })\n },\n add() {},\n showRouter(name) {\n Api.get(`/openc3-api/routers/${name}`).then((response) => {\n this.jsonContent = JSON.stringify(response.data, null, '\\t')\n this.dialogTitle = name\n this.showDialog = true\n })\n },\n dialogCallback(content) {\n this.showDialog = false\n },\n },\n}\n</script>\n\n<style scoped>\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n</style>\n"],"names":["_sfc_main","OutputDialog","Api","response","name","content","_createElementBlock","_createVNode","_component_v_list","_openBlock","_Fragment","_renderList","$data","router","index","_component_v_list_item","_component_v_btn","$event","$options","_component_v_list_item_title","_component_v_divider","_createBlock","_component_output_dialog"],"mappings":"yVAmDKA,EAAU,CACb,WAAY,CAAA,aAAEC,EAAAA,YAAW,EACzB,MAAO,CACL,MAAO,CACL,QAAS,CAAA,EACT,YAAa,GACb,YAAa,GACb,WAAY,EACd,CACF,EACA,SAAU,CACR,KAAK,OAAM,CACb,EACA,QAAS,CACP,QAAS,CACPC,EAAAA,GAAI,IAAI,qBAAqB,EAAE,KAAMC,GAAa,CAChD,KAAK,QAAUA,EAAS,IAC1B,CAAC,CACH,EACA,KAAM,CAAC,EACP,WAAWC,EAAM,CACfF,KAAI,IAAI,uBAAuBE,CAAI,EAAE,EAAE,KAAMD,GAAa,CACxD,KAAK,YAAc,KAAK,UAAUA,EAAS,KAAM,KAAM,GAAI,EAC3D,KAAK,YAAcC,EACnB,KAAK,WAAa,EACpB,CAAC,CACH,EACA,eAAeC,EAAS,CACtB,KAAK,WAAa,EACpB,EAEJ,wQAhEEC,qBA0BM,MAAA,KAAA,CAzBJC,EAAAA,YAgBSC,EAAA,CAhBD,MAAM,OAAO,YAAU,iCACxB,IAAkC,EAAvCC,EAAAA,UAAA,EAAA,EAAAH,EAAAA,mBAcMI,WAAA,KAAAC,EAAAA,WAdyBC,EAAA,QAAO,CAAzBC,EAAQC,mBAArBR,EAAAA,mBAcM,MAAA,CAdmC,IAAKQ,GAAK,CACjDP,EAAAA,YAWcQ,EAAA,KAAA,CARD,iBACT,IAKE,CALFR,EAAAA,YAKES,EAAA,CAJA,aAAW,sBACX,KAAK,UACL,QAAQ,OACP,QAAKC,GAAEC,EAAA,WAAWL,CAAM,2CAP7B,IAAmD,CAAnDN,EAAAA,YAAmDY,EAAA,KAAA,mBAAhC,IAAY,qCAATN,CAAM,EAAA,CAAA,4BAW9BN,EAAAA,YAAaa,CAAA,oBAITR,EAAA,0BADRS,EAAAA,YAOEC,EAAA,kBALSV,EAAA,gDAAAA,EAAA,WAAUK,GAClB,QAASL,EAAA,YACV,KAAK,SACJ,KAAMA,EAAA,YACN,SAAQM,EAAA"}
@@ -1,9 +1,9 @@
1
- import { F as c } from "./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-D0cYHPwr.js";
1
+ import { F as c } from "./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-CDTSzdb-.js";
2
2
  import { resolveComponent as o, createElementBlock as a, openBlock as s, createVNode as n, createBlock as f, createCommentVNode as w, withCtx as r, Fragment as C, renderList as k, createTextVNode as D, toDisplayString as b } from "vue";
3
3
  import { _ as x } from "./CustomIcon-Cg3jCA_l.js";
4
4
  import "./store-CO68rDJT.js";
5
5
  import "single-spa";
6
- import { O as y } from "./OutputDialog-JdAxzpPD.js";
6
+ import { O as y } from "./OutputDialog-BY-TZNRl.js";
7
7
  const V = {
8
8
  components: { OutputDialog: y },
9
9
  data() {
@@ -83,4 +83,4 @@ const I = /* @__PURE__ */ x(V, [["render", R], ["__scopeId", "data-v-ead3d1f6"]]
83
83
  export {
84
84
  I as default
85
85
  };
86
- //# sourceMappingURL=RoutersTab-MA9KW_gu.js.map
86
+ //# sourceMappingURL=RoutersTab-Db28gKLP.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RoutersTab-MA9KW_gu.js","sources":["../src/tools/admin/tabs/RoutersTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is 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.\n# See LICENSE.md for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2026, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-list class=\"list\" data-test=\"routerList\">\n <div v-for=\"(router, index) in routers\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ router }}</v-list-item-title>\n\n <template #append>\n <v-btn\n aria-label=\"Show Router Details\"\n icon=\"mdi-eye\"\n variant=\"text\"\n @click=\"showRouter(router)\"\n />\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <output-dialog\n v-if=\"showDialog\"\n v-model=\"showDialog\"\n :content=\"jsonContent\"\n type=\"Router\"\n :name=\"dialogTitle\"\n @submit=\"dialogCallback\"\n />\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport { OutputDialog } from '@/components'\n\nexport default {\n components: { OutputDialog },\n data() {\n return {\n routers: [],\n jsonContent: '',\n dialogTitle: '',\n showDialog: false,\n }\n },\n mounted() {\n this.update()\n },\n methods: {\n update() {\n Api.get('/openc3-api/routers').then((response) => {\n this.routers = response.data\n })\n },\n add() {},\n showRouter(name) {\n Api.get(`/openc3-api/routers/${name}`).then((response) => {\n this.jsonContent = JSON.stringify(response.data, null, '\\t')\n this.dialogTitle = name\n this.showDialog = true\n })\n },\n dialogCallback(content) {\n this.showDialog = false\n },\n },\n}\n</script>\n\n<style scoped>\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n</style>\n"],"names":["_sfc_main","OutputDialog","Api","response","name","content","_createElementBlock","_createVNode","_component_v_list","_openBlock","_Fragment","_renderList","$data","router","index","_component_v_list_item","_component_v_btn","$event","$options","_component_v_list_item_title","_component_v_divider","_createBlock","_component_output_dialog"],"mappings":";;;;;;AAmDA,MAAKA,IAAU;AAAA,EACb,YAAY,EAAE,cAAAC,EAAW;AAAA,EACzB,OAAO;AACL,WAAO;AAAA,MACL,SAAS,CAAA;AAAA,MACT,aAAa;AAAA,MACb,aAAa;AAAA,MACb,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EACA,UAAU;AACR,SAAK,OAAM;AAAA,EACb;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AACPC,MAAAA,EAAI,IAAI,qBAAqB,EAAE,KAAK,CAACC,MAAa;AAChD,aAAK,UAAUA,EAAS;AAAA,MAC1B,CAAC;AAAA,IACH;AAAA,IACA,MAAM;AAAA,IAAC;AAAA,IACP,WAAWC,GAAM;AACfF,MAAAA,EAAI,IAAI,uBAAuBE,CAAI,EAAE,EAAE,KAAK,CAACD,MAAa;AACxD,aAAK,cAAc,KAAK,UAAUA,EAAS,MAAM,MAAM,GAAI,GAC3D,KAAK,cAAcC,GACnB,KAAK,aAAa;AAAA,MACpB,CAAC;AAAA,IACH;AAAA,IACA,eAAeC,GAAS;AACtB,WAAK,aAAa;AAAA,IACpB;AAAA;AAEJ;;;cAhEEC,EA0BM,OAAA,MAAA;AAAA,IAzBJC,EAgBSC,GAAA;AAAA,MAhBD,OAAM;AAAA,MAAO,aAAU;AAAA;iBACxB,MAAkC;AAAA,SAAvCC,EAAA,EAAA,GAAAH,EAcMI,GAAA,MAAAC,EAdyBC,EAAA,SAAO,CAAzBC,GAAQC,YAArBR,EAcM,OAAA,EAdmC,KAAKQ,KAAK;AAAA,UACjDP,EAWcQ,GAAA,MAAA;AAAA,YARD,UACT,MAKE;AAAA,cALFR,EAKES,GAAA;AAAA,gBAJA,cAAW;AAAA,gBACX,MAAK;AAAA,gBACL,SAAQ;AAAA,gBACP,SAAK,CAAAC,MAAEC,EAAA,WAAWL,CAAM;AAAA;;uBAP7B,MAAmD;AAAA,cAAnDN,EAAmDY,GAAA,MAAA;AAAA,2BAAhC,MAAY;AAAA,sBAATN,CAAM,GAAA,CAAA;AAAA;;;;;;UAW9BN,EAAaa,CAAA;AAAA;;;;IAITR,EAAA,mBADRS,EAOEC,GAAA;AAAA;kBALSV,EAAA;AAAA,oDAAAA,EAAA,aAAUK;AAAA,MAClB,SAASL,EAAA;AAAA,MACV,MAAK;AAAA,MACJ,MAAMA,EAAA;AAAA,MACN,UAAQM,EAAA;AAAA;;;;"}
1
+ {"version":3,"file":"RoutersTab-Db28gKLP.js","sources":["../src/tools/admin/tabs/RoutersTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is 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.\n# See LICENSE.md for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2026, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-list class=\"list\" data-test=\"routerList\">\n <div v-for=\"(router, index) in routers\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ router }}</v-list-item-title>\n\n <template #append>\n <v-btn\n aria-label=\"Show Router Details\"\n icon=\"mdi-eye\"\n variant=\"text\"\n @click=\"showRouter(router)\"\n />\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <output-dialog\n v-if=\"showDialog\"\n v-model=\"showDialog\"\n :content=\"jsonContent\"\n type=\"Router\"\n :name=\"dialogTitle\"\n @submit=\"dialogCallback\"\n />\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport { OutputDialog } from '@/components'\n\nexport default {\n components: { OutputDialog },\n data() {\n return {\n routers: [],\n jsonContent: '',\n dialogTitle: '',\n showDialog: false,\n }\n },\n mounted() {\n this.update()\n },\n methods: {\n update() {\n Api.get('/openc3-api/routers').then((response) => {\n this.routers = response.data\n })\n },\n add() {},\n showRouter(name) {\n Api.get(`/openc3-api/routers/${name}`).then((response) => {\n this.jsonContent = JSON.stringify(response.data, null, '\\t')\n this.dialogTitle = name\n this.showDialog = true\n })\n },\n dialogCallback(content) {\n this.showDialog = false\n },\n },\n}\n</script>\n\n<style scoped>\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n</style>\n"],"names":["_sfc_main","OutputDialog","Api","response","name","content","_createElementBlock","_createVNode","_component_v_list","_openBlock","_Fragment","_renderList","$data","router","index","_component_v_list_item","_component_v_btn","$event","$options","_component_v_list_item_title","_component_v_divider","_createBlock","_component_output_dialog"],"mappings":";;;;;;AAmDA,MAAKA,IAAU;AAAA,EACb,YAAY,EAAE,cAAAC,EAAW;AAAA,EACzB,OAAO;AACL,WAAO;AAAA,MACL,SAAS,CAAA;AAAA,MACT,aAAa;AAAA,MACb,aAAa;AAAA,MACb,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EACA,UAAU;AACR,SAAK,OAAM;AAAA,EACb;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AACPC,MAAAA,EAAI,IAAI,qBAAqB,EAAE,KAAK,CAACC,MAAa;AAChD,aAAK,UAAUA,EAAS;AAAA,MAC1B,CAAC;AAAA,IACH;AAAA,IACA,MAAM;AAAA,IAAC;AAAA,IACP,WAAWC,GAAM;AACfF,MAAAA,EAAI,IAAI,uBAAuBE,CAAI,EAAE,EAAE,KAAK,CAACD,MAAa;AACxD,aAAK,cAAc,KAAK,UAAUA,EAAS,MAAM,MAAM,GAAI,GAC3D,KAAK,cAAcC,GACnB,KAAK,aAAa;AAAA,MACpB,CAAC;AAAA,IACH;AAAA,IACA,eAAeC,GAAS;AACtB,WAAK,aAAa;AAAA,IACpB;AAAA;AAEJ;;;cAhEEC,EA0BM,OAAA,MAAA;AAAA,IAzBJC,EAgBSC,GAAA;AAAA,MAhBD,OAAM;AAAA,MAAO,aAAU;AAAA;iBACxB,MAAkC;AAAA,SAAvCC,EAAA,EAAA,GAAAH,EAcMI,GAAA,MAAAC,EAdyBC,EAAA,SAAO,CAAzBC,GAAQC,YAArBR,EAcM,OAAA,EAdmC,KAAKQ,KAAK;AAAA,UACjDP,EAWcQ,GAAA,MAAA;AAAA,YARD,UACT,MAKE;AAAA,cALFR,EAKES,GAAA;AAAA,gBAJA,cAAW;AAAA,gBACX,MAAK;AAAA,gBACL,SAAQ;AAAA,gBACP,SAAK,CAAAC,MAAEC,EAAA,WAAWL,CAAM;AAAA;;uBAP7B,MAAmD;AAAA,cAAnDN,EAAmDY,GAAA,MAAA;AAAA,2BAAhC,MAAY;AAAA,sBAATN,CAAM,GAAA,CAAA;AAAA;;;;;;UAW9BN,EAAaa,CAAA;AAAA;;;;IAITR,EAAA,mBADRS,EAOEC,GAAA;AAAA;kBALSV,EAAA;AAAA,oDAAAA,EAAA,aAAUK;AAAA,MAClB,SAASL,EAAA;AAAA,MACV,MAAK;AAAA,MACJ,MAAMA,EAAA;AAAA,MACN,UAAQM,EAAA;AAAA;;;;"}
@@ -1,9 +1,9 @@
1
- import { y as D, F as I } from "./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-D0cYHPwr.js";
2
- import { T as R } from "./TargetPacketItemChooser-DD7JgCD9.js";
1
+ import { y as D, F as I } from "./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-CDTSzdb-.js";
2
+ import { T as R } from "./TargetPacketItemChooser-CS2Vvi2U.js";
3
3
  import { C as E } from "./cmdUtilities--4ZqS2At.js";
4
4
  import { resolveComponent as i, createElementBlock as y, openBlock as c, createBlock as v, createVNode as d, createCommentVNode as S, normalizeClass as z, withCtx as p, createElementVNode as _, createTextVNode as C, mergeProps as M, renderSlot as B, Fragment as w, renderList as N, withModifiers as F, toDisplayString as A } from "vue";
5
5
  import { _ as b } from "./CustomIcon-Cg3jCA_l.js";
6
- import { D as H } from "./DetailsDialog-DznGAE6i.js";
6
+ import { D as H } from "./DetailsDialog-CspQjoR5.js";
7
7
  const L = {
8
8
  name: "CommandParameterEditor",
9
9
  mixins: [E],
@@ -674,4 +674,4 @@ export {
674
674
  re as S,
675
675
  q as a
676
676
  };
677
- //# sourceMappingURL=ScriptChooser-DGbs03IW.js.map
677
+ //# sourceMappingURL=ScriptChooser-Bl0wisob.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScriptChooser-DGbs03IW.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 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.\n# See LICENSE.md for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2026, 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 :disabled=\"disabled\"\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 :disabled=\"disabled\"\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=\"handleStateSelect\"\n />\n <v-text-field\n v-if=\"manuallyEntered\"\n :model-value=\"textFieldValue\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n min-width=\"60px\"\n data-test=\"cmd-param-value\"\n @update:model-value=\"handleChange\"\n />\n <v-tooltip v-if=\"manuallyEntered\" location=\"top\">\n <template #activator=\"{ props }\">\n <v-icon v-bind=\"props\" class=\"ml-1\">mdi-information-outline</v-icon>\n </template>\n <span\n >Enter a raw value (e.g. numeric) for this parameter.<br />State names\n are not accepted here.</span\n >\n </v-tooltip>\n <v-text-field\n v-else\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 disabled: {\n type: Boolean,\n default: false,\n },\n allowManualEntry: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['update:modelValue', 'hazardous-change'],\n data() {\n return {\n manuallyEntered: false,\n }\n },\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 if (this.manuallyEntered) {\n return '__manual__'\n }\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 const options = Object.keys(this.states).map((label) => {\n return {\n label,\n ...this.states[label],\n }\n })\n if (this.allowManualEntry) {\n options.push({ label: 'MANUALLY_ENTERED', value: '__manual__' })\n }\n return options\n },\n hazardous() {\n if (!this.states) {\n return false\n }\n return (\n Object.entries(this.states)\n .find(([label, state]) => state.value === this.modelValue)\n ?.at(1)?.hazardous !== undefined\n )\n },\n stateClass() {\n return this.hazardous ? 'hazardous mr-4' : 'mr-4'\n },\n },\n watch: {\n hazardous: {\n immediate: true,\n handler(newVal) {\n this.$emit('hazardous-change', newVal)\n },\n },\n allowManualEntry(newVal) {\n if (!newVal) {\n this.manuallyEntered = false\n }\n },\n },\n methods: {\n handleChange(value) {\n this.$emit('update:modelValue', value)\n },\n handleStateSelect(value) {\n if (value === '__manual__') {\n this.manuallyEntered = true\n this.$emit('update:modelValue', '')\n } else {\n this.manuallyEntered = false\n this.$emit('update:modelValue', value)\n }\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 2026, OpenC3, Inc.\n# All Rights Reserved.\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.\n# See LICENSE.md for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-card>\n <div style=\"padding: 10px\">\n <target-packet-item-chooser\n ref=\"targetPacketChooser\"\n :initial-target-name=\"targetName\"\n :initial-packet-name=\"commandName\"\n :disabled=\"sendDisabled\"\n :button-text=\"showCommandButton ? 'Send' : null\"\n :show-queue-select=\"showQueueSelect\"\n :parameter-hazardous=\"hasHazardousParameter\"\n mode=\"cmd\"\n @on-set=\"commandChanged($event)\"\n @add-item=\"buildCmd($event)\"\n />\n </div>\n\n <v-card v-if=\"computedRows.length !== 0\">\n <v-card-title class=\"d-flex align-center justify-content-space-between\">\n Parameters\n <v-spacer />\n <v-text-field\n v-model=\"search\"\n label=\"Search\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n variant=\"outlined\"\n density=\"compact\"\n single-line\n hide-details\n class=\"search\"\n />\n </v-card-title>\n <v-data-table\n :headers=\"headers\"\n :items=\"computedRows\"\n :search=\"search\"\n :items-per-page=\"-1\"\n hide-default-footer\n multi-sort\n density=\"compact\"\n class=\"parameters-table\"\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 :disabled=\"item.disabled\"\n :allow-manual-entry=\"ignoreRangeChecks\"\n @hazardous-change=\"onParameterHazardousChange(item, $event)\"\n />\n </slot>\n </template>\n </v-data-table>\n </v-card>\n\n <v-menu v-model=\"contextMenuShown\" :target=\"[x, y]\">\n <v-list>\n <v-list-item\n v-for=\"(item, index) in contextMenuOptions\"\n :key=\"index\"\n @click.stop=\"item.action\"\n >\n <v-list-item-title>{{ item.title }}</v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n\n <details-dialog\n v-model=\"viewDetails\"\n :target-name=\"targetName\"\n :packet-name=\"commandName\"\n :item-name=\"parameterName\"\n :type=\"'cmd'\"\n />\n </v-card>\n</template>\n\n<script>\nimport 'sprintf-js'\nimport { OpenC3Api } from '@openc3/js-common/services'\nimport TargetPacketItemChooser from './TargetPacketItemChooser.vue'\nimport CommandParameterEditor from './CommandParameterEditor.vue'\nimport DetailsDialog from './DetailsDialog.vue'\nimport { CmdUtilities } from '../util'\n\nexport default {\n name: 'CommandEditor',\n components: {\n TargetPacketItemChooser,\n CommandParameterEditor,\n DetailsDialog,\n },\n mixins: [CmdUtilities],\n props: {\n initialTargetName: {\n type: String,\n default: null,\n },\n initialPacketName: {\n type: String,\n default: null,\n },\n cmdString: {\n type: String,\n default: null,\n },\n sendDisabled: {\n type: Boolean,\n default: false,\n },\n statesInHex: {\n type: Boolean,\n default: false,\n },\n showIgnoredParams: {\n type: Boolean,\n default: false,\n },\n cmdRaw: {\n type: Boolean,\n default: false,\n },\n showCommandButton: {\n type: Boolean,\n default: true,\n },\n showQueueSelect: {\n type: Boolean,\n default: true,\n },\n ignoreRangeChecks: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['command-changed', 'build-cmd', 'command-loaded'],\n data() {\n return {\n search: '',\n headers: [\n { title: 'Name', value: 'parameter_name' },\n { title: 'Value or State', value: 'val' },\n { title: 'Units', value: 'units' },\n { title: 'Range', value: 'range' },\n { title: 'Description', value: 'description' },\n ],\n api: null,\n targetName: '',\n commandName: '',\n commandDescription: '',\n ignoredParams: [],\n computedRows: [],\n reservedItemNames: [\n 'PACKET_TIMESECONDS',\n 'PACKET_TIMEFORMATTED',\n 'RECEIVED_TIMESECONDS',\n 'RECEIVED_TIMEFORMATTED',\n 'RECEIVED_COUNT',\n ],\n contextMenuShown: false,\n viewDetails: false,\n parameterName: '',\n hazardousParameters: {},\n x: 0,\n y: 0,\n contextMenuOptions: [\n {\n title: 'Details',\n action: () => {\n this.contextMenuShown = false\n this.viewDetails = true\n },\n },\n ],\n }\n },\n computed: {\n hasHazardousParameter() {\n return Object.values(this.hazardousParameters).some((v) => v === true)\n },\n },\n created() {\n this.api = new OpenC3Api()\n if (this.cmdString) {\n this.processCmdString()\n } else {\n this.targetName = this.initialTargetName\n this.commandName = this.initialPacketName\n this.updateCmdParams()\n }\n },\n methods: {\n onParameterHazardousChange(item, isHazardous) {\n this.hazardousParameters[item.parameter_name] = isHazardous\n },\n commandChanged(event) {\n if (\n this.targetName !== event.targetName ||\n this.commandName !== event.packetName\n ) {\n this.targetName = event.targetName\n this.commandName = event.packetName\n this.updateCmdParams()\n }\n this.$emit('command-changed', event)\n },\n buildCmd(event) {\n this.$emit('build-cmd', event)\n },\n showContextMenu(event, row) {\n event.preventDefault()\n this.parameterName = row.item.parameter_name\n this.contextMenuShown = false\n this.x = event.clientX\n this.y = event.clientY\n this.$nextTick(() => {\n this.contextMenuShown = true\n })\n },\n updateCmdParams() {\n this.ignoredParams = []\n this.computedRows = []\n this.hazardousParameters = {}\n if (this.targetName && this.commandName) {\n this.api\n .get_target(this.targetName)\n .then(\n (target) => {\n this.ignoredParams = target.ignored_parameters\n return this.api.get_cmd(this.targetName, this.commandName)\n },\n (error) => {\n // eslint-disable-next-line no-console\n console.error('Error getting ignored parameters:', error)\n },\n )\n .then(\n (command) => {\n if (command) {\n // Identify length fields that are auto-managed by variable_bit_size arrays\n // These should be shown but disabled - they will be set when the array is written\n const autoLengthFields = new Set()\n command.items.forEach((parameter) => {\n if (parameter.variable_bit_size) {\n autoLengthFields.add(\n parameter.variable_bit_size.length_item_name.toUpperCase(),\n )\n }\n })\n\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 // Disable auto-managed length fields for variable_bit_size arrays\n const isAutoLengthField = autoLengthFields.has(\n parameter.name.toUpperCase(),\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 disabled: isAutoLengthField,\n })\n }\n })\n this.commandDescription = command.description\n\n // Populate with parsed parameters if available\n this.populateParametersFromParsed()\n this.$emit('command-loaded', command)\n } else {\n this.$emit('command-loaded', null)\n }\n },\n (error) => {\n // eslint-disable-next-line no-console\n console.error('Error getting command parameters:', error)\n this.$emit('command-loaded', null)\n },\n )\n } else {\n this.$emit('command-loaded', null)\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<style scoped>\n.parameters-table {\n max-height: 50vh;\n}\n</style>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\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.\n# See LICENSE.md for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <span> Add environment variables (optional)</span>\n <v-table density=\"compact\">\n <tbody>\n <tr>\n <th scope=\"col\" class=\"text-left\">Key</th>\n <th scope=\"col\" class=\"text-left\">Value</th>\n <th scope=\"col\" class=\"text-right\" width=\"52px\">\n <v-btn\n icon=\"mdi-plus\"\n variant=\"text\"\n data-test=\"new-metadata-icon\"\n @click=\"addEnvVar\"\n />\n </th>\n </tr>\n <tr v-for=\"(env, i) in selected\" :key=\"`tr-${i}`\">\n <td>\n <v-text-field\n v-model=\"env.key\"\n density=\"compact\"\n type=\"text\"\n hide-details\n :readonly=\"env.readonly\"\n :data-test=\"`key-${i}`\"\n />\n </td>\n <td>\n <v-text-field\n v-model=\"env.value\"\n density=\"compact\"\n type=\"text\"\n hide-details\n :readonly=\"env.readonly\"\n :data-test=\"`value-${i}`\"\n />\n </td>\n <td>\n <v-btn\n icon=\"mdi-delete\"\n variant=\"text\"\n :data-test=\"`remove-env-icon-${i}`\"\n @click=\"delEnvVar(i)\"\n />\n </td>\n </tr>\n </tbody>\n </v-table>\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n modelValue: {\n type: Array,\n required: true,\n },\n },\n emits: ['update:modelValue'],\n computed: {\n selected: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n },\n methods: {\n addEnvVar: function () {\n this.selected.push({\n key: '',\n value: '',\n })\n },\n delEnvVar: function (index) {\n this.selected.splice(index, 1)\n },\n },\n}\n</script>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is 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.\n# See LICENSE.md for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-row>\n <v-autocomplete\n v-model=\"selected\"\n v-model:search=\"search\"\n density=\"compact\"\n variant=\"outlined\"\n hide-no-data\n hide-details\n class=\"mb-5\"\n label=\"Select script\"\n :loading=\"loading\"\n :items=\"items\"\n data-test=\"select-script\"\n />\n </v-row>\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\n\nexport default {\n // TODO: cache items\n // this was previously handled by Vuetify and the `cache-items` prop on `v-autocomplete`, but that feature was\n // dropped in Vuetify 3\n props: {\n modelValue: {\n type: String,\n default: null,\n }, // modelValue is the default prop when using v-model\n },\n emits: ['file', 'error'],\n data() {\n return {\n loading: false,\n search: '',\n selected: this.modelValue,\n scripts: [],\n items: [],\n }\n },\n watch: {\n selected(newVal, oldVal) {\n if (newVal !== oldVal) {\n if (newVal && newVal.slice(-1) === '*') {\n // Remove the * before returning\n this.$emit('file', newVal.substring(0, newVal.length - 1))\n } else {\n this.$emit('file', newVal)\n }\n }\n },\n search(val) {\n val && val !== this.selected && this.querySelections(val)\n },\n },\n created() {\n this.loading = true\n Api.get('/script-api/scripts')\n .then((response) => {\n this.scripts = response.data.filter((filename) => {\n return filename.includes('.rb') || filename.includes('.py')\n })\n this.items = this.scripts\n })\n .catch((error) => {\n this.$emit('error', {\n type: 'error',\n text: `Failed to connect to OpenC3. ${error}`,\n error: error,\n })\n })\n this.selected = this.modelValue ? this.modelValue : null\n this.loading = false\n },\n methods: {\n querySelections: function (v) {\n this.loading = true\n // Simulated ajax query\n setTimeout(() => {\n this.items = this.scripts.filter((e) => {\n return (e || '').toLowerCase().indexOf((v || '').toLowerCase()) > -1\n })\n this.loading = false\n }, 500)\n },\n },\n}\n</script>\n"],"names":["_sfc_main","CmdUtilities","options","label","state","newVal","value","_createElementBlock","$props","_openBlock","_hoisted_1","_createVNode","_component_v_select","$options","$data","_createBlock","_component_v_text_field","_component_v_tooltip","_withCtx","props","_component_v_icon","_mergeProps","_cache","_createElementVNode","TargetPacketItemChooser","CommandParameterEditor","DetailsDialog","v","OpenC3Api","item","isHazardous","event","row","target","error","command","autoLengthFields","parameter","val","range","isAutoLengthField","cmd","stateEntry","cmdString","parts","params","paramsString","paramPairs","bracketLevel","current","char","pair","firstSpace","key","parsed","stateKey","_component_v_card","_component_target_packet_item_chooser","$event","_component_v_card_title","_component_v_spacer","_component_v_data_table","_renderSlot","_ctx","_component_command_parameter_editor","_component_v_menu","_component_v_list","_Fragment","_renderList","index","_component_v_list_item","_withModifiers","_component_v_list_item_title","_createTextVNode","_toDisplayString","_component_details_dialog","_component_v_table","_component_v_btn","env","i","oldVal","Api","response","filename","e","_component_v_row","_component_v_autocomplete"],"mappings":"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"}
1
+ {"version":3,"file":"ScriptChooser-Bl0wisob.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 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.\n# See LICENSE.md for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2026, 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 :disabled=\"disabled\"\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 :disabled=\"disabled\"\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=\"handleStateSelect\"\n />\n <v-text-field\n v-if=\"manuallyEntered\"\n :model-value=\"textFieldValue\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n min-width=\"60px\"\n data-test=\"cmd-param-value\"\n @update:model-value=\"handleChange\"\n />\n <v-tooltip v-if=\"manuallyEntered\" location=\"top\">\n <template #activator=\"{ props }\">\n <v-icon v-bind=\"props\" class=\"ml-1\">mdi-information-outline</v-icon>\n </template>\n <span\n >Enter a raw value (e.g. numeric) for this parameter.<br />State names\n are not accepted here.</span\n >\n </v-tooltip>\n <v-text-field\n v-else\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 disabled: {\n type: Boolean,\n default: false,\n },\n allowManualEntry: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['update:modelValue', 'hazardous-change'],\n data() {\n return {\n manuallyEntered: false,\n }\n },\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 if (this.manuallyEntered) {\n return '__manual__'\n }\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 const options = Object.keys(this.states).map((label) => {\n return {\n label,\n ...this.states[label],\n }\n })\n if (this.allowManualEntry) {\n options.push({ label: 'MANUALLY_ENTERED', value: '__manual__' })\n }\n return options\n },\n hazardous() {\n if (!this.states) {\n return false\n }\n return (\n Object.entries(this.states)\n .find(([label, state]) => state.value === this.modelValue)\n ?.at(1)?.hazardous !== undefined\n )\n },\n stateClass() {\n return this.hazardous ? 'hazardous mr-4' : 'mr-4'\n },\n },\n watch: {\n hazardous: {\n immediate: true,\n handler(newVal) {\n this.$emit('hazardous-change', newVal)\n },\n },\n allowManualEntry(newVal) {\n if (!newVal) {\n this.manuallyEntered = false\n }\n },\n },\n methods: {\n handleChange(value) {\n this.$emit('update:modelValue', value)\n },\n handleStateSelect(value) {\n if (value === '__manual__') {\n this.manuallyEntered = true\n this.$emit('update:modelValue', '')\n } else {\n this.manuallyEntered = false\n this.$emit('update:modelValue', value)\n }\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 2026, OpenC3, Inc.\n# All Rights Reserved.\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.\n# See LICENSE.md for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-card>\n <div style=\"padding: 10px\">\n <target-packet-item-chooser\n ref=\"targetPacketChooser\"\n :initial-target-name=\"targetName\"\n :initial-packet-name=\"commandName\"\n :disabled=\"sendDisabled\"\n :button-text=\"showCommandButton ? 'Send' : null\"\n :show-queue-select=\"showQueueSelect\"\n :parameter-hazardous=\"hasHazardousParameter\"\n mode=\"cmd\"\n @on-set=\"commandChanged($event)\"\n @add-item=\"buildCmd($event)\"\n />\n </div>\n\n <v-card v-if=\"computedRows.length !== 0\">\n <v-card-title class=\"d-flex align-center justify-content-space-between\">\n Parameters\n <v-spacer />\n <v-text-field\n v-model=\"search\"\n label=\"Search\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n variant=\"outlined\"\n density=\"compact\"\n single-line\n hide-details\n class=\"search\"\n />\n </v-card-title>\n <v-data-table\n :headers=\"headers\"\n :items=\"computedRows\"\n :search=\"search\"\n :items-per-page=\"-1\"\n hide-default-footer\n multi-sort\n density=\"compact\"\n class=\"parameters-table\"\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 :disabled=\"item.disabled\"\n :allow-manual-entry=\"ignoreRangeChecks\"\n @hazardous-change=\"onParameterHazardousChange(item, $event)\"\n />\n </slot>\n </template>\n </v-data-table>\n </v-card>\n\n <v-menu v-model=\"contextMenuShown\" :target=\"[x, y]\">\n <v-list>\n <v-list-item\n v-for=\"(item, index) in contextMenuOptions\"\n :key=\"index\"\n @click.stop=\"item.action\"\n >\n <v-list-item-title>{{ item.title }}</v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n\n <details-dialog\n v-model=\"viewDetails\"\n :target-name=\"targetName\"\n :packet-name=\"commandName\"\n :item-name=\"parameterName\"\n :type=\"'cmd'\"\n />\n </v-card>\n</template>\n\n<script>\nimport 'sprintf-js'\nimport { OpenC3Api } from '@openc3/js-common/services'\nimport TargetPacketItemChooser from './TargetPacketItemChooser.vue'\nimport CommandParameterEditor from './CommandParameterEditor.vue'\nimport DetailsDialog from './DetailsDialog.vue'\nimport { CmdUtilities } from '../util'\n\nexport default {\n name: 'CommandEditor',\n components: {\n TargetPacketItemChooser,\n CommandParameterEditor,\n DetailsDialog,\n },\n mixins: [CmdUtilities],\n props: {\n initialTargetName: {\n type: String,\n default: null,\n },\n initialPacketName: {\n type: String,\n default: null,\n },\n cmdString: {\n type: String,\n default: null,\n },\n sendDisabled: {\n type: Boolean,\n default: false,\n },\n statesInHex: {\n type: Boolean,\n default: false,\n },\n showIgnoredParams: {\n type: Boolean,\n default: false,\n },\n cmdRaw: {\n type: Boolean,\n default: false,\n },\n showCommandButton: {\n type: Boolean,\n default: true,\n },\n showQueueSelect: {\n type: Boolean,\n default: true,\n },\n ignoreRangeChecks: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['command-changed', 'build-cmd', 'command-loaded'],\n data() {\n return {\n search: '',\n headers: [\n { title: 'Name', value: 'parameter_name' },\n { title: 'Value or State', value: 'val' },\n { title: 'Units', value: 'units' },\n { title: 'Range', value: 'range' },\n { title: 'Description', value: 'description' },\n ],\n api: null,\n targetName: '',\n commandName: '',\n commandDescription: '',\n ignoredParams: [],\n computedRows: [],\n reservedItemNames: [\n 'PACKET_TIMESECONDS',\n 'PACKET_TIMEFORMATTED',\n 'RECEIVED_TIMESECONDS',\n 'RECEIVED_TIMEFORMATTED',\n 'RECEIVED_COUNT',\n ],\n contextMenuShown: false,\n viewDetails: false,\n parameterName: '',\n hazardousParameters: {},\n x: 0,\n y: 0,\n contextMenuOptions: [\n {\n title: 'Details',\n action: () => {\n this.contextMenuShown = false\n this.viewDetails = true\n },\n },\n ],\n }\n },\n computed: {\n hasHazardousParameter() {\n return Object.values(this.hazardousParameters).some((v) => v === true)\n },\n },\n created() {\n this.api = new OpenC3Api()\n if (this.cmdString) {\n this.processCmdString()\n } else {\n this.targetName = this.initialTargetName\n this.commandName = this.initialPacketName\n this.updateCmdParams()\n }\n },\n methods: {\n onParameterHazardousChange(item, isHazardous) {\n this.hazardousParameters[item.parameter_name] = isHazardous\n },\n commandChanged(event) {\n if (\n this.targetName !== event.targetName ||\n this.commandName !== event.packetName\n ) {\n this.targetName = event.targetName\n this.commandName = event.packetName\n this.updateCmdParams()\n }\n this.$emit('command-changed', event)\n },\n buildCmd(event) {\n this.$emit('build-cmd', event)\n },\n showContextMenu(event, row) {\n event.preventDefault()\n this.parameterName = row.item.parameter_name\n this.contextMenuShown = false\n this.x = event.clientX\n this.y = event.clientY\n this.$nextTick(() => {\n this.contextMenuShown = true\n })\n },\n updateCmdParams() {\n this.ignoredParams = []\n this.computedRows = []\n this.hazardousParameters = {}\n if (this.targetName && this.commandName) {\n this.api\n .get_target(this.targetName)\n .then(\n (target) => {\n this.ignoredParams = target.ignored_parameters\n return this.api.get_cmd(this.targetName, this.commandName)\n },\n (error) => {\n // eslint-disable-next-line no-console\n console.error('Error getting ignored parameters:', error)\n },\n )\n .then(\n (command) => {\n if (command) {\n // Identify length fields that are auto-managed by variable_bit_size arrays\n // These should be shown but disabled - they will be set when the array is written\n const autoLengthFields = new Set()\n command.items.forEach((parameter) => {\n if (parameter.variable_bit_size) {\n autoLengthFields.add(\n parameter.variable_bit_size.length_item_name.toUpperCase(),\n )\n }\n })\n\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 // Disable auto-managed length fields for variable_bit_size arrays\n const isAutoLengthField = autoLengthFields.has(\n parameter.name.toUpperCase(),\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 disabled: isAutoLengthField,\n })\n }\n })\n this.commandDescription = command.description\n\n // Populate with parsed parameters if available\n this.populateParametersFromParsed()\n this.$emit('command-loaded', command)\n } else {\n this.$emit('command-loaded', null)\n }\n },\n (error) => {\n // eslint-disable-next-line no-console\n console.error('Error getting command parameters:', error)\n this.$emit('command-loaded', null)\n },\n )\n } else {\n this.$emit('command-loaded', null)\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<style scoped>\n.parameters-table {\n max-height: 50vh;\n}\n</style>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\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.\n# See LICENSE.md for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <span> Add environment variables (optional)</span>\n <v-table density=\"compact\">\n <tbody>\n <tr>\n <th scope=\"col\" class=\"text-left\">Key</th>\n <th scope=\"col\" class=\"text-left\">Value</th>\n <th scope=\"col\" class=\"text-right\" width=\"52px\">\n <v-btn\n icon=\"mdi-plus\"\n variant=\"text\"\n data-test=\"new-metadata-icon\"\n @click=\"addEnvVar\"\n />\n </th>\n </tr>\n <tr v-for=\"(env, i) in selected\" :key=\"`tr-${i}`\">\n <td>\n <v-text-field\n v-model=\"env.key\"\n density=\"compact\"\n type=\"text\"\n hide-details\n :readonly=\"env.readonly\"\n :data-test=\"`key-${i}`\"\n />\n </td>\n <td>\n <v-text-field\n v-model=\"env.value\"\n density=\"compact\"\n type=\"text\"\n hide-details\n :readonly=\"env.readonly\"\n :data-test=\"`value-${i}`\"\n />\n </td>\n <td>\n <v-btn\n icon=\"mdi-delete\"\n variant=\"text\"\n :data-test=\"`remove-env-icon-${i}`\"\n @click=\"delEnvVar(i)\"\n />\n </td>\n </tr>\n </tbody>\n </v-table>\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n modelValue: {\n type: Array,\n required: true,\n },\n },\n emits: ['update:modelValue'],\n computed: {\n selected: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n },\n methods: {\n addEnvVar: function () {\n this.selected.push({\n key: '',\n value: '',\n })\n },\n delEnvVar: function (index) {\n this.selected.splice(index, 1)\n },\n },\n}\n</script>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is 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.\n# See LICENSE.md for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-row>\n <v-autocomplete\n v-model=\"selected\"\n v-model:search=\"search\"\n density=\"compact\"\n variant=\"outlined\"\n hide-no-data\n hide-details\n class=\"mb-5\"\n label=\"Select script\"\n :loading=\"loading\"\n :items=\"items\"\n data-test=\"select-script\"\n />\n </v-row>\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\n\nexport default {\n // TODO: cache items\n // this was previously handled by Vuetify and the `cache-items` prop on `v-autocomplete`, but that feature was\n // dropped in Vuetify 3\n props: {\n modelValue: {\n type: String,\n default: null,\n }, // modelValue is the default prop when using v-model\n },\n emits: ['file', 'error'],\n data() {\n return {\n loading: false,\n search: '',\n selected: this.modelValue,\n scripts: [],\n items: [],\n }\n },\n watch: {\n selected(newVal, oldVal) {\n if (newVal !== oldVal) {\n if (newVal && newVal.slice(-1) === '*') {\n // Remove the * before returning\n this.$emit('file', newVal.substring(0, newVal.length - 1))\n } else {\n this.$emit('file', newVal)\n }\n }\n },\n search(val) {\n val && val !== this.selected && this.querySelections(val)\n },\n },\n created() {\n this.loading = true\n Api.get('/script-api/scripts')\n .then((response) => {\n this.scripts = response.data.filter((filename) => {\n return filename.includes('.rb') || filename.includes('.py')\n })\n this.items = this.scripts\n })\n .catch((error) => {\n this.$emit('error', {\n type: 'error',\n text: `Failed to connect to OpenC3. ${error}`,\n error: error,\n })\n })\n this.selected = this.modelValue ? this.modelValue : null\n this.loading = false\n },\n methods: {\n querySelections: function (v) {\n this.loading = true\n // Simulated ajax query\n setTimeout(() => {\n this.items = this.scripts.filter((e) => {\n return (e || '').toLowerCase().indexOf((v || '').toLowerCase()) > -1\n })\n this.loading = false\n }, 500)\n },\n },\n}\n</script>\n"],"names":["_sfc_main","CmdUtilities","options","label","state","newVal","value","_createElementBlock","$props","_openBlock","_hoisted_1","_createVNode","_component_v_select","$options","$data","_createBlock","_component_v_text_field","_component_v_tooltip","_withCtx","props","_component_v_icon","_mergeProps","_cache","_createElementVNode","TargetPacketItemChooser","CommandParameterEditor","DetailsDialog","v","OpenC3Api","item","isHazardous","event","row","target","error","command","autoLengthFields","parameter","val","range","isAutoLengthField","cmd","stateEntry","cmdString","parts","params","paramsString","paramPairs","bracketLevel","current","char","pair","firstSpace","key","parsed","stateKey","_component_v_card","_component_target_packet_item_chooser","$event","_component_v_card_title","_component_v_spacer","_component_v_data_table","_renderSlot","_ctx","_component_command_parameter_editor","_component_v_menu","_component_v_list","_Fragment","_renderList","index","_component_v_list_item","_withModifiers","_component_v_list_item_title","_createTextVNode","_toDisplayString","_component_details_dialog","_component_v_table","_component_v_btn","env","i","oldVal","Api","response","filename","e","_component_v_row","_component_v_autocomplete"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";const g=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-DtL207xP.cjs"),k=require("./TargetPacketItemChooser-PqyXKRlT.cjs"),v=require("./cmdUtilities-N30xDV6q.cjs"),e=require("vue"),_=require("./CustomIcon-8F08upeg.cjs"),w=require("./DetailsDialog-Bq9BPuoe.cjs"),b={name:"CommandParameterEditor",mixins:[v.CmdUtilities],props:{modelValue:{type:[String,Number],default:void 0},states:{type:Object,default:()=>null},statesInHex:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},allowManualEntry:{type:Boolean,default:!1}},emits:["update:modelValue","hazardous-change"],data(){return{manuallyEntered:!1}},computed:{textFieldValue(){return this.convertToString(this.modelValue)},stateValue(){return this.statesInHex?"0x"+this.modelValue.toString(16):this.modelValue},selectValue(){return this.manuallyEntered?"__manual__":this.modelValue===""?null:this.modelValue},stateOptions(){if(!this.states)return null;const t=Object.keys(this.states).map(a=>({label:a,...this.states[a]}));return this.allowManualEntry&&t.push({label:"MANUALLY_ENTERED",value:"__manual__"}),t},hazardous(){return this.states?Object.entries(this.states).find(([t,a])=>a.value===this.modelValue)?.at(1)?.hazardous!==void 0:!1},stateClass(){return this.hazardous?"hazardous mr-4":"mr-4"}},watch:{hazardous:{immediate:!0,handler(t){this.$emit("hazardous-change",t)}},allowManualEntry(t){t||(this.manuallyEntered=!1)}},methods:{handleChange(t){this.$emit("update:modelValue",t)},handleStateSelect(t){t==="__manual__"?(this.manuallyEntered=!0,this.$emit("update:modelValue","")):(this.manuallyEntered=!1,this.$emit("update:modelValue",t))}}},S={key:1,class:"d-flex align-center"};function P(t,a,n,i,l,o){const m=e.resolveComponent("v-text-field"),u=e.resolveComponent("v-select"),d=e.resolveComponent("v-icon"),s=e.resolveComponent("v-tooltip");return e.openBlock(),e.createElementBlock("div",null,[n.states?(e.openBlock(),e.createElementBlock("div",S,[e.createVNode(u,{items:o.stateOptions,"model-value":o.selectValue,disabled:n.disabled,"item-title":"label",class:e.normalizeClass(o.stateClass),"hide-details":"",density:"compact",variant:"outlined",placeholder:"Select...","min-width":"120px","data-test":"cmd-param-select","onUpdate:modelValue":o.handleStateSelect},null,8,["items","model-value","disabled","class","onUpdate:modelValue"]),l.manuallyEntered?(e.openBlock(),e.createBlock(m,{key:0,"model-value":o.textFieldValue,"hide-details":"",density:"compact",variant:"outlined","min-width":"60px","data-test":"cmd-param-value","onUpdate:modelValue":o.handleChange},null,8,["model-value","onUpdate:modelValue"])):e.createCommentVNode("",!0),l.manuallyEntered?(e.openBlock(),e.createBlock(s,{key:1,location:"top"},{activator:e.withCtx(({props:c})=>[e.createVNode(d,e.mergeProps(c,{class:"ml-1"}),{default:e.withCtx(()=>[...a[0]||(a[0]=[e.createTextVNode("mdi-information-outline",-1)])]),_:1},16)]),default:e.withCtx(()=>[a[1]||(a[1]=e.createElementVNode("span",null,[e.createTextVNode("Enter a raw value (e.g. numeric) for this parameter."),e.createElementVNode("br"),e.createTextVNode("State names are not accepted here.")],-1))]),_:1})):(e.openBlock(),e.createBlock(m,{key:2,"model-value":o.stateValue,disabled:"","hide-details":"",density:"compact",variant:"outlined","min-width":"60px","data-test":"cmd-param-value"},null,8,["model-value"]))])):(e.openBlock(),e.createBlock(m,{key:0,"model-value":o.textFieldValue,disabled:n.disabled,"hide-details":"",density:"compact",variant:"filled","data-test":"cmd-param-value","onUpdate:modelValue":o.handleChange},null,8,["model-value","disabled","onUpdate:modelValue"]))])}const C=_._export_sfc(b,[["render",P],["__scopeId","data-v-3e73bafa"]]),B={name:"CommandEditor",components:{TargetPacketItemChooser:k.TargetPacketItemChooser,CommandParameterEditor:C,DetailsDialog:w.DetailsDialog},mixins:[v.CmdUtilities],props:{initialTargetName:{type:String,default:null},initialPacketName:{type:String,default:null},cmdString:{type:String,default:null},sendDisabled:{type:Boolean,default:!1},statesInHex:{type:Boolean,default:!1},showIgnoredParams:{type:Boolean,default:!1},cmdRaw:{type:Boolean,default:!1},showCommandButton:{type:Boolean,default:!0},showQueueSelect:{type:Boolean,default:!0},ignoreRangeChecks:{type:Boolean,default:!1}},emits:["command-changed","build-cmd","command-loaded"],data(){return{search:"",headers:[{title:"Name",value:"parameter_name"},{title:"Value or State",value:"val"},{title:"Units",value:"units"},{title:"Range",value:"range"},{title:"Description",value:"description"}],api:null,targetName:"",commandName:"",commandDescription:"",ignoredParams:[],computedRows:[],reservedItemNames:["PACKET_TIMESECONDS","PACKET_TIMEFORMATTED","RECEIVED_TIMESECONDS","RECEIVED_TIMEFORMATTED","RECEIVED_COUNT"],contextMenuShown:!1,viewDetails:!1,parameterName:"",hazardousParameters:{},x:0,y:0,contextMenuOptions:[{title:"Details",action:()=>{this.contextMenuShown=!1,this.viewDetails=!0}}]}},computed:{hasHazardousParameter(){return Object.values(this.hazardousParameters).some(t=>t===!0)}},created(){this.api=new g.yi,this.cmdString?this.processCmdString():(this.targetName=this.initialTargetName,this.commandName=this.initialPacketName,this.updateCmdParams())},methods:{onParameterHazardousChange(t,a){this.hazardousParameters[t.parameter_name]=a},commandChanged(t){(this.targetName!==t.targetName||this.commandName!==t.packetName)&&(this.targetName=t.targetName,this.commandName=t.packetName,this.updateCmdParams()),this.$emit("command-changed",t)},buildCmd(t){this.$emit("build-cmd",t)},showContextMenu(t,a){t.preventDefault(),this.parameterName=a.item.parameter_name,this.contextMenuShown=!1,this.x=t.clientX,this.y=t.clientY,this.$nextTick(()=>{this.contextMenuShown=!0})},updateCmdParams(){this.ignoredParams=[],this.computedRows=[],this.hazardousParameters={},this.targetName&&this.commandName?this.api.get_target(this.targetName).then(t=>(this.ignoredParams=t.ignored_parameters,this.api.get_cmd(this.targetName,this.commandName)),t=>{console.error("Error getting ignored parameters:",t)}).then(t=>{if(t){const a=new Set;t.items.forEach(n=>{n.variable_bit_size&&a.add(n.variable_bit_size.length_item_name.toUpperCase())}),t.items.forEach(n=>{if(!this.reservedItemNames.includes(n.name)&&!n.hidden&&(!this.ignoredParams.includes(n.name)||this.showIgnoredParams)){let i=n.default;!n.states&&n.data_type==="STRING"&&typeof n.default=="string"&&(i=`'${i}'`),n.required&&(i=null),n.format_string&&n.default&&(i=sprintf(n.format_string,n.default)),Object.prototype.toString.call(i).slice(8,-1)==="Object"&&(i=this.convertToString(i));let l="N/A";n.minimum!=null&&n.maximum!=null&&(n.data_type==="FLOAT"&&(n.minimum<-1e6&&(n.minimum=n.minimum.toExponential(3)),n.maximum>1e6&&(n.maximum=n.maximum.toExponential(3))),l=`${n.minimum}..${n.maximum}`);const o=a.has(n.name.toUpperCase());this.computedRows.push({parameter_name:n.name,val:i,states:n.states,description:n.description,range:l,units:n.units,type:n.data_type,disabled:o})}}),this.commandDescription=t.description,this.populateParametersFromParsed(),this.$emit("command-loaded",t)}else this.$emit("command-loaded",null)},t=>{console.error("Error getting command parameters:",t),this.$emit("command-loaded",null)}):this.$emit("command-loaded",null)},triggerUpdateCmdParams(){this.updateCmdParams()},getRows(){return this.computedRows},getCmdString(){let t=`${this.targetName} ${this.commandName}`;if(this.computedRows.length===0)return t;t+=" with";for(const a of this.computedRows){if(a.val===null)throw new Error(`Required parameter ${a.parameter_name} not set`);if(a.val!==null&&a.val!==void 0&&a.val!==""){if(a.states){const i=Object.entries(a.states).find(([,l])=>l.value===a.val);if(i){t+=` ${a.parameter_name} '${i[0]}',`;continue}}let n=this.convertToString(a.val);n.includes(" ")&&!this.isArray(n)?t+=` ${a.parameter_name} '${n}',`:t+=` ${a.parameter_name} ${n},`}}return t.slice(0,-1)},parseCmdString(t){const a=t.split(" ");if(a.length<2)return{target:"",command:"",params:{}};if(a.length===2)return{target:a[0],command:a[1],params:{}};if(a[2]!=="with")return{target:"",command:"",params:{}};const n=a[0],i=a[1];let l={};const o=t.split(" with ")[1];let m=[],u=0,d="";for(let s of o)s==="["?(u++,d+=s):s==="]"?(u--,d+=s):s===","&&u===0?(m.push(d.trim()),d=""):d+=s;d.trim()!==""&&m.push(d.trim());for(let s of m){let c=s.indexOf(" ");if(c>0){let h=s.substring(0,c).trim(),f=s.substring(c+1).trim();l[h]=f}}return{target:n,command:i,params:l}},processCmdString(){const t=this.parseCmdString(this.cmdString);t.target&&t.command&&(this.targetName=t.target,this.commandName=t.command,this.parsedParameters=t.params,this.updateCmdParams())},populateParametersFromParsed(){!this.parsedParameters||Object.keys(this.parsedParameters).length===0||this.$nextTick(()=>{setTimeout(()=>{this.computedRows.forEach(t=>{if(this.parsedParameters.hasOwnProperty(t.parameter_name)){const a=this.parsedParameters[t.parameter_name];if(t.states&&typeof a=="string"){const n=Object.keys(t.states).find(i=>i===a||i.toLowerCase()===a.toLowerCase());n?t.val=t.states[n].value:t.val=a}else t.type==="STRING"&&typeof a=="string"?t.val=a.startsWith("'")||a.startsWith('"')?a:`'${a}'`:t.val=a}})},100)})}}},T={style:{padding:"10px"}};function D(t,a,n,i,l,o){const m=e.resolveComponent("target-packet-item-chooser"),u=e.resolveComponent("v-spacer"),d=e.resolveComponent("v-text-field"),s=e.resolveComponent("v-card-title"),c=e.resolveComponent("command-parameter-editor"),h=e.resolveComponent("v-data-table"),f=e.resolveComponent("v-card"),V=e.resolveComponent("v-list-item-title"),y=e.resolveComponent("v-list-item"),x=e.resolveComponent("v-list"),N=e.resolveComponent("v-menu"),E=e.resolveComponent("details-dialog");return e.openBlock(),e.createBlock(f,null,{default:e.withCtx(()=>[e.createElementVNode("div",T,[e.createVNode(m,{ref:"targetPacketChooser","initial-target-name":l.targetName,"initial-packet-name":l.commandName,disabled:n.sendDisabled,"button-text":n.showCommandButton?"Send":null,"show-queue-select":n.showQueueSelect,"parameter-hazardous":o.hasHazardousParameter,mode:"cmd",onOnSet:a[0]||(a[0]=r=>o.commandChanged(r)),onAddItem:a[1]||(a[1]=r=>o.buildCmd(r))},null,8,["initial-target-name","initial-packet-name","disabled","button-text","show-queue-select","parameter-hazardous"])]),l.computedRows.length!==0?(e.openBlock(),e.createBlock(f,{key:0},{default:e.withCtx(()=>[e.createVNode(s,{class:"d-flex align-center justify-content-space-between"},{default:e.withCtx(()=>[a[5]||(a[5]=e.createTextVNode(" Parameters ",-1)),e.createVNode(u),e.createVNode(d,{modelValue:l.search,"onUpdate:modelValue":a[2]||(a[2]=r=>l.search=r),label:"Search","prepend-inner-icon":"mdi-magnify",clearable:"",variant:"outlined",density:"compact","single-line":"","hide-details":"",class:"search"},null,8,["modelValue"])]),_:1}),e.createVNode(h,{headers:l.headers,items:l.computedRows,search:l.search,"items-per-page":-1,"hide-default-footer":"","multi-sort":"",density:"compact",class:"parameters-table","onContextmenu:row":o.showContextMenu},{"item.val":e.withCtx(({item:r})=>[e.renderSlot(t.$slots,"parameter-editor",{item:r,statesInHex:n.statesInHex},()=>[e.createVNode(c,{modelValue:r.val,"onUpdate:modelValue":p=>r.val=p,states:r.states,"states-in-hex":n.statesInHex,disabled:r.disabled,"allow-manual-entry":n.ignoreRangeChecks,onHazardousChange:p=>o.onParameterHazardousChange(r,p)},null,8,["modelValue","onUpdate:modelValue","states","states-in-hex","disabled","allow-manual-entry","onHazardousChange"])],!0)]),_:3},8,["headers","items","search","onContextmenu:row"])]),_:3})):e.createCommentVNode("",!0),e.createVNode(N,{modelValue:l.contextMenuShown,"onUpdate:modelValue":a[3]||(a[3]=r=>l.contextMenuShown=r),target:[l.x,l.y]},{default:e.withCtx(()=>[e.createVNode(x,null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.contextMenuOptions,(r,p)=>(e.openBlock(),e.createBlock(y,{key:p,onClick:e.withModifiers(r.action,["stop"])},{default:e.withCtx(()=>[e.createVNode(V,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r.title),1)]),_:2},1024)]),_:2},1032,["onClick"]))),128))]),_:1})]),_:1},8,["modelValue","target"]),e.createVNode(E,{modelValue:l.viewDetails,"onUpdate:modelValue":a[4]||(a[4]=r=>l.viewDetails=r),"target-name":l.targetName,"packet-name":l.commandName,"item-name":l.parameterName,type:"cmd"},null,8,["modelValue","target-name","packet-name","item-name"])]),_:3})}const U=_._export_sfc(B,[["render",D],["__scopeId","data-v-f2e73c29"]]),I={props:{modelValue:{type:Array,required:!0}},emits:["update:modelValue"],computed:{selected:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}}},methods:{addEnvVar:function(){this.selected.push({key:"",value:""})},delEnvVar:function(t){this.selected.splice(t,1)}}},O={scope:"col",class:"text-right",width:"52px"};function R(t,a,n,i,l,o){const m=e.resolveComponent("v-btn"),u=e.resolveComponent("v-text-field"),d=e.resolveComponent("v-table");return e.openBlock(),e.createElementBlock("div",null,[a[2]||(a[2]=e.createElementVNode("span",null," Add environment variables (optional)",-1)),e.createVNode(d,{density:"compact"},{default:e.withCtx(()=>[e.createElementVNode("tbody",null,[e.createElementVNode("tr",null,[a[0]||(a[0]=e.createElementVNode("th",{scope:"col",class:"text-left"},"Key",-1)),a[1]||(a[1]=e.createElementVNode("th",{scope:"col",class:"text-left"},"Value",-1)),e.createElementVNode("th",O,[e.createVNode(m,{icon:"mdi-plus",variant:"text","data-test":"new-metadata-icon",onClick:o.addEnvVar},null,8,["onClick"])])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.selected,(s,c)=>(e.openBlock(),e.createElementBlock("tr",{key:`tr-${c}`},[e.createElementVNode("td",null,[e.createVNode(u,{modelValue:s.key,"onUpdate:modelValue":h=>s.key=h,density:"compact",type:"text","hide-details":"",readonly:s.readonly,"data-test":`key-${c}`},null,8,["modelValue","onUpdate:modelValue","readonly","data-test"])]),e.createElementVNode("td",null,[e.createVNode(u,{modelValue:s.value,"onUpdate:modelValue":h=>s.value=h,density:"compact",type:"text","hide-details":"",readonly:s.readonly,"data-test":`value-${c}`},null,8,["modelValue","onUpdate:modelValue","readonly","data-test"])]),e.createElementVNode("td",null,[e.createVNode(m,{icon:"mdi-delete",variant:"text","data-test":`remove-env-icon-${c}`,onClick:h=>o.delEnvVar(c)},null,8,["data-test","onClick"])])]))),128))])]),_:1})])}const z=_._export_sfc(I,[["render",R]]),M={props:{modelValue:{type:String,default:null}},emits:["file","error"],data(){return{loading:!1,search:"",selected:this.modelValue,scripts:[],items:[]}},watch:{selected(t,a){t!==a&&(t&&t.slice(-1)==="*"?this.$emit("file",t.substring(0,t.length-1)):this.$emit("file",t))},search(t){t&&t!==this.selected&&this.querySelections(t)}},created(){this.loading=!0,g.Fr.get("/script-api/scripts").then(t=>{this.scripts=t.data.filter(a=>a.includes(".rb")||a.includes(".py")),this.items=this.scripts}).catch(t=>{this.$emit("error",{type:"error",text:`Failed to connect to OpenC3. ${t}`,error:t})}),this.selected=this.modelValue?this.modelValue:null,this.loading=!1},methods:{querySelections:function(t){this.loading=!0,setTimeout(()=>{this.items=this.scripts.filter(a=>(a||"").toLowerCase().indexOf((t||"").toLowerCase())>-1),this.loading=!1},500)}}};function F(t,a,n,i,l,o){const m=e.resolveComponent("v-autocomplete"),u=e.resolveComponent("v-row");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(u,null,{default:e.withCtx(()=>[e.createVNode(m,{modelValue:l.selected,"onUpdate:modelValue":a[0]||(a[0]=d=>l.selected=d),search:l.search,"onUpdate:search":a[1]||(a[1]=d=>l.search=d),density:"compact",variant:"outlined","hide-no-data":"","hide-details":"",class:"mb-5",label:"Select script",loading:l.loading,items:l.items,"data-test":"select-script"},null,8,["modelValue","search","loading","items"])]),_:1})])}const q=_._export_sfc(M,[["render",F]]);exports.CommandEditor=U;exports.CommandParameterEditor=C;exports.EnvironmentChooser=z;exports.ScriptChooser=q;
2
- //# sourceMappingURL=ScriptChooser-Cm_HEyBf.cjs.map
1
+ "use strict";const g=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-MfH160rD.cjs"),k=require("./TargetPacketItemChooser-BvXBVNLj.cjs"),v=require("./cmdUtilities-N30xDV6q.cjs"),e=require("vue"),_=require("./CustomIcon-8F08upeg.cjs"),w=require("./DetailsDialog-D_my0nhs.cjs"),b={name:"CommandParameterEditor",mixins:[v.CmdUtilities],props:{modelValue:{type:[String,Number],default:void 0},states:{type:Object,default:()=>null},statesInHex:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},allowManualEntry:{type:Boolean,default:!1}},emits:["update:modelValue","hazardous-change"],data(){return{manuallyEntered:!1}},computed:{textFieldValue(){return this.convertToString(this.modelValue)},stateValue(){return this.statesInHex?"0x"+this.modelValue.toString(16):this.modelValue},selectValue(){return this.manuallyEntered?"__manual__":this.modelValue===""?null:this.modelValue},stateOptions(){if(!this.states)return null;const t=Object.keys(this.states).map(a=>({label:a,...this.states[a]}));return this.allowManualEntry&&t.push({label:"MANUALLY_ENTERED",value:"__manual__"}),t},hazardous(){return this.states?Object.entries(this.states).find(([t,a])=>a.value===this.modelValue)?.at(1)?.hazardous!==void 0:!1},stateClass(){return this.hazardous?"hazardous mr-4":"mr-4"}},watch:{hazardous:{immediate:!0,handler(t){this.$emit("hazardous-change",t)}},allowManualEntry(t){t||(this.manuallyEntered=!1)}},methods:{handleChange(t){this.$emit("update:modelValue",t)},handleStateSelect(t){t==="__manual__"?(this.manuallyEntered=!0,this.$emit("update:modelValue","")):(this.manuallyEntered=!1,this.$emit("update:modelValue",t))}}},S={key:1,class:"d-flex align-center"};function P(t,a,n,i,l,o){const m=e.resolveComponent("v-text-field"),u=e.resolveComponent("v-select"),d=e.resolveComponent("v-icon"),s=e.resolveComponent("v-tooltip");return e.openBlock(),e.createElementBlock("div",null,[n.states?(e.openBlock(),e.createElementBlock("div",S,[e.createVNode(u,{items:o.stateOptions,"model-value":o.selectValue,disabled:n.disabled,"item-title":"label",class:e.normalizeClass(o.stateClass),"hide-details":"",density:"compact",variant:"outlined",placeholder:"Select...","min-width":"120px","data-test":"cmd-param-select","onUpdate:modelValue":o.handleStateSelect},null,8,["items","model-value","disabled","class","onUpdate:modelValue"]),l.manuallyEntered?(e.openBlock(),e.createBlock(m,{key:0,"model-value":o.textFieldValue,"hide-details":"",density:"compact",variant:"outlined","min-width":"60px","data-test":"cmd-param-value","onUpdate:modelValue":o.handleChange},null,8,["model-value","onUpdate:modelValue"])):e.createCommentVNode("",!0),l.manuallyEntered?(e.openBlock(),e.createBlock(s,{key:1,location:"top"},{activator:e.withCtx(({props:c})=>[e.createVNode(d,e.mergeProps(c,{class:"ml-1"}),{default:e.withCtx(()=>[...a[0]||(a[0]=[e.createTextVNode("mdi-information-outline",-1)])]),_:1},16)]),default:e.withCtx(()=>[a[1]||(a[1]=e.createElementVNode("span",null,[e.createTextVNode("Enter a raw value (e.g. numeric) for this parameter."),e.createElementVNode("br"),e.createTextVNode("State names are not accepted here.")],-1))]),_:1})):(e.openBlock(),e.createBlock(m,{key:2,"model-value":o.stateValue,disabled:"","hide-details":"",density:"compact",variant:"outlined","min-width":"60px","data-test":"cmd-param-value"},null,8,["model-value"]))])):(e.openBlock(),e.createBlock(m,{key:0,"model-value":o.textFieldValue,disabled:n.disabled,"hide-details":"",density:"compact",variant:"filled","data-test":"cmd-param-value","onUpdate:modelValue":o.handleChange},null,8,["model-value","disabled","onUpdate:modelValue"]))])}const C=_._export_sfc(b,[["render",P],["__scopeId","data-v-3e73bafa"]]),B={name:"CommandEditor",components:{TargetPacketItemChooser:k.TargetPacketItemChooser,CommandParameterEditor:C,DetailsDialog:w.DetailsDialog},mixins:[v.CmdUtilities],props:{initialTargetName:{type:String,default:null},initialPacketName:{type:String,default:null},cmdString:{type:String,default:null},sendDisabled:{type:Boolean,default:!1},statesInHex:{type:Boolean,default:!1},showIgnoredParams:{type:Boolean,default:!1},cmdRaw:{type:Boolean,default:!1},showCommandButton:{type:Boolean,default:!0},showQueueSelect:{type:Boolean,default:!0},ignoreRangeChecks:{type:Boolean,default:!1}},emits:["command-changed","build-cmd","command-loaded"],data(){return{search:"",headers:[{title:"Name",value:"parameter_name"},{title:"Value or State",value:"val"},{title:"Units",value:"units"},{title:"Range",value:"range"},{title:"Description",value:"description"}],api:null,targetName:"",commandName:"",commandDescription:"",ignoredParams:[],computedRows:[],reservedItemNames:["PACKET_TIMESECONDS","PACKET_TIMEFORMATTED","RECEIVED_TIMESECONDS","RECEIVED_TIMEFORMATTED","RECEIVED_COUNT"],contextMenuShown:!1,viewDetails:!1,parameterName:"",hazardousParameters:{},x:0,y:0,contextMenuOptions:[{title:"Details",action:()=>{this.contextMenuShown=!1,this.viewDetails=!0}}]}},computed:{hasHazardousParameter(){return Object.values(this.hazardousParameters).some(t=>t===!0)}},created(){this.api=new g.yi,this.cmdString?this.processCmdString():(this.targetName=this.initialTargetName,this.commandName=this.initialPacketName,this.updateCmdParams())},methods:{onParameterHazardousChange(t,a){this.hazardousParameters[t.parameter_name]=a},commandChanged(t){(this.targetName!==t.targetName||this.commandName!==t.packetName)&&(this.targetName=t.targetName,this.commandName=t.packetName,this.updateCmdParams()),this.$emit("command-changed",t)},buildCmd(t){this.$emit("build-cmd",t)},showContextMenu(t,a){t.preventDefault(),this.parameterName=a.item.parameter_name,this.contextMenuShown=!1,this.x=t.clientX,this.y=t.clientY,this.$nextTick(()=>{this.contextMenuShown=!0})},updateCmdParams(){this.ignoredParams=[],this.computedRows=[],this.hazardousParameters={},this.targetName&&this.commandName?this.api.get_target(this.targetName).then(t=>(this.ignoredParams=t.ignored_parameters,this.api.get_cmd(this.targetName,this.commandName)),t=>{console.error("Error getting ignored parameters:",t)}).then(t=>{if(t){const a=new Set;t.items.forEach(n=>{n.variable_bit_size&&a.add(n.variable_bit_size.length_item_name.toUpperCase())}),t.items.forEach(n=>{if(!this.reservedItemNames.includes(n.name)&&!n.hidden&&(!this.ignoredParams.includes(n.name)||this.showIgnoredParams)){let i=n.default;!n.states&&n.data_type==="STRING"&&typeof n.default=="string"&&(i=`'${i}'`),n.required&&(i=null),n.format_string&&n.default&&(i=sprintf(n.format_string,n.default)),Object.prototype.toString.call(i).slice(8,-1)==="Object"&&(i=this.convertToString(i));let l="N/A";n.minimum!=null&&n.maximum!=null&&(n.data_type==="FLOAT"&&(n.minimum<-1e6&&(n.minimum=n.minimum.toExponential(3)),n.maximum>1e6&&(n.maximum=n.maximum.toExponential(3))),l=`${n.minimum}..${n.maximum}`);const o=a.has(n.name.toUpperCase());this.computedRows.push({parameter_name:n.name,val:i,states:n.states,description:n.description,range:l,units:n.units,type:n.data_type,disabled:o})}}),this.commandDescription=t.description,this.populateParametersFromParsed(),this.$emit("command-loaded",t)}else this.$emit("command-loaded",null)},t=>{console.error("Error getting command parameters:",t),this.$emit("command-loaded",null)}):this.$emit("command-loaded",null)},triggerUpdateCmdParams(){this.updateCmdParams()},getRows(){return this.computedRows},getCmdString(){let t=`${this.targetName} ${this.commandName}`;if(this.computedRows.length===0)return t;t+=" with";for(const a of this.computedRows){if(a.val===null)throw new Error(`Required parameter ${a.parameter_name} not set`);if(a.val!==null&&a.val!==void 0&&a.val!==""){if(a.states){const i=Object.entries(a.states).find(([,l])=>l.value===a.val);if(i){t+=` ${a.parameter_name} '${i[0]}',`;continue}}let n=this.convertToString(a.val);n.includes(" ")&&!this.isArray(n)?t+=` ${a.parameter_name} '${n}',`:t+=` ${a.parameter_name} ${n},`}}return t.slice(0,-1)},parseCmdString(t){const a=t.split(" ");if(a.length<2)return{target:"",command:"",params:{}};if(a.length===2)return{target:a[0],command:a[1],params:{}};if(a[2]!=="with")return{target:"",command:"",params:{}};const n=a[0],i=a[1];let l={};const o=t.split(" with ")[1];let m=[],u=0,d="";for(let s of o)s==="["?(u++,d+=s):s==="]"?(u--,d+=s):s===","&&u===0?(m.push(d.trim()),d=""):d+=s;d.trim()!==""&&m.push(d.trim());for(let s of m){let c=s.indexOf(" ");if(c>0){let h=s.substring(0,c).trim(),f=s.substring(c+1).trim();l[h]=f}}return{target:n,command:i,params:l}},processCmdString(){const t=this.parseCmdString(this.cmdString);t.target&&t.command&&(this.targetName=t.target,this.commandName=t.command,this.parsedParameters=t.params,this.updateCmdParams())},populateParametersFromParsed(){!this.parsedParameters||Object.keys(this.parsedParameters).length===0||this.$nextTick(()=>{setTimeout(()=>{this.computedRows.forEach(t=>{if(this.parsedParameters.hasOwnProperty(t.parameter_name)){const a=this.parsedParameters[t.parameter_name];if(t.states&&typeof a=="string"){const n=Object.keys(t.states).find(i=>i===a||i.toLowerCase()===a.toLowerCase());n?t.val=t.states[n].value:t.val=a}else t.type==="STRING"&&typeof a=="string"?t.val=a.startsWith("'")||a.startsWith('"')?a:`'${a}'`:t.val=a}})},100)})}}},T={style:{padding:"10px"}};function D(t,a,n,i,l,o){const m=e.resolveComponent("target-packet-item-chooser"),u=e.resolveComponent("v-spacer"),d=e.resolveComponent("v-text-field"),s=e.resolveComponent("v-card-title"),c=e.resolveComponent("command-parameter-editor"),h=e.resolveComponent("v-data-table"),f=e.resolveComponent("v-card"),V=e.resolveComponent("v-list-item-title"),y=e.resolveComponent("v-list-item"),x=e.resolveComponent("v-list"),N=e.resolveComponent("v-menu"),E=e.resolveComponent("details-dialog");return e.openBlock(),e.createBlock(f,null,{default:e.withCtx(()=>[e.createElementVNode("div",T,[e.createVNode(m,{ref:"targetPacketChooser","initial-target-name":l.targetName,"initial-packet-name":l.commandName,disabled:n.sendDisabled,"button-text":n.showCommandButton?"Send":null,"show-queue-select":n.showQueueSelect,"parameter-hazardous":o.hasHazardousParameter,mode:"cmd",onOnSet:a[0]||(a[0]=r=>o.commandChanged(r)),onAddItem:a[1]||(a[1]=r=>o.buildCmd(r))},null,8,["initial-target-name","initial-packet-name","disabled","button-text","show-queue-select","parameter-hazardous"])]),l.computedRows.length!==0?(e.openBlock(),e.createBlock(f,{key:0},{default:e.withCtx(()=>[e.createVNode(s,{class:"d-flex align-center justify-content-space-between"},{default:e.withCtx(()=>[a[5]||(a[5]=e.createTextVNode(" Parameters ",-1)),e.createVNode(u),e.createVNode(d,{modelValue:l.search,"onUpdate:modelValue":a[2]||(a[2]=r=>l.search=r),label:"Search","prepend-inner-icon":"mdi-magnify",clearable:"",variant:"outlined",density:"compact","single-line":"","hide-details":"",class:"search"},null,8,["modelValue"])]),_:1}),e.createVNode(h,{headers:l.headers,items:l.computedRows,search:l.search,"items-per-page":-1,"hide-default-footer":"","multi-sort":"",density:"compact",class:"parameters-table","onContextmenu:row":o.showContextMenu},{"item.val":e.withCtx(({item:r})=>[e.renderSlot(t.$slots,"parameter-editor",{item:r,statesInHex:n.statesInHex},()=>[e.createVNode(c,{modelValue:r.val,"onUpdate:modelValue":p=>r.val=p,states:r.states,"states-in-hex":n.statesInHex,disabled:r.disabled,"allow-manual-entry":n.ignoreRangeChecks,onHazardousChange:p=>o.onParameterHazardousChange(r,p)},null,8,["modelValue","onUpdate:modelValue","states","states-in-hex","disabled","allow-manual-entry","onHazardousChange"])],!0)]),_:3},8,["headers","items","search","onContextmenu:row"])]),_:3})):e.createCommentVNode("",!0),e.createVNode(N,{modelValue:l.contextMenuShown,"onUpdate:modelValue":a[3]||(a[3]=r=>l.contextMenuShown=r),target:[l.x,l.y]},{default:e.withCtx(()=>[e.createVNode(x,null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.contextMenuOptions,(r,p)=>(e.openBlock(),e.createBlock(y,{key:p,onClick:e.withModifiers(r.action,["stop"])},{default:e.withCtx(()=>[e.createVNode(V,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r.title),1)]),_:2},1024)]),_:2},1032,["onClick"]))),128))]),_:1})]),_:1},8,["modelValue","target"]),e.createVNode(E,{modelValue:l.viewDetails,"onUpdate:modelValue":a[4]||(a[4]=r=>l.viewDetails=r),"target-name":l.targetName,"packet-name":l.commandName,"item-name":l.parameterName,type:"cmd"},null,8,["modelValue","target-name","packet-name","item-name"])]),_:3})}const U=_._export_sfc(B,[["render",D],["__scopeId","data-v-f2e73c29"]]),I={props:{modelValue:{type:Array,required:!0}},emits:["update:modelValue"],computed:{selected:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}}},methods:{addEnvVar:function(){this.selected.push({key:"",value:""})},delEnvVar:function(t){this.selected.splice(t,1)}}},O={scope:"col",class:"text-right",width:"52px"};function R(t,a,n,i,l,o){const m=e.resolveComponent("v-btn"),u=e.resolveComponent("v-text-field"),d=e.resolveComponent("v-table");return e.openBlock(),e.createElementBlock("div",null,[a[2]||(a[2]=e.createElementVNode("span",null," Add environment variables (optional)",-1)),e.createVNode(d,{density:"compact"},{default:e.withCtx(()=>[e.createElementVNode("tbody",null,[e.createElementVNode("tr",null,[a[0]||(a[0]=e.createElementVNode("th",{scope:"col",class:"text-left"},"Key",-1)),a[1]||(a[1]=e.createElementVNode("th",{scope:"col",class:"text-left"},"Value",-1)),e.createElementVNode("th",O,[e.createVNode(m,{icon:"mdi-plus",variant:"text","data-test":"new-metadata-icon",onClick:o.addEnvVar},null,8,["onClick"])])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.selected,(s,c)=>(e.openBlock(),e.createElementBlock("tr",{key:`tr-${c}`},[e.createElementVNode("td",null,[e.createVNode(u,{modelValue:s.key,"onUpdate:modelValue":h=>s.key=h,density:"compact",type:"text","hide-details":"",readonly:s.readonly,"data-test":`key-${c}`},null,8,["modelValue","onUpdate:modelValue","readonly","data-test"])]),e.createElementVNode("td",null,[e.createVNode(u,{modelValue:s.value,"onUpdate:modelValue":h=>s.value=h,density:"compact",type:"text","hide-details":"",readonly:s.readonly,"data-test":`value-${c}`},null,8,["modelValue","onUpdate:modelValue","readonly","data-test"])]),e.createElementVNode("td",null,[e.createVNode(m,{icon:"mdi-delete",variant:"text","data-test":`remove-env-icon-${c}`,onClick:h=>o.delEnvVar(c)},null,8,["data-test","onClick"])])]))),128))])]),_:1})])}const z=_._export_sfc(I,[["render",R]]),M={props:{modelValue:{type:String,default:null}},emits:["file","error"],data(){return{loading:!1,search:"",selected:this.modelValue,scripts:[],items:[]}},watch:{selected(t,a){t!==a&&(t&&t.slice(-1)==="*"?this.$emit("file",t.substring(0,t.length-1)):this.$emit("file",t))},search(t){t&&t!==this.selected&&this.querySelections(t)}},created(){this.loading=!0,g.Fr.get("/script-api/scripts").then(t=>{this.scripts=t.data.filter(a=>a.includes(".rb")||a.includes(".py")),this.items=this.scripts}).catch(t=>{this.$emit("error",{type:"error",text:`Failed to connect to OpenC3. ${t}`,error:t})}),this.selected=this.modelValue?this.modelValue:null,this.loading=!1},methods:{querySelections:function(t){this.loading=!0,setTimeout(()=>{this.items=this.scripts.filter(a=>(a||"").toLowerCase().indexOf((t||"").toLowerCase())>-1),this.loading=!1},500)}}};function F(t,a,n,i,l,o){const m=e.resolveComponent("v-autocomplete"),u=e.resolveComponent("v-row");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(u,null,{default:e.withCtx(()=>[e.createVNode(m,{modelValue:l.selected,"onUpdate:modelValue":a[0]||(a[0]=d=>l.selected=d),search:l.search,"onUpdate:search":a[1]||(a[1]=d=>l.search=d),density:"compact",variant:"outlined","hide-no-data":"","hide-details":"",class:"mb-5",label:"Select script",loading:l.loading,items:l.items,"data-test":"select-script"},null,8,["modelValue","search","loading","items"])]),_:1})])}const q=_._export_sfc(M,[["render",F]]);exports.CommandEditor=U;exports.CommandParameterEditor=C;exports.EnvironmentChooser=z;exports.ScriptChooser=q;
2
+ //# sourceMappingURL=ScriptChooser-CI4lAYZ1.cjs.map