@openc3/vue-common 7.0.0-rc3 → 7.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. package/dist/{ArrayWidget-B2-n1K3r.cjs → ArrayWidget-BHjh3qLF.cjs} +2 -2
  2. package/dist/{ArrayWidget-B2-n1K3r.cjs.map → ArrayWidget-BHjh3qLF.cjs.map} +1 -1
  3. package/dist/{ArrayWidget-dQWDMMrn.js → ArrayWidget-Dh6zDiC7.js} +6 -6
  4. package/dist/{ArrayWidget-dQWDMMrn.js.map → ArrayWidget-Dh6zDiC7.js.map} +1 -1
  5. package/dist/{ArrayplotWidget-BmBcPGUR.cjs → ArrayplotWidget-BHD-TGQO.cjs} +2 -2
  6. package/dist/{ArrayplotWidget-BmBcPGUR.cjs.map → ArrayplotWidget-BHD-TGQO.cjs.map} +1 -1
  7. package/dist/{ArrayplotWidget-DCnbK37q.js → ArrayplotWidget-CSc_TqNm.js} +6 -6
  8. package/dist/{ArrayplotWidget-DCnbK37q.js.map → ArrayplotWidget-CSc_TqNm.js.map} +1 -1
  9. package/dist/{BarColumn-DmOxuCa9.js → BarColumn-DmjMnw5l.js} +3 -3
  10. package/dist/{BarColumn-DmOxuCa9.js.map → BarColumn-DmjMnw5l.js.map} +1 -1
  11. package/dist/{BarColumn-CkecDAzn.cjs → BarColumn-Ym4P8YHC.cjs} +2 -2
  12. package/dist/{BarColumn-CkecDAzn.cjs.map → BarColumn-Ym4P8YHC.cjs.map} +1 -1
  13. package/dist/{BlockWidget-UejKxAxY.js → BlockWidget-BdR_HCVc.js} +6 -6
  14. package/dist/{BlockWidget-UejKxAxY.js.map → BlockWidget-BdR_HCVc.js.map} +1 -1
  15. package/dist/{BlockWidget-BZXHLTJt.cjs → BlockWidget-Bi1PfS1k.cjs} +2 -2
  16. package/dist/{BlockWidget-BZXHLTJt.cjs.map → BlockWidget-Bi1PfS1k.cjs.map} +1 -1
  17. package/dist/{ButtonWidget-CzRyY1N5.cjs → ButtonWidget-70hNWuEy.cjs} +2 -2
  18. package/dist/{ButtonWidget-CzRyY1N5.cjs.map → ButtonWidget-70hNWuEy.cjs.map} +1 -1
  19. package/dist/{ButtonWidget-DtAkhzCN.js → ButtonWidget-DZ4VCNWU.js} +6 -6
  20. package/dist/{ButtonWidget-DtAkhzCN.js.map → ButtonWidget-DZ4VCNWU.js.map} +1 -1
  21. package/dist/{CanvasWidget-cQqNxspP.cjs → CanvasWidget-DTEx-DpZ.cjs} +2 -2
  22. package/dist/{CanvasWidget-cQqNxspP.cjs.map → CanvasWidget-DTEx-DpZ.cjs.map} +1 -1
  23. package/dist/{CanvasWidget-YXQ8TLqA.js → CanvasWidget-DuXOo3jG.js} +4 -4
  24. package/dist/{CanvasWidget-YXQ8TLqA.js.map → CanvasWidget-DuXOo3jG.js.map} +1 -1
  25. package/dist/{CanvasdotWidget-BbmhHQV_.js → CanvasdotWidget-WoLpxI1u.js} +5 -5
  26. package/dist/{CanvasdotWidget-BbmhHQV_.js.map → CanvasdotWidget-WoLpxI1u.js.map} +1 -1
  27. package/dist/{CanvasdotWidget-CMIw-ga4.cjs → CanvasdotWidget-bbOquK8B.cjs} +2 -2
  28. package/dist/{CanvasdotWidget-CMIw-ga4.cjs.map → CanvasdotWidget-bbOquK8B.cjs.map} +1 -1
  29. package/dist/{CanvasimageWidget-DXxtYjGG.cjs → CanvasimageWidget-D2EqsK7w.cjs} +2 -2
  30. package/dist/{CanvasimageWidget-DXxtYjGG.cjs.map → CanvasimageWidget-D2EqsK7w.cjs.map} +1 -1
  31. package/dist/{CanvasimageWidget-CJf5NYEj.js → CanvasimageWidget-tWpK5rsv.js} +8 -8
  32. package/dist/{CanvasimageWidget-CJf5NYEj.js.map → CanvasimageWidget-tWpK5rsv.js.map} +1 -1
  33. package/dist/{CanvasimagevalueWidget-D86eJXbs.js → CanvasimagevalueWidget-BVzJYz3l.js} +9 -9
  34. package/dist/{CanvasimagevalueWidget-D86eJXbs.js.map → CanvasimagevalueWidget-BVzJYz3l.js.map} +1 -1
  35. package/dist/{CanvasimagevalueWidget-VPKlJrxM.cjs → CanvasimagevalueWidget-By_DiQ75.cjs} +2 -2
  36. package/dist/{CanvasimagevalueWidget-VPKlJrxM.cjs.map → CanvasimagevalueWidget-By_DiQ75.cjs.map} +1 -1
  37. package/dist/{CanvaslabelWidget-TkrVd-Dg.js → CanvaslabelWidget-CDFf8Vll.js} +5 -5
  38. package/dist/{CanvaslabelWidget-TkrVd-Dg.js.map → CanvaslabelWidget-CDFf8Vll.js.map} +1 -1
  39. package/dist/{CanvaslabelWidget-BgGRS0NS.cjs → CanvaslabelWidget-DiPxyXoX.cjs} +2 -2
  40. package/dist/{CanvaslabelWidget-BgGRS0NS.cjs.map → CanvaslabelWidget-DiPxyXoX.cjs.map} +1 -1
  41. package/dist/{CanvaslabelvalueWidget-W2QzOkQw.cjs → CanvaslabelvalueWidget-Cw5CCQTi.cjs} +2 -2
  42. package/dist/{CanvaslabelvalueWidget-W2QzOkQw.cjs.map → CanvaslabelvalueWidget-Cw5CCQTi.cjs.map} +1 -1
  43. package/dist/{CanvaslabelvalueWidget-BwsIN_MT.js → CanvaslabelvalueWidget-DzJKD6qs.js} +5 -5
  44. package/dist/{CanvaslabelvalueWidget-BwsIN_MT.js.map → CanvaslabelvalueWidget-DzJKD6qs.js.map} +1 -1
  45. package/dist/{CanvaslineWidget-yT7FUWs8.cjs → CanvaslineWidget-BECtKTPL.cjs} +2 -2
  46. package/dist/{CanvaslineWidget-yT7FUWs8.cjs.map → CanvaslineWidget-BECtKTPL.cjs.map} +1 -1
  47. package/dist/{CanvaslineWidget-BjBvF-vY.js → CanvaslineWidget-BttTXCZq.js} +5 -5
  48. package/dist/{CanvaslineWidget-BjBvF-vY.js.map → CanvaslineWidget-BttTXCZq.js.map} +1 -1
  49. package/dist/{CanvaslinevalueWidget-Dj4tsTBp.cjs → CanvaslinevalueWidget-5duJ98qu.cjs} +2 -2
  50. package/dist/{CanvaslinevalueWidget-Dj4tsTBp.cjs.map → CanvaslinevalueWidget-5duJ98qu.cjs.map} +1 -1
  51. package/dist/{CanvaslinevalueWidget-krBLp9yB.js → CanvaslinevalueWidget-i6G0JfnZ.js} +5 -5
  52. package/dist/{CanvaslinevalueWidget-krBLp9yB.js.map → CanvaslinevalueWidget-i6G0JfnZ.js.map} +1 -1
  53. package/dist/{CheckbuttonWidget-IMrIK9q4.js → CheckbuttonWidget-18jtf7sh.js} +5 -5
  54. package/dist/{CheckbuttonWidget-IMrIK9q4.js.map → CheckbuttonWidget-18jtf7sh.js.map} +1 -1
  55. package/dist/{CheckbuttonWidget-CT28NPNo.cjs → CheckbuttonWidget-CTMObPhX.cjs} +2 -2
  56. package/dist/{CheckbuttonWidget-CT28NPNo.cjs.map → CheckbuttonWidget-CTMObPhX.cjs.map} +1 -1
  57. package/dist/{ClassificationBanners-DiIkXqna.js → ClassificationBanners-BmnQODLn.js} +2 -2
  58. package/dist/{ClassificationBanners-DiIkXqna.js.map → ClassificationBanners-BmnQODLn.js.map} +1 -1
  59. package/dist/{ClassificationBanners-DC__VXBX.cjs → ClassificationBanners-DjGCuH-4.cjs} +2 -2
  60. package/dist/{ClassificationBanners-DC__VXBX.cjs.map → ClassificationBanners-DjGCuH-4.cjs.map} +1 -1
  61. package/dist/{ComboboxWidget-C9Zlc2Hy.js → ComboboxWidget-BjaVFbD4.js} +5 -5
  62. package/dist/{ComboboxWidget-C9Zlc2Hy.js.map → ComboboxWidget-BjaVFbD4.js.map} +1 -1
  63. package/dist/{ComboboxWidget-hFBSBFwy.cjs → ComboboxWidget-Cc0Acq9q.cjs} +2 -2
  64. package/dist/{ComboboxWidget-hFBSBFwy.cjs.map → ComboboxWidget-Cc0Acq9q.cjs.map} +1 -1
  65. package/dist/{CriticalCmdDialog-Cp-ykpQb.js → CriticalCmdDialog-CO-nvphS.js} +8 -8
  66. package/dist/{CriticalCmdDialog-Cp-ykpQb.js.map → CriticalCmdDialog-CO-nvphS.js.map} +1 -1
  67. package/dist/{CriticalCmdDialog-CCaStsM-.cjs → CriticalCmdDialog-eytxCQto.cjs} +2 -2
  68. package/dist/{CriticalCmdDialog-CCaStsM-.cjs.map → CriticalCmdDialog-eytxCQto.cjs.map} +1 -1
  69. package/dist/{CustomIcon-Cg3jCA_l.js → CustomIcon-DTR361si.js} +4 -4
  70. package/dist/{CustomIcon-Cg3jCA_l.js.map → CustomIcon-DTR361si.js.map} +1 -1
  71. package/dist/{DateWidget-C_QpCTxN.cjs → DateWidget-Cle8FY8Q.cjs} +2 -2
  72. package/dist/{DateWidget-C_QpCTxN.cjs.map → DateWidget-Cle8FY8Q.cjs.map} +1 -1
  73. package/dist/{DateWidget-Y6WAFGGt.js → DateWidget-DkFAFlc8.js} +5 -5
  74. package/dist/{DateWidget-Y6WAFGGt.js.map → DateWidget-DkFAFlc8.js.map} +1 -1
  75. package/dist/{DetailsDialog-Bq9BPuoe.cjs → DetailsDialog-BcMaTfuQ.cjs} +2 -2
  76. package/dist/{DetailsDialog-Bq9BPuoe.cjs.map → DetailsDialog-BcMaTfuQ.cjs.map} +1 -1
  77. package/dist/{DetailsDialog-DznGAE6i.js → DetailsDialog-sqja4Lzq.js} +5 -5
  78. package/dist/{DetailsDialog-DznGAE6i.js.map → DetailsDialog-sqja4Lzq.js.map} +1 -1
  79. package/dist/{DynamicWidget-Bym87woV.js → DynamicWidget-BuSbQVhf.js} +4 -4
  80. package/dist/{DynamicWidget-Bym87woV.js.map → DynamicWidget-BuSbQVhf.js.map} +1 -1
  81. package/dist/{EventListDialog-CktWO2jn.js → EventListDialog-DjCQAwGl.js} +17 -14
  82. package/dist/EventListDialog-DjCQAwGl.js.map +1 -0
  83. package/dist/EventListDialog-EmC7YW60.cjs +2 -0
  84. package/dist/EventListDialog-EmC7YW60.cjs.map +1 -0
  85. package/dist/{FilechecksumWidget-BZdmiTbb.cjs → FilechecksumWidget-2ta-UvLp.cjs} +2 -2
  86. package/dist/{FilechecksumWidget-BZdmiTbb.cjs.map → FilechecksumWidget-2ta-UvLp.cjs.map} +1 -1
  87. package/dist/{FilechecksumWidget-VbLODmHh.js → FilechecksumWidget-DqJ_hvN4.js} +8 -8
  88. package/dist/{FilechecksumWidget-VbLODmHh.js.map → FilechecksumWidget-DqJ_hvN4.js.map} +1 -1
  89. package/dist/{FiledisplayWidget-BI7GAQ4d.cjs → FiledisplayWidget-BUKXIQir.cjs} +2 -2
  90. package/dist/{FiledisplayWidget-BI7GAQ4d.cjs.map → FiledisplayWidget-BUKXIQir.cjs.map} +1 -1
  91. package/dist/{FiledisplayWidget-kixqcLtx.js → FiledisplayWidget-CYznG_tf.js} +6 -6
  92. package/dist/{FiledisplayWidget-kixqcLtx.js.map → FiledisplayWidget-CYznG_tf.js.map} +1 -1
  93. package/dist/{FormatvalueWidget--djAS0BE.js → FormatvalueWidget-BnVu4YGx.js} +6 -6
  94. package/dist/{FormatvalueWidget--djAS0BE.js.map → FormatvalueWidget-BnVu4YGx.js.map} +1 -1
  95. package/dist/{FormatvalueWidget-I1y_kf9t.cjs → FormatvalueWidget-BpFXnA_U.cjs} +2 -2
  96. package/dist/{FormatvalueWidget-I1y_kf9t.cjs.map → FormatvalueWidget-BpFXnA_U.cjs.map} +1 -1
  97. package/dist/{Graph-GhpiUBKI.js → Graph-CUFzx8Ti.js} +289 -281
  98. package/dist/Graph-CUFzx8Ti.js.map +1 -0
  99. package/dist/Graph-qxF4224c.cjs +2 -0
  100. package/dist/Graph-qxF4224c.cjs.map +1 -0
  101. package/dist/{GraphWidget-Bzo-klWV.cjs → GraphWidget-BvCQHVxQ.cjs} +2 -2
  102. package/dist/{GraphWidget-Bzo-klWV.cjs.map → GraphWidget-BvCQHVxQ.cjs.map} +1 -1
  103. package/dist/{GraphWidget-8T08osON.js → GraphWidget-DO5XbOGy.js} +2 -2
  104. package/dist/{GraphWidget-8T08osON.js.map → GraphWidget-DO5XbOGy.js.map} +1 -1
  105. package/dist/{HorizontalWidget-CusI1RiA.js → HorizontalWidget-BA9PiP3d.js} +4 -4
  106. package/dist/{HorizontalWidget-CusI1RiA.js.map → HorizontalWidget-BA9PiP3d.js.map} +1 -1
  107. package/dist/{HorizontalWidget-CAf9I0CU.cjs → HorizontalWidget-BBQE-dP-.cjs} +2 -2
  108. package/dist/{HorizontalWidget-CAf9I0CU.cjs.map → HorizontalWidget-BBQE-dP-.cjs.map} +1 -1
  109. package/dist/{HorizontalboxWidget-D5fIhINf.js → HorizontalboxWidget-B-7HOqgl.js} +7 -7
  110. package/dist/{HorizontalboxWidget-D5fIhINf.js.map → HorizontalboxWidget-B-7HOqgl.js.map} +1 -1
  111. package/dist/{HorizontalboxWidget-B7E5GEPu.cjs → HorizontalboxWidget-CX7J8RdA.cjs} +2 -2
  112. package/dist/{HorizontalboxWidget-B7E5GEPu.cjs.map → HorizontalboxWidget-CX7J8RdA.cjs.map} +1 -1
  113. package/dist/HorizontallineWidget-D-o9MGo0.js +16 -0
  114. package/dist/{HorizontallineWidget-CnRlq7hi.js.map → HorizontallineWidget-D-o9MGo0.js.map} +1 -1
  115. package/dist/{HorizontallineWidget-DqLKGhdz.cjs → HorizontallineWidget-odTFoB8u.cjs} +2 -2
  116. package/dist/{HorizontallineWidget-DqLKGhdz.cjs.map → HorizontallineWidget-odTFoB8u.cjs.map} +1 -1
  117. package/dist/{IframeWidget-DtF44NYM.js → IframeWidget-BzOka-fX.js} +5 -5
  118. package/dist/{IframeWidget-DtF44NYM.js.map → IframeWidget-BzOka-fX.js.map} +1 -1
  119. package/dist/{IframeWidget-BMtv8io0.cjs → IframeWidget-cTHu_Rmp.cjs} +2 -2
  120. package/dist/{IframeWidget-BMtv8io0.cjs.map → IframeWidget-cTHu_Rmp.cjs.map} +1 -1
  121. package/dist/{ImageLoader-jcIDHdUq.cjs → ImageLoader-BTEOukIw.cjs} +2 -2
  122. package/dist/{ImageLoader-jcIDHdUq.cjs.map → ImageLoader-BTEOukIw.cjs.map} +1 -1
  123. package/dist/{ImageLoader-B5rGuJ_H.js → ImageLoader-CstmWFM4.js} +2 -2
  124. package/dist/{ImageLoader-B5rGuJ_H.js.map → ImageLoader-CstmWFM4.js.map} +1 -1
  125. package/dist/{ImageviewerWidget-Ciu80vaC.js → ImageviewerWidget-BA9uOM1q.js} +5 -5
  126. package/dist/{ImageviewerWidget-Ciu80vaC.js.map → ImageviewerWidget-BA9uOM1q.js.map} +1 -1
  127. package/dist/{ImageviewerWidget-ox5FNYVP.cjs → ImageviewerWidget-CLAFwmaB.cjs} +2 -2
  128. package/dist/{ImageviewerWidget-ox5FNYVP.cjs.map → ImageviewerWidget-CLAFwmaB.cjs.map} +1 -1
  129. package/dist/{InterfacesTab-C14LErLZ.js → InterfacesTab-C3mDLkGC.js} +9 -9
  130. package/dist/{InterfacesTab-C14LErLZ.js.map → InterfacesTab-C3mDLkGC.js.map} +1 -1
  131. package/dist/{InterfacesTab-CUM5GGWs.cjs → InterfacesTab-CM0CGFVS.cjs} +2 -2
  132. package/dist/{InterfacesTab-CUM5GGWs.cjs.map → InterfacesTab-CM0CGFVS.cjs.map} +1 -1
  133. package/dist/{LabelWidget-B9J1Whh0.cjs → LabelWidget-CMmVq1mx.cjs} +2 -2
  134. package/dist/{LabelWidget-B9J1Whh0.cjs.map → LabelWidget-CMmVq1mx.cjs.map} +1 -1
  135. package/dist/{LabelWidget-78VnL1xc.js → LabelWidget-Da2howZF.js} +5 -5
  136. package/dist/{LabelWidget-78VnL1xc.js.map → LabelWidget-Da2howZF.js.map} +1 -1
  137. package/dist/{LabelledWidget-Cx2PI85E.js → LabelledWidget-BH8y3OXT.js} +7 -7
  138. package/dist/{LabelledWidget-Cx2PI85E.js.map → LabelledWidget-BH8y3OXT.js.map} +1 -1
  139. package/dist/{LabelledWidget-BMtqUP-E.cjs → LabelledWidget-CAqH0oWs.cjs} +2 -2
  140. package/dist/{LabelledWidget-BMtqUP-E.cjs.map → LabelledWidget-CAqH0oWs.cjs.map} +1 -1
  141. package/dist/{LabelprogressbarWidget-eC7VC7lY.js → LabelprogressbarWidget-Brl24F4c.js} +7 -7
  142. package/dist/{LabelprogressbarWidget-eC7VC7lY.js.map → LabelprogressbarWidget-Brl24F4c.js.map} +1 -1
  143. package/dist/{LabelprogressbarWidget-Ce3PRzaA.cjs → LabelprogressbarWidget-BxLGmW9T.cjs} +2 -2
  144. package/dist/{LabelprogressbarWidget-Ce3PRzaA.cjs.map → LabelprogressbarWidget-BxLGmW9T.cjs.map} +1 -1
  145. package/dist/{LabelsparklineWidget-DuCA67yl.cjs → LabelsparklineWidget-BUXOpBeB.cjs} +2 -2
  146. package/dist/{LabelsparklineWidget-DuCA67yl.cjs.map → LabelsparklineWidget-BUXOpBeB.cjs.map} +1 -1
  147. package/dist/{LabelsparklineWidget-CP5rD4ob.js → LabelsparklineWidget-D22MB7-4.js} +7 -7
  148. package/dist/{LabelsparklineWidget-CP5rD4ob.js.map → LabelsparklineWidget-D22MB7-4.js.map} +1 -1
  149. package/dist/{LabelvalueWidget-PM8DFnDm.js → LabelvalueWidget-_1JPbK-K.js} +7 -7
  150. package/dist/{LabelvalueWidget-PM8DFnDm.js.map → LabelvalueWidget-_1JPbK-K.js.map} +1 -1
  151. package/dist/{LabelvalueWidget-DxEvAoHT.cjs → LabelvalueWidget-bYqqgIGE.cjs} +2 -2
  152. package/dist/{LabelvalueWidget-DxEvAoHT.cjs.map → LabelvalueWidget-bYqqgIGE.cjs.map} +1 -1
  153. package/dist/{LabelvaluedescWidget-Dy3_fdkx.cjs → LabelvaluedescWidget-B2dFZoDE.cjs} +2 -2
  154. package/dist/{LabelvaluedescWidget-Dy3_fdkx.cjs.map → LabelvaluedescWidget-B2dFZoDE.cjs.map} +1 -1
  155. package/dist/{LabelvaluedescWidget-C8OmKnu-.js → LabelvaluedescWidget-BgduSJJb.js} +8 -8
  156. package/dist/{LabelvaluedescWidget-C8OmKnu-.js.map → LabelvaluedescWidget-BgduSJJb.js.map} +1 -1
  157. package/dist/{LabelvaluelimitsbarWidget-DWvSVvXl.cjs → LabelvaluelimitsbarWidget-BGag8V6k.cjs} +2 -2
  158. package/dist/{LabelvaluelimitsbarWidget-DWvSVvXl.cjs.map → LabelvaluelimitsbarWidget-BGag8V6k.cjs.map} +1 -1
  159. package/dist/{LabelvaluelimitsbarWidget-DIsTQqkO.js → LabelvaluelimitsbarWidget-C9PlEhWo.js} +7 -7
  160. package/dist/{LabelvaluelimitsbarWidget-DIsTQqkO.js.map → LabelvaluelimitsbarWidget-C9PlEhWo.js.map} +1 -1
  161. package/dist/{LabelvaluelimitscolumnWidget-ld556rRi.js → LabelvaluelimitscolumnWidget-Cay6AhoZ.js} +8 -8
  162. package/dist/{LabelvaluelimitscolumnWidget-ld556rRi.js.map → LabelvaluelimitscolumnWidget-Cay6AhoZ.js.map} +1 -1
  163. package/dist/{LabelvaluelimitscolumnWidget-CyPuEz7E.cjs → LabelvaluelimitscolumnWidget-SHVJIgGJ.cjs} +2 -2
  164. package/dist/{LabelvaluelimitscolumnWidget-CyPuEz7E.cjs.map → LabelvaluelimitscolumnWidget-SHVJIgGJ.cjs.map} +1 -1
  165. package/dist/{LabelvaluerangebarWidget-DdqgjjUc.cjs → LabelvaluerangebarWidget-Dbibpimv.cjs} +2 -2
  166. package/dist/{LabelvaluerangebarWidget-DdqgjjUc.cjs.map → LabelvaluerangebarWidget-Dbibpimv.cjs.map} +1 -1
  167. package/dist/{LabelvaluerangebarWidget-nCeoujui.js → LabelvaluerangebarWidget-s_8IgY-C.js} +7 -7
  168. package/dist/{LabelvaluerangebarWidget-nCeoujui.js.map → LabelvaluerangebarWidget-s_8IgY-C.js.map} +1 -1
  169. package/dist/{Layout-BcytiBn4.js → Layout-D7RGn0Fe.js} +2 -2
  170. package/dist/{Layout-BcytiBn4.js.map → Layout-D7RGn0Fe.js.map} +1 -1
  171. package/dist/{Layout-JCk8r88e.cjs → Layout-DwWEea79.cjs} +2 -2
  172. package/dist/{Layout-JCk8r88e.cjs.map → Layout-DwWEea79.cjs.map} +1 -1
  173. package/dist/{LedWidget-BEP-sFTh.cjs → LedWidget-BaiKDozd.cjs} +2 -2
  174. package/dist/{LedWidget-BEP-sFTh.cjs.map → LedWidget-BaiKDozd.cjs.map} +1 -1
  175. package/dist/{LedWidget-3pWKnZsD.js → LedWidget-DgMtvsiv.js} +6 -6
  176. package/dist/{LedWidget-3pWKnZsD.js.map → LedWidget-DgMtvsiv.js.map} +1 -1
  177. package/dist/{LimitsBar-BJ_cERjE.cjs → LimitsBar-BFM38vQL.cjs} +2 -2
  178. package/dist/{LimitsBar-BJ_cERjE.cjs.map → LimitsBar-BFM38vQL.cjs.map} +1 -1
  179. package/dist/{LimitsBar-DCco6Rwp.js → LimitsBar-CcOaAw0C.js} +7 -7
  180. package/dist/{LimitsBar-DCco6Rwp.js.map → LimitsBar-CcOaAw0C.js.map} +1 -1
  181. package/dist/{LimitsbarWidget-DiAnkXID.cjs → LimitsbarWidget-ConP3qI5.cjs} +2 -2
  182. package/dist/{LimitsbarWidget-DiAnkXID.cjs.map → LimitsbarWidget-ConP3qI5.cjs.map} +1 -1
  183. package/dist/{LimitsbarWidget-_BMzxWBm.js → LimitsbarWidget-DpmJn1Lo.js} +7 -7
  184. package/dist/{LimitsbarWidget-_BMzxWBm.js.map → LimitsbarWidget-DpmJn1Lo.js.map} +1 -1
  185. package/dist/{LimitscolorWidget-C2gZyqtI.js → LimitscolorWidget-BMXiEaDm.js} +20 -20
  186. package/dist/{LimitscolorWidget-C2gZyqtI.js.map → LimitscolorWidget-BMXiEaDm.js.map} +1 -1
  187. package/dist/{LimitscolorWidget-ByfzIE_O.cjs → LimitscolorWidget-veWQ4NXl.cjs} +2 -2
  188. package/dist/{LimitscolorWidget-ByfzIE_O.cjs.map → LimitscolorWidget-veWQ4NXl.cjs.map} +1 -1
  189. package/dist/{LimitscolumnWidget-CZwcXbLS.cjs → LimitscolumnWidget-CJABAor8.cjs} +2 -2
  190. package/dist/{LimitscolumnWidget-CZwcXbLS.cjs.map → LimitscolumnWidget-CJABAor8.cjs.map} +1 -1
  191. package/dist/{LimitscolumnWidget-Cv-6FXU3.js → LimitscolumnWidget-ufFMz6R-.js} +5 -5
  192. package/dist/{LimitscolumnWidget-Cv-6FXU3.js.map → LimitscolumnWidget-ufFMz6R-.js.map} +1 -1
  193. package/dist/{LinegraphWidget-so5ohfWF.cjs → LinegraphWidget-3E8L5CvM.cjs} +2 -2
  194. package/dist/{LinegraphWidget-so5ohfWF.cjs.map → LinegraphWidget-3E8L5CvM.cjs.map} +1 -1
  195. package/dist/{LinegraphWidget-BahyhwSt.js → LinegraphWidget-BC2wVOny.js} +7 -7
  196. package/dist/{LinegraphWidget-BahyhwSt.js.map → LinegraphWidget-BC2wVOny.js.map} +1 -1
  197. package/dist/{MatrixbycolumnsWidget-Dma8IsO-.cjs → MatrixbycolumnsWidget-DICgiNQo.cjs} +2 -2
  198. package/dist/{MatrixbycolumnsWidget-Dma8IsO-.cjs.map → MatrixbycolumnsWidget-DICgiNQo.cjs.map} +1 -1
  199. package/dist/{MatrixbycolumnsWidget-B1Hy9but.js → MatrixbycolumnsWidget-DfUAeBnO.js} +5 -5
  200. package/dist/{MatrixbycolumnsWidget-B1Hy9but.js.map → MatrixbycolumnsWidget-DfUAeBnO.js.map} +1 -1
  201. package/dist/{MicroservicesTab-BSXNA_Si.js → MicroservicesTab-B0SZVty3.js} +67 -62
  202. package/dist/MicroservicesTab-B0SZVty3.js.map +1 -0
  203. package/dist/MicroservicesTab-snXJDoYq.cjs +4 -0
  204. package/dist/MicroservicesTab-snXJDoYq.cjs.map +1 -0
  205. package/dist/{OpenC3TimePicker-LN9R7V31.js → OpenC3TimePicker-DpkbfbgC.js} +5 -5
  206. package/dist/{OpenC3TimePicker-LN9R7V31.js.map → OpenC3TimePicker-DpkbfbgC.js.map} +1 -1
  207. package/dist/{OpenC3TimePicker-BHX9fnlR.cjs → OpenC3TimePicker-Yl1jVi7p.cjs} +2 -2
  208. package/dist/{OpenC3TimePicker-BHX9fnlR.cjs.map → OpenC3TimePicker-Yl1jVi7p.cjs.map} +1 -1
  209. package/dist/{Openc3Screen-CJOTF-lu.cjs → Openc3Screen-D1RLlBgQ.cjs} +5 -5
  210. package/dist/Openc3Screen-D1RLlBgQ.cjs.map +1 -0
  211. package/dist/{Openc3Screen-BP7Ho9XC.js → Openc3Screen-DbUvz-3B.js} +254 -254
  212. package/dist/Openc3Screen-DbUvz-3B.js.map +1 -0
  213. package/dist/{OutputDialog-Dx5mkq19.cjs → OutputDialog-ChPCaQAE.cjs} +2 -2
  214. package/dist/{OutputDialog-Dx5mkq19.cjs.map → OutputDialog-ChPCaQAE.cjs.map} +1 -1
  215. package/dist/{OutputDialog-JdAxzpPD.js → OutputDialog-Ds-GdGyI.js} +5 -5
  216. package/dist/{OutputDialog-JdAxzpPD.js.map → OutputDialog-Ds-GdGyI.js.map} +1 -1
  217. package/dist/PackagesTab-BgQsbXRo.cjs +2 -0
  218. package/dist/PackagesTab-BgQsbXRo.cjs.map +1 -0
  219. package/dist/{PackagesTab-ByfVH001.js → PackagesTab-CWplBp_I.js} +70 -66
  220. package/dist/PackagesTab-CWplBp_I.js.map +1 -0
  221. package/dist/{PluginsTab-D7zpmf8s.js → PluginsTab-BiiL622n.js} +486 -448
  222. package/dist/PluginsTab-BiiL622n.js.map +1 -0
  223. package/dist/PluginsTab-RgIMk-F7.cjs +6 -0
  224. package/dist/PluginsTab-RgIMk-F7.cjs.map +1 -0
  225. package/dist/{ProgressbarWidget-mAVHKeok.js → ProgressbarWidget-D3ndYnq_.js} +5 -5
  226. package/dist/{ProgressbarWidget-mAVHKeok.js.map → ProgressbarWidget-D3ndYnq_.js.map} +1 -1
  227. package/dist/{ProgressbarWidget-BINuoD9p.cjs → ProgressbarWidget-DludJVUf.cjs} +2 -2
  228. package/dist/{ProgressbarWidget-BINuoD9p.cjs.map → ProgressbarWidget-DludJVUf.cjs.map} +1 -1
  229. package/dist/{RadiobuttonWidget-CL3QjTnZ.js → RadiobuttonWidget-CP0S9nWW.js} +5 -5
  230. package/dist/{RadiobuttonWidget-CL3QjTnZ.js.map → RadiobuttonWidget-CP0S9nWW.js.map} +1 -1
  231. package/dist/{RadiobuttonWidget-DDmgt0su.cjs → RadiobuttonWidget-DX4h94p1.cjs} +2 -2
  232. package/dist/{RadiobuttonWidget-DDmgt0su.cjs.map → RadiobuttonWidget-DX4h94p1.cjs.map} +1 -1
  233. package/dist/{RadiogroupWidget-RUwgtUTC.js → RadiogroupWidget-BXHfA21T.js} +4 -4
  234. package/dist/{RadiogroupWidget-RUwgtUTC.js.map → RadiogroupWidget-BXHfA21T.js.map} +1 -1
  235. package/dist/{RadiogroupWidget-q7h1v-ko.cjs → RadiogroupWidget-NqjBNUH6.cjs} +2 -2
  236. package/dist/{RadiogroupWidget-q7h1v-ko.cjs.map → RadiogroupWidget-NqjBNUH6.cjs.map} +1 -1
  237. package/dist/{RangebarWidget-CfDsKLZc.js → RangebarWidget-Bv2DqkPo.js} +5 -5
  238. package/dist/{RangebarWidget-CfDsKLZc.js.map → RangebarWidget-Bv2DqkPo.js.map} +1 -1
  239. package/dist/{RangebarWidget-BbPMpwMs.cjs → RangebarWidget-CRq2zpvw.cjs} +2 -2
  240. package/dist/{RangebarWidget-BbPMpwMs.cjs.map → RangebarWidget-CRq2zpvw.cjs.map} +1 -1
  241. package/dist/{RedisTab-YrX-5A3T.js → RedisTab-7TbOXFA_.js} +9 -9
  242. package/dist/{RedisTab-YrX-5A3T.js.map → RedisTab-7TbOXFA_.js.map} +1 -1
  243. package/dist/{RedisTab-dZE6KvLS.cjs → RedisTab-DpWPY1P0.cjs} +2 -2
  244. package/dist/{RedisTab-dZE6KvLS.cjs.map → RedisTab-DpWPY1P0.cjs.map} +1 -1
  245. package/dist/{RollupWidget-BmgRFIOo.cjs → RollupWidget-B7_Q_boi.cjs} +2 -2
  246. package/dist/{RollupWidget-BmgRFIOo.cjs.map → RollupWidget-B7_Q_boi.cjs.map} +1 -1
  247. package/dist/{RollupWidget-DCMoQUeJ.js → RollupWidget-o_huYU0x.js} +5 -5
  248. package/dist/{RollupWidget-DCMoQUeJ.js.map → RollupWidget-o_huYU0x.js.map} +1 -1
  249. package/dist/{RoutersTab-C6vejQrw.cjs → RoutersTab-CAbnSGHy.cjs} +2 -2
  250. package/dist/{RoutersTab-C6vejQrw.cjs.map → RoutersTab-CAbnSGHy.cjs.map} +1 -1
  251. package/dist/{RoutersTab-MA9KW_gu.js → RoutersTab-DN17iBBi.js} +9 -9
  252. package/dist/{RoutersTab-MA9KW_gu.js.map → RoutersTab-DN17iBBi.js.map} +1 -1
  253. package/dist/{ScriptChooser-Cm_HEyBf.cjs → ScriptChooser-CggwstfT.cjs} +2 -2
  254. package/dist/{ScriptChooser-Cm_HEyBf.cjs.map → ScriptChooser-CggwstfT.cjs.map} +1 -1
  255. package/dist/{ScriptChooser-DGbs03IW.js → ScriptChooser-CzzUJ1Zj.js} +6 -6
  256. package/dist/{ScriptChooser-DGbs03IW.js.map → ScriptChooser-CzzUJ1Zj.js.map} +1 -1
  257. package/dist/{ScrollwindowWidget-DarXe7-1.js → ScrollwindowWidget-DdjaML6D.js} +4 -4
  258. package/dist/{ScrollwindowWidget-DarXe7-1.js.map → ScrollwindowWidget-DdjaML6D.js.map} +1 -1
  259. package/dist/{ScrollwindowWidget-BbASNNcM.cjs → ScrollwindowWidget-kS5QjP-v.cjs} +2 -2
  260. package/dist/{ScrollwindowWidget-BbASNNcM.cjs.map → ScrollwindowWidget-kS5QjP-v.cjs.map} +1 -1
  261. package/dist/{SecretsTab-DwE3KJNI.cjs → SecretsTab-Cn6-o85L.cjs} +2 -2
  262. package/dist/{SecretsTab-DwE3KJNI.cjs.map → SecretsTab-Cn6-o85L.cjs.map} +1 -1
  263. package/dist/{SecretsTab-DTaPAHv3.js → SecretsTab-Cu3sx2OA.js} +4 -4
  264. package/dist/{SecretsTab-DTaPAHv3.js.map → SecretsTab-Cu3sx2OA.js.map} +1 -1
  265. package/dist/{SettingsTab-BhT5sui9.js → SettingsTab-B_vvSLvt.js} +6 -6
  266. package/dist/{SettingsTab-BhT5sui9.js.map → SettingsTab-B_vvSLvt.js.map} +1 -1
  267. package/dist/{SettingsTab-o9tfAuE4.cjs → SettingsTab-C6zIL2D6.cjs} +2 -2
  268. package/dist/{SettingsTab-o9tfAuE4.cjs.map → SettingsTab-C6zIL2D6.cjs.map} +1 -1
  269. package/dist/{SignalWidget-CO3UaFok.cjs → SignalWidget-BagcB92r.cjs} +2 -2
  270. package/dist/{SignalWidget-CO3UaFok.cjs.map → SignalWidget-BagcB92r.cjs.map} +1 -1
  271. package/dist/{SignalWidget-C-iEC5KL.js → SignalWidget-Dd54y28I.js} +5 -5
  272. package/dist/{SignalWidget-C-iEC5KL.js.map → SignalWidget-Dd54y28I.js.map} +1 -1
  273. package/dist/{SimpleTextDialog-B9ZurpdS.cjs → SimpleTextDialog-BJ50TbWh.cjs} +2 -2
  274. package/dist/{SimpleTextDialog-B9ZurpdS.cjs.map → SimpleTextDialog-BJ50TbWh.cjs.map} +1 -1
  275. package/dist/{SimpleTextDialog-Bqh3eT2B.js → SimpleTextDialog-DZv9n_kJ.js} +5 -5
  276. package/dist/{SimpleTextDialog-Bqh3eT2B.js.map → SimpleTextDialog-DZv9n_kJ.js.map} +1 -1
  277. package/dist/{SpacerWidget-CQh-LB4u.cjs → SpacerWidget-DWjBns9r.cjs} +2 -2
  278. package/dist/{SpacerWidget-CQh-LB4u.cjs.map → SpacerWidget-DWjBns9r.cjs.map} +1 -1
  279. package/dist/{SpacerWidget-FHxUhs1G.js → SpacerWidget-GPFYtIG1.js} +5 -5
  280. package/dist/{SpacerWidget-FHxUhs1G.js.map → SpacerWidget-GPFYtIG1.js.map} +1 -1
  281. package/dist/{SparklineWidget-ClT5Umm2.js → SparklineWidget-f11nrlLS.js} +7 -7
  282. package/dist/{SparklineWidget-ClT5Umm2.js.map → SparklineWidget-f11nrlLS.js.map} +1 -1
  283. package/dist/{SparklineWidget-BsMIozYC.cjs → SparklineWidget-xdPgolp3.cjs} +2 -2
  284. package/dist/{SparklineWidget-BsMIozYC.cjs.map → SparklineWidget-xdPgolp3.cjs.map} +1 -1
  285. package/dist/{TabbookWidget-So-oaWd4.cjs → TabbookWidget-CUIYWHRH.cjs} +2 -2
  286. package/dist/{TabbookWidget-So-oaWd4.cjs.map → TabbookWidget-CUIYWHRH.cjs.map} +1 -1
  287. package/dist/{TabbookWidget-D-b0v0oo.js → TabbookWidget-DeaC27yC.js} +4 -4
  288. package/dist/{TabbookWidget-D-b0v0oo.js.map → TabbookWidget-DeaC27yC.js.map} +1 -1
  289. package/dist/{TargetPacketItemChooser-DD7JgCD9.js → TargetPacketItemChooser-BoBqvs3T.js} +23 -23
  290. package/dist/TargetPacketItemChooser-BoBqvs3T.js.map +1 -0
  291. package/dist/TargetPacketItemChooser-C0Z90rss.cjs +2 -0
  292. package/dist/TargetPacketItemChooser-C0Z90rss.cjs.map +1 -0
  293. package/dist/{TargetsTab-BD0JGvAl.cjs → TargetsTab-BMcWjrZ_.cjs} +2 -2
  294. package/dist/{TargetsTab-BD0JGvAl.cjs.map → TargetsTab-BMcWjrZ_.cjs.map} +1 -1
  295. package/dist/{TargetsTab-hTLe_rba.js → TargetsTab-CjVaBN9O.js} +11 -11
  296. package/dist/{TargetsTab-hTLe_rba.js.map → TargetsTab-CjVaBN9O.js.map} +1 -1
  297. package/dist/{TextBoxDialog-BRwZOtzT.js → TextBoxDialog-R6GC8pMa.js} +4 -4
  298. package/dist/{TextBoxDialog-BRwZOtzT.js.map → TextBoxDialog-R6GC8pMa.js.map} +1 -1
  299. package/dist/{TextboxWidget-CF4iq315.cjs → TextboxWidget-CXA9rR02.cjs} +2 -2
  300. package/dist/{TextboxWidget-CF4iq315.cjs.map → TextboxWidget-CXA9rR02.cjs.map} +1 -1
  301. package/dist/{TextboxWidget-WM3eFUR_.js → TextboxWidget-tL41zWUX.js} +6 -6
  302. package/dist/{TextboxWidget-WM3eFUR_.js.map → TextboxWidget-tL41zWUX.js.map} +1 -1
  303. package/dist/{TextfieldWidget-D9BINKRU.cjs → TextfieldWidget-D-H2fOZG.cjs} +2 -2
  304. package/dist/{TextfieldWidget-D9BINKRU.cjs.map → TextfieldWidget-D-H2fOZG.cjs.map} +1 -1
  305. package/dist/{TextfieldWidget-lfc1Vg51.js → TextfieldWidget-D1qj14Qi.js} +5 -5
  306. package/dist/{TextfieldWidget-lfc1Vg51.js.map → TextfieldWidget-D1qj14Qi.js.map} +1 -1
  307. package/dist/{TimeWidget-CgtJbnnC.cjs → TimeWidget-CGk8Ze_I.cjs} +2 -2
  308. package/dist/{TimeWidget-CgtJbnnC.cjs.map → TimeWidget-CGk8Ze_I.cjs.map} +1 -1
  309. package/dist/{TimeWidget-B13aIVqG.js → TimeWidget-CSVGNong.js} +6 -6
  310. package/dist/{TimeWidget-B13aIVqG.js.map → TimeWidget-CSVGNong.js.map} +1 -1
  311. package/dist/{TitleWidget-CTAMgzU4.js → TitleWidget-CLx-tuYT.js} +5 -5
  312. package/dist/{TitleWidget-CTAMgzU4.js.map → TitleWidget-CLx-tuYT.js.map} +1 -1
  313. package/dist/{TitleWidget-BV2sDP_-.cjs → TitleWidget-ClhWhUf3.cjs} +2 -2
  314. package/dist/{TitleWidget-BV2sDP_-.cjs.map → TitleWidget-ClhWhUf3.cjs.map} +1 -1
  315. package/dist/{ToolsTab-DXK-L-kx.cjs → ToolsTab-DTHap-Nq.cjs} +2 -2
  316. package/dist/{ToolsTab-DXK-L-kx.cjs.map → ToolsTab-DTHap-Nq.cjs.map} +1 -1
  317. package/dist/{ToolsTab-CmhRtClS.js → ToolsTab-lBB_KhmA.js} +10 -10
  318. package/dist/{ToolsTab-CmhRtClS.js.map → ToolsTab-lBB_KhmA.js.map} +1 -1
  319. package/dist/{TopBar-D-lJHb6d.js → TopBar-C810rP_B.js} +4 -4
  320. package/dist/{TopBar-D-lJHb6d.js.map → TopBar-C810rP_B.js.map} +1 -1
  321. package/dist/{TopBar-BiE7GgIN.cjs → TopBar-Ctzx7o2k.cjs} +2 -2
  322. package/dist/{TopBar-BiE7GgIN.cjs.map → TopBar-Ctzx7o2k.cjs.map} +1 -1
  323. package/dist/TsdbTab-7F4mRKDo.js +125 -0
  324. package/dist/TsdbTab-7F4mRKDo.js.map +1 -0
  325. package/dist/TsdbTab-DVF6n9mq.cjs +2 -0
  326. package/dist/TsdbTab-DVF6n9mq.cjs.map +1 -0
  327. package/dist/{UpgradeToEnterpriseDialog-et3RrozN.js → UpgradeToEnterpriseDialog-D_S574Zb.js} +6 -6
  328. package/dist/{UpgradeToEnterpriseDialog-et3RrozN.js.map → UpgradeToEnterpriseDialog-D_S574Zb.js.map} +1 -1
  329. package/dist/{UpgradeToEnterpriseDialog-D1_viCAx.cjs → UpgradeToEnterpriseDialog-XJb6gVCY.cjs} +2 -2
  330. package/dist/{UpgradeToEnterpriseDialog-D1_viCAx.cjs.map → UpgradeToEnterpriseDialog-XJb6gVCY.cjs.map} +1 -1
  331. package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-D0cYHPwr.js → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-BJxLUZhh.js} +11973 -11975
  332. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-BJxLUZhh.js.map +1 -0
  333. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-eKtA_EtD.cjs +1485 -0
  334. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-eKtA_EtD.cjs.map +1 -0
  335. package/dist/{VWidget-0kkhOxhV.js → VWidget-CxnaMF0w.js} +3 -3
  336. package/dist/{VWidget-0kkhOxhV.js.map → VWidget-CxnaMF0w.js.map} +1 -1
  337. package/dist/{VWidget-Dkji3VZ0.cjs → VWidget-dEHSEvZx.cjs} +2 -2
  338. package/dist/{VWidget-Dkji3VZ0.cjs.map → VWidget-dEHSEvZx.cjs.map} +1 -1
  339. package/dist/{ValueWidget-BoQfnx8U.js → ValueWidget-BYgpXfDo.js} +6 -6
  340. package/dist/{ValueWidget-BoQfnx8U.js.map → ValueWidget-BYgpXfDo.js.map} +1 -1
  341. package/dist/{ValueWidget-mkXMZvdK.cjs → ValueWidget-Bws1qOEI.cjs} +2 -2
  342. package/dist/{ValueWidget-mkXMZvdK.cjs.map → ValueWidget-Bws1qOEI.cjs.map} +1 -1
  343. package/dist/{ValuelimitsbarWidget-B8IUYgYx.cjs → ValuelimitsbarWidget-BoZSJvuq.cjs} +2 -2
  344. package/dist/{ValuelimitsbarWidget-B8IUYgYx.cjs.map → ValuelimitsbarWidget-BoZSJvuq.cjs.map} +1 -1
  345. package/dist/{ValuelimitsbarWidget-ZfgwDNqX.js → ValuelimitsbarWidget-Dc9-VNZ3.js} +7 -7
  346. package/dist/{ValuelimitsbarWidget-ZfgwDNqX.js.map → ValuelimitsbarWidget-Dc9-VNZ3.js.map} +1 -1
  347. package/dist/{ValuelimitscolumnWidget-B3x9DknL.js → ValuelimitscolumnWidget-b7W8K3mR.js} +7 -7
  348. package/dist/{ValuelimitscolumnWidget-B3x9DknL.js.map → ValuelimitscolumnWidget-b7W8K3mR.js.map} +1 -1
  349. package/dist/{ValuelimitscolumnWidget-B7DigaiC.cjs → ValuelimitscolumnWidget-ta9i_tiy.cjs} +2 -2
  350. package/dist/{ValuelimitscolumnWidget-B7DigaiC.cjs.map → ValuelimitscolumnWidget-ta9i_tiy.cjs.map} +1 -1
  351. package/dist/{ValuerangebarWidget-40InNHft.js → ValuerangebarWidget-DmhczZQb.js} +7 -7
  352. package/dist/{ValuerangebarWidget-40InNHft.js.map → ValuerangebarWidget-DmhczZQb.js.map} +1 -1
  353. package/dist/{ValuerangebarWidget-DA4X0MuO.cjs → ValuerangebarWidget-Ips-beG6.cjs} +2 -2
  354. package/dist/{ValuerangebarWidget-DA4X0MuO.cjs.map → ValuerangebarWidget-Ips-beG6.cjs.map} +1 -1
  355. package/dist/{VerticalWidget-BiFa3xbs.cjs → VerticalWidget-BVt7QPjO.cjs} +2 -2
  356. package/dist/{VerticalWidget-BiFa3xbs.cjs.map → VerticalWidget-BVt7QPjO.cjs.map} +1 -1
  357. package/dist/{VerticalWidget-abr1X6L7.js → VerticalWidget-BvsVh0Ob.js} +4 -4
  358. package/dist/{VerticalWidget-abr1X6L7.js.map → VerticalWidget-BvsVh0Ob.js.map} +1 -1
  359. package/dist/{VerticalboxWidget-Cx30rcqe.cjs → VerticalboxWidget-CNoXT3YW.cjs} +2 -2
  360. package/dist/{VerticalboxWidget-Cx30rcqe.cjs.map → VerticalboxWidget-CNoXT3YW.cjs.map} +1 -1
  361. package/dist/{VerticalboxWidget-DsbB17o-.js → VerticalboxWidget-ClTCDCQN.js} +7 -7
  362. package/dist/{VerticalboxWidget-DsbB17o-.js.map → VerticalboxWidget-ClTCDCQN.js.map} +1 -1
  363. package/dist/{Widget-VL9FlMQp.cjs → Widget-CB_BtOFw.cjs} +2 -2
  364. package/dist/{Widget-VL9FlMQp.cjs.map → Widget-CB_BtOFw.cjs.map} +1 -1
  365. package/dist/{Widget-DksaxMdD.js → Widget-DRhVdCLP.js} +2 -2
  366. package/dist/{Widget-DksaxMdD.js.map → Widget-DRhVdCLP.js.map} +1 -1
  367. package/dist/components.cjs +1 -1
  368. package/dist/components.js +19 -19
  369. package/dist/icons.js +2 -2
  370. package/dist/{index-Qy49-kGB.cjs → index-3sXOEKCU.cjs} +4 -4
  371. package/dist/index-3sXOEKCU.cjs.map +1 -0
  372. package/dist/{index-DqKiZufS.cjs → index-B34azWgs.cjs} +4 -4
  373. package/dist/index-B34azWgs.cjs.map +1 -0
  374. package/dist/{index-C7Uj4U87.js → index-CJcL4_a4.js} +6 -6
  375. package/dist/index-CJcL4_a4.js.map +1 -0
  376. package/dist/{index-BRc4sKEF.js → index-GYAZJDxn.js} +75 -69
  377. package/dist/index-GYAZJDxn.js.map +1 -0
  378. package/dist/plugins.cjs +1 -1
  379. package/dist/plugins.cjs.map +1 -1
  380. package/dist/plugins.js +3 -3
  381. package/dist/plugins.js.map +1 -1
  382. package/dist/purify.es-4pyphLiB.cjs +3 -0
  383. package/dist/purify.es-4pyphLiB.cjs.map +1 -0
  384. package/dist/{purify.es-DcWaZU6I.js → purify.es-BPDBzHtc.js} +115 -115
  385. package/dist/purify.es-BPDBzHtc.js.map +1 -0
  386. package/dist/{settings-D3MxiRHY.cjs → settings-B0AhztTk.cjs} +2 -2
  387. package/dist/{settings-D3MxiRHY.cjs.map → settings-B0AhztTk.cjs.map} +1 -1
  388. package/dist/{settings-BDlsBCNk.js → settings-C2auUQwX.js} +2 -2
  389. package/dist/{settings-BDlsBCNk.js.map → settings-C2auUQwX.js.map} +1 -1
  390. package/dist/tools/admin.cjs +1 -1
  391. package/dist/tools/admin.js +1 -1
  392. package/dist/tools/base.cjs +1 -1
  393. package/dist/tools/base.js +9 -9
  394. package/dist/tools/calendar.cjs +1 -1
  395. package/dist/tools/calendar.js +1 -1
  396. package/dist/tools/scriptrunner.cjs +8 -8
  397. package/dist/tools/scriptrunner.cjs.map +1 -1
  398. package/dist/tools/scriptrunner.js +3185 -2986
  399. package/dist/tools/scriptrunner.js.map +1 -1
  400. package/dist/vue-common.css +1 -1
  401. package/dist/widgets.cjs +1 -1
  402. package/dist/widgets.js +65 -65
  403. package/package.json +10 -10
  404. package/dist/EventListDialog-CktWO2jn.js.map +0 -1
  405. package/dist/EventListDialog-EAGLDaHc.cjs +0 -2
  406. package/dist/EventListDialog-EAGLDaHc.cjs.map +0 -1
  407. package/dist/Graph-9_EZ9aQx.cjs +0 -2
  408. package/dist/Graph-9_EZ9aQx.cjs.map +0 -1
  409. package/dist/Graph-GhpiUBKI.js.map +0 -1
  410. package/dist/HorizontallineWidget-CnRlq7hi.js +0 -16
  411. package/dist/MicroservicesTab-ARGtrfOb.cjs +0 -4
  412. package/dist/MicroservicesTab-ARGtrfOb.cjs.map +0 -1
  413. package/dist/MicroservicesTab-BSXNA_Si.js.map +0 -1
  414. package/dist/Openc3Screen-BP7Ho9XC.js.map +0 -1
  415. package/dist/Openc3Screen-CJOTF-lu.cjs.map +0 -1
  416. package/dist/PackagesTab-ByfVH001.js.map +0 -1
  417. package/dist/PackagesTab-HPNAXhzf.cjs +0 -2
  418. package/dist/PackagesTab-HPNAXhzf.cjs.map +0 -1
  419. package/dist/PluginsTab-D7zpmf8s.js.map +0 -1
  420. package/dist/PluginsTab-DfmpvAYa.cjs +0 -6
  421. package/dist/PluginsTab-DfmpvAYa.cjs.map +0 -1
  422. package/dist/TargetPacketItemChooser-DD7JgCD9.js.map +0 -1
  423. package/dist/TargetPacketItemChooser-PqyXKRlT.cjs +0 -2
  424. package/dist/TargetPacketItemChooser-PqyXKRlT.cjs.map +0 -1
  425. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-D0cYHPwr.js.map +0 -1
  426. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-DtL207xP.cjs +0 -1485
  427. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-DtL207xP.cjs.map +0 -1
  428. package/dist/index-BRc4sKEF.js.map +0 -1
  429. package/dist/index-C7Uj4U87.js.map +0 -1
  430. package/dist/index-DqKiZufS.cjs.map +0 -1
  431. package/dist/index-Qy49-kGB.cjs.map +0 -1
  432. package/dist/purify.es-B336bjAn.cjs +0 -3
  433. package/dist/purify.es-B336bjAn.cjs.map +0 -1
  434. package/dist/purify.es-DcWaZU6I.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"PluginsTab-DfmpvAYa.cjs","sources":["../src/plugins/plugin-store/PluginProps.js","../src/plugins/plugin-store/PluginDetailsDialog.vue","../src/plugins/plugin-store/PluginCard.vue","../src/plugins/plugin-store/PluginStoreSettingsDialog.vue","../src/plugins/plugin-store/PluginStore.vue","../src/tools/admin/tabs/plugins/PluginListItem.vue","../src/tools/admin/tabs/plugins/PluginList.vue","../src/tools/admin/tabs/PluginsTab.vue"],"sourcesContent":["/*\n# Copyright 2025, 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\nimport { Api, OpenC3Api } from '@openc3/js-common/services'\n\nconst SETTING_NAME = 'store_url'\nconst DEFAULT_STORE_URL = 'https://store.openc3.com'\n\nexport default {\n props: {\n id: Number,\n name: String,\n title: String,\n // titleSlug: String,\n author: String,\n // authorSlug: String,\n author_extra: Object,\n description: String,\n keywords: Array,\n img_path: String, // Set for local plugins\n image_url: String, // Set for app store plugins\n licenses: Array,\n // rating: Number,\n // downloads: Number,\n homepage: String,\n repository: String,\n gem_url: String,\n minimum_cosmos_version: String,\n checksum: String,\n versions: Array,\n current_version_id: Number,\n },\n data: function () {\n return {\n _api: new OpenC3Api(),\n _storeUrl: '',\n imageContents: null,\n }\n },\n computed: {\n plugin: function () {\n return {\n id: this.id,\n name: this.name,\n title: this.title,\n // titleSlug: this.titleSlug,\n author: this.author,\n // authorSlug: this.authorSlug,\n author_extra: this.author_extra,\n description: this.description,\n keywords: this.keywords,\n img_path: this.img_path,\n image_url: this.image_url,\n licenses: this.licenses,\n // rating: this.rating,\n // downloads: this.downloads,\n homepage: this.homepage,\n repository: this.repository,\n gem_url: this.gem_url,\n minimum_cosmos_version: this.minimum_cosmos_version,\n checksum: this.checksum,\n versions: this.versions,\n current_version_id: this.current_version_id,\n }\n },\n imageContentsWithMimeType: function () {\n if (this.imageContents) {\n const magicNumbers = {\n 'image/bmp': [0x42, 0x4d],\n 'image/jpeg': [0xff, 0xd8, 0xff],\n 'image/png': [0x89, 0x50, 0x4e, 0x47],\n 'image/gif': [0x47, 0x49, 0x46, 0x38],\n 'image/webp': [0x52, 0x49, 0x46, 0x46],\n }\n const fileHead = new TextEncoder()\n .encode(globalThis.atob(this.imageContents.slice(0, 6))) // only atob as much as we need\n .slice(1) // second call to slice on the decoded data because base64 bytes aren't 1:1\n const found = Object.entries(magicNumbers).find(([_, magicNumber]) => {\n return magicNumber.every((byte, i) => byte === fileHead[i])\n })\n if (found) {\n const [mimeType] = found\n return `data:${mimeType};base64,${this.imageContents}`\n }\n }\n return undefined\n },\n _navigableStoreUrl: function () {\n return this._storeUrl.replace('host.docker.internal', 'localhost')\n },\n storeLink: function () {\n if (this.hasStoreListing && this._navigableStoreUrl) {\n return new URL(`/cosmos_plugins/${this.id}`, this._navigableStoreUrl)\n }\n return null\n },\n hasStoreListing: function () {\n return !!this.id\n },\n hasDetails: function () {\n if (this.hasStoreListing) {\n return true\n }\n return !!this.title && !!this.description\n },\n isPluginInstalled: function () {\n return !!this.name // Plugins only have a title, not a name, from the store\n },\n },\n created: async function () {\n try {\n this._storeUrl =\n (await this._api.get_setting(SETTING_NAME)) || DEFAULT_STORE_URL\n } catch {\n this._storeUrl = DEFAULT_STORE_URL\n }\n if (this.img_path) {\n try {\n const params = new URLSearchParams({\n volume: 'OPENC3_GEMS_VOLUME',\n scope: globalThis.openc3Scope,\n })\n const { data } = await Api.get(\n `/openc3-api/storage/download_file/${encodeURIComponent(this.img_path)}?${params}`,\n )\n this.imageContents = data.contents\n } catch {\n // Failed to get image, don't do anything\n }\n }\n },\n}\n","<!--\n# Copyright 2025 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-dialog v-model=\"isDialogOpen\" max-width=\"500\">\n <v-card>\n <v-toolbar height=\"24\">\n <v-spacer />\n <span v-text=\"versionTitle\" />\n <v-spacer />\n <v-tooltip location=\"top\">\n <template #activator=\"{ props }\">\n <div v-bind=\"props\">\n <v-btn\n :href=\"storeLink\"\n target=\"_blank\"\n icon=\"mdi-open-in-new\"\n size=\"small\"\n variant=\"plain\"\n />\n </div>\n </template>\n <span> View at {{ formattedStoreLink }} </span>\n </v-tooltip>\n <v-btn\n icon=\"mdi-close-box\"\n variant=\"text\"\n density=\"compact\"\n @click=\"closeDialog\"\n />\n </v-toolbar>\n <v-card-subtitle\n class=\"d-flex align-center justify-space-between subtitle-with-version\"\n >\n <div>\n By <strong>{{ author }}</strong>\n <span v-if=\"author_extra?.badge_text\" class=\"ml-1 font-italic\">\n {{ author_extra.badge_text }}\n </span>\n <v-icon\n v-if=\"author_extra?.badge_icon\"\n :icon=\"author_extra.badge_icon\"\n :size=\"18\"\n class=\"ml-1\"\n />\n </div>\n <v-select\n v-if=\"hasVersions\"\n v-model=\"selectedVersionId\"\n :items=\"versionOptions\"\n item-title=\"title\"\n item-value=\"value\"\n label=\"Version\"\n density=\"compact\"\n variant=\"outlined\"\n hide-details\n class=\"version-select\"\n />\n </v-card-subtitle>\n <!--\n <v-card-subtitle\n class=\"d-flex align-center justify-content-space-between\"\n >\n <div>\n <v-icon icon=\"mdi-cloud-download\" size=\"x-small\" />\n {{ downloads }} downloads\n </div>\n <v-spacer />\n <div class=\"d-flex align-center\">\n <v-rating\n :model-value=\"rating\"\n density=\"compact\"\n size=\"small\"\n readonly\n half-increments\n />\n </div>\n </v-card-subtitle>\n -->\n <v-card-text>\n <div class=\"plugin-image-backdrop\">\n <v-img\n v-if=\"imageContentsWithMimeType\"\n :src=\"imageContentsWithMimeType\"\n />\n <v-img v-else-if=\"versionImageUrl\" :src=\"versionImageUrl\" />\n </div>\n <div class=\"mt-3\" v-text=\"versionDescription\" />\n <div class=\"mt-3 text-caption font-italic\">\n Keywords:\n <template v-if=\"versionKeywords\">\n <v-chip\n v-for=\"keyword in versionKeywords\"\n :key=\"keyword\"\n variant=\"flat\"\n color=\"primary\"\n size=\"x-small\"\n class=\"ml-1\"\n >\n {{ keyword }}\n </v-chip>\n </template>\n <span v-else class=\"font-italic\"> none </span>\n </div>\n <div class=\"mt-3 text-caption font-italic\">\n Licenses:\n <v-chip\n v-for=\"license in versionLicenses\"\n :key=\"license\"\n size=\"x-small\"\n class=\"ml-1\"\n >\n {{ license }}\n </v-chip>\n </div>\n <div class=\"mt-3\">\n <span class=\"text-caption font-italic\">\n Minimum COSMOS version:\n </span>\n {{ versionMinimumCosmosVersion }}\n <v-tooltip\n v-if=\"versionsAreCompatible !== null\"\n :open-delay=\"600\"\n location=\"top\"\n >\n <template #activator=\"{ props }\">\n <span v-bind=\"props\">\n <v-icon\n :icon=\"\n versionsAreCompatible ? 'mdi-check-circle' : 'mdi-alert'\n \"\n size=\"small\"\n />\n </span>\n </template>\n <span v-if=\"versionsAreCompatible\">\n Your version of COSMOS meets the requirements.\n </span>\n <span v-else>\n Your version of COSMOS is out of date. You can still install this\n plugin, but it might not work correctly.\n </span>\n </v-tooltip>\n </div>\n <v-text-field\n v-model=\"versionChecksum\"\n class=\"mt-3\"\n label=\"SHA256\"\n variant=\"solo\"\n density=\"compact\"\n hide-details\n readonly\n >\n <template #append>\n <v-tooltip\n v-model=\"showCopiedTooltip\"\n location=\"top\"\n :open-on-hover=\"false\"\n >\n <template #activator=\"{ props }\">\n <v-btn\n v-bind=\"props\"\n icon=\"mdi-content-copy\"\n variant=\"text\"\n density=\"compact\"\n @click=\"copyChecksum\"\n />\n </template>\n <span>Copied!</span>\n </v-tooltip>\n </template>\n </v-text-field>\n </v-card-text>\n\n <v-card-actions class=\"justify-start px-6\">\n <v-btn\n v-if=\"isPluginInstalled\"\n text=\"Uninstall\"\n append-icon=\"mdi-puzzle-remove\"\n variant=\"outlined\"\n color=\"red\"\n @click=\"uninstall\"\n />\n <v-btn\n v-else\n text=\"Install\"\n append-icon=\"mdi-puzzle-plus\"\n variant=\"elevated\"\n @click=\"install\"\n />\n <v-btn\n v-if=\"versionRepository\"\n text=\"Repository\"\n append-icon=\"mdi-open-in-new\"\n variant=\"outlined\"\n :href=\"versionRepository\"\n target=\"_blank\"\n />\n <v-btn\n v-if=\"versionHomepage\"\n text=\"Homepage\"\n append-icon=\"mdi-open-in-new\"\n variant=\"outlined\"\n :href=\"versionHomepage\"\n target=\"_blank\"\n />\n </v-card-actions>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport * as semver from 'semver'\nimport PluginProps from './PluginProps'\n\nexport default {\n mixins: [PluginProps],\n props: {\n modelValue: Boolean,\n },\n emits: ['triggerInstall', 'triggerUninstall', 'update:modelValue'],\n data() {\n return {\n showDialog: false,\n showCopiedTooltip: false,\n installedCosmosVersion: null,\n selectedVersionId: null,\n }\n },\n computed: {\n isDialogOpen: {\n get: function () {\n return this.modelValue || this.showDialog\n },\n set: function (val) {\n this.showDialog = val\n this.$emit('update:modelValue', val)\n },\n },\n hasVersions: function () {\n return this.versions && this.versions.length > 0\n },\n selectedVersion: function () {\n if (!this.hasVersions) {\n return null\n }\n const versionId = this.selectedVersionId || this.current_version_id\n return this.versions.find((v) => v.id === versionId) || this.versions[0]\n },\n versionOptions: function () {\n if (!this.hasVersions) {\n return []\n }\n return this.versions.map((v) => ({\n title: v.version_number,\n value: v.id,\n }))\n },\n versionTitle: function () {\n return this.selectedVersion?.title || this.title\n },\n versionDescription: function () {\n return this.selectedVersion?.description || this.description\n },\n versionKeywords: function () {\n return this.selectedVersion?.keywords || this.keywords\n },\n versionLicenses: function () {\n return this.selectedVersion?.licenses || this.licenses\n },\n versionHomepage: function () {\n return this.selectedVersion?.homepage || this.homepage\n },\n versionRepository: function () {\n return this.selectedVersion?.repository || this.repository\n },\n versionGemUrl: function () {\n return this.selectedVersion?.gem_url || this.gem_url\n },\n versionMinimumCosmosVersion: function () {\n return (\n this.selectedVersion?.minimum_cosmos_version ||\n this.minimum_cosmos_version\n )\n },\n versionChecksum: function () {\n return this.selectedVersion?.checksum || this.checksum\n },\n versionImageUrl: function () {\n return this.selectedVersion?.image_url || this.image_url\n },\n formattedStoreLink: function () {\n return this._navigableStoreUrl.split('://').at(-1)\n },\n versionsAreCompatible: function () {\n if (!this.installedCosmosVersion || !this.versionMinimumCosmosVersion) {\n return null\n }\n return semver.gte(\n this.installedCosmosVersion,\n this.versionMinimumCosmosVersion,\n )\n },\n },\n created: function () {\n Api.get('/openc3-api/info').then(({ data }) => {\n this.installedCosmosVersion = data.version\n })\n },\n mounted: function () {\n this.selectedVersionId = this.current_version_id\n },\n methods: {\n openDialog: function () {\n this.isDialogOpen = true\n },\n closeDialog: function () {\n this.isDialogOpen = false\n },\n install: function () {\n this.$emit('triggerInstall', {\n id: this.id,\n version_id: this.selectedVersionId || this.current_version_id,\n })\n },\n uninstall: function () {\n this.$emit('triggerUninstall', {\n id: this.id,\n version_id: this.selectedVersionId || this.current_version_id,\n })\n },\n copyChecksum: function () {\n navigator.clipboard.writeText(this.versionChecksum)\n this.showCopiedTooltip = true\n setTimeout(() => {\n this.showCopiedTooltip = false\n }, 1000)\n },\n },\n}\n</script>\n\n<style scoped>\n.plugin-image-backdrop {\n background-color: rgb(156, 163, 175);\n}\n\n.subtitle-with-version {\n width: 100%;\n min-height: 48px;\n}\n\n.version-select {\n max-width: 120px;\n min-width: 120px;\n}\n</style>\n","<!--\n# Copyright 2025 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 height=\"350\" class=\"d-flex flex-column\" @click=\"openDialog\">\n <v-card-title class=\"d-flex align-center justify-content-space-between\">\n {{ title }}\n </v-card-title>\n <v-card-subtitle class=\"d-flex align-center justify-content-space-between\">\n <div>\n By <strong>{{ author }}</strong>\n <span v-if=\"author_extra?.badge_text\" class=\"ml-1 font-italic\">\n {{ author_extra.badge_text }}\n </span>\n <v-icon\n v-if=\"author_extra?.badge_icon\"\n :icon=\"author_extra.badge_icon\"\n :size=\"18\"\n class=\"ml-1\"\n />\n </div>\n <!--\n <v-spacer />\n <v-rating\n :model-value=\"rating\"\n density=\"compact\"\n size=\"small\"\n readonly\n half-increments\n />\n -->\n </v-card-subtitle>\n <v-card-text>\n <div class=\"plugin-image-backdrop\">\n <v-img v-if=\"image_url\" :src=\"image_url\" max-height=\"160\" />\n </div>\n <div\n :class=\"{\n 'truncate-description': true,\n 'truncate-2': !!image_url,\n 'truncate-10': !image_url,\n }\"\n v-text=\"description\"\n />\n </v-card-text>\n <v-spacer />\n <v-card-actions class=\"flex-wrap\">\n <v-btn\n text=\"Install\"\n append-icon=\"mdi-puzzle-plus\"\n variant=\"elevated\"\n @click.stop=\"install\"\n />\n </v-card-actions>\n </v-card>\n <plugin-details-dialog\n v-if=\"showDialog\"\n v-model=\"showDialog\"\n v-bind=\"plugin\"\n @trigger-install=\"install\"\n />\n</template>\n\n<script>\nimport PluginProps from './PluginProps'\nimport PluginDetailsDialog from './PluginDetailsDialog.vue'\n\nexport default {\n components: {\n PluginDetailsDialog,\n },\n mixins: [PluginProps],\n emits: ['triggerInstall'],\n data() {\n return {\n showDialog: false,\n }\n },\n methods: {\n openDialog: function () {\n this.showDialog = true\n },\n install: function (event) {\n this.$emit('triggerInstall', {\n id: this.id,\n version_id: event?.version_id || this.current_version_id,\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.truncate-description {\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n}\n\n.truncate-2 {\n line-clamp: 2;\n -webkit-line-clamp: 2;\n}\n\n.truncate-10 {\n line-clamp: 10;\n -webkit-line-clamp: 10;\n}\n\n.plugin-image-backdrop {\n background-color: rgb(156, 163, 175);\n}\n</style>\n","<!--\n# Copyright 2025 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-dialog v-model=\"showDialog\" width=\"600\">\n <v-toolbar height=\"24\">\n <v-spacer />\n <span>Plugin Store Settings</span>\n <v-spacer />\n </v-toolbar>\n <v-card class=\"pa-3\">\n <v-alert v-model=\"errorLoading\" type=\"error\" closable density=\"compact\">\n Error loading previous configuration due to {{ errorText }}\n </v-alert>\n <v-alert v-model=\"errorSaving\" type=\"error\" closable density=\"compact\">\n Error saving due to {{ errorText }}\n </v-alert>\n <v-card-text>\n <v-text-field\n v-model=\"storeUrl\"\n label=\"Store URL\"\n :rules=\"[rules.required, rules.url]\"\n />\n <v-text-field v-model=\"apiKey\" type=\"password\" label=\"API Key\" />\n </v-card-text>\n <v-card-actions>\n <v-btn\n color=\"success\"\n variant=\"text\"\n text=\"Save\"\n data-test=\"save-store-settings-btn\"\n @click=\"save\"\n />\n </v-card-actions>\n </v-card>\n </v-dialog>\n\n <v-dialog v-model=\"showApiKeyAlert\">\n <v-card class=\"pa-3\">\n <v-card-text class=\"pb-0\">\n You're using COSMOS Enterprise, but you haven't set an OpenC3 Store API\n key yet. You must set this to access Enterprise plugins.\n <br />\n <br />\n Visit the\n <a :href=\"accountSettingsUrl\" target=\"_blank\">\n OpenC3 Store account settings<v-icon\n icon=\"mdi-open-in-new\"\n size=\"x-small\"\n />\n </a>\n to generate an API key. Then, return here and open the Plugin Store\n settings with the\n <v-icon icon=\"mdi-cog\" size=\"small\" /> icon and paste your API key into\n the API key field.\n </v-card-text>\n <v-card-actions>\n <v-checkbox\n v-model=\"suppressApiKeyAlert\"\n class=\"px-3\"\n label=\"Don't show this message again\"\n hide-details\n />\n <v-btn variant=\"elevated\" text=\"OK\" @click=\"closeApiKeyAlert\" />\n </v-card-actions>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport Settings from '@/tools/admin/tabs/settings/settings.js'\n\nconst URL_SETTING_NAME = 'store_url'\nconst API_KEY_SETTING_NAME = 'store_api_key'\nconst SETTING_SCOPE = 'DEFAULT'\nconst DEFAULT_STORE_URL = 'https://store.openc3.com'\n\nexport default {\n mixins: [Settings],\n props: {\n modelValue: Boolean,\n },\n emits: ['update:modelValue', 'update:storeUrl'],\n data() {\n return {\n showDialog: false,\n storeUrl: '',\n apiKey: null,\n isEnterprise: false,\n showApiKeyAlert: false,\n suppressApiKeyAlert: false,\n rules: {\n required: (value) => !!value || 'Required',\n url: (value) => {\n try {\n new URL(value)\n } catch (_) {\n return 'Not a valid URL'\n }\n return true\n },\n },\n }\n },\n computed: {\n accountSettingsUrl: function () {\n const navigableHost = this.storeUrl.replace(\n 'host.docker.internal',\n 'localhost',\n )\n return new URL('account', navigableHost)\n },\n },\n watch: {\n apiKey: function (val) {\n this.checkEnterpriseKey()\n },\n isEnterprise: function (val) {\n this.checkEnterpriseKey()\n },\n suppressApiKeyAlert: function (val) {\n localStorage.setItem('pluginStore.suppressApiKeyAlert', val)\n },\n modelValue: function (val) {\n if (val) {\n this.showDialog = val\n }\n },\n showDialog: function (val) {\n if (!val) {\n this.$emit('update:modelValue', val)\n }\n },\n },\n created: function () {\n Api.get('/openc3-api/info').then(({ data }) => {\n this.isEnterprise = data.enterprise\n })\n this.loadSetting(URL_SETTING_NAME, { scope: SETTING_SCOPE })\n this.loadSetting(API_KEY_SETTING_NAME, { scope: SETTING_SCOPE })\n this.$emit('update:storeUrl', this.storeUrl)\n },\n methods: {\n checkEnterpriseKey: function () {\n if (this.isEnterprise && this.apiKey === '') {\n this.openApiKeyAlert()\n }\n },\n openApiKeyAlert: function () {\n if (localStorage.getItem('pluginStore.suppressApiKeyAlert') !== 'true') {\n this.showApiKeyAlert = true\n }\n },\n closeApiKeyAlert: function () {\n this.showApiKeyAlert = false\n },\n save: function () {\n this.saveSetting(URL_SETTING_NAME, this.storeUrl, {\n scope: SETTING_SCOPE,\n })\n this.saveSetting(API_KEY_SETTING_NAME, this.apiKey, {\n scope: SETTING_SCOPE,\n })\n this.$emit('update:storeUrl', this.storeUrl)\n this.showDialog = false\n },\n parseSetting: function (response, { setting }) {\n switch (setting) {\n case URL_SETTING_NAME:\n this.storeUrl = response || DEFAULT_STORE_URL\n break\n case API_KEY_SETTING_NAME:\n this.apiKey = response || ''\n break\n }\n },\n },\n}\n</script>\n","<!--\n# Copyright 2025 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-sheet class=\"pb-11 pt-8 px-8\" height=\"100%\">\n <div class=\"d-flex justify-content-space-between\">\n <div>\n <div class=\"text-h3 mb-3\">OpenC3 Plugin Store</div>\n <div class=\"text-subtitle-1\">\n Browse plugins made by OpenC3 and the COSMOS community\n </div>\n </div>\n <v-spacer />\n <v-btn icon=\"mdi-cog\" variant=\"text\" @click=\"openSettings\" />\n\n <v-tooltip location=\"top\">\n <template #activator=\"{ props }\">\n <div v-bind=\"props\">\n <v-btn\n :href=\"storeUrl\"\n target=\"_blank\"\n icon=\"mdi-open-in-new\"\n variant=\"text\"\n class=\"mx-2\"\n />\n </div>\n </template>\n <span> Open {{ formattedStoreUrl }} </span>\n </v-tooltip>\n\n <v-btn icon=\"mdi-close\" variant=\"text\" @click=\"close\" />\n </div>\n <div class=\"d-inline-flex align-center w-100\">\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 data-test=\"search-plugin-store\"\n />\n </div>\n <v-spacer />\n <span class=\"\"> Click on a plugin to see more information about it </span>\n <v-alert\n v-if=\"storeError\"\n class=\"mt-6\"\n color=\"error\"\n :title=\"storeError.title\"\n :text=\"storeError.body\"\n />\n <v-container v-else>\n <v-row>\n <v-col v-for=\"plugin in filteredPlugins\" :key=\"plugin.id\" cols=\"4\">\n <plugin-card v-bind=\"plugin\" @trigger-install=\"install\" />\n </v-col>\n </v-row>\n </v-container>\n </v-sheet>\n <plugin-store-settings-dialog\n v-model=\"showSettingsDialog\"\n @update:store-url=\"updatePluginStore\"\n />\n</template>\n\n<script>\nimport { Api, OpenC3Api } from '@openc3/js-common/services'\nimport { PluginCard } from '@/plugins/plugin-store'\nimport PluginStoreSettingsDialog from './PluginStoreSettingsDialog.vue' // idk why importing from @/plugins/plugin-store isn't working\n\nconst DEFAULT_STORE_URL = 'https://store.openc3.com'\n\nexport default {\n components: {\n PluginCard,\n PluginStoreSettingsDialog,\n },\n emits: ['close', 'triggerInstall'],\n data() {\n return {\n api: new OpenC3Api(),\n search: '',\n showSettingsDialog: false,\n plugins: [],\n storeError: null,\n storeUrl: DEFAULT_STORE_URL,\n }\n },\n computed: {\n filteredPlugins: function () {\n let filtered = this.plugins\n if (this.search.length) {\n filtered = filtered.filter((plugin) =>\n plugin.title.toLowerCase().includes(this.search.toLowerCase()),\n )\n }\n return filtered\n },\n formattedStoreUrl: function () {\n return this.storeUrl.split('://').at(-1)\n },\n },\n mounted: function () {\n // Don't call updatePluginStore() here. It should be called in the background before the user opens this store\n // view (see PluginsTab.vue `created()`) to keep this feeling fast\n this.fetchPluginStoreData()\n // TODO: do something with plugins that are already installed (no uninstall button: https://github.com/OpenC3/cosmos/pull/2162#discussion_r2249339853 )\n },\n methods: {\n fetchPluginStoreData: function () {\n Api.get('/openc3-api/pluginstore').then(({ data }) => {\n if (data.error) {\n const { title, body } = data\n this.storeError = { title, body }\n this.plugins = []\n } else {\n this.storeError = null\n this.plugins = data\n }\n })\n },\n close: function () {\n this.$emit('close')\n },\n install: function (plugin) {\n this.$emit('triggerInstall', plugin)\n this.close()\n },\n openSettings: function () {\n this.showSettingsDialog = true\n },\n updatePluginStore: function (storeUrl) {\n this.storeUrl = storeUrl\n this.api.update_plugin_store().then((response) => {\n this.fetchPluginStoreData()\n })\n },\n },\n}\n</script>\n\n<style>\n.v-sheet {\n background-color: var(--color-background-base-default);\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 <tr :class=\"{ 'cursor-pointer': hasDetails }\" data-test=\"plugin-list-item\">\n <td>\n <v-img\n v-if=\"imageContentsWithMimeType\"\n :src=\"imageContentsWithMimeType\"\n max-height=\"56\"\n min-width=\"56\"\n />\n </td>\n <td>\n <div class=\"text-h6\" @click=\"openDetails\" v-text=\"displayTitle\" />\n <div class=\"text-subtitle-2 v-list-item-subtitle pl-0\">\n <!-- subtitle -->\n <template v-if=\"isModified\"> * </template>\n {{ name }}\n </div>\n <div v-if=\"targets?.length\">\n <!-- sub-subtitle -->\n <span v-for=\"(target, index) in targets\" :key=\"index\" class=\"mr-2\">\n <a\n v-if=\"target.modified\"\n style=\"cursor: pointer\"\n @click.prevent=\"downloadTarget(target.name)\"\n v-text=\"target.name\"\n />\n <span v-else v-text=\"target.name\" />\n </span>\n </div>\n </td>\n\n <td>\n <v-menu>\n <template #activator=\"{ props }\">\n <v-icon\n v-bind=\"props\"\n icon=\"mdi-dots-horizontal\"\n data-test=\"plugin-actions\"\n />\n </template>\n <v-list>\n <v-list-item\n title=\"Download\"\n prepend-icon=\"mdi-download\"\n data-test=\"download-plugin\"\n @click=\"downloadPlugin\"\n />\n <v-list-item\n title=\"Edit Details\"\n prepend-icon=\"mdi-pencil\"\n data-test=\"edit-plugin\"\n @click=\"edit\"\n />\n <v-list-item\n title=\"Upgrade\"\n prepend-icon=\"mdi-update\"\n data-test=\"upgrade-plugin\"\n @click=\"upgrade\"\n />\n <v-list-item\n :title=\"`View Microservices (${microserviceCount})`\"\n prepend-icon=\"mdi-tab\"\n data-test=\"view-microservices\"\n @click=\"viewMicroservices\"\n />\n <v-list-item\n title=\"Delete\"\n prepend-icon=\"mdi-delete\"\n data-test=\"delete-plugin\"\n @click=\"deletePrompt\"\n />\n </v-list>\n </v-menu>\n </td>\n </tr>\n <plugin-details-dialog\n v-if=\"showCard\"\n v-model=\"showCard\"\n v-bind=\"plugin\"\n @trigger-uninstall=\"deletePrompt\"\n />\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport { PluginDetailsDialog, PluginProps } from '@/plugins/plugin-store'\n\nexport default {\n components: {\n PluginDetailsDialog,\n },\n mixins: [PluginProps],\n props: {\n targets: {\n type: Array,\n default: () => {\n return []\n },\n },\n isModified: Boolean,\n microservices: {\n type: Object,\n default: () => ({}),\n },\n },\n emits: ['edit', 'delete', 'upgrade'],\n data() {\n return {\n showCard: false,\n }\n },\n computed: {\n displayTitle: function () {\n if (this.title) {\n return this.title\n }\n return this.name\n .replace(/^openc3-cosmos-/, '')\n .replace(/-?\\d+\\.\\d+\\.\\d+(?:\\.pre\\.beta\\d+\\.\\d+)?\\.gem(?:__\\d+)?$/, '') // '-6.6.1.pre.beta0.20250801182255.gem__20250801182444' or '6.6.1.gem'\n },\n getMicroservicesForPlugin: function () {\n const names = []\n for (const [microserviceName, microservice] of Object.entries(\n this.microservices,\n )) {\n if (microservice.plugin === this.name) {\n names.push(microserviceName)\n }\n }\n return names\n },\n microserviceCount: function () {\n return this.getMicroservicesForPlugin.length\n },\n },\n methods: {\n openDetails: function () {\n if (this.hasDetails) {\n this.showCard = true\n }\n },\n downloadPlugin: function () {\n Api.post(`/openc3-api/packages/${this.name}/download`).then(\n (response) => {\n // Decode Base64 string\n const decodedData = window.atob(response.data.contents)\n // Create UNIT8ARRAY of size same as row data length\n const uInt8Array = new Uint8Array(decodedData.length)\n // Insert all character code into uInt8Array\n for (let i = 0; i < decodedData.length; ++i) {\n uInt8Array[i] = decodedData.charCodeAt(i)\n }\n const blob = new Blob([uInt8Array], { type: 'application/zip' })\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute('download', response.data.filename)\n link.click()\n },\n )\n },\n downloadTarget: function (name) {\n Api.post(`/openc3-api/targets/${name}/download`).then((response) => {\n // Decode Base64 string\n const decodedData = window.atob(response.data.contents)\n // Create UNIT8ARRAY of size same as row data length\n const uInt8Array = new Uint8Array(decodedData.length)\n // Insert all character code into uInt8Array\n for (let i = 0; i < decodedData.length; ++i) {\n uInt8Array[i] = decodedData.charCodeAt(i)\n }\n const blob = new Blob([uInt8Array], { type: 'application/zip' })\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute('download', response.data.filename)\n link.click()\n })\n },\n edit: function () {\n this.$emit('edit')\n },\n upgrade: function () {\n this.$emit('upgrade')\n },\n viewMicroservices: function () {\n const servicesParam = this.getMicroservicesForPlugin.join(',')\n this.$router.push({\n path: '/tools/admin/microservices',\n query: { services: servicesParam },\n })\n },\n deletePrompt: function () {\n this.showCard = false\n this.$emit('delete')\n },\n },\n}\n</script>\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-data-table\n :headers=\"[]\"\n :items=\"shownPlugins\"\n density=\"compact\"\n class=\"list\"\n data-test=\"plugin-list\"\n >\n <template #item=\"{ item: plugin }\">\n <plugin-list-item\n v-bind=\"plugin\"\n :targets=\"pluginTargets(plugin.name)\"\n :is-modified=\"isModified(plugin.name)\"\n :microservices=\"microservices\"\n @edit=\"() => editPlugin(plugin.name)\"\n @upgrade=\"() => upgradePlugin(plugin.name)\"\n @delete=\"() => deletePrompt(plugin.name)\"\n />\n </template>\n </v-data-table>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport PluginListItem from './PluginListItem.vue'\n\nexport default {\n components: {\n PluginListItem,\n },\n props: {\n plugins: {\n type: Array,\n required: true,\n },\n targets: {\n type: Object,\n required: true,\n },\n showDefaultTools: {\n type: Boolean,\n default: false,\n },\n defaultPlugins: {\n type: Array,\n required: true,\n },\n },\n emits: ['edit', 'delete', 'upgrade'],\n data() {\n return {\n showPluginDetails: false,\n detailPlugin: null,\n microservices: {},\n }\n },\n computed: {\n shownPlugins() {\n const pluginsToShow = []\n const defaultPluginsToShow = []\n this.plugins.forEach((plugin) => {\n const pluginNameFirst = plugin.name.split('__')[0]\n const pluginNameSplit = pluginNameFirst.split('-').slice(0, -1)\n const pluginNameShort = pluginNameSplit.join('-')\n if (this.defaultPlugins.includes(pluginNameShort)) {\n defaultPluginsToShow.push(plugin)\n } else {\n pluginsToShow.push(plugin)\n }\n })\n pluginsToShow.sort((a, b) =>\n a.name < b.name ? -1 : a.name > b.name ? 1 : 0,\n )\n if (this.showDefaultTools) {\n defaultPluginsToShow.sort((a, b) =>\n a.name < b.name ? -1 : a.name > b.name ? 1 : 0,\n )\n return pluginsToShow.concat(defaultPluginsToShow)\n }\n return pluginsToShow\n },\n },\n mounted() {\n this.fetchMicroservices()\n },\n methods: {\n showDetails: function (plugin) {\n this.detailPlugin = plugin\n this.showPluginDetails = true\n },\n pluginTargets: function (plugin) {\n let result = []\n for (const target in this.targets) {\n if (this.targets[target]['plugin'] === plugin) {\n result.push(this.targets[target])\n }\n }\n return result\n },\n isModified: function (plugin) {\n return Object.entries(this.targets).some(([targetName, target]) => {\n return target['plugin'] === plugin && target['modified'] === true\n })\n },\n editPlugin: function (plugin) {\n this.$emit('edit', plugin)\n },\n upgradePlugin(plugin) {\n this.$emit('upgrade', plugin)\n },\n deletePrompt: function (plugin) {\n this.$emit('delete', plugin)\n },\n fetchMicroservices: function () {\n Api.get('/openc3-api/microservices/all').then((response) => {\n this.microservices = response.data\n })\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","<!--\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-row no-gutters align=\"center\" class=\"px-2\">\n <v-col class=\"pa-2 mt-2\">\n <v-btn append-icon=\"mdi-store\" @click=\"openStore\">\n Browse Plugins\n </v-btn>\n <v-btn append-icon=\"mdi-paperclip\" class=\"mx-2\" @click=\"selectFile\">\n Install From File\n </v-btn>\n <input\n ref=\"fileInput\"\n accept=\".gem\"\n style=\"display: none\"\n type=\"file\"\n @change=\"fileChange\"\n />\n <br />\n <p class=\"mt-2\">\n Note: Use <v-icon> mdi-dots-horizontal </v-icon> in the Installed\n Plugins list to upgrade existing plugins\n </p>\n </v-col>\n <v-col class=\"ml-4 mr-2\" cols=\"4\">\n <rux-progress :value=\"progress\" />\n </v-col>\n </v-row>\n <v-row no-gutters class=\"px-2\">\n <v-col align=\"right\" class=\"mr-2\">\n <div>* indicates a modified plugin</div>\n <div>Click target link to download modifications</div>\n </v-col>\n </v-row>\n <v-divider />\n <!-- TODO This alert shows both success and failure. Make consistent with rest of OpenC3. -->\n <v-alert\n v-model=\"showAlert\"\n closable\n :type=\"alertType\"\n :text=\"alert\"\n data-test=\"plugin-alert\"\n />\n <v-list\n v-if=\"Object.keys(processes).length > 0\"\n class=\"list\"\n data-test=\"process-list\"\n >\n <v-row no-gutters class=\"px-4\">\n <v-col class=\"text-h5\"> Process List </v-col>\n <v-col align=\"right\">\n <!-- See openc3/lib/openc3/utilities/process_manager.rb CLEANUP_CYCLE_SECONDS -->\n <div>Showing last 10 min of activity</div>\n </v-col>\n </v-row>\n <div v-for=\"process in processes\" :key=\"process.name\">\n <v-list-item>\n <v-list-item-title>\n <span\n :class=\"process.state.toLowerCase()\"\n v-text=\"\n `Processing ${process.process_type}: ${process.detail} - ${process.state}`\n \"\n />\n </v-list-item-title>\n <v-list-item-subtitle>\n <span v-text=\"' Updated At: ' + formatDate(process.updated_at)\" />\n </v-list-item-subtitle>\n\n <template #append>\n <v-progress-circular\n v-if=\"process.state === 'Running'\"\n indeterminate\n color=\"primary\"\n />\n <v-tooltip v-else :open-delay=\"600\" location=\"top\">\n <template #activator=\"{ props }\">\n <v-btn\n v-bind=\"props\"\n icon=\"mdi-eye\"\n variant=\"text\"\n aria-label=\"Show Output\"\n data-test=\"show-output\"\n @click=\"showOutput(process)\"\n />\n </template>\n <span> Show Output </span>\n </v-tooltip>\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <v-row no-gutters class=\"px-4\">\n <v-col class=\"text-h5\"> Installed Plugins </v-col>\n <v-col class=\"v-col-auto\">\n <v-switch\n v-model=\"showDefaultTools\"\n label=\"Show Default Tools\"\n density=\"compact\"\n hide-details\n data-test=\"show-default-tools\"\n />\n </v-col>\n </v-row>\n <plugin-list\n :plugins=\"plugins\"\n :targets=\"targets\"\n :show-default-tools=\"showDefaultTools\"\n :default-plugins=\"defaultPlugins\"\n @edit=\"editPlugin\"\n @upgrade=\"upgradePlugin\"\n @delete=\"deletePrompt\"\n />\n <plugin-dialog\n v-if=\"showPluginDialog\"\n v-model=\"showPluginDialog\"\n :plugin-name=\"pluginName\"\n :variables=\"variables\"\n :plugin-txt=\"pluginTxt\"\n :existing-plugin-txt=\"existingPluginTxt\"\n :store-plugin-id=\"storePluginId\"\n :store-version-id=\"storeVersionId\"\n :min-cosmos-version=\"minCosmosVersion\"\n @callback=\"pluginCallback\"\n />\n <modified-plugin-dialog\n v-if=\"showModifiedPluginDialog\"\n v-model=\"showModifiedPluginDialog\"\n :plugin-name=\"currentPlugin\"\n :targets=\"pluginTargets(currentPlugin)\"\n :plugin-delete=\"pluginDelete\"\n @submit=\"modifiedSubmit\"\n />\n <!-- <download-dialog v-model=\"showDownloadDialog\" /> -->\n <simple-text-dialog\n v-model=\"showProcessOutput\"\n title=\"Process Output\"\n :text=\"processOutput\"\n />\n <v-bottom-sheet v-model=\"showPluginStore\" fullscreen>\n <plugin-store\n @close=\"() => (showPluginStore = false)\"\n @trigger-install=\"(storeData) => upload(null, storeData)\"\n />\n </v-bottom-sheet>\n </div>\n</template>\n\n<script>\nimport { toDate, format } from 'date-fns'\nimport { Api, OpenC3Api } from '@openc3/js-common/services'\nimport { SimpleTextDialog } from '@/components'\nimport { ModifiedPluginDialog, PluginDialog } from '@/tools/admin'\nimport { PluginList } from '@/tools/admin/tabs/plugins'\nimport { PluginStore } from '@/plugins/plugin-store'\n\nexport default {\n components: {\n PluginDialog,\n PluginList,\n PluginStore,\n ModifiedPluginDialog,\n SimpleTextDialog,\n },\n data() {\n return {\n // Control state\n pluginName: null,\n variables: {},\n storePluginId: null,\n storeVersionId: null,\n minCosmosVersion: null,\n pluginTxt: '',\n file: null,\n currentPlugin: null,\n pluginHashTmp: null,\n existingPluginTxt: null,\n progress: 0,\n pluginDelete: false,\n\n api: new OpenC3Api(),\n plugins: [],\n targets: {},\n processes: {},\n alert: '',\n alertType: 'success',\n showAlert: false,\n showDownloadDialog: false,\n showProcessOutput: false,\n processOutput: '',\n showPluginStore: false,\n showPluginDialog: false,\n showModifiedPluginDialog: false,\n showDefaultTools: false,\n // When updating update local_mode.rb, local_mode.py, plugins.p.spec.ts\n defaultPlugins: [\n 'openc3-cosmos-tool-admin',\n 'openc3-cosmos-tool-bucketexplorer',\n 'openc3-cosmos-tool-cmdsender',\n 'openc3-cosmos-tool-cmdqueue', // Enterprise only\n 'openc3-cosmos-tool-cmdhistory', // Enterprise only\n 'openc3-cosmos-tool-cmdtlmserver',\n 'openc3-cosmos-tool-dataextractor',\n 'openc3-cosmos-tool-dataviewer',\n 'openc3-cosmos-tool-docs',\n 'openc3-cosmos-tool-handbooks',\n 'openc3-cosmos-tool-iframe',\n 'openc3-cosmos-tool-limitsmonitor',\n 'openc3-cosmos-tool-packetviewer',\n 'openc3-cosmos-tool-scriptrunner',\n 'openc3-cosmos-tool-tablemanager',\n 'openc3-cosmos-tool-tlmgrapher',\n 'openc3-cosmos-tool-tlmviewer',\n 'openc3-cosmos-enterprise-tool-admin', // Enterprise only\n 'openc3-cosmos-tool-autonomic', // Enterprise only\n 'openc3-cosmos-tool-calendar', // Enterprise only\n 'openc3-cosmos-tool-grafana', // Enterprise only\n 'openc3-cosmos-tool-logexplorer', // Enterprise only\n 'openc3-cosmos-tool-notebooks', // Enterprise only\n 'openc3-cosmos-tool-systemhealth', // Enterprise only\n 'openc3-enterprise-tool-base', // Enterprise only\n 'openc3-tool-base',\n ],\n }\n },\n watch: {\n // watcher to reset the file input when the dialog is closed\n showPluginDialog: function (newValue, oldValue) {\n if (newValue === false) {\n this.file = null\n this.$refs.fileInput.value = null\n }\n },\n },\n created() {\n this.api.update_plugin_store()\n },\n mounted() {\n this.update()\n this.updateProcesses()\n\n // Handle going \"back\" from the plugin store\n // (idk why v-bottom-sheet's close-on-back prop isn't working)\n const that = this\n window.onpopstate = function () {\n if (that.showPluginStore) {\n that.showPluginStore = false\n history.go(1)\n }\n }\n },\n methods: {\n resetControlState: function () {\n this.pluginName = null\n this.variables = {}\n this.storePluginId = null\n this.storeVersionId = null\n this.minCosmosVersion = null\n this.pluginTxt = ''\n this.file = null\n this.currentPlugin = null\n this.pluginHashTmp = null\n this.existingPluginTxt = null\n this.progress = 0\n this.pluginDelete = false\n },\n pluginTargets: function (plugin) {\n let result = []\n for (const target in this.targets) {\n if (this.targets[target]['plugin'] === plugin) {\n result.push(this.targets[target])\n }\n }\n return result\n },\n isModified: function (plugin) {\n return Object.entries(this.targets).some(([targetName, target]) => {\n return target['plugin'] === plugin && target['modified'] === true\n })\n },\n showOutput: function (process) {\n this.processOutput = process.output\n this.showProcessOutput = true\n },\n update: function () {\n Api.get('/openc3-api/plugins/all').then((response) => {\n this.plugins = Object.entries(response.data).map(\n ([_, plugin]) => plugin,\n )\n })\n Api.get('/openc3-api/targets_modified').then((response) => {\n this.targets = response.data\n })\n },\n updateProcesses: function () {\n Api.get('openc3-api/process_status/plugin_?substr=true').then(\n (response) => {\n this.processes = response.data\n if (Object.keys(this.processes).length > 0) {\n setTimeout(() => {\n this.updateProcesses()\n this.update()\n }, 5000)\n }\n },\n )\n },\n formatDate(nanoSecs) {\n return format(\n toDate(Number.parseInt(nanoSecs) / 1000000),\n 'yyyy-MM-dd HH:mm:ss.SSS',\n )\n },\n upload: function (existing = null, storeData = null) {\n const method = existing ? 'put' : 'post'\n const path = existing\n ? `/openc3-api/plugins/${existing}`\n : '/openc3-api/plugins'\n const formData = new FormData()\n if (storeData === null) {\n formData.append('plugin', this.file, this.file.name)\n } else {\n formData.append('store_plugin_id', storeData.id)\n formData.append('store_version_id', storeData.version_id)\n }\n let self = this\n const promise = Api[method](path, {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n onUploadProgress: function (progressEvent) {\n let percentCompleted = Math.round(\n (progressEvent.loaded * 100) / progressEvent.total,\n )\n self.progress = percentCompleted\n },\n })\n promise\n .then((response) => {\n this.progress = 100\n this.alert = 'Uploaded file'\n this.alertType = 'success'\n this.showAlert = true\n setTimeout(() => {\n this.showAlert = false\n }, 5000)\n this.update()\n let existingPluginTxt = null\n if (response.data.existing_plugin_txt_lines !== undefined) {\n existingPluginTxt =\n response.data.existing_plugin_txt_lines.join('\\n')\n }\n let pluginTxt = response.data.plugin_txt_lines.join('\\n')\n this.pluginName = response.data.name\n this.variables = response.data.variables\n this.storePluginId = response.data.store_plugin_id\n this.storeVersionId = response.data.store_version_id\n this.minCosmosVersion = response.data.minimum_cosmos_version\n this.pluginTxt = pluginTxt\n this.existingPluginTxt = existingPluginTxt\n this.showPluginDialog = true\n this.file = undefined\n })\n .catch((error) => {\n this.currentPlugin = null\n this.file = undefined\n })\n },\n pluginCallback: function (pluginHash) {\n this.showPluginDialog = false\n if (this.currentPlugin !== null) {\n pluginHash['name'] = this.currentPlugin\n }\n this.pluginHashTmp = pluginHash\n if (this.isModified(this.currentPlugin)) {\n this.pluginDelete = false\n this.showModifiedPluginDialog = true\n } else {\n this.pluginInstall()\n }\n },\n modifiedSubmit: async function (deleteModified) {\n if (deleteModified === true) {\n for (let target of this.pluginTargets(this.currentPlugin)) {\n if (target.modified == true) {\n await Api.post(`/openc3-api/targets/${target.name}/delete_modified`)\n }\n }\n }\n if (this.pluginDelete) {\n this.deletePlugin(this.currentPlugin)\n } else {\n this.pluginInstall()\n }\n },\n pluginInstall: function () {\n Api.post(`/openc3-api/plugins/install/${this.pluginName}`, {\n data: {\n plugin_hash: JSON.stringify(this.pluginHashTmp),\n },\n }).then((response) => {\n this.alert = `Started installing plugin ${this.pluginName} ...`\n this.alertType = 'success'\n this.showAlert = true\n this.currentPlugin = null\n this.file = undefined\n this.variables = {}\n this.pluginTxt = ''\n this.existingPluginTxt = null\n this.storePluginId = null\n this.storeVersionId = null\n setTimeout(() => {\n this.showAlert = false\n this.updateProcesses()\n }, 5000)\n this.update()\n })\n },\n editPlugin: function (plugin) {\n this.resetControlState()\n Api.get(`/openc3-api/plugins/${plugin}`).then((response) => {\n let existingPluginTxt = null\n if (response.data.existing_plugin_txt_lines !== undefined) {\n existingPluginTxt = response.data.existing_plugin_txt_lines.join('\\n')\n }\n this.pluginName = response.data.name\n this.variables = response.data.variables\n this.pluginTxt = response.data.plugin_txt_lines.join('\\n')\n this.existingPluginTxt = existingPluginTxt\n this.showPluginDialog = true\n })\n },\n deletePrompt: function (plugin) {\n this.resetControlState()\n this.$dialog\n .confirm(`Are you sure you want to remove: ${plugin}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n if (this.isModified(plugin)) {\n this.currentPlugin = plugin\n this.pluginDelete = true\n this.showModifiedPluginDialog = true\n } else {\n this.deletePlugin(plugin)\n }\n })\n },\n deletePlugin: function (plugin) {\n this.alert = `Removing plugin ${plugin} ...`\n this.alertType = 'success'\n this.showAlert = true\n Api.delete(`/openc3-api/plugins/${plugin}`).then((response) => {\n setTimeout(() => {\n this.showAlert = false\n this.updateProcesses()\n }, 5000)\n })\n this.update()\n },\n upgradePlugin(plugin) {\n this.resetControlState()\n this.currentPlugin = plugin\n this.$refs.fileInput.click()\n },\n selectFile() {\n this.resetControlState()\n this.$refs.fileInput.click()\n },\n fileChange(event) {\n const files = event.target.files\n if (files.length > 0) {\n this.file = files[0]\n if (this.currentPlugin !== null) {\n if (\n this.file.name.split('.gem')[0] ==\n this.currentPlugin.split('.gem')[0]\n ) {\n this.$dialog\n .confirm(\n `The new gem ${this.file.name} appears to be identical to the existing ${this.currentPlugin}. Install?`,\n {\n okText: 'Ok',\n cancelText: 'Cancel',\n },\n )\n .then(() => {\n this.upload(this.currentPlugin)\n })\n .catch((error) => {\n // do nothing\n })\n } else {\n // Split up the gem name to determine if this is an upgrade\n // or mistakenly trying to install a different gem\n // Gems are named like openc3-cosmos-demo-5.3.2.gem or\n // openc3-cosmos-pw-test-1.0.0.20230213074527.gem\n // So split on - and match everything until the first .\n let parts = this.file.name.split('-')\n let i = parts.findIndex((x) => x.includes('.'))\n let newName = parts.slice(0, i).join('-')\n parts = this.currentPlugin.split('-')\n i = parts.findIndex((x) => x.includes('.'))\n let existingName = parts.slice(0, i).join('-')\n if (newName !== existingName) {\n this.$dialog\n .confirm(\n `The new gem base name ${newName} doesn't match the existing ${existingName}. Install?`,\n {\n okText: 'Ok',\n cancelText: 'Cancel',\n },\n )\n .then(() => {\n this.upload(this.currentPlugin)\n })\n } else {\n this.upload(this.currentPlugin)\n }\n }\n } else {\n this.upload()\n }\n } else {\n // Reset the input element\n this.$refs.fileInput.value = null\n }\n },\n openStore() {\n this.resetControlState()\n this.showPluginStore = true\n },\n },\n}\n</script>\n\n<style scoped>\n.crashed {\n color: red;\n}\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n</style>\n"],"names":["SETTING_NAME","DEFAULT_STORE_URL","PluginProps","OpenC3Api","magicNumbers","fileHead","found","_","magicNumber","byte","i","mimeType","params","data","Api","_sfc_main","val","versionId","v","semver.gte","_hoisted_3","_hoisted_5","_hoisted_7","_hoisted_8","_createBlock","_component_v_dialog","$options","$event","_createVNode","_component_v_card","_component_v_toolbar","_component_v_spacer","_createElementVNode","_toDisplayString","_component_v_tooltip","_withCtx","props","_component_v_btn","_ctx","_component_v_card_subtitle","_openBlock","_createElementBlock","_hoisted_2","_component_v_icon","_component_v_select","$data","_component_v_card_text","_component_v_img","_Fragment","_renderList","keyword","_component_v_chip","_hoisted_6","license","_cache","_component_v_text_field","_mergeProps","_component_v_card_actions","PluginDetailsDialog","event","_component_v_card_title","_hoisted_1","_normalizeClass","_component_plugin_details_dialog","URL_SETTING_NAME","API_KEY_SETTING_NAME","SETTING_SCOPE","Settings","value","navigableHost","response","setting","_component_v_alert","_createTextVNode","_component_v_checkbox","PluginCard","PluginStoreSettingsDialog","filtered","plugin","title","body","storeUrl","_component_v_sheet","_component_v_container","_component_v_row","_component_v_col","_component_plugin_card","_component_plugin_store_settings_dialog","names","microserviceName","microservice","decodedData","uInt8Array","blob","link","name","servicesParam","args","$props","target","index","_withModifiers","_component_v_menu","_component_v_list","_component_v_list_item","PluginListItem","pluginsToShow","defaultPluginsToShow","pluginNameShort","a","b","result","targetName","_component_v_data_table","_component_plugin_list_item","PluginDialog","PluginList","PluginStore","ModifiedPluginDialog","SimpleTextDialog","newValue","oldValue","that","process","nanoSecs","format","toDate","existing","storeData","method","path","formData","self","progressEvent","percentCompleted","existingPluginTxt","pluginTxt","error","pluginHash","deleteModified","dialog","files","parts","x","newName","existingName","_component_rux_progress","_component_v_divider","_component_v_progress_circular","_component_v_list_item_title","_component_v_list_item_subtitle","_component_v_switch","_component_plugin_list","_component_plugin_dialog","_component_modified_plugin_dialog","_component_simple_text_dialog","_component_v_bottom_sheet","_component_plugin_store"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TargetPacketItemChooser-DD7JgCD9.js","sources":["../src/components/TargetPacketItemChooser.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# A portion of this file was funded by Blue Origin Enterprises, L.P.\n# See https://github.com/OpenC3/cosmos/pull/1957\n-->\n\n<template>\n <div class=\"pt-4 pb-4\">\n <v-row class=\"align-center\" :no-gutters=\"!vertical\">\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"select-target\">\n <v-autocomplete\n ref=\"targetAutocomplete\"\n v-model=\"selectedTargetName\"\n label=\"Select Target\"\n hide-details\n auto-select-first\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"autocompleteDisabled || lockTarget\"\n :items=\"targetNames\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"targetNameChanged\"\n @focus=\"selectOnFocus('targetAutocomplete')\"\n />\n </v-col>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"select-packet\">\n <v-autocomplete\n ref=\"packetAutocomplete\"\n v-model=\"selectedPacketName\"\n label=\"Select Packet\"\n hide-details\n auto-select-first\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"packetsDisabled || autocompleteDisabled || lockPacket\"\n :items=\"packetNames\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"packetNameChanged\"\n @focus=\"selectOnFocus('packetAutocomplete')\"\n >\n </v-autocomplete>\n </v-col>\n <v-col\n v-if=\"mode === 'cmd' && showQueueSelect\"\n :cols=\"colSize\"\n class=\"tpic-select pr-4\"\n data-test=\"select-queue\"\n >\n <v-autocomplete\n ref=\"queueAutocomplete\"\n v-model=\"selectedQueueName\"\n label=\"Select Queue\"\n hide-details\n auto-select-first\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"autocompleteDisabled || queueNames.length === 1\"\n :items=\"queueNames\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"queueNameChanged\"\n @focus=\"selectOnFocus('queueAutocomplete')\"\n />\n </v-col>\n <v-col\n v-if=\"chooseItem\"\n :cols=\"colSize\"\n class=\"tpic-select pr-4\"\n data-test=\"select-item\"\n >\n <v-autocomplete\n ref=\"itemAutocomplete\"\n v-model=\"selectedItemName\"\n label=\"Select Item\"\n hide-details\n auto-select-first\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"itemsDisabled || autocompleteDisabled\"\n :items=\"itemNames\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"itemNameChanged($event)\"\n @focus=\"selectOnFocus('itemAutocomplete')\"\n />\n </v-col>\n <!-- min-width: 105px is enough to display a 2 digit index -->\n <v-col\n v-if=\"chooseItem && itemIsArray\"\n cols=\"1\"\n class=\"tpic-select pr-4\"\n data-test=\"array-index\"\n style=\"min-width: 105px\"\n >\n <v-combobox\n ref=\"indexCombobox\"\n v-model=\"selectedArrayIndex\"\n label=\"Index\"\n hide-details\n auto-select-first\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"itemsDisabled || autocompleteDisabled\"\n :items=\"arrayIndexes\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"indexChanged($event)\"\n @focus=\"selectOnFocus('indexCombobox')\"\n />\n </v-col>\n <v-col v-if=\"buttonText\" :cols=\"colSize\" style=\"max-width: 140px\">\n <v-btn\n :disabled=\"buttonDisabled\"\n color=\"primary\"\n data-test=\"select-send\"\n @click=\"buttonPressed\"\n >\n {{ actualButtonText }}\n </v-btn>\n </v-col>\n </v-row>\n <v-row v-if=\"selectTypes\" class=\"pt-6 align-center\" no-gutters>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"data-type\">\n <v-autocomplete\n ref=\"valueTypeAutocomplete\"\n v-model=\"selectedValueType\"\n label=\"Value Type\"\n hide-details\n auto-select-first\n density=\"compact\"\n variant=\"outlined\"\n :items=\"valueTypes\"\n @focus=\"selectOnFocus('valueTypeAutocomplete')\"\n />\n </v-col>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"reduced\">\n <v-autocomplete\n ref=\"reducedAutocomplete\"\n v-model=\"selectedReduced\"\n label=\"Reduced\"\n hide-details\n auto-select-first\n density=\"compact\"\n variant=\"outlined\"\n :items=\"reductionModes\"\n @focus=\"selectOnFocus('reducedAutocomplete')\"\n />\n </v-col>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"reduced-type\">\n <v-autocomplete\n ref=\"reducedTypeAutocomplete\"\n v-model=\"selectedReducedType\"\n label=\"Reduced Type\"\n hide-details\n auto-select-first\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"selectedReduced === 'DECOM'\"\n :items=\"reducedTypes\"\n @focus=\"selectOnFocus('reducedTypeAutocomplete')\"\n />\n </v-col>\n <v-col :cols=\"colSize\" style=\"max-width: 140px\"> </v-col>\n </v-row>\n <v-row no-gutters class=\"pt-3 px-3 align-center\">\n <v-col :cols=\"colSize\" :class=\"{ 'openc3-yellow': isHazardous }\">\n <v-icon v-if=\"isHazardous\" class=\"mr-1\">mdi-alert</v-icon>\n Description: {{ description }}\n <template v-if=\"isHazardous\"> (HAZARDOUS) </template>\n </v-col>\n </v-row>\n </div>\n</template>\n\n<script>\nimport { Api, OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n props: {\n allowAll: {\n type: Boolean,\n default: false,\n },\n allowAllTargets: {\n type: Boolean,\n default: false,\n },\n allowAllArrayIndex: {\n type: Boolean,\n default: false,\n },\n buttonText: {\n type: String,\n default: null,\n },\n chooseItem: {\n type: Boolean,\n default: false,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n initialTargetName: {\n type: String,\n default: '',\n },\n initialPacketName: {\n type: String,\n default: '',\n },\n initialItemName: {\n type: String,\n default: '',\n },\n selectTypes: {\n type: Boolean,\n default: false,\n },\n showLatest: {\n type: Boolean,\n default: false,\n },\n mode: {\n type: String,\n default: 'tlm',\n // TODO: add validators throughout\n validator: (propValue) => {\n return ['cmd', 'tlm'].includes(propValue)\n },\n },\n unknown: {\n type: Boolean,\n default: false,\n },\n vertical: {\n type: Boolean,\n default: false,\n },\n hidden: {\n type: Boolean,\n default: false,\n },\n lockTarget: {\n type: Boolean,\n default: false,\n },\n lockPacket: {\n type: Boolean,\n default: false,\n },\n showQueueSelect: {\n type: Boolean,\n default: true,\n },\n parameterHazardous: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['on-set', 'addItem'],\n data() {\n return {\n targetNames: [],\n selectedTargetName: this.initialTargetName?.toUpperCase(),\n packetNames: [],\n selectedPacketName: this.initialPacketName?.toUpperCase(),\n queueNames: [{ label: 'None', value: null }],\n selectedQueueName: null,\n itemNames: [],\n selectedItemName: this.initialItemName?.toUpperCase(),\n valueTypes: ['CONVERTED', 'RAW'],\n selectedValueType: 'CONVERTED',\n reductionModes: [\n // Map NONE to DECOM for clarity\n { title: 'NONE', value: 'DECOM' },\n { title: 'REDUCED_MINUTE', value: 'REDUCED_MINUTE' },\n { title: 'REDUCED_HOUR', value: 'REDUCED_HOUR' },\n { title: 'REDUCED_DAY', value: 'REDUCED_DAY' },\n ],\n selectedArrayIndex: null,\n selectedReduced: 'DECOM',\n reducedTypes: ['MIN', 'MAX', 'AVG', 'STDDEV'],\n selectedReducedType: 'AVG',\n description: '',\n hazardous: false,\n internalDisabled: false,\n packetsDisabled: false,\n itemsDisabled: false,\n api: null,\n ALL: {\n label: '[ ALL ]',\n value: 'ALL',\n description: 'ALL',\n }, // Constant to indicate all packets or items\n UNKNOWN: {\n label: '[ UNKNOWN ]',\n value: 'UNKNOWN',\n description: 'UNKNOWN',\n },\n LATEST: {\n label: 'LATEST',\n value: 'LATEST',\n description: 'Latest values from all packets',\n }, // Constant to indicate latest values from all packets\n }\n },\n computed: {\n actualButtonText: function () {\n if (this.selectedPacketName === 'ALL') {\n return 'Add Target'\n }\n if (this.selectedItemName === 'ALL') {\n return 'Add Packet'\n }\n return this.buttonText\n },\n autocompleteDisabled: function () {\n return this.disabled || this.internalDisabled\n },\n buttonDisabled: function () {\n return (\n this.disabled ||\n this.internalDisabled ||\n this.selectedTargetName === null ||\n this.selectedPacketName === null ||\n this.selectedItemNameWIndex === null\n )\n },\n colSize: function () {\n return this.vertical ? 12 : false\n },\n selectedItemNameWIndex: function () {\n if (\n this.itemIsArray &&\n this.selectedArrayIndex !== null &&\n this.selectedArrayIndex !== this.ALL.label\n ) {\n return `${this.selectedItemName}[${this.selectedArrayIndex}]`\n } else {\n return this.selectedItemName\n }\n },\n includeLatestPacketInDropdown: function () {\n return this.showLatest && this.mode === 'tlm' // because LATEST cmd doesn't have much use and thus isn't currently implemented\n },\n arrayIndexes: function () {\n let i = this.itemNames.findIndex(\n (item) => item.value === this.selectedItemName,\n )\n let indexes = [...Array(this.itemNames[i].array).keys()]\n if (this.allowAll || this.allowAllArrayIndex) {\n indexes.unshift(this.ALL.label)\n }\n return indexes\n },\n itemIsArray: function () {\n let i = this.itemNames.findIndex(\n (item) => item.value === this.selectedItemName,\n )\n if (i === -1 || Number.isNaN(this.itemNames[i].array)) {\n return false\n } else {\n return true\n }\n },\n isHazardous: function () {\n return this.hazardous || this.parameterHazardous\n },\n },\n watch: {\n initialTargetName: function (val) {\n // These three \"initial\" watchers are here in case the parent component doesn't figure out its initial values\n // until after this component has already been created. All this logic incl. the \"on-set\" events could be\n // simplified with a refactor to use named v-models, but that's probably a significant breaking change.\n if (val) {\n this.selectedTargetName = val.toUpperCase()\n }\n },\n initialPacketName: function (val) {\n if (val) {\n this.selectedPacketName = val.toUpperCase()\n }\n },\n initialItemName: function (val) {\n if (val) {\n this.selectedItemName = val.toUpperCase()\n }\n },\n mode: function (newVal, oldVal) {\n this.selectedPacketName = null\n this.selectedItemName = null\n // This also updates packets and items as needed\n this.targetNameChanged(this.selectedTargetName)\n },\n chooseItem: function (newVal, oldVal) {\n if (newVal) {\n this.updateItems()\n } else {\n this.itemNames = []\n }\n },\n itemIsArray: function (val) {\n if (val) {\n this.selectedArrayIndex ||= 0\n } else {\n this.selectedArrayIndex = null\n }\n },\n },\n created() {\n this.internalDisabled = true\n this.api = new OpenC3Api()\n\n // Fetch queues if in command mode\n if (this.mode === 'cmd') {\n Api.get('/openc3-api/queues')\n .then((response) => {\n this.queueNames = [{ label: 'None', value: null }]\n if (response.data && Array.isArray(response.data)) {\n response.data.forEach((queue) => {\n this.queueNames.push({ label: queue.name, value: queue.name })\n })\n }\n })\n .catch((error) => {\n // eslint-disable-next-line no-console\n console.error('Error fetching queues:', error)\n // Keep default \"None\" option even if fetch fails\n })\n }\n\n this.api.get_target_names().then((result) => {\n this.targetNames = result.flatMap((target) => {\n // Ignore the UNKNOWN target as it doesn't make sense to select this\n if (target == 'UNKNOWN') {\n return []\n }\n return { label: target, value: target }\n })\n // TODO: This is a nice enhancement but results in logs of API calls for many targets\n // See if we can reduce this to a single API call\n // Filter out any targets without packets\n // for (let i = this.targetNames.length - 1; i >= 0; i--) {\n // const cmd =\n // this.mode === 'tlm' ? 'get_all_tlm_names' : 'get_all_cmd_names'\n // await this.api[cmd](this.targetNames[i].value).then((names) => {\n // if (names.length === 0) {\n // this.targetNames.splice(i, 1)\n // }\n // })\n // }\n if (this.allowAllTargets) {\n this.targetNames.unshift(this.ALL)\n }\n // If the initial target name is not set, default to the first target\n // which also updates packets and items as needed\n if (!this.selectedTargetName) {\n this.selectedTargetName = this.targetNames[0].value\n this.targetNameChanged(this.selectedTargetName)\n } else {\n // Selected target name was set but we still have to update packets\n this.updatePackets()\n }\n if (this.unknown) {\n this.targetNames.push(this.UNKNOWN)\n }\n })\n },\n methods: {\n selectOnFocus: function (refName) {\n this.$nextTick(() => {\n const component = this.$refs[refName]\n if (component) {\n const input = component.$el.querySelector('input')\n if (input) {\n input.select()\n }\n }\n })\n },\n updatePackets: function () {\n if (this.selectedTargetName === 'UNKNOWN') {\n this.packetNames = [this.UNKNOWN]\n this.selectedPacketName = this.packetNames[0].value\n this.updatePacketDetails(this.UNKNOWN.value)\n this.description = 'UNKNOWN'\n return\n }\n if (this.selectedTargetName === 'ALL') {\n this.packetNames = [this.ALL]\n this.selectedPacketName = this.packetNames[0].value\n this.updatePacketDetails(this.ALL.value)\n this.description = 'ALL'\n return\n }\n this.internalDisabled = true\n const cmd =\n this.mode === 'tlm' ? 'get_all_tlm_names' : 'get_all_cmd_names'\n this.api[cmd](this.selectedTargetName, this.hidden).then((names) => {\n this.packetNames = names.map((name) => {\n return {\n label: name,\n value: name,\n }\n })\n if (this.allowAll) {\n this.packetNames.unshift(this.ALL)\n }\n if (this.includeLatestPacketInDropdown) {\n this.packetNames.unshift(this.LATEST)\n }\n if (!this.selectedPacketName) {\n if (this.packetNames.length === 0) {\n this.selectedPacketName = null\n } else {\n this.selectedPacketName = this.packetNames[0].value\n if (\n this.selectedPacketName === 'LATEST' &&\n this.packetNames.length > 1\n ) {\n this.selectedPacketName = this.packetNames[1].value\n }\n }\n }\n this.updatePacketDetails(this.selectedPacketName)\n const item = this.packetNames.find((packet) => {\n return packet.value === this.selectedPacketName\n })\n if (item && this.chooseItem) {\n this.updateItems()\n }\n this.internalDisabled = false\n })\n },\n\n updateItems: function () {\n if (this.selectedPacketName === 'ALL') {\n return\n }\n this.internalDisabled = true\n\n if (this.selectedPacketName === 'LATEST') {\n this.api\n .get_all_tlm_item_names(this.selectedTargetName)\n .then((items) => {\n this.itemNames = items.map((item) => {\n return {\n label: item,\n value: item,\n description: `LATEST ${item}`,\n // Don't handle array for LATEST\n }\n })\n this.finishUpdateItems()\n })\n } else {\n const cmd = this.mode === 'tlm' ? 'get_tlm' : 'get_cmd'\n this.api[cmd](this.selectedTargetName, this.selectedPacketName).then(\n (packet) => {\n let items = []\n packet.items.forEach((item) => {\n if (!item['hidden']) {\n items.push(item)\n }\n })\n this.itemNames = items.map((item) => {\n let label = item.name\n if (item.data_type == 'DERIVED') {\n label += ' *'\n }\n return {\n label: label,\n value: item.name,\n description: item.description,\n array: item.array_size / item.bit_size,\n }\n })\n this.itemNames.sort((a, b) => (a.label > b.label ? 1 : -1))\n this.finishUpdateItems()\n },\n )\n }\n },\n finishUpdateItems: function () {\n if (this.allowAll) {\n this.itemNames.unshift(this.ALL)\n }\n if (!this.selectedItemName) {\n this.selectedItemName = this.itemNames[0].value\n }\n this.description = this.itemNames[0].description\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n queueName: this.selectedQueueName,\n })\n this.internalDisabled = false\n },\n\n targetNameChanged: function (value) {\n this.selectedTargetName = value\n this.selectedPacketName = ''\n this.selectedItemName = ''\n // When the target name is completed deleted in the v-autocomplete\n // the @change handler is fired but the value is null\n // In this case we don't want to update packets\n if (value !== null) {\n this.updatePackets()\n }\n },\n\n packetNameChanged: function (value) {\n this.selectedItemName = ''\n // When the packet name is completed deleted in the v-autocomplete\n // the @change handler is fired but the value is null\n // In this case we don't want to update packet details\n if (value !== null) {\n this.updatePacketDetails(value)\n }\n },\n\n queueNameChanged: function (value) {\n this.selectedQueueName = value\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n queueName: this.selectedQueueName,\n })\n },\n\n updatePacketDetails: function (value) {\n if (value === 'ALL') {\n this.itemsDisabled = true\n this.internalDisabled = false\n } else if (value === 'LATEST') {\n this.itemsDisabled = false\n this.selectedPacketName = 'LATEST'\n this.description = 'Latest values from all packets'\n this.hazardous = false\n } else {\n this.itemsDisabled = false\n const packet = this.packetNames.find((packet) => {\n return value === packet.value\n })\n if (packet) {\n this.selectedPacketName = packet.value\n const cmd = this.mode === 'tlm' ? 'get_tlm' : 'get_cmd'\n this.api[cmd](this.selectedTargetName, this.selectedPacketName).then(\n (packet) => {\n this.description = packet.description\n this.hazardous = packet.hazardous\n },\n )\n }\n }\n if (this.chooseItem) {\n this.updateItems()\n } else {\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n queueName: this.selectedQueueName,\n })\n }\n },\n\n itemNameChanged: function (value) {\n const item = this.itemNames.find((item) => {\n return value === item.value\n })\n if (item) {\n this.selectedItemName = item.value\n this.description = item.description\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n queueName: this.selectedQueueName,\n })\n }\n },\n\n indexChanged: function (value) {\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n queueName: this.selectedQueueName,\n })\n },\n\n buttonPressed: function () {\n if (this.selectedPacketName === 'ALL') {\n this.allTargetPacketItems()\n } else if (this.selectedItemName === 'ALL') {\n this.allPacketItems()\n } else if (this.chooseItem) {\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n } else {\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n }\n },\n\n allTargetPacketItems: function () {\n this.packetNames.forEach((packetName) => {\n if (packetName === this.ALL) return\n const cmd = this.mode === 'tlm' ? 'get_tlm' : 'get_cmd'\n this.api[cmd](this.selectedTargetName, packetName.value).then(\n (packet) => {\n packet.items.forEach((item) => {\n if (!item['hidden']) {\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: packetName.value,\n itemName: item['name'],\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n }\n })\n },\n )\n })\n },\n\n allPacketItems: function () {\n this.itemNames.forEach((item) => {\n if (item === this.ALL) return\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: item.value,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n })\n },\n },\n}\n</script>\n<style scoped>\n.button {\n padding: 4px;\n}\n.tpic-select {\n max-width: 400px;\n}\n.v-autocomplete .v-select__selections {\n word-break: break-all;\n}\n</style>\n"],"names":["_sfc_main","propValue","i","item","indexes","val","newVal","oldVal","OpenC3Api","Api","response","queue","error","result","target","refName","component","input","cmd","names","name","packet","items","label","a","b","value","packetName","_hoisted_1","_openBlock","_createElementBlock","_createVNode","_component_v_row","$props","_component_v_col","$options","_component_v_autocomplete","$data","$event","_createBlock","_cache","_component_v_combobox","_component_v_btn","_component_v_icon","_toDisplayString","_Fragment"],"mappings":";;;AAiMA,MAAKA,IAAU;AAAA,EACb,OAAO;AAAA,IACL,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,oBAAoB;AAAA,MAClB,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,mBAAmB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,mBAAmB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,MAET,WAAW,CAACC,MACH,CAAC,OAAO,KAAK,EAAE,SAASA,CAAS;AAAA;IAG5C,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,oBAAoB;AAAA,MAClB,MAAM;AAAA,MACN,SAAS;AAAA;;EAGb,OAAO,CAAC,UAAU,SAAS;AAAA,EAC3B,OAAO;AACL,WAAO;AAAA,MACL,aAAa,CAAA;AAAA,MACb,oBAAoB,KAAK,mBAAmB,YAAW;AAAA,MACvD,aAAa,CAAA;AAAA,MACb,oBAAoB,KAAK,mBAAmB,YAAW;AAAA,MACvD,YAAY,CAAC,EAAE,OAAO,QAAQ,OAAO,KAAG,CAAG;AAAA,MAC3C,mBAAmB;AAAA,MACnB,WAAW,CAAA;AAAA,MACX,kBAAkB,KAAK,iBAAiB,YAAW;AAAA,MACnD,YAAY,CAAC,aAAa,KAAK;AAAA,MAC/B,mBAAmB;AAAA,MACnB,gBAAgB;AAAA;AAAA,QAEd,EAAE,OAAO,QAAQ,OAAO,QAAM;AAAA,QAC9B,EAAE,OAAO,kBAAkB,OAAO,iBAAe;AAAA,QACjD,EAAE,OAAO,gBAAgB,OAAO;QAChC,EAAE,OAAO,eAAe,OAAO;;MAEjC,oBAAoB;AAAA,MACpB,iBAAiB;AAAA,MACjB,cAAc,CAAC,OAAO,OAAO,OAAO,QAAQ;AAAA,MAC5C,qBAAqB;AAAA,MACrB,aAAa;AAAA,MACb,WAAW;AAAA,MACX,kBAAkB;AAAA,MAClB,iBAAiB;AAAA,MACjB,eAAe;AAAA,MACf,KAAK;AAAA,MACL,KAAK;AAAA,QACH,OAAO;AAAA,QACP,OAAO;AAAA,QACP,aAAa;AAAA,MACf;AAAA;AAAA,MACA,SAAS;AAAA,QACP,OAAO;AAAA,QACP,OAAO;AAAA,QACP,aAAa;AAAA;MAEf,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,QACP,aAAa;AAAA;;IAEjB;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,kBAAkB,WAAY;AAC5B,aAAI,KAAK,uBAAuB,QACvB,eAEL,KAAK,qBAAqB,QACrB,eAEF,KAAK;AAAA,IACd;AAAA,IACA,sBAAsB,WAAY;AAChC,aAAO,KAAK,YAAY,KAAK;AAAA,IAC/B;AAAA,IACA,gBAAgB,WAAY;AAC1B,aACE,KAAK,YACL,KAAK,oBACL,KAAK,uBAAuB,QAC5B,KAAK,uBAAuB,QAC5B,KAAK,2BAA2B;AAAA,IAEpC;AAAA,IACA,SAAS,WAAY;AACnB,aAAO,KAAK,WAAW,KAAK;AAAA,IAC9B;AAAA,IACA,wBAAwB,WAAY;AAClC,aACE,KAAK,eACL,KAAK,uBAAuB,QAC5B,KAAK,uBAAuB,KAAK,IAAI,QAE9B,GAAG,KAAK,gBAAgB,IAAI,KAAK,kBAAkB,MAEnD,KAAK;AAAA,IAEhB;AAAA,IACA,+BAA+B,WAAY;AACzC,aAAO,KAAK,cAAc,KAAK,SAAS;AAAA,IAC1C;AAAA,IACA,cAAc,WAAY;AACxB,UAAIC,IAAI,KAAK,UAAU;AAAA,QACrB,CAACC,MAASA,EAAK,UAAU,KAAK;AAAA,MAChC,GACIC,IAAU,CAAC,GAAG,MAAM,KAAK,UAAUF,CAAC,EAAE,KAAK,EAAE,KAAI,CAAE;AACvD,cAAI,KAAK,YAAY,KAAK,uBACxBE,EAAQ,QAAQ,KAAK,IAAI,KAAK,GAEzBA;AAAA,IACT;AAAA,IACA,aAAa,WAAY;AACvB,UAAIF,IAAI,KAAK,UAAU;AAAA,QACrB,CAACC,MAASA,EAAK,UAAU,KAAK;AAAA,MAChC;AACA,aAAI,EAAAD,MAAM,MAAM,OAAO,MAAM,KAAK,UAAUA,CAAC,EAAE,KAAK;AAAA,IAKtD;AAAA,IACA,aAAa,WAAY;AACvB,aAAO,KAAK,aAAa,KAAK;AAAA,IAChC;AAAA;EAEF,OAAO;AAAA,IACL,mBAAmB,SAAUG,GAAK;AAIhC,MAAIA,MACF,KAAK,qBAAqBA,EAAI,YAAW;AAAA,IAE7C;AAAA,IACA,mBAAmB,SAAUA,GAAK;AAChC,MAAIA,MACF,KAAK,qBAAqBA,EAAI,YAAW;AAAA,IAE7C;AAAA,IACA,iBAAiB,SAAUA,GAAK;AAC9B,MAAIA,MACF,KAAK,mBAAmBA,EAAI,YAAW;AAAA,IAE3C;AAAA,IACA,MAAM,SAAUC,GAAQC,GAAQ;AAC9B,WAAK,qBAAqB,MAC1B,KAAK,mBAAmB,MAExB,KAAK,kBAAkB,KAAK,kBAAkB;AAAA,IAChD;AAAA,IACA,YAAY,SAAUD,GAAQC,GAAQ;AACpC,MAAID,IACF,KAAK,YAAW,IAEhB,KAAK,YAAY,CAAA;AAAA,IAErB;AAAA,IACA,aAAa,SAAUD,GAAK;AAC1B,MAAIA,IACF,KAAK,uBAAuB,IAE5B,KAAK,qBAAqB;AAAA,IAE9B;AAAA;EAEF,UAAU;AACR,SAAK,mBAAmB,IACxB,KAAK,MAAM,IAAIG,EAAS,GAGpB,KAAK,SAAS,SAChBC,EAAI,IAAI,oBAAoB,EACzB,KAAK,CAACC,MAAa;AAClB,WAAK,aAAa,CAAC,EAAE,OAAO,QAAQ,OAAO,MAAM,GAC7CA,EAAS,QAAQ,MAAM,QAAQA,EAAS,IAAI,KAC9CA,EAAS,KAAK,QAAQ,CAACC,MAAU;AAC/B,aAAK,WAAW,KAAK,EAAE,OAAOA,EAAM,MAAM,OAAOA,EAAM,KAAG,CAAG;AAAA,MAC/D,CAAC;AAAA,IAEL,CAAC,EACA,MAAM,CAACC,MAAU;AAEhB,cAAQ,MAAM,0BAA0BA,CAAK;AAAA,IAE/C,CAAC,GAGL,KAAK,IAAI,iBAAgB,EAAG,KAAK,CAACC,MAAW;AAC3C,WAAK,cAAcA,EAAO,QAAQ,CAACC,MAE7BA,KAAU,YACL,CAAA,IAEF,EAAE,OAAOA,GAAQ,OAAOA,EAAK,CACrC,GAaG,KAAK,mBACP,KAAK,YAAY,QAAQ,KAAK,GAAG,GAI9B,KAAK,qBAKR,KAAK,cAAa,KAJlB,KAAK,qBAAqB,KAAK,YAAY,CAAC,EAAE,OAC9C,KAAK,kBAAkB,KAAK,kBAAkB,IAK5C,KAAK,WACP,KAAK,YAAY,KAAK,KAAK,OAAO;AAAA,IAEtC,CAAC;AAAA,EACH;AAAA,EACA,SAAS;AAAA,IACP,eAAe,SAAUC,GAAS;AAChC,WAAK,UAAU,MAAM;AACnB,cAAMC,IAAY,KAAK,MAAMD,CAAO;AACpC,YAAIC,GAAW;AACb,gBAAMC,IAAQD,EAAU,IAAI,cAAc,OAAO;AACjD,UAAIC,KACFA,EAAM,OAAM;AAAA,QAEhB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,eAAe,WAAY;AACzB,UAAI,KAAK,uBAAuB,WAAW;AACzC,aAAK,cAAc,CAAC,KAAK,OAAO,GAChC,KAAK,qBAAqB,KAAK,YAAY,CAAC,EAAE,OAC9C,KAAK,oBAAoB,KAAK,QAAQ,KAAK,GAC3C,KAAK,cAAc;AACnB;AAAA,MACF;AACA,UAAI,KAAK,uBAAuB,OAAO;AACrC,aAAK,cAAc,CAAC,KAAK,GAAG,GAC5B,KAAK,qBAAqB,KAAK,YAAY,CAAC,EAAE,OAC9C,KAAK,oBAAoB,KAAK,IAAI,KAAK,GACvC,KAAK,cAAc;AACnB;AAAA,MACF;AACA,WAAK,mBAAmB;AACxB,YAAMC,IACJ,KAAK,SAAS,QAAQ,sBAAsB;AAC9C,WAAK,IAAIA,CAAG,EAAE,KAAK,oBAAoB,KAAK,MAAM,EAAE,KAAK,CAACC,MAAU;AAClE,aAAK,cAAcA,EAAM,IAAI,CAACC,OACrB;AAAA,UACL,OAAOA;AAAA,UACP,OAAOA;AAAA,QACT,EACD,GACG,KAAK,YACP,KAAK,YAAY,QAAQ,KAAK,GAAG,GAE/B,KAAK,iCACP,KAAK,YAAY,QAAQ,KAAK,MAAM,GAEjC,KAAK,uBACJ,KAAK,YAAY,WAAW,IAC9B,KAAK,qBAAqB,QAE1B,KAAK,qBAAqB,KAAK,YAAY,CAAC,EAAE,OAE5C,KAAK,uBAAuB,YAC5B,KAAK,YAAY,SAAS,MAE1B,KAAK,qBAAqB,KAAK,YAAY,CAAC,EAAE,UAIpD,KAAK,oBAAoB,KAAK,kBAAkB,GACnC,KAAK,YAAY,KAAK,CAACC,MAC3BA,EAAO,UAAU,KAAK,kBAC9B,KACW,KAAK,cACf,KAAK,YAAW,GAElB,KAAK,mBAAmB;AAAA,MAC1B,CAAC;AAAA,IACH;AAAA,IAEA,aAAa,WAAY;AACvB,UAAI,KAAK,uBAAuB;AAKhC,YAFA,KAAK,mBAAmB,IAEpB,KAAK,uBAAuB;AAC9B,eAAK,IACF,uBAAuB,KAAK,kBAAkB,EAC9C,KAAK,CAACC,MAAU;AACf,iBAAK,YAAYA,EAAM,IAAI,CAACnB,OACnB;AAAA,cACL,OAAOA;AAAA,cACP,OAAOA;AAAA,cACP,aAAa,UAAUA,CAAI;AAAA;AAAA,YAE7B,EACD,GACD,KAAK,kBAAiB;AAAA,UACxB,CAAC;AAAA,aACE;AACL,gBAAMe,IAAM,KAAK,SAAS,QAAQ,YAAY;AAC9C,eAAK,IAAIA,CAAG,EAAE,KAAK,oBAAoB,KAAK,kBAAkB,EAAE;AAAA,YAC9D,CAACG,MAAW;AACV,kBAAIC,IAAQ,CAAA;AACZ,cAAAD,EAAO,MAAM,QAAQ,CAAClB,MAAS;AAC7B,gBAAKA,EAAK,UACRmB,EAAM,KAAKnB,CAAI;AAAA,cAEnB,CAAC,GACD,KAAK,YAAYmB,EAAM,IAAI,CAACnB,MAAS;AACnC,oBAAIoB,IAAQpB,EAAK;AACjB,uBAAIA,EAAK,aAAa,cACpBoB,KAAS,OAEJ;AAAA,kBACL,OAAOA;AAAA,kBACP,OAAOpB,EAAK;AAAA,kBACZ,aAAaA,EAAK;AAAA,kBAClB,OAAOA,EAAK,aAAaA,EAAK;AAAA,gBAChC;AAAA,cACF,CAAC,GACD,KAAK,UAAU,KAAK,CAACqB,GAAGC,MAAOD,EAAE,QAAQC,EAAE,QAAQ,IAAI,EAAG,GAC1D,KAAK,kBAAiB;AAAA,YACxB;AAAA,UACF;AAAA,QACF;AAAA,IACF;AAAA,IACA,mBAAmB,WAAY;AAC7B,MAAI,KAAK,YACP,KAAK,UAAU,QAAQ,KAAK,GAAG,GAE5B,KAAK,qBACR,KAAK,mBAAmB,KAAK,UAAU,CAAC,EAAE,QAE5C,KAAK,cAAc,KAAK,UAAU,CAAC,EAAE,aACrC,KAAK,MAAM,UAAU;AAAA,QACnB,YAAY,KAAK;AAAA,QACjB,YAAY,KAAK;AAAA,QACjB,UAAU,KAAK;AAAA,QACf,WAAW,KAAK;AAAA,QAChB,SAAS,KAAK;AAAA,QACd,aAAa,KAAK;AAAA,QAClB,WAAW,KAAK;AAAA,OACjB,GACD,KAAK,mBAAmB;AAAA,IAC1B;AAAA,IAEA,mBAAmB,SAAUC,GAAO;AAClC,WAAK,qBAAqBA,GAC1B,KAAK,qBAAqB,IAC1B,KAAK,mBAAmB,IAIpBA,MAAU,QACZ,KAAK,cAAa;AAAA,IAEtB;AAAA,IAEA,mBAAmB,SAAUA,GAAO;AAClC,WAAK,mBAAmB,IAIpBA,MAAU,QACZ,KAAK,oBAAoBA,CAAK;AAAA,IAElC;AAAA,IAEA,kBAAkB,SAAUA,GAAO;AACjC,WAAK,oBAAoBA,GACzB,KAAK,MAAM,UAAU;AAAA,QACnB,YAAY,KAAK;AAAA,QACjB,YAAY,KAAK;AAAA,QACjB,UAAU,KAAK;AAAA,QACf,WAAW,KAAK;AAAA,QAChB,SAAS,KAAK;AAAA,QACd,aAAa,KAAK;AAAA,QAClB,WAAW,KAAK;AAAA,OACjB;AAAA,IACH;AAAA,IAEA,qBAAqB,SAAUA,GAAO;AACpC,UAAIA,MAAU;AACZ,aAAK,gBAAgB,IACrB,KAAK,mBAAmB;AAAA,eACfA,MAAU;AACnB,aAAK,gBAAgB,IACrB,KAAK,qBAAqB,UAC1B,KAAK,cAAc,kCACnB,KAAK,YAAY;AAAA,WACZ;AACL,aAAK,gBAAgB;AACrB,cAAML,IAAS,KAAK,YAAY,KAAK,CAACA,MAC7BK,MAAUL,EAAO,KACzB;AACD,YAAIA,GAAQ;AACV,eAAK,qBAAqBA,EAAO;AACjC,gBAAMH,IAAM,KAAK,SAAS,QAAQ,YAAY;AAC9C,eAAK,IAAIA,CAAG,EAAE,KAAK,oBAAoB,KAAK,kBAAkB,EAAE;AAAA,YAC9D,CAACG,MAAW;AACV,mBAAK,cAAcA,EAAO,aAC1B,KAAK,YAAYA,EAAO;AAAA,YAC1B;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,MAAI,KAAK,aACP,KAAK,YAAW,IAEhB,KAAK,MAAM,UAAU;AAAA,QACnB,YAAY,KAAK;AAAA,QACjB,YAAY,KAAK;AAAA,QACjB,UAAU,KAAK;AAAA,QACf,WAAW,KAAK;AAAA,QAChB,SAAS,KAAK;AAAA,QACd,aAAa,KAAK;AAAA,QAClB,WAAW,KAAK;AAAA,OACjB;AAAA,IAEL;AAAA,IAEA,iBAAiB,SAAUK,GAAO;AAChC,YAAMvB,IAAO,KAAK,UAAU,KAAK,CAACA,MACzBuB,MAAUvB,EAAK,KACvB;AACD,MAAIA,MACF,KAAK,mBAAmBA,EAAK,OAC7B,KAAK,cAAcA,EAAK,aACxB,KAAK,MAAM,UAAU;AAAA,QACnB,YAAY,KAAK;AAAA,QACjB,YAAY,KAAK;AAAA,QACjB,UAAU,KAAK;AAAA,QACf,WAAW,KAAK;AAAA,QAChB,SAAS,KAAK;AAAA,QACd,aAAa,KAAK;AAAA,QAClB,WAAW,KAAK;AAAA,OACjB;AAAA,IAEL;AAAA,IAEA,cAAc,SAAUuB,GAAO;AAC7B,WAAK,MAAM,UAAU;AAAA,QACnB,YAAY,KAAK;AAAA,QACjB,YAAY,KAAK;AAAA,QACjB,UAAU,KAAK;AAAA,QACf,WAAW,KAAK;AAAA,QAChB,SAAS,KAAK;AAAA,QACd,aAAa,KAAK;AAAA,QAClB,WAAW,KAAK;AAAA,OACjB;AAAA,IACH;AAAA,IAEA,eAAe,WAAY;AACzB,MAAI,KAAK,uBAAuB,QAC9B,KAAK,qBAAoB,IAChB,KAAK,qBAAqB,QACnC,KAAK,eAAc,IACV,KAAK,aACd,KAAK,MAAM,WAAW;AAAA,QACpB,YAAY,KAAK;AAAA,QACjB,YAAY,KAAK;AAAA,QACjB,UAAU,KAAK;AAAA,QACf,WAAW,KAAK;AAAA,QAChB,SAAS,KAAK;AAAA,QACd,aAAa,KAAK;AAAA,OACnB,IAED,KAAK,MAAM,WAAW;AAAA,QACpB,YAAY,KAAK;AAAA,QACjB,YAAY,KAAK;AAAA,QACjB,WAAW,KAAK;AAAA,QAChB,SAAS,KAAK;AAAA,QACd,aAAa,KAAK;AAAA,OACnB;AAAA,IAEL;AAAA,IAEA,sBAAsB,WAAY;AAChC,WAAK,YAAY,QAAQ,CAACC,MAAe;AACvC,YAAIA,MAAe,KAAK,IAAK;AAC7B,cAAMT,IAAM,KAAK,SAAS,QAAQ,YAAY;AAC9C,aAAK,IAAIA,CAAG,EAAE,KAAK,oBAAoBS,EAAW,KAAK,EAAE;AAAA,UACvD,CAACN,MAAW;AACV,YAAAA,EAAO,MAAM,QAAQ,CAAClB,MAAS;AAC7B,cAAKA,EAAK,UACR,KAAK,MAAM,WAAW;AAAA,gBACpB,YAAY,KAAK;AAAA,gBACjB,YAAYwB,EAAW;AAAA,gBACvB,UAAUxB,EAAK;AAAA,gBACf,WAAW,KAAK;AAAA,gBAChB,SAAS,KAAK;AAAA,gBACd,aAAa,KAAK;AAAA,eACnB;AAAA,YAEL,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,gBAAgB,WAAY;AAC1B,WAAK,UAAU,QAAQ,CAACA,MAAS;AAC/B,QAAIA,MAAS,KAAK,OAClB,KAAK,MAAM,WAAW;AAAA,UACpB,YAAY,KAAK;AAAA,UACjB,YAAY,KAAK;AAAA,UACjB,UAAUA,EAAK;AAAA,UACf,WAAW,KAAK;AAAA,UAChB,SAAS,KAAK;AAAA,UACd,aAAa,KAAK;AAAA,SACnB;AAAA,MACH,CAAC;AAAA,IACH;AAAA;AAEJ,GA/vBOyB,IAAA,EAAA,OAAM,YAAW;;;AAAtB,SAAAC,EAAA,GAAAC,EAsKM,OAtKNF,GAsKM;AAAA,IArKJG,EAkHQC,GAAA;AAAA,MAlHD,OAAM;AAAA,MAAgB,eAAaC,EAAA;AAAA;iBACxC,MAgBQ;AAAA,QAhBRF,EAgBQG,GAAA;AAAA,UAhBA,MAAMC,EAAA;AAAA,UAAS,OAAM;AAAA,UAAmB,aAAU;AAAA;qBACxD,MAcE;AAAA,YAdFJ,EAcEK,GAAA;AAAA,cAbA,KAAI;AAAA,0BACKC,EAAA;AAAA;uCAAAA,EAAA,qBAAkBC;AAAA,gBAUNH,EAAA;AAAA;cATrB,OAAM;AAAA,cACN,gBAAA;AAAA,cACA,qBAAA;AAAA,cACA,SAAQ;AAAA,cACR,SAAQ;AAAA,cACP,UAAUA,EAAA,wBAAwBF,EAAA;AAAA,cAClC,OAAOI,EAAA;AAAA,cACR,cAAW;AAAA,cACX,cAAW;AAAA,cAEV,gCAAOF,EAAA,cAAa,oBAAA;AAAA;;;;QAGzBJ,EAiBQG,GAAA;AAAA,UAjBA,MAAMC,EAAA;AAAA,UAAS,OAAM;AAAA,UAAmB,aAAU;AAAA;qBACxD,MAeiB;AAAA,YAfjBJ,EAeiBK,GAAA;AAAA,cAdf,KAAI;AAAA,0BACKC,EAAA;AAAA;uCAAAA,EAAA,qBAAkBC;AAAA,gBAUNH,EAAA;AAAA;cATrB,OAAM;AAAA,cACN,gBAAA;AAAA,cACA,qBAAA;AAAA,cACA,SAAQ;AAAA,cACR,SAAQ;AAAA,cACP,UAAUE,EAAA,mBAAmBF,EAAA,wBAAwBF,EAAA;AAAA,cACrD,OAAOI,EAAA;AAAA,cACR,cAAW;AAAA,cACX,cAAW;AAAA,cAEV,gCAAOF,EAAA,cAAa,oBAAA;AAAA;;;;QAKjBF,EAAA,kBAAkBA,EAAA,wBAD1BM,EAqBQL,GAAA;AAAA;UAnBL,MAAMC,EAAA;AAAA,UACP,OAAM;AAAA,UACN,aAAU;AAAA;qBAEV,MAcE;AAAA,YAdFJ,EAcEK,GAAA;AAAA,cAbA,KAAI;AAAA,0BACKC,EAAA;AAAA;uCAAAA,EAAA,oBAAiBC;AAAA,gBAULH,EAAA;AAAA;cATrB,OAAM;AAAA,cACN,gBAAA;AAAA,cACA,qBAAA;AAAA,cACA,SAAQ;AAAA,cACR,SAAQ;AAAA,cACP,UAAUA,EAAA,wBAAwBE,EAAA,WAAW,WAAM;AAAA,cACnD,OAAOA,EAAA;AAAA,cACR,cAAW;AAAA,cACX,cAAW;AAAA,cAEV,gCAAOF,EAAA,cAAa,mBAAA;AAAA;;;;QAIjBF,EAAA,mBADRM,EAqBQL,GAAA;AAAA;UAnBL,MAAMC,EAAA;AAAA,UACP,OAAM;AAAA,UACN,aAAU;AAAA;qBAEV,MAcE;AAAA,YAdFJ,EAcEK,GAAA;AAAA,cAbA,KAAI;AAAA,0BACKC,EAAA;AAAA;uCAAAA,EAAA,mBAAgBC;AAAA,gBAUJE,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAF,MAAAH,EAAA,gBAAgBG,CAAM;AAAA;cAT3C,OAAM;AAAA,cACN,gBAAA;AAAA,cACA,qBAAA;AAAA,cACA,SAAQ;AAAA,cACR,SAAQ;AAAA,cACP,UAAUD,EAAA,iBAAiBF,EAAA;AAAA,cAC3B,OAAOE,EAAA;AAAA,cACR,cAAW;AAAA,cACX,cAAW;AAAA,cAEV,gCAAOF,EAAA,cAAa,kBAAA;AAAA;;;;QAKjBF,EAAA,cAAcE,EAAA,oBADtBI,EAsBQL,GAAA;AAAA;UApBN,MAAK;AAAA,UACL,OAAM;AAAA,UACN,aAAU;AAAA,UACV,OAAA,EAAA,aAAA,QAAA;AAAA;qBAEA,MAcE;AAAA,YAdFH,EAcEU,GAAA;AAAA,cAbA,KAAI;AAAA,0BACKJ,EAAA;AAAA;uCAAAA,EAAA,qBAAkBC;AAAA,gBAUNE,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA,CAAAF,MAAAH,EAAA,aAAaG,CAAM;AAAA;cATxC,OAAM;AAAA,cACN,gBAAA;AAAA,cACA,qBAAA;AAAA,cACA,SAAQ;AAAA,cACR,SAAQ;AAAA,cACP,UAAUD,EAAA,iBAAiBF,EAAA;AAAA,cAC3B,OAAOA,EAAA;AAAA,cACR,cAAW;AAAA,cACX,cAAW;AAAA,cAEV,kCAAOA,EAAA,cAAa,eAAA;AAAA;;;;QAGZF,EAAA,mBAAbM,EASQL,GAAA;AAAA;UATkB,MAAMC,EAAA;AAAA,UAAS,OAAA,EAAA,aAAA,QAAA;AAAA;qBACvC,MAOQ;AAAA,YAPRJ,EAOQW,GAAA;AAAA,cANL,UAAUP,EAAA;AAAA,cACX,OAAM;AAAA,cACN,aAAU;AAAA,cACT,SAAOA,EAAA;AAAA;yBAER,MAAsB;AAAA,oBAAnBA,EAAA,gBAAgB,GAAA,CAAA;AAAA;;;;;;;;;IAIZF,EAAA,oBAAbM,EA0CQP,GAAA;AAAA;MA1CkB,OAAM;AAAA,MAAoB,cAAA;AAAA;iBAClD,MAYQ;AAAA,QAZRD,EAYQG,GAAA;AAAA,UAZA,MAAMC,EAAA;AAAA,UAAS,OAAM;AAAA,UAAmB,aAAU;AAAA;qBACxD,MAUE;AAAA,YAVFJ,EAUEK,GAAA;AAAA,cATA,KAAI;AAAA,0BACKC,EAAA;AAAA,8DAAAA,EAAA,oBAAiBC;AAAA,cAC1B,OAAM;AAAA,cACN,gBAAA;AAAA,cACA,qBAAA;AAAA,cACA,SAAQ;AAAA,cACR,SAAQ;AAAA,cACP,OAAOD,EAAA;AAAA,cACP,kCAAOF,EAAA,cAAa,uBAAA;AAAA;;;;QAGzBJ,EAYQG,GAAA;AAAA,UAZA,MAAMC,EAAA;AAAA,UAAS,OAAM;AAAA,UAAmB,aAAU;AAAA;qBACxD,MAUE;AAAA,YAVFJ,EAUEK,GAAA;AAAA,cATA,KAAI;AAAA,0BACKC,EAAA;AAAA,8DAAAA,EAAA,kBAAeC;AAAA,cACxB,OAAM;AAAA,cACN,gBAAA;AAAA,cACA,qBAAA;AAAA,cACA,SAAQ;AAAA,cACR,SAAQ;AAAA,cACP,OAAOD,EAAA;AAAA,cACP,kCAAOF,EAAA,cAAa,qBAAA;AAAA;;;;QAGzBJ,EAaQG,GAAA;AAAA,UAbA,MAAMC,EAAA;AAAA,UAAS,OAAM;AAAA,UAAmB,aAAU;AAAA;qBACxD,MAWE;AAAA,YAXFJ,EAWEK,GAAA;AAAA,cAVA,KAAI;AAAA,0BACKC,EAAA;AAAA,8DAAAA,EAAA,sBAAmBC;AAAA,cAC5B,OAAM;AAAA,cACN,gBAAA;AAAA,cACA,qBAAA;AAAA,cACA,SAAQ;AAAA,cACR,SAAQ;AAAA,cACP,UAAUD,EAAA,oBAAe;AAAA,cACzB,OAAOA,EAAA;AAAA,cACP,kCAAOF,EAAA,cAAa,yBAAA;AAAA;;;;QAGzBJ,EAAyDG,GAAA;AAAA,UAAjD,MAAMC,EAAA;AAAA,UAAS,OAAA,EAAA,aAAA,QAAA;AAAA;;;;IAEzBJ,EAMQC,GAAA;AAAA,MAND,cAAA;AAAA,MAAW,OAAM;AAAA;iBACtB,MAIQ;AAAA,QAJRD,EAIQG,GAAA;AAAA,UAJA,MAAMC,EAAA;AAAA,UAAU,4BAA0BA,EAAA,YAAW,CAAA;AAAA;qBAC3D,MAA0D;AAAA,YAA5CA,EAAA,oBAAdI,EAA0DI,GAAA;AAAA;cAA/B,OAAM;AAAA;yBAAO,MAAS,CAAA,GAAAH,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,kBAAT,aAAS,EAAA;AAAA;;;cAAS,mBAC7CI,EAAGP,EAAA,WAAW,IAAG,KAC9B,CAAA;AAAA,YAAgBF,EAAA,oBAAhBL,EAAqDe,GAAA,EAAA,KAAA,EAAA,GAAA;AAAA,gBAAxB,eAAa;AAAA;;;;;;;;;;"}
@@ -1,2 +0,0 @@
1
- "use strict";const n=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-DtL207xP.cjs"),t=require("vue"),p=require("./CustomIcon-8F08upeg.cjs"),f={props:{allowAll:{type:Boolean,default:!1},allowAllTargets:{type:Boolean,default:!1},allowAllArrayIndex:{type:Boolean,default:!1},buttonText:{type:String,default:null},chooseItem:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},initialTargetName:{type:String,default:""},initialPacketName:{type:String,default:""},initialItemName:{type:String,default:""},selectTypes:{type:Boolean,default:!1},showLatest:{type:Boolean,default:!1},mode:{type:String,default:"tlm",validator:a=>["cmd","tlm"].includes(a)},unknown:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},hidden:{type:Boolean,default:!1},lockTarget:{type:Boolean,default:!1},lockPacket:{type:Boolean,default:!1},showQueueSelect:{type:Boolean,default:!0},parameterHazardous:{type:Boolean,default:!1}},emits:["on-set","addItem"],data(){return{targetNames:[],selectedTargetName:this.initialTargetName?.toUpperCase(),packetNames:[],selectedPacketName:this.initialPacketName?.toUpperCase(),queueNames:[{label:"None",value:null}],selectedQueueName:null,itemNames:[],selectedItemName:this.initialItemName?.toUpperCase(),valueTypes:["CONVERTED","RAW"],selectedValueType:"CONVERTED",reductionModes:[{title:"NONE",value:"DECOM"},{title:"REDUCED_MINUTE",value:"REDUCED_MINUTE"},{title:"REDUCED_HOUR",value:"REDUCED_HOUR"},{title:"REDUCED_DAY",value:"REDUCED_DAY"}],selectedArrayIndex:null,selectedReduced:"DECOM",reducedTypes:["MIN","MAX","AVG","STDDEV"],selectedReducedType:"AVG",description:"",hazardous:!1,internalDisabled:!1,packetsDisabled:!1,itemsDisabled:!1,api:null,ALL:{label:"[ ALL ]",value:"ALL",description:"ALL"},UNKNOWN:{label:"[ UNKNOWN ]",value:"UNKNOWN",description:"UNKNOWN"},LATEST:{label:"LATEST",value:"LATEST",description:"Latest values from all packets"}}},computed:{actualButtonText:function(){return this.selectedPacketName==="ALL"?"Add Target":this.selectedItemName==="ALL"?"Add Packet":this.buttonText},autocompleteDisabled:function(){return this.disabled||this.internalDisabled},buttonDisabled:function(){return this.disabled||this.internalDisabled||this.selectedTargetName===null||this.selectedPacketName===null||this.selectedItemNameWIndex===null},colSize:function(){return this.vertical?12:!1},selectedItemNameWIndex:function(){return this.itemIsArray&&this.selectedArrayIndex!==null&&this.selectedArrayIndex!==this.ALL.label?`${this.selectedItemName}[${this.selectedArrayIndex}]`:this.selectedItemName},includeLatestPacketInDropdown:function(){return this.showLatest&&this.mode==="tlm"},arrayIndexes:function(){let a=this.itemNames.findIndex(d=>d.value===this.selectedItemName),e=[...Array(this.itemNames[a].array).keys()];return(this.allowAll||this.allowAllArrayIndex)&&e.unshift(this.ALL.label),e},itemIsArray:function(){let a=this.itemNames.findIndex(e=>e.value===this.selectedItemName);return!(a===-1||Number.isNaN(this.itemNames[a].array))},isHazardous:function(){return this.hazardous||this.parameterHazardous}},watch:{initialTargetName:function(a){a&&(this.selectedTargetName=a.toUpperCase())},initialPacketName:function(a){a&&(this.selectedPacketName=a.toUpperCase())},initialItemName:function(a){a&&(this.selectedItemName=a.toUpperCase())},mode:function(a,e){this.selectedPacketName=null,this.selectedItemName=null,this.targetNameChanged(this.selectedTargetName)},chooseItem:function(a,e){a?this.updateItems():this.itemNames=[]},itemIsArray:function(a){a?this.selectedArrayIndex||=0:this.selectedArrayIndex=null}},created(){this.internalDisabled=!0,this.api=new n.yi,this.mode==="cmd"&&n.Fr.get("/openc3-api/queues").then(a=>{this.queueNames=[{label:"None",value:null}],a.data&&Array.isArray(a.data)&&a.data.forEach(e=>{this.queueNames.push({label:e.name,value:e.name})})}).catch(a=>{console.error("Error fetching queues:",a)}),this.api.get_target_names().then(a=>{this.targetNames=a.flatMap(e=>e=="UNKNOWN"?[]:{label:e,value:e}),this.allowAllTargets&&this.targetNames.unshift(this.ALL),this.selectedTargetName?this.updatePackets():(this.selectedTargetName=this.targetNames[0].value,this.targetNameChanged(this.selectedTargetName)),this.unknown&&this.targetNames.push(this.UNKNOWN)})},methods:{selectOnFocus:function(a){this.$nextTick(()=>{const e=this.$refs[a];if(e){const d=e.$el.querySelector("input");d&&d.select()}})},updatePackets:function(){if(this.selectedTargetName==="UNKNOWN"){this.packetNames=[this.UNKNOWN],this.selectedPacketName=this.packetNames[0].value,this.updatePacketDetails(this.UNKNOWN.value),this.description="UNKNOWN";return}if(this.selectedTargetName==="ALL"){this.packetNames=[this.ALL],this.selectedPacketName=this.packetNames[0].value,this.updatePacketDetails(this.ALL.value),this.description="ALL";return}this.internalDisabled=!0;const a=this.mode==="tlm"?"get_all_tlm_names":"get_all_cmd_names";this.api[a](this.selectedTargetName,this.hidden).then(e=>{this.packetNames=e.map(c=>({label:c,value:c})),this.allowAll&&this.packetNames.unshift(this.ALL),this.includeLatestPacketInDropdown&&this.packetNames.unshift(this.LATEST),this.selectedPacketName||(this.packetNames.length===0?this.selectedPacketName=null:(this.selectedPacketName=this.packetNames[0].value,this.selectedPacketName==="LATEST"&&this.packetNames.length>1&&(this.selectedPacketName=this.packetNames[1].value))),this.updatePacketDetails(this.selectedPacketName),this.packetNames.find(c=>c.value===this.selectedPacketName)&&this.chooseItem&&this.updateItems(),this.internalDisabled=!1})},updateItems:function(){if(this.selectedPacketName!=="ALL")if(this.internalDisabled=!0,this.selectedPacketName==="LATEST")this.api.get_all_tlm_item_names(this.selectedTargetName).then(a=>{this.itemNames=a.map(e=>({label:e,value:e,description:`LATEST ${e}`})),this.finishUpdateItems()});else{const a=this.mode==="tlm"?"get_tlm":"get_cmd";this.api[a](this.selectedTargetName,this.selectedPacketName).then(e=>{let d=[];e.items.forEach(c=>{c.hidden||d.push(c)}),this.itemNames=d.map(c=>{let l=c.name;return c.data_type=="DERIVED"&&(l+=" *"),{label:l,value:c.name,description:c.description,array:c.array_size/c.bit_size}}),this.itemNames.sort((c,l)=>c.label>l.label?1:-1),this.finishUpdateItems()})}},finishUpdateItems:function(){this.allowAll&&this.itemNames.unshift(this.ALL),this.selectedItemName||(this.selectedItemName=this.itemNames[0].value),this.description=this.itemNames[0].description,this.$emit("on-set",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,itemName:this.selectedItemNameWIndex,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType,queueName:this.selectedQueueName}),this.internalDisabled=!1},targetNameChanged:function(a){this.selectedTargetName=a,this.selectedPacketName="",this.selectedItemName="",a!==null&&this.updatePackets()},packetNameChanged:function(a){this.selectedItemName="",a!==null&&this.updatePacketDetails(a)},queueNameChanged:function(a){this.selectedQueueName=a,this.$emit("on-set",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,itemName:this.selectedItemNameWIndex,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType,queueName:this.selectedQueueName})},updatePacketDetails:function(a){if(a==="ALL")this.itemsDisabled=!0,this.internalDisabled=!1;else if(a==="LATEST")this.itemsDisabled=!1,this.selectedPacketName="LATEST",this.description="Latest values from all packets",this.hazardous=!1;else{this.itemsDisabled=!1;const e=this.packetNames.find(d=>a===d.value);if(e){this.selectedPacketName=e.value;const d=this.mode==="tlm"?"get_tlm":"get_cmd";this.api[d](this.selectedTargetName,this.selectedPacketName).then(c=>{this.description=c.description,this.hazardous=c.hazardous})}}this.chooseItem?this.updateItems():this.$emit("on-set",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,itemName:this.selectedItemNameWIndex,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType,queueName:this.selectedQueueName})},itemNameChanged:function(a){const e=this.itemNames.find(d=>a===d.value);e&&(this.selectedItemName=e.value,this.description=e.description,this.$emit("on-set",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,itemName:this.selectedItemNameWIndex,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType,queueName:this.selectedQueueName}))},indexChanged:function(a){this.$emit("on-set",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,itemName:this.selectedItemNameWIndex,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType,queueName:this.selectedQueueName})},buttonPressed:function(){this.selectedPacketName==="ALL"?this.allTargetPacketItems():this.selectedItemName==="ALL"?this.allPacketItems():this.chooseItem?this.$emit("addItem",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,itemName:this.selectedItemNameWIndex,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType}):this.$emit("addItem",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType})},allTargetPacketItems:function(){this.packetNames.forEach(a=>{if(a===this.ALL)return;const e=this.mode==="tlm"?"get_tlm":"get_cmd";this.api[e](this.selectedTargetName,a.value).then(d=>{d.items.forEach(c=>{c.hidden||this.$emit("addItem",{targetName:this.selectedTargetName,packetName:a.value,itemName:c.name,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType})})})})},allPacketItems:function(){this.itemNames.forEach(a=>{a!==this.ALL&&this.$emit("addItem",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,itemName:a.value,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType})})}}},y={class:"pt-4 pb-4"};function T(a,e,d,c,l,s){const u=t.resolveComponent("v-autocomplete"),m=t.resolveComponent("v-col"),r=t.resolveComponent("v-combobox"),h=t.resolveComponent("v-btn"),o=t.resolveComponent("v-row"),N=t.resolveComponent("v-icon");return t.openBlock(),t.createElementBlock("div",y,[t.createVNode(o,{class:"align-center","no-gutters":!d.vertical},{default:t.withCtx(()=>[t.createVNode(m,{cols:s.colSize,class:"tpic-select pr-4","data-test":"select-target"},{default:t.withCtx(()=>[t.createVNode(u,{ref:"targetAutocomplete",modelValue:l.selectedTargetName,"onUpdate:modelValue":[e[0]||(e[0]=i=>l.selectedTargetName=i),s.targetNameChanged],label:"Select Target","hide-details":"","auto-select-first":"",density:"compact",variant:"outlined",disabled:s.autocompleteDisabled||d.lockTarget,items:l.targetNames,"item-title":"label","item-value":"value",onFocus:e[1]||(e[1]=i=>s.selectOnFocus("targetAutocomplete"))},null,8,["modelValue","disabled","items","onUpdate:modelValue"])]),_:1},8,["cols"]),t.createVNode(m,{cols:s.colSize,class:"tpic-select pr-4","data-test":"select-packet"},{default:t.withCtx(()=>[t.createVNode(u,{ref:"packetAutocomplete",modelValue:l.selectedPacketName,"onUpdate:modelValue":[e[2]||(e[2]=i=>l.selectedPacketName=i),s.packetNameChanged],label:"Select Packet","hide-details":"","auto-select-first":"",density:"compact",variant:"outlined",disabled:l.packetsDisabled||s.autocompleteDisabled||d.lockPacket,items:l.packetNames,"item-title":"label","item-value":"value",onFocus:e[3]||(e[3]=i=>s.selectOnFocus("packetAutocomplete"))},null,8,["modelValue","disabled","items","onUpdate:modelValue"])]),_:1},8,["cols"]),d.mode==="cmd"&&d.showQueueSelect?(t.openBlock(),t.createBlock(m,{key:0,cols:s.colSize,class:"tpic-select pr-4","data-test":"select-queue"},{default:t.withCtx(()=>[t.createVNode(u,{ref:"queueAutocomplete",modelValue:l.selectedQueueName,"onUpdate:modelValue":[e[4]||(e[4]=i=>l.selectedQueueName=i),s.queueNameChanged],label:"Select Queue","hide-details":"","auto-select-first":"",density:"compact",variant:"outlined",disabled:s.autocompleteDisabled||l.queueNames.length===1,items:l.queueNames,"item-title":"label","item-value":"value",onFocus:e[5]||(e[5]=i=>s.selectOnFocus("queueAutocomplete"))},null,8,["modelValue","disabled","items","onUpdate:modelValue"])]),_:1},8,["cols"])):t.createCommentVNode("",!0),d.chooseItem?(t.openBlock(),t.createBlock(m,{key:1,cols:s.colSize,class:"tpic-select pr-4","data-test":"select-item"},{default:t.withCtx(()=>[t.createVNode(u,{ref:"itemAutocomplete",modelValue:l.selectedItemName,"onUpdate:modelValue":[e[6]||(e[6]=i=>l.selectedItemName=i),e[7]||(e[7]=i=>s.itemNameChanged(i))],label:"Select Item","hide-details":"","auto-select-first":"",density:"compact",variant:"outlined",disabled:l.itemsDisabled||s.autocompleteDisabled,items:l.itemNames,"item-title":"label","item-value":"value",onFocus:e[8]||(e[8]=i=>s.selectOnFocus("itemAutocomplete"))},null,8,["modelValue","disabled","items"])]),_:1},8,["cols"])):t.createCommentVNode("",!0),d.chooseItem&&s.itemIsArray?(t.openBlock(),t.createBlock(m,{key:2,cols:"1",class:"tpic-select pr-4","data-test":"array-index",style:{"min-width":"105px"}},{default:t.withCtx(()=>[t.createVNode(r,{ref:"indexCombobox",modelValue:l.selectedArrayIndex,"onUpdate:modelValue":[e[9]||(e[9]=i=>l.selectedArrayIndex=i),e[10]||(e[10]=i=>s.indexChanged(i))],label:"Index","hide-details":"","auto-select-first":"",density:"compact",variant:"outlined",disabled:l.itemsDisabled||s.autocompleteDisabled,items:s.arrayIndexes,"item-title":"label","item-value":"value",onFocus:e[11]||(e[11]=i=>s.selectOnFocus("indexCombobox"))},null,8,["modelValue","disabled","items"])]),_:1})):t.createCommentVNode("",!0),d.buttonText?(t.openBlock(),t.createBlock(m,{key:3,cols:s.colSize,style:{"max-width":"140px"}},{default:t.withCtx(()=>[t.createVNode(h,{disabled:s.buttonDisabled,color:"primary","data-test":"select-send",onClick:s.buttonPressed},{default:t.withCtx(()=>[t.createTextVNode(t.toDisplayString(s.actualButtonText),1)]),_:1},8,["disabled","onClick"])]),_:1},8,["cols"])):t.createCommentVNode("",!0)]),_:1},8,["no-gutters"]),d.selectTypes?(t.openBlock(),t.createBlock(o,{key:0,class:"pt-6 align-center","no-gutters":""},{default:t.withCtx(()=>[t.createVNode(m,{cols:s.colSize,class:"tpic-select pr-4","data-test":"data-type"},{default:t.withCtx(()=>[t.createVNode(u,{ref:"valueTypeAutocomplete",modelValue:l.selectedValueType,"onUpdate:modelValue":e[12]||(e[12]=i=>l.selectedValueType=i),label:"Value Type","hide-details":"","auto-select-first":"",density:"compact",variant:"outlined",items:l.valueTypes,onFocus:e[13]||(e[13]=i=>s.selectOnFocus("valueTypeAutocomplete"))},null,8,["modelValue","items"])]),_:1},8,["cols"]),t.createVNode(m,{cols:s.colSize,class:"tpic-select pr-4","data-test":"reduced"},{default:t.withCtx(()=>[t.createVNode(u,{ref:"reducedAutocomplete",modelValue:l.selectedReduced,"onUpdate:modelValue":e[14]||(e[14]=i=>l.selectedReduced=i),label:"Reduced","hide-details":"","auto-select-first":"",density:"compact",variant:"outlined",items:l.reductionModes,onFocus:e[15]||(e[15]=i=>s.selectOnFocus("reducedAutocomplete"))},null,8,["modelValue","items"])]),_:1},8,["cols"]),t.createVNode(m,{cols:s.colSize,class:"tpic-select pr-4","data-test":"reduced-type"},{default:t.withCtx(()=>[t.createVNode(u,{ref:"reducedTypeAutocomplete",modelValue:l.selectedReducedType,"onUpdate:modelValue":e[16]||(e[16]=i=>l.selectedReducedType=i),label:"Reduced Type","hide-details":"","auto-select-first":"",density:"compact",variant:"outlined",disabled:l.selectedReduced==="DECOM",items:l.reducedTypes,onFocus:e[17]||(e[17]=i=>s.selectOnFocus("reducedTypeAutocomplete"))},null,8,["modelValue","disabled","items"])]),_:1},8,["cols"]),t.createVNode(m,{cols:s.colSize,style:{"max-width":"140px"}},null,8,["cols"])]),_:1})):t.createCommentVNode("",!0),t.createVNode(o,{"no-gutters":"",class:"pt-3 px-3 align-center"},{default:t.withCtx(()=>[t.createVNode(m,{cols:s.colSize,class:t.normalizeClass({"openc3-yellow":s.isHazardous})},{default:t.withCtx(()=>[s.isHazardous?(t.openBlock(),t.createBlock(N,{key:0,class:"mr-1"},{default:t.withCtx(()=>[...e[18]||(e[18]=[t.createTextVNode("mdi-alert",-1)])]),_:1})):t.createCommentVNode("",!0),t.createTextVNode(" Description: "+t.toDisplayString(l.description)+" ",1),s.isHazardous?(t.openBlock(),t.createElementBlock(t.Fragment,{key:1},[t.createTextVNode(" (HAZARDOUS) ")],64)):t.createCommentVNode("",!0)]),_:1},8,["cols","class"])]),_:1})])}const k=p._export_sfc(f,[["render",T],["__scopeId","data-v-6a3a9edc"]]);exports.TargetPacketItemChooser=k;
2
- //# sourceMappingURL=TargetPacketItemChooser-PqyXKRlT.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TargetPacketItemChooser-PqyXKRlT.cjs","sources":["../src/components/TargetPacketItemChooser.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# A portion of this file was funded by Blue Origin Enterprises, L.P.\n# See https://github.com/OpenC3/cosmos/pull/1957\n-->\n\n<template>\n <div class=\"pt-4 pb-4\">\n <v-row class=\"align-center\" :no-gutters=\"!vertical\">\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"select-target\">\n <v-autocomplete\n ref=\"targetAutocomplete\"\n v-model=\"selectedTargetName\"\n label=\"Select Target\"\n hide-details\n auto-select-first\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"autocompleteDisabled || lockTarget\"\n :items=\"targetNames\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"targetNameChanged\"\n @focus=\"selectOnFocus('targetAutocomplete')\"\n />\n </v-col>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"select-packet\">\n <v-autocomplete\n ref=\"packetAutocomplete\"\n v-model=\"selectedPacketName\"\n label=\"Select Packet\"\n hide-details\n auto-select-first\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"packetsDisabled || autocompleteDisabled || lockPacket\"\n :items=\"packetNames\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"packetNameChanged\"\n @focus=\"selectOnFocus('packetAutocomplete')\"\n >\n </v-autocomplete>\n </v-col>\n <v-col\n v-if=\"mode === 'cmd' && showQueueSelect\"\n :cols=\"colSize\"\n class=\"tpic-select pr-4\"\n data-test=\"select-queue\"\n >\n <v-autocomplete\n ref=\"queueAutocomplete\"\n v-model=\"selectedQueueName\"\n label=\"Select Queue\"\n hide-details\n auto-select-first\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"autocompleteDisabled || queueNames.length === 1\"\n :items=\"queueNames\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"queueNameChanged\"\n @focus=\"selectOnFocus('queueAutocomplete')\"\n />\n </v-col>\n <v-col\n v-if=\"chooseItem\"\n :cols=\"colSize\"\n class=\"tpic-select pr-4\"\n data-test=\"select-item\"\n >\n <v-autocomplete\n ref=\"itemAutocomplete\"\n v-model=\"selectedItemName\"\n label=\"Select Item\"\n hide-details\n auto-select-first\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"itemsDisabled || autocompleteDisabled\"\n :items=\"itemNames\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"itemNameChanged($event)\"\n @focus=\"selectOnFocus('itemAutocomplete')\"\n />\n </v-col>\n <!-- min-width: 105px is enough to display a 2 digit index -->\n <v-col\n v-if=\"chooseItem && itemIsArray\"\n cols=\"1\"\n class=\"tpic-select pr-4\"\n data-test=\"array-index\"\n style=\"min-width: 105px\"\n >\n <v-combobox\n ref=\"indexCombobox\"\n v-model=\"selectedArrayIndex\"\n label=\"Index\"\n hide-details\n auto-select-first\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"itemsDisabled || autocompleteDisabled\"\n :items=\"arrayIndexes\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"indexChanged($event)\"\n @focus=\"selectOnFocus('indexCombobox')\"\n />\n </v-col>\n <v-col v-if=\"buttonText\" :cols=\"colSize\" style=\"max-width: 140px\">\n <v-btn\n :disabled=\"buttonDisabled\"\n color=\"primary\"\n data-test=\"select-send\"\n @click=\"buttonPressed\"\n >\n {{ actualButtonText }}\n </v-btn>\n </v-col>\n </v-row>\n <v-row v-if=\"selectTypes\" class=\"pt-6 align-center\" no-gutters>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"data-type\">\n <v-autocomplete\n ref=\"valueTypeAutocomplete\"\n v-model=\"selectedValueType\"\n label=\"Value Type\"\n hide-details\n auto-select-first\n density=\"compact\"\n variant=\"outlined\"\n :items=\"valueTypes\"\n @focus=\"selectOnFocus('valueTypeAutocomplete')\"\n />\n </v-col>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"reduced\">\n <v-autocomplete\n ref=\"reducedAutocomplete\"\n v-model=\"selectedReduced\"\n label=\"Reduced\"\n hide-details\n auto-select-first\n density=\"compact\"\n variant=\"outlined\"\n :items=\"reductionModes\"\n @focus=\"selectOnFocus('reducedAutocomplete')\"\n />\n </v-col>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"reduced-type\">\n <v-autocomplete\n ref=\"reducedTypeAutocomplete\"\n v-model=\"selectedReducedType\"\n label=\"Reduced Type\"\n hide-details\n auto-select-first\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"selectedReduced === 'DECOM'\"\n :items=\"reducedTypes\"\n @focus=\"selectOnFocus('reducedTypeAutocomplete')\"\n />\n </v-col>\n <v-col :cols=\"colSize\" style=\"max-width: 140px\"> </v-col>\n </v-row>\n <v-row no-gutters class=\"pt-3 px-3 align-center\">\n <v-col :cols=\"colSize\" :class=\"{ 'openc3-yellow': isHazardous }\">\n <v-icon v-if=\"isHazardous\" class=\"mr-1\">mdi-alert</v-icon>\n Description: {{ description }}\n <template v-if=\"isHazardous\"> (HAZARDOUS) </template>\n </v-col>\n </v-row>\n </div>\n</template>\n\n<script>\nimport { Api, OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n props: {\n allowAll: {\n type: Boolean,\n default: false,\n },\n allowAllTargets: {\n type: Boolean,\n default: false,\n },\n allowAllArrayIndex: {\n type: Boolean,\n default: false,\n },\n buttonText: {\n type: String,\n default: null,\n },\n chooseItem: {\n type: Boolean,\n default: false,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n initialTargetName: {\n type: String,\n default: '',\n },\n initialPacketName: {\n type: String,\n default: '',\n },\n initialItemName: {\n type: String,\n default: '',\n },\n selectTypes: {\n type: Boolean,\n default: false,\n },\n showLatest: {\n type: Boolean,\n default: false,\n },\n mode: {\n type: String,\n default: 'tlm',\n // TODO: add validators throughout\n validator: (propValue) => {\n return ['cmd', 'tlm'].includes(propValue)\n },\n },\n unknown: {\n type: Boolean,\n default: false,\n },\n vertical: {\n type: Boolean,\n default: false,\n },\n hidden: {\n type: Boolean,\n default: false,\n },\n lockTarget: {\n type: Boolean,\n default: false,\n },\n lockPacket: {\n type: Boolean,\n default: false,\n },\n showQueueSelect: {\n type: Boolean,\n default: true,\n },\n parameterHazardous: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['on-set', 'addItem'],\n data() {\n return {\n targetNames: [],\n selectedTargetName: this.initialTargetName?.toUpperCase(),\n packetNames: [],\n selectedPacketName: this.initialPacketName?.toUpperCase(),\n queueNames: [{ label: 'None', value: null }],\n selectedQueueName: null,\n itemNames: [],\n selectedItemName: this.initialItemName?.toUpperCase(),\n valueTypes: ['CONVERTED', 'RAW'],\n selectedValueType: 'CONVERTED',\n reductionModes: [\n // Map NONE to DECOM for clarity\n { title: 'NONE', value: 'DECOM' },\n { title: 'REDUCED_MINUTE', value: 'REDUCED_MINUTE' },\n { title: 'REDUCED_HOUR', value: 'REDUCED_HOUR' },\n { title: 'REDUCED_DAY', value: 'REDUCED_DAY' },\n ],\n selectedArrayIndex: null,\n selectedReduced: 'DECOM',\n reducedTypes: ['MIN', 'MAX', 'AVG', 'STDDEV'],\n selectedReducedType: 'AVG',\n description: '',\n hazardous: false,\n internalDisabled: false,\n packetsDisabled: false,\n itemsDisabled: false,\n api: null,\n ALL: {\n label: '[ ALL ]',\n value: 'ALL',\n description: 'ALL',\n }, // Constant to indicate all packets or items\n UNKNOWN: {\n label: '[ UNKNOWN ]',\n value: 'UNKNOWN',\n description: 'UNKNOWN',\n },\n LATEST: {\n label: 'LATEST',\n value: 'LATEST',\n description: 'Latest values from all packets',\n }, // Constant to indicate latest values from all packets\n }\n },\n computed: {\n actualButtonText: function () {\n if (this.selectedPacketName === 'ALL') {\n return 'Add Target'\n }\n if (this.selectedItemName === 'ALL') {\n return 'Add Packet'\n }\n return this.buttonText\n },\n autocompleteDisabled: function () {\n return this.disabled || this.internalDisabled\n },\n buttonDisabled: function () {\n return (\n this.disabled ||\n this.internalDisabled ||\n this.selectedTargetName === null ||\n this.selectedPacketName === null ||\n this.selectedItemNameWIndex === null\n )\n },\n colSize: function () {\n return this.vertical ? 12 : false\n },\n selectedItemNameWIndex: function () {\n if (\n this.itemIsArray &&\n this.selectedArrayIndex !== null &&\n this.selectedArrayIndex !== this.ALL.label\n ) {\n return `${this.selectedItemName}[${this.selectedArrayIndex}]`\n } else {\n return this.selectedItemName\n }\n },\n includeLatestPacketInDropdown: function () {\n return this.showLatest && this.mode === 'tlm' // because LATEST cmd doesn't have much use and thus isn't currently implemented\n },\n arrayIndexes: function () {\n let i = this.itemNames.findIndex(\n (item) => item.value === this.selectedItemName,\n )\n let indexes = [...Array(this.itemNames[i].array).keys()]\n if (this.allowAll || this.allowAllArrayIndex) {\n indexes.unshift(this.ALL.label)\n }\n return indexes\n },\n itemIsArray: function () {\n let i = this.itemNames.findIndex(\n (item) => item.value === this.selectedItemName,\n )\n if (i === -1 || Number.isNaN(this.itemNames[i].array)) {\n return false\n } else {\n return true\n }\n },\n isHazardous: function () {\n return this.hazardous || this.parameterHazardous\n },\n },\n watch: {\n initialTargetName: function (val) {\n // These three \"initial\" watchers are here in case the parent component doesn't figure out its initial values\n // until after this component has already been created. All this logic incl. the \"on-set\" events could be\n // simplified with a refactor to use named v-models, but that's probably a significant breaking change.\n if (val) {\n this.selectedTargetName = val.toUpperCase()\n }\n },\n initialPacketName: function (val) {\n if (val) {\n this.selectedPacketName = val.toUpperCase()\n }\n },\n initialItemName: function (val) {\n if (val) {\n this.selectedItemName = val.toUpperCase()\n }\n },\n mode: function (newVal, oldVal) {\n this.selectedPacketName = null\n this.selectedItemName = null\n // This also updates packets and items as needed\n this.targetNameChanged(this.selectedTargetName)\n },\n chooseItem: function (newVal, oldVal) {\n if (newVal) {\n this.updateItems()\n } else {\n this.itemNames = []\n }\n },\n itemIsArray: function (val) {\n if (val) {\n this.selectedArrayIndex ||= 0\n } else {\n this.selectedArrayIndex = null\n }\n },\n },\n created() {\n this.internalDisabled = true\n this.api = new OpenC3Api()\n\n // Fetch queues if in command mode\n if (this.mode === 'cmd') {\n Api.get('/openc3-api/queues')\n .then((response) => {\n this.queueNames = [{ label: 'None', value: null }]\n if (response.data && Array.isArray(response.data)) {\n response.data.forEach((queue) => {\n this.queueNames.push({ label: queue.name, value: queue.name })\n })\n }\n })\n .catch((error) => {\n // eslint-disable-next-line no-console\n console.error('Error fetching queues:', error)\n // Keep default \"None\" option even if fetch fails\n })\n }\n\n this.api.get_target_names().then((result) => {\n this.targetNames = result.flatMap((target) => {\n // Ignore the UNKNOWN target as it doesn't make sense to select this\n if (target == 'UNKNOWN') {\n return []\n }\n return { label: target, value: target }\n })\n // TODO: This is a nice enhancement but results in logs of API calls for many targets\n // See if we can reduce this to a single API call\n // Filter out any targets without packets\n // for (let i = this.targetNames.length - 1; i >= 0; i--) {\n // const cmd =\n // this.mode === 'tlm' ? 'get_all_tlm_names' : 'get_all_cmd_names'\n // await this.api[cmd](this.targetNames[i].value).then((names) => {\n // if (names.length === 0) {\n // this.targetNames.splice(i, 1)\n // }\n // })\n // }\n if (this.allowAllTargets) {\n this.targetNames.unshift(this.ALL)\n }\n // If the initial target name is not set, default to the first target\n // which also updates packets and items as needed\n if (!this.selectedTargetName) {\n this.selectedTargetName = this.targetNames[0].value\n this.targetNameChanged(this.selectedTargetName)\n } else {\n // Selected target name was set but we still have to update packets\n this.updatePackets()\n }\n if (this.unknown) {\n this.targetNames.push(this.UNKNOWN)\n }\n })\n },\n methods: {\n selectOnFocus: function (refName) {\n this.$nextTick(() => {\n const component = this.$refs[refName]\n if (component) {\n const input = component.$el.querySelector('input')\n if (input) {\n input.select()\n }\n }\n })\n },\n updatePackets: function () {\n if (this.selectedTargetName === 'UNKNOWN') {\n this.packetNames = [this.UNKNOWN]\n this.selectedPacketName = this.packetNames[0].value\n this.updatePacketDetails(this.UNKNOWN.value)\n this.description = 'UNKNOWN'\n return\n }\n if (this.selectedTargetName === 'ALL') {\n this.packetNames = [this.ALL]\n this.selectedPacketName = this.packetNames[0].value\n this.updatePacketDetails(this.ALL.value)\n this.description = 'ALL'\n return\n }\n this.internalDisabled = true\n const cmd =\n this.mode === 'tlm' ? 'get_all_tlm_names' : 'get_all_cmd_names'\n this.api[cmd](this.selectedTargetName, this.hidden).then((names) => {\n this.packetNames = names.map((name) => {\n return {\n label: name,\n value: name,\n }\n })\n if (this.allowAll) {\n this.packetNames.unshift(this.ALL)\n }\n if (this.includeLatestPacketInDropdown) {\n this.packetNames.unshift(this.LATEST)\n }\n if (!this.selectedPacketName) {\n if (this.packetNames.length === 0) {\n this.selectedPacketName = null\n } else {\n this.selectedPacketName = this.packetNames[0].value\n if (\n this.selectedPacketName === 'LATEST' &&\n this.packetNames.length > 1\n ) {\n this.selectedPacketName = this.packetNames[1].value\n }\n }\n }\n this.updatePacketDetails(this.selectedPacketName)\n const item = this.packetNames.find((packet) => {\n return packet.value === this.selectedPacketName\n })\n if (item && this.chooseItem) {\n this.updateItems()\n }\n this.internalDisabled = false\n })\n },\n\n updateItems: function () {\n if (this.selectedPacketName === 'ALL') {\n return\n }\n this.internalDisabled = true\n\n if (this.selectedPacketName === 'LATEST') {\n this.api\n .get_all_tlm_item_names(this.selectedTargetName)\n .then((items) => {\n this.itemNames = items.map((item) => {\n return {\n label: item,\n value: item,\n description: `LATEST ${item}`,\n // Don't handle array for LATEST\n }\n })\n this.finishUpdateItems()\n })\n } else {\n const cmd = this.mode === 'tlm' ? 'get_tlm' : 'get_cmd'\n this.api[cmd](this.selectedTargetName, this.selectedPacketName).then(\n (packet) => {\n let items = []\n packet.items.forEach((item) => {\n if (!item['hidden']) {\n items.push(item)\n }\n })\n this.itemNames = items.map((item) => {\n let label = item.name\n if (item.data_type == 'DERIVED') {\n label += ' *'\n }\n return {\n label: label,\n value: item.name,\n description: item.description,\n array: item.array_size / item.bit_size,\n }\n })\n this.itemNames.sort((a, b) => (a.label > b.label ? 1 : -1))\n this.finishUpdateItems()\n },\n )\n }\n },\n finishUpdateItems: function () {\n if (this.allowAll) {\n this.itemNames.unshift(this.ALL)\n }\n if (!this.selectedItemName) {\n this.selectedItemName = this.itemNames[0].value\n }\n this.description = this.itemNames[0].description\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n queueName: this.selectedQueueName,\n })\n this.internalDisabled = false\n },\n\n targetNameChanged: function (value) {\n this.selectedTargetName = value\n this.selectedPacketName = ''\n this.selectedItemName = ''\n // When the target name is completed deleted in the v-autocomplete\n // the @change handler is fired but the value is null\n // In this case we don't want to update packets\n if (value !== null) {\n this.updatePackets()\n }\n },\n\n packetNameChanged: function (value) {\n this.selectedItemName = ''\n // When the packet name is completed deleted in the v-autocomplete\n // the @change handler is fired but the value is null\n // In this case we don't want to update packet details\n if (value !== null) {\n this.updatePacketDetails(value)\n }\n },\n\n queueNameChanged: function (value) {\n this.selectedQueueName = value\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n queueName: this.selectedQueueName,\n })\n },\n\n updatePacketDetails: function (value) {\n if (value === 'ALL') {\n this.itemsDisabled = true\n this.internalDisabled = false\n } else if (value === 'LATEST') {\n this.itemsDisabled = false\n this.selectedPacketName = 'LATEST'\n this.description = 'Latest values from all packets'\n this.hazardous = false\n } else {\n this.itemsDisabled = false\n const packet = this.packetNames.find((packet) => {\n return value === packet.value\n })\n if (packet) {\n this.selectedPacketName = packet.value\n const cmd = this.mode === 'tlm' ? 'get_tlm' : 'get_cmd'\n this.api[cmd](this.selectedTargetName, this.selectedPacketName).then(\n (packet) => {\n this.description = packet.description\n this.hazardous = packet.hazardous\n },\n )\n }\n }\n if (this.chooseItem) {\n this.updateItems()\n } else {\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n queueName: this.selectedQueueName,\n })\n }\n },\n\n itemNameChanged: function (value) {\n const item = this.itemNames.find((item) => {\n return value === item.value\n })\n if (item) {\n this.selectedItemName = item.value\n this.description = item.description\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n queueName: this.selectedQueueName,\n })\n }\n },\n\n indexChanged: function (value) {\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n queueName: this.selectedQueueName,\n })\n },\n\n buttonPressed: function () {\n if (this.selectedPacketName === 'ALL') {\n this.allTargetPacketItems()\n } else if (this.selectedItemName === 'ALL') {\n this.allPacketItems()\n } else if (this.chooseItem) {\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n } else {\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n }\n },\n\n allTargetPacketItems: function () {\n this.packetNames.forEach((packetName) => {\n if (packetName === this.ALL) return\n const cmd = this.mode === 'tlm' ? 'get_tlm' : 'get_cmd'\n this.api[cmd](this.selectedTargetName, packetName.value).then(\n (packet) => {\n packet.items.forEach((item) => {\n if (!item['hidden']) {\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: packetName.value,\n itemName: item['name'],\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n }\n })\n },\n )\n })\n },\n\n allPacketItems: function () {\n this.itemNames.forEach((item) => {\n if (item === this.ALL) return\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: item.value,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n })\n },\n },\n}\n</script>\n<style scoped>\n.button {\n padding: 4px;\n}\n.tpic-select {\n max-width: 400px;\n}\n.v-autocomplete .v-select__selections {\n word-break: break-all;\n}\n</style>\n"],"names":["_sfc_main","propValue","i","item","indexes","val","newVal","oldVal","OpenC3Api","Api","response","queue","error","result","target","refName","component","input","cmd","names","name","packet","items","label","a","b","value","packetName","_hoisted_1","_openBlock","_createElementBlock","_createVNode","_component_v_row","$props","_component_v_col","$options","_component_v_autocomplete","$data","$event","_createBlock","_cache","_component_v_combobox","_component_v_btn","_component_v_icon","_toDisplayString","_Fragment"],"mappings":"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"}